blob: 5dff77abc9fd741fb1ff33a6905f3305d8af36ed [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]
Miss Islington (bot)55c89232020-05-21 18:14:55 -070011673// | args for_if_clauses
11674// | args ',' expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011675// | args ',' args
11676static void *
11677incorrect_arguments_rule(Parser *p)
11678{
11679 if (p->error_indicator) {
11680 return NULL;
11681 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011682 void * _res = NULL;
11683 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011684 { // args ',' '*'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011685 if (p->error_indicator) {
11686 return NULL;
11687 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011688 Token * _literal;
11689 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011690 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011691 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011692 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011693 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011694 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011695 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011696 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011697 )
11698 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011699 _res = RAISE_SYNTAX_ERROR ( "iterable argument unpacking follows keyword argument unpacking" );
11700 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011701 p->error_indicator = 1;
11702 return NULL;
11703 }
11704 goto done;
11705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011706 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011707 }
11708 { // expression for_if_clauses ',' [args | expression for_if_clauses]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011709 if (p->error_indicator) {
11710 return NULL;
11711 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011712 Token * _literal;
11713 void *_opt_var;
11714 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011715 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011716 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011717 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011718 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011719 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011720 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011721 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011722 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011723 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011724 (_opt_var = _tmp_125_rule(p), 1) // [args | expression for_if_clauses]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011725 )
11726 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011727 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "Generator expression must be parenthesized" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011728 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011729 p->error_indicator = 1;
11730 return NULL;
11731 }
11732 goto done;
11733 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011734 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011735 }
Miss Islington (bot)55c89232020-05-21 18:14:55 -070011736 { // args for_if_clauses
11737 if (p->error_indicator) {
11738 return NULL;
11739 }
11740 expr_ty a;
11741 asdl_seq* for_if_clauses_var;
11742 if (
11743 (a = args_rule(p)) // args
11744 &&
11745 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
11746 )
11747 {
11748 _res = _PyPegen_nonparen_genexp_in_call ( p , a );
11749 if (_res == NULL && PyErr_Occurred()) {
11750 p->error_indicator = 1;
11751 return NULL;
11752 }
11753 goto done;
11754 }
11755 p->mark = _mark;
11756 }
11757 { // args ',' expression for_if_clauses
11758 if (p->error_indicator) {
11759 return NULL;
11760 }
11761 Token * _literal;
11762 expr_ty a;
11763 expr_ty args_var;
11764 asdl_seq* for_if_clauses_var;
11765 if (
11766 (args_var = args_rule(p)) // args
11767 &&
11768 (_literal = _PyPegen_expect_token(p, 12)) // token=','
11769 &&
11770 (a = expression_rule(p)) // expression
11771 &&
11772 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
11773 )
11774 {
11775 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "Generator expression must be parenthesized" );
11776 if (_res == NULL && PyErr_Occurred()) {
11777 p->error_indicator = 1;
11778 return NULL;
11779 }
11780 goto done;
11781 }
11782 p->mark = _mark;
11783 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011784 { // args ',' args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011785 if (p->error_indicator) {
11786 return NULL;
11787 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011788 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011789 expr_ty a;
11790 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011791 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011792 (a = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011793 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011794 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011795 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011796 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011797 )
11798 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011799 _res = _PyPegen_arguments_parsing_error ( p , a );
11800 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011801 p->error_indicator = 1;
11802 return NULL;
11803 }
11804 goto done;
11805 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011806 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011807 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011808 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011809 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011810 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011811}
11812
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011813// invalid_kwarg: expression '='
11814static void *
11815invalid_kwarg_rule(Parser *p)
11816{
11817 if (p->error_indicator) {
11818 return NULL;
11819 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011820 void * _res = NULL;
11821 int _mark = p->mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011822 { // expression '='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011823 if (p->error_indicator) {
11824 return NULL;
11825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011826 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011827 expr_ty a;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011828 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011829 (a = expression_rule(p)) // expression
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011830 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011831 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011832 )
11833 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011834 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression cannot contain assignment, perhaps you meant \"==\"?" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011835 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011836 p->error_indicator = 1;
11837 return NULL;
11838 }
11839 goto done;
11840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011841 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011842 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011843 _res = NULL;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011844 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011845 return _res;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011846}
11847
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011848// invalid_named_expression: expression ':=' expression
11849static void *
11850invalid_named_expression_rule(Parser *p)
11851{
11852 if (p->error_indicator) {
11853 return NULL;
11854 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011855 void * _res = NULL;
11856 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011857 { // expression ':=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011858 if (p->error_indicator) {
11859 return NULL;
11860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011861 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011862 expr_ty a;
11863 expr_ty expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011864 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011865 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011866 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011867 (_literal = _PyPegen_expect_token(p, 53)) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011868 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011869 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011870 )
11871 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011872 _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 +010011873 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011874 p->error_indicator = 1;
11875 return NULL;
11876 }
11877 goto done;
11878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011879 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011880 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011881 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011882 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011883 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011884}
11885
11886// invalid_assignment:
11887// | list ':'
11888// | tuple ':'
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011889// | star_named_expression ',' star_named_expressions* ':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011890// | expression ':' expression ['=' annotated_rhs]
Pablo Galindo16ab0702020-05-15 02:04:52 +010011891// | star_expressions '=' (yield_expr | star_expressions)
11892// | star_expressions augassign (yield_expr | star_expressions)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011893static void *
11894invalid_assignment_rule(Parser *p)
11895{
11896 if (p->error_indicator) {
11897 return NULL;
11898 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011899 void * _res = NULL;
11900 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011901 { // list ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011902 if (p->error_indicator) {
11903 return NULL;
11904 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011905 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011906 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011907 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011908 (a = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011909 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011910 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011911 )
11912 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011913 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not list) can be annotated" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011914 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011915 p->error_indicator = 1;
11916 return NULL;
11917 }
11918 goto done;
11919 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011920 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011921 }
11922 { // tuple ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011923 if (p->error_indicator) {
11924 return NULL;
11925 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011926 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011927 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011928 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011929 (a = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011930 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011931 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011932 )
11933 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011934 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
11935 if (_res == NULL && PyErr_Occurred()) {
11936 p->error_indicator = 1;
11937 return NULL;
11938 }
11939 goto done;
11940 }
11941 p->mark = _mark;
11942 }
11943 { // star_named_expression ',' star_named_expressions* ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011944 if (p->error_indicator) {
11945 return NULL;
11946 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011947 Token * _literal;
11948 Token * _literal_1;
11949 asdl_seq * _loop0_126_var;
11950 expr_ty a;
11951 if (
11952 (a = star_named_expression_rule(p)) // star_named_expression
11953 &&
11954 (_literal = _PyPegen_expect_token(p, 12)) // token=','
11955 &&
11956 (_loop0_126_var = _loop0_126_rule(p)) // star_named_expressions*
11957 &&
11958 (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':'
11959 )
11960 {
11961 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011962 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011963 p->error_indicator = 1;
11964 return NULL;
11965 }
11966 goto done;
11967 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011968 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011969 }
11970 { // expression ':' expression ['=' annotated_rhs]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011971 if (p->error_indicator) {
11972 return NULL;
11973 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011974 Token * _literal;
11975 void *_opt_var;
11976 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011977 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011978 expr_ty expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011979 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011980 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011981 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011982 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011983 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011984 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011985 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011986 (_opt_var = _tmp_127_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011987 )
11988 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011989 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "illegal target for annotation" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011990 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011991 p->error_indicator = 1;
11992 return NULL;
11993 }
11994 goto done;
11995 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011996 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011997 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010011998 { // star_expressions '=' (yield_expr | star_expressions)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011999 if (p->error_indicator) {
12000 return NULL;
12001 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010012002 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070012003 void *_tmp_128_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012004 expr_ty a;
12005 if (
Pablo Galindo16ab0702020-05-15 02:04:52 +010012006 (a = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012007 &&
Pablo Galindo16ab0702020-05-15 02:04:52 +010012008 (_literal = _PyPegen_expect_token(p, 22)) // token='='
12009 &&
12010 (_tmp_128_var = _tmp_128_rule(p)) // yield_expr | star_expressions
12011 )
12012 {
12013 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( _PyPegen_get_invalid_target ( a ) , "cannot assign to %s" , _PyPegen_get_expr_name ( _PyPegen_get_invalid_target ( a ) ) );
12014 if (_res == NULL && PyErr_Occurred()) {
12015 p->error_indicator = 1;
12016 return NULL;
12017 }
12018 goto done;
12019 }
12020 p->mark = _mark;
12021 }
12022 { // star_expressions augassign (yield_expr | star_expressions)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012023 if (p->error_indicator) {
12024 return NULL;
12025 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010012026 void *_tmp_129_var;
12027 expr_ty a;
12028 AugOperator* augassign_var;
12029 if (
12030 (a = star_expressions_rule(p)) // star_expressions
12031 &&
12032 (augassign_var = augassign_rule(p)) // augassign
Pablo Galindo2b74c832020-04-27 18:02:07 +010012033 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012034 (_tmp_129_var = _tmp_129_rule(p)) // yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012035 )
12036 {
Pablo Galindo16ab0702020-05-15 02:04:52 +010012037 _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 +010012038 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012039 p->error_indicator = 1;
12040 return NULL;
12041 }
12042 goto done;
12043 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012044 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012046 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012047 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012048 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012049}
12050
12051// invalid_block: NEWLINE !INDENT
12052static void *
12053invalid_block_rule(Parser *p)
12054{
12055 if (p->error_indicator) {
12056 return NULL;
12057 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012058 void * _res = NULL;
12059 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012060 { // NEWLINE !INDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012061 if (p->error_indicator) {
12062 return NULL;
12063 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010012064 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012065 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012066 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012067 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012068 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT) // token=INDENT
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012069 )
12070 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012071 _res = RAISE_INDENTATION_ERROR ( "expected an indented block" );
12072 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012073 p->error_indicator = 1;
12074 return NULL;
12075 }
12076 goto done;
12077 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012078 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012079 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012080 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012081 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012082 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012083}
12084
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012085// invalid_comprehension: ('[' | '(' | '{') starred_expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012086static void *
12087invalid_comprehension_rule(Parser *p)
12088{
12089 if (p->error_indicator) {
12090 return NULL;
12091 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012092 void * _res = NULL;
12093 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012094 { // ('[' | '(' | '{') starred_expression for_if_clauses
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012095 if (p->error_indicator) {
12096 return NULL;
12097 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012098 void *_tmp_130_var;
12099 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012100 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012101 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012102 (_tmp_130_var = _tmp_130_rule(p)) // '[' | '(' | '{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012103 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012104 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012105 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012106 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012107 )
12108 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012109 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "iterable unpacking cannot be used in comprehension" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012110 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012111 p->error_indicator = 1;
12112 return NULL;
12113 }
12114 goto done;
12115 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012116 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012117 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012118 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012119 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012120 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012121}
12122
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -070012123// invalid_dict_comprehension: '{' '**' bitwise_or for_if_clauses '}'
12124static void *
12125invalid_dict_comprehension_rule(Parser *p)
12126{
12127 if (p->error_indicator) {
12128 return NULL;
12129 }
12130 void * _res = NULL;
12131 int _mark = p->mark;
12132 { // '{' '**' bitwise_or for_if_clauses '}'
12133 if (p->error_indicator) {
12134 return NULL;
12135 }
12136 Token * _literal;
12137 Token * _literal_1;
12138 Token * a;
12139 expr_ty bitwise_or_var;
12140 asdl_seq* for_if_clauses_var;
12141 if (
12142 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
12143 &&
12144 (a = _PyPegen_expect_token(p, 35)) // token='**'
12145 &&
12146 (bitwise_or_var = bitwise_or_rule(p)) // bitwise_or
12147 &&
12148 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
12149 &&
12150 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
12151 )
12152 {
12153 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "dict unpacking cannot be used in dict comprehension" );
12154 if (_res == NULL && PyErr_Occurred()) {
12155 p->error_indicator = 1;
12156 return NULL;
12157 }
12158 goto done;
12159 }
12160 p->mark = _mark;
12161 }
12162 _res = NULL;
12163 done:
12164 return _res;
12165}
12166
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012167// invalid_parameters:
Guido van Rossumc001c092020-04-30 12:12:19 -070012168// | param_no_default* (slash_with_default | param_with_default+) param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012169static void *
12170invalid_parameters_rule(Parser *p)
12171{
12172 if (p->error_indicator) {
12173 return NULL;
12174 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012175 void * _res = NULL;
12176 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012177 { // param_no_default* (slash_with_default | param_with_default+) param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012178 if (p->error_indicator) {
12179 return NULL;
12180 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012181 asdl_seq * _loop0_131_var;
12182 void *_tmp_132_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012183 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012184 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012185 (_loop0_131_var = _loop0_131_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012186 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012187 (_tmp_132_var = _tmp_132_rule(p)) // slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012188 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012189 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012190 )
12191 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012192 _res = RAISE_SYNTAX_ERROR ( "non-default argument follows default argument" );
12193 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012194 p->error_indicator = 1;
12195 return NULL;
12196 }
12197 goto done;
12198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012199 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012201 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012202 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012203 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012204}
12205
Lysandros Nikolaou75b863a2020-05-18 22:14:47 +030012206// invalid_star_etc: '*' (')' | ',' (')' | '**')) | '*' ',' TYPE_COMMENT
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012207static void *
12208invalid_star_etc_rule(Parser *p)
12209{
12210 if (p->error_indicator) {
12211 return NULL;
12212 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012213 void * _res = NULL;
12214 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012215 { // '*' (')' | ',' (')' | '**'))
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012216 if (p->error_indicator) {
12217 return NULL;
12218 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012219 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012220 void *_tmp_133_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012221 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012222 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012223 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012224 (_tmp_133_var = _tmp_133_rule(p)) // ')' | ',' (')' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012225 )
12226 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012227 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
12228 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012229 p->error_indicator = 1;
12230 return NULL;
12231 }
12232 goto done;
12233 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012234 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012235 }
Lysandros Nikolaou75b863a2020-05-18 22:14:47 +030012236 { // '*' ',' TYPE_COMMENT
Pablo Galindoced4e5c2020-05-18 22:47:51 +010012237 if (p->error_indicator) {
12238 return NULL;
12239 }
Lysandros Nikolaou75b863a2020-05-18 22:14:47 +030012240 Token * _literal;
12241 Token * _literal_1;
12242 Token * type_comment_var;
12243 if (
12244 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
12245 &&
12246 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
12247 &&
12248 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
12249 )
12250 {
12251 _res = RAISE_SYNTAX_ERROR ( "bare * has associated type comment" );
12252 if (_res == NULL && PyErr_Occurred()) {
12253 p->error_indicator = 1;
12254 return NULL;
12255 }
12256 goto done;
12257 }
12258 p->mark = _mark;
12259 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012260 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012261 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012262 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012263}
12264
12265// invalid_lambda_star_etc: '*' (':' | ',' (':' | '**'))
12266static void *
12267invalid_lambda_star_etc_rule(Parser *p)
12268{
12269 if (p->error_indicator) {
12270 return NULL;
12271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012272 void * _res = NULL;
12273 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012274 { // '*' (':' | ',' (':' | '**'))
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012275 if (p->error_indicator) {
12276 return NULL;
12277 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012278 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012279 void *_tmp_134_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012280 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012281 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012282 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012283 (_tmp_134_var = _tmp_134_rule(p)) // ':' | ',' (':' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012284 )
12285 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012286 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
12287 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012288 p->error_indicator = 1;
12289 return NULL;
12290 }
12291 goto done;
12292 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012293 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012295 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012296 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012297 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012298}
12299
Guido van Rossumc001c092020-04-30 12:12:19 -070012300// invalid_double_type_comments: TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
12301static void *
12302invalid_double_type_comments_rule(Parser *p)
12303{
12304 if (p->error_indicator) {
12305 return NULL;
12306 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012307 void * _res = NULL;
12308 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012309 { // TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012310 if (p->error_indicator) {
12311 return NULL;
12312 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010012313 Token * indent_var;
12314 Token * newline_var;
12315 Token * newline_var_1;
12316 Token * type_comment_var;
12317 Token * type_comment_var_1;
Guido van Rossumc001c092020-04-30 12:12:19 -070012318 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012319 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070012320 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012321 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070012322 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012323 (type_comment_var_1 = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070012324 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012325 (newline_var_1 = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070012326 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012327 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070012328 )
12329 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012330 _res = RAISE_SYNTAX_ERROR ( "Cannot have two type comments on def" );
12331 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012332 p->error_indicator = 1;
12333 return NULL;
12334 }
12335 goto done;
12336 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012337 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012338 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012339 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012340 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012341 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012342}
12343
Shantanu27c0d9b2020-05-11 14:53:58 -070012344// invalid_del_target: star_expression &del_target_end
12345static void *
12346invalid_del_target_rule(Parser *p)
12347{
12348 if (p->error_indicator) {
12349 return NULL;
12350 }
12351 void * _res = NULL;
12352 int _mark = p->mark;
12353 { // star_expression &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012354 if (p->error_indicator) {
12355 return NULL;
12356 }
Shantanu27c0d9b2020-05-11 14:53:58 -070012357 expr_ty a;
12358 if (
12359 (a = star_expression_rule(p)) // star_expression
12360 &&
12361 _PyPegen_lookahead(1, del_target_end_rule, p)
12362 )
12363 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012364 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot delete %s" , _PyPegen_get_expr_name ( a ) );
Shantanu27c0d9b2020-05-11 14:53:58 -070012365 if (_res == NULL && PyErr_Occurred()) {
12366 p->error_indicator = 1;
12367 return NULL;
12368 }
12369 goto done;
12370 }
12371 p->mark = _mark;
12372 }
12373 _res = NULL;
12374 done:
12375 return _res;
12376}
12377
Pablo Galindo275d7e12020-05-21 22:04:54 +010012378// invalid_import_from_targets: import_from_as_names ','
12379static void *
12380invalid_import_from_targets_rule(Parser *p)
12381{
12382 if (p->error_indicator) {
12383 return NULL;
12384 }
12385 void * _res = NULL;
12386 int _mark = p->mark;
12387 { // import_from_as_names ','
12388 if (p->error_indicator) {
12389 return NULL;
12390 }
12391 Token * _literal;
12392 asdl_seq* import_from_as_names_var;
12393 if (
12394 (import_from_as_names_var = import_from_as_names_rule(p)) // import_from_as_names
12395 &&
12396 (_literal = _PyPegen_expect_token(p, 12)) // token=','
12397 )
12398 {
12399 _res = RAISE_SYNTAX_ERROR ( "trailing comma not allowed without surrounding parentheses" );
12400 if (_res == NULL && PyErr_Occurred()) {
12401 p->error_indicator = 1;
12402 return NULL;
12403 }
12404 goto done;
12405 }
12406 p->mark = _mark;
12407 }
12408 _res = NULL;
12409 done:
12410 return _res;
12411}
12412
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012413// _loop0_1: NEWLINE
12414static asdl_seq *
12415_loop0_1_rule(Parser *p)
12416{
12417 if (p->error_indicator) {
12418 return NULL;
12419 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012420 void *_res = NULL;
12421 int _mark = p->mark;
12422 int _start_mark = p->mark;
12423 void **_children = PyMem_Malloc(sizeof(void *));
12424 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012425 p->error_indicator = 1;
12426 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012427 return NULL;
12428 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012429 ssize_t _children_capacity = 1;
12430 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012431 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012432 if (p->error_indicator) {
12433 return NULL;
12434 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010012435 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012436 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010012437 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012438 )
12439 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012440 _res = newline_var;
12441 if (_n == _children_capacity) {
12442 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012443 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12444 if (!_new_children) {
12445 p->error_indicator = 1;
12446 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012447 return NULL;
12448 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012449 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012450 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012451 _children[_n++] = _res;
12452 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012453 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012454 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012455 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012456 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12457 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012458 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012459 p->error_indicator = 1;
12460 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012461 return NULL;
12462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012463 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12464 PyMem_Free(_children);
12465 _PyPegen_insert_memo(p, _start_mark, _loop0_1_type, _seq);
12466 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012467}
12468
Guido van Rossumc001c092020-04-30 12:12:19 -070012469// _loop0_2: NEWLINE
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012470static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012471_loop0_2_rule(Parser *p)
12472{
12473 if (p->error_indicator) {
12474 return NULL;
12475 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012476 void *_res = NULL;
12477 int _mark = p->mark;
12478 int _start_mark = p->mark;
12479 void **_children = PyMem_Malloc(sizeof(void *));
12480 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012481 p->error_indicator = 1;
12482 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012483 return NULL;
12484 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012485 ssize_t _children_capacity = 1;
12486 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012487 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012488 if (p->error_indicator) {
12489 return NULL;
12490 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010012491 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012492 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010012493 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070012494 )
12495 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012496 _res = newline_var;
12497 if (_n == _children_capacity) {
12498 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012499 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12500 if (!_new_children) {
12501 p->error_indicator = 1;
12502 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012503 return NULL;
12504 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012505 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012507 _children[_n++] = _res;
12508 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012510 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012512 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12513 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012514 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012515 p->error_indicator = 1;
12516 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012517 return NULL;
12518 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012519 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12520 PyMem_Free(_children);
12521 _PyPegen_insert_memo(p, _start_mark, _loop0_2_type, _seq);
12522 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012523}
12524
12525// _loop0_4: ',' expression
12526static asdl_seq *
12527_loop0_4_rule(Parser *p)
12528{
12529 if (p->error_indicator) {
12530 return NULL;
12531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012532 void *_res = NULL;
12533 int _mark = p->mark;
12534 int _start_mark = p->mark;
12535 void **_children = PyMem_Malloc(sizeof(void *));
12536 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012537 p->error_indicator = 1;
12538 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012539 return NULL;
12540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012541 ssize_t _children_capacity = 1;
12542 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012543 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012544 if (p->error_indicator) {
12545 return NULL;
12546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012547 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012548 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012549 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012550 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012551 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012552 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012553 )
12554 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012555 _res = elem;
12556 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012557 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012558 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012559 return NULL;
12560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012561 if (_n == _children_capacity) {
12562 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012563 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12564 if (!_new_children) {
12565 p->error_indicator = 1;
12566 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012567 return NULL;
12568 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012569 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012571 _children[_n++] = _res;
12572 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012573 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012574 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012575 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012576 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12577 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012578 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012579 p->error_indicator = 1;
12580 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012581 return NULL;
12582 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012583 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12584 PyMem_Free(_children);
12585 _PyPegen_insert_memo(p, _start_mark, _loop0_4_type, _seq);
12586 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012587}
12588
12589// _gather_3: expression _loop0_4
12590static asdl_seq *
12591_gather_3_rule(Parser *p)
12592{
12593 if (p->error_indicator) {
12594 return NULL;
12595 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012596 asdl_seq * _res = NULL;
12597 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012598 { // expression _loop0_4
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012599 if (p->error_indicator) {
12600 return NULL;
12601 }
Guido van Rossumc001c092020-04-30 12:12:19 -070012602 expr_ty elem;
12603 asdl_seq * seq;
12604 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012605 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012606 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012607 (seq = _loop0_4_rule(p)) // _loop0_4
Guido van Rossumc001c092020-04-30 12:12:19 -070012608 )
12609 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012610 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012611 goto done;
12612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012613 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012614 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012615 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012616 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012617 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012618}
12619
12620// _loop0_6: ',' expression
12621static asdl_seq *
12622_loop0_6_rule(Parser *p)
12623{
12624 if (p->error_indicator) {
12625 return NULL;
12626 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012627 void *_res = NULL;
12628 int _mark = p->mark;
12629 int _start_mark = p->mark;
12630 void **_children = PyMem_Malloc(sizeof(void *));
12631 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012632 p->error_indicator = 1;
12633 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012634 return NULL;
12635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012636 ssize_t _children_capacity = 1;
12637 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012638 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012639 if (p->error_indicator) {
12640 return NULL;
12641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012642 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012643 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012644 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012645 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012646 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012647 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012648 )
12649 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012650 _res = elem;
12651 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012652 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012653 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012654 return NULL;
12655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012656 if (_n == _children_capacity) {
12657 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012658 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12659 if (!_new_children) {
12660 p->error_indicator = 1;
12661 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012662 return NULL;
12663 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012664 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012665 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012666 _children[_n++] = _res;
12667 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012668 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012669 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012670 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012671 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12672 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012673 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012674 p->error_indicator = 1;
12675 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012676 return NULL;
12677 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012678 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12679 PyMem_Free(_children);
12680 _PyPegen_insert_memo(p, _start_mark, _loop0_6_type, _seq);
12681 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012682}
12683
12684// _gather_5: expression _loop0_6
12685static asdl_seq *
12686_gather_5_rule(Parser *p)
12687{
12688 if (p->error_indicator) {
12689 return NULL;
12690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012691 asdl_seq * _res = NULL;
12692 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012693 { // expression _loop0_6
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012694 if (p->error_indicator) {
12695 return NULL;
12696 }
Guido van Rossumc001c092020-04-30 12:12:19 -070012697 expr_ty elem;
12698 asdl_seq * seq;
12699 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012700 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012701 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012702 (seq = _loop0_6_rule(p)) // _loop0_6
Guido van Rossumc001c092020-04-30 12:12:19 -070012703 )
12704 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012705 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012706 goto done;
12707 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012708 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012709 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012710 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012711 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012712 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012713}
12714
12715// _loop0_8: ',' expression
12716static asdl_seq *
12717_loop0_8_rule(Parser *p)
12718{
12719 if (p->error_indicator) {
12720 return NULL;
12721 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012722 void *_res = NULL;
12723 int _mark = p->mark;
12724 int _start_mark = p->mark;
12725 void **_children = PyMem_Malloc(sizeof(void *));
12726 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012727 p->error_indicator = 1;
12728 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012729 return NULL;
12730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012731 ssize_t _children_capacity = 1;
12732 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012733 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012734 if (p->error_indicator) {
12735 return NULL;
12736 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012737 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012738 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012739 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012740 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012741 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012742 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012743 )
12744 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012745 _res = elem;
12746 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012747 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012748 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012749 return NULL;
12750 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012751 if (_n == _children_capacity) {
12752 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012753 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12754 if (!_new_children) {
12755 p->error_indicator = 1;
12756 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012757 return NULL;
12758 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012759 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012760 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012761 _children[_n++] = _res;
12762 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012763 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012764 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012765 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012766 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12767 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012768 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012769 p->error_indicator = 1;
12770 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012771 return NULL;
12772 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012773 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12774 PyMem_Free(_children);
12775 _PyPegen_insert_memo(p, _start_mark, _loop0_8_type, _seq);
12776 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012777}
12778
12779// _gather_7: expression _loop0_8
12780static asdl_seq *
12781_gather_7_rule(Parser *p)
12782{
12783 if (p->error_indicator) {
12784 return NULL;
12785 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012786 asdl_seq * _res = NULL;
12787 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012788 { // expression _loop0_8
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012789 if (p->error_indicator) {
12790 return NULL;
12791 }
Guido van Rossumc001c092020-04-30 12:12:19 -070012792 expr_ty elem;
12793 asdl_seq * seq;
12794 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012795 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012796 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012797 (seq = _loop0_8_rule(p)) // _loop0_8
Guido van Rossumc001c092020-04-30 12:12:19 -070012798 )
12799 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012800 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012801 goto done;
12802 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012803 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012804 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012805 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012806 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012807 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012808}
12809
12810// _loop0_10: ',' expression
12811static asdl_seq *
12812_loop0_10_rule(Parser *p)
12813{
12814 if (p->error_indicator) {
12815 return NULL;
12816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012817 void *_res = NULL;
12818 int _mark = p->mark;
12819 int _start_mark = p->mark;
12820 void **_children = PyMem_Malloc(sizeof(void *));
12821 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012822 p->error_indicator = 1;
12823 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012824 return NULL;
12825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012826 ssize_t _children_capacity = 1;
12827 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012828 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012829 if (p->error_indicator) {
12830 return NULL;
12831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012832 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012833 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012834 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012835 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012836 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012837 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012838 )
12839 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012840 _res = elem;
12841 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012842 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012843 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012844 return NULL;
12845 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012846 if (_n == _children_capacity) {
12847 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012848 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12849 if (!_new_children) {
12850 p->error_indicator = 1;
12851 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012852 return NULL;
12853 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012854 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012856 _children[_n++] = _res;
12857 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012859 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012861 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12862 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012863 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012864 p->error_indicator = 1;
12865 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012866 return NULL;
12867 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012868 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12869 PyMem_Free(_children);
12870 _PyPegen_insert_memo(p, _start_mark, _loop0_10_type, _seq);
12871 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012872}
12873
12874// _gather_9: expression _loop0_10
12875static asdl_seq *
12876_gather_9_rule(Parser *p)
12877{
12878 if (p->error_indicator) {
12879 return NULL;
12880 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012881 asdl_seq * _res = NULL;
12882 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012883 { // expression _loop0_10
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012884 if (p->error_indicator) {
12885 return NULL;
12886 }
Guido van Rossumc001c092020-04-30 12:12:19 -070012887 expr_ty elem;
12888 asdl_seq * seq;
12889 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012890 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012891 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012892 (seq = _loop0_10_rule(p)) // _loop0_10
Guido van Rossumc001c092020-04-30 12:12:19 -070012893 )
12894 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012895 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012896 goto done;
12897 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012898 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012899 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012900 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012901 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012902 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012903}
12904
12905// _loop1_11: statement
12906static asdl_seq *
12907_loop1_11_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012908{
12909 if (p->error_indicator) {
12910 return NULL;
12911 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012912 void *_res = NULL;
12913 int _mark = p->mark;
12914 int _start_mark = p->mark;
12915 void **_children = PyMem_Malloc(sizeof(void *));
12916 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012917 p->error_indicator = 1;
12918 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012919 return NULL;
12920 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012921 ssize_t _children_capacity = 1;
12922 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012923 { // statement
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012924 if (p->error_indicator) {
12925 return NULL;
12926 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012927 asdl_seq* statement_var;
12928 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010012929 (statement_var = statement_rule(p)) // statement
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012930 )
12931 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012932 _res = statement_var;
12933 if (_n == _children_capacity) {
12934 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012935 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12936 if (!_new_children) {
12937 p->error_indicator = 1;
12938 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012939 return NULL;
12940 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012941 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012942 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012943 _children[_n++] = _res;
12944 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012945 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012946 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012947 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012948 if (_n == 0 || p->error_indicator) {
12949 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012950 return NULL;
12951 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012952 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12953 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012954 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012955 p->error_indicator = 1;
12956 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012957 return NULL;
12958 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012959 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12960 PyMem_Free(_children);
12961 _PyPegen_insert_memo(p, _start_mark, _loop1_11_type, _seq);
12962 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012963}
12964
Guido van Rossumc001c092020-04-30 12:12:19 -070012965// _loop0_13: ';' small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012966static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012967_loop0_13_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012968{
12969 if (p->error_indicator) {
12970 return NULL;
12971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012972 void *_res = NULL;
12973 int _mark = p->mark;
12974 int _start_mark = p->mark;
12975 void **_children = PyMem_Malloc(sizeof(void *));
12976 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012977 p->error_indicator = 1;
12978 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012979 return NULL;
12980 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012981 ssize_t _children_capacity = 1;
12982 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012983 { // ';' small_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012984 if (p->error_indicator) {
12985 return NULL;
12986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012987 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012988 stmt_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012989 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012990 (_literal = _PyPegen_expect_token(p, 13)) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012991 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012992 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012993 )
12994 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012995 _res = elem;
12996 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012997 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012998 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012999 return NULL;
13000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013001 if (_n == _children_capacity) {
13002 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013003 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13004 if (!_new_children) {
13005 p->error_indicator = 1;
13006 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013007 return NULL;
13008 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013009 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013010 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013011 _children[_n++] = _res;
13012 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013013 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013014 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013015 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013016 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13017 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013018 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013019 p->error_indicator = 1;
13020 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013021 return NULL;
13022 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013023 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13024 PyMem_Free(_children);
13025 _PyPegen_insert_memo(p, _start_mark, _loop0_13_type, _seq);
13026 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013027}
13028
Guido van Rossumc001c092020-04-30 12:12:19 -070013029// _gather_12: small_stmt _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013030static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070013031_gather_12_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013032{
13033 if (p->error_indicator) {
13034 return NULL;
13035 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013036 asdl_seq * _res = NULL;
13037 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013038 { // small_stmt _loop0_13
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013039 if (p->error_indicator) {
13040 return NULL;
13041 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013042 stmt_ty elem;
13043 asdl_seq * seq;
13044 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013045 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013046 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013047 (seq = _loop0_13_rule(p)) // _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013048 )
13049 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013050 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013051 goto done;
13052 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013053 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013055 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013056 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013057 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013058}
13059
Guido van Rossumc001c092020-04-30 12:12:19 -070013060// _tmp_14: 'import' | 'from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013061static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013062_tmp_14_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013063{
13064 if (p->error_indicator) {
13065 return NULL;
13066 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013067 void * _res = NULL;
13068 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013069 { // 'import'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013070 if (p->error_indicator) {
13071 return NULL;
13072 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013073 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013074 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013075 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013076 )
13077 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013078 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013079 goto done;
13080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013081 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013082 }
13083 { // 'from'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013084 if (p->error_indicator) {
13085 return NULL;
13086 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013087 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013088 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013089 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013090 )
13091 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013092 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013093 goto done;
13094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013095 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013097 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013098 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013099 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013100}
13101
Guido van Rossumc001c092020-04-30 12:12:19 -070013102// _tmp_15: 'def' | '@' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013103static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013104_tmp_15_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013105{
13106 if (p->error_indicator) {
13107 return NULL;
13108 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013109 void * _res = NULL;
13110 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013111 { // 'def'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013112 if (p->error_indicator) {
13113 return NULL;
13114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013115 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013116 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013117 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013118 )
13119 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013120 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013121 goto done;
13122 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013123 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013124 }
13125 { // '@'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013126 if (p->error_indicator) {
13127 return NULL;
13128 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013129 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013130 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013131 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013132 )
13133 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013134 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013135 goto done;
13136 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013137 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013138 }
13139 { // ASYNC
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013140 if (p->error_indicator) {
13141 return NULL;
13142 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010013143 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013144 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013145 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013146 )
13147 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013148 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013149 goto done;
13150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013151 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013153 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013154 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013155 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013156}
13157
Guido van Rossumc001c092020-04-30 12:12:19 -070013158// _tmp_16: 'class' | '@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013159static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013160_tmp_16_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013161{
13162 if (p->error_indicator) {
13163 return NULL;
13164 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013165 void * _res = NULL;
13166 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013167 { // 'class'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013168 if (p->error_indicator) {
13169 return NULL;
13170 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013171 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013172 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013173 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013174 )
13175 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013176 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013177 goto done;
13178 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013179 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013180 }
13181 { // '@'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013182 if (p->error_indicator) {
13183 return NULL;
13184 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013185 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013186 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013187 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013188 )
13189 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013190 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013191 goto done;
13192 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013193 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013194 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013195 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013196 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013197 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013198}
13199
Guido van Rossumc001c092020-04-30 12:12:19 -070013200// _tmp_17: 'with' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013201static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013202_tmp_17_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013203{
13204 if (p->error_indicator) {
13205 return NULL;
13206 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013207 void * _res = NULL;
13208 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013209 { // 'with'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013210 if (p->error_indicator) {
13211 return NULL;
13212 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013213 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013214 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013215 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013216 )
13217 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013218 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013219 goto done;
13220 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013221 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013222 }
13223 { // ASYNC
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013224 if (p->error_indicator) {
13225 return NULL;
13226 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010013227 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013228 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013229 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013230 )
13231 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013232 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013233 goto done;
13234 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013235 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013236 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013237 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013238 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013239 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013240}
13241
Guido van Rossumc001c092020-04-30 12:12:19 -070013242// _tmp_18: 'for' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013243static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013244_tmp_18_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013245{
13246 if (p->error_indicator) {
13247 return NULL;
13248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013249 void * _res = NULL;
13250 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013251 { // 'for'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013252 if (p->error_indicator) {
13253 return NULL;
13254 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013255 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013256 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013257 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013258 )
13259 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013260 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013261 goto done;
13262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013263 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013264 }
13265 { // ASYNC
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013266 if (p->error_indicator) {
13267 return NULL;
13268 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010013269 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013270 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013271 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013272 )
13273 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013274 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013275 goto done;
13276 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013277 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013278 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013279 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013280 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013281 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013282}
13283
Guido van Rossumc001c092020-04-30 12:12:19 -070013284// _tmp_19: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013285static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013286_tmp_19_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013287{
13288 if (p->error_indicator) {
13289 return NULL;
13290 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013291 void * _res = NULL;
13292 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013293 { // '=' annotated_rhs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013294 if (p->error_indicator) {
13295 return NULL;
13296 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013297 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013298 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013299 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013300 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013301 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013302 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013303 )
13304 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013305 _res = d;
13306 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013307 p->error_indicator = 1;
13308 return NULL;
13309 }
13310 goto done;
13311 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013312 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013313 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013314 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013315 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013316 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013317}
13318
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013319// _tmp_20: '(' single_target ')' | single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013320static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013321_tmp_20_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013322{
13323 if (p->error_indicator) {
13324 return NULL;
13325 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013326 void * _res = NULL;
13327 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013328 { // '(' single_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013329 if (p->error_indicator) {
13330 return NULL;
13331 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013332 Token * _literal;
13333 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013334 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013335 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013336 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013337 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013338 (b = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013339 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013340 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013341 )
13342 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013343 _res = b;
13344 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013345 p->error_indicator = 1;
13346 return NULL;
13347 }
13348 goto done;
13349 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013350 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013351 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013352 { // single_subscript_attribute_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013353 if (p->error_indicator) {
13354 return NULL;
13355 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013356 expr_ty single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013357 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013358 (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p)) // single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013359 )
13360 {
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013361 _res = single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013362 goto done;
13363 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013364 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013366 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013367 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013368 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013369}
13370
Guido van Rossumc001c092020-04-30 12:12:19 -070013371// _tmp_21: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013372static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013373_tmp_21_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013374{
13375 if (p->error_indicator) {
13376 return NULL;
13377 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013378 void * _res = NULL;
13379 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013380 { // '=' annotated_rhs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013381 if (p->error_indicator) {
13382 return NULL;
13383 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013384 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013385 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013386 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013387 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013388 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013389 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013390 )
13391 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013392 _res = d;
13393 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013394 p->error_indicator = 1;
13395 return NULL;
13396 }
13397 goto done;
13398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013399 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013400 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013401 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013402 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013403 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013404}
13405
Guido van Rossumc001c092020-04-30 12:12:19 -070013406// _loop1_22: (star_targets '=')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013407static asdl_seq *
13408_loop1_22_rule(Parser *p)
13409{
13410 if (p->error_indicator) {
13411 return NULL;
13412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013413 void *_res = NULL;
13414 int _mark = p->mark;
13415 int _start_mark = p->mark;
13416 void **_children = PyMem_Malloc(sizeof(void *));
13417 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013418 p->error_indicator = 1;
13419 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013420 return NULL;
13421 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013422 ssize_t _children_capacity = 1;
13423 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013424 { // (star_targets '=')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013425 if (p->error_indicator) {
13426 return NULL;
13427 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013428 void *_tmp_135_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013429 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013430 (_tmp_135_var = _tmp_135_rule(p)) // star_targets '='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013431 )
13432 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013433 _res = _tmp_135_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013434 if (_n == _children_capacity) {
13435 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013436 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13437 if (!_new_children) {
13438 p->error_indicator = 1;
13439 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013440 return NULL;
13441 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013442 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013443 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013444 _children[_n++] = _res;
13445 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013446 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013447 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013448 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013449 if (_n == 0 || p->error_indicator) {
13450 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013451 return NULL;
13452 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013453 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13454 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013455 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013456 p->error_indicator = 1;
13457 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013458 return NULL;
13459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013460 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13461 PyMem_Free(_children);
13462 _PyPegen_insert_memo(p, _start_mark, _loop1_22_type, _seq);
13463 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013464}
13465
Guido van Rossumc001c092020-04-30 12:12:19 -070013466// _tmp_23: yield_expr | star_expressions
13467static void *
13468_tmp_23_rule(Parser *p)
13469{
13470 if (p->error_indicator) {
13471 return NULL;
13472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013473 void * _res = NULL;
13474 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013475 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013476 if (p->error_indicator) {
13477 return NULL;
13478 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013479 expr_ty yield_expr_var;
13480 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013481 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070013482 )
13483 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013484 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013485 goto done;
13486 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013487 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013488 }
13489 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013490 if (p->error_indicator) {
13491 return NULL;
13492 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013493 expr_ty star_expressions_var;
13494 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013495 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070013496 )
13497 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013498 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013499 goto done;
13500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013501 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013503 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013504 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013505 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013506}
13507
13508// _tmp_24: yield_expr | star_expressions
13509static void *
13510_tmp_24_rule(Parser *p)
13511{
13512 if (p->error_indicator) {
13513 return NULL;
13514 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013515 void * _res = NULL;
13516 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013517 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013518 if (p->error_indicator) {
13519 return NULL;
13520 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013521 expr_ty yield_expr_var;
13522 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013523 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070013524 )
13525 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013526 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013527 goto done;
13528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013529 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013530 }
13531 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013532 if (p->error_indicator) {
13533 return NULL;
13534 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013535 expr_ty star_expressions_var;
13536 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013537 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070013538 )
13539 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013540 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013541 goto done;
13542 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013543 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013544 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013545 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013546 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013547 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013548}
13549
13550// _loop0_26: ',' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013551static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070013552_loop0_26_rule(Parser *p)
13553{
13554 if (p->error_indicator) {
13555 return NULL;
13556 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013557 void *_res = NULL;
13558 int _mark = p->mark;
13559 int _start_mark = p->mark;
13560 void **_children = PyMem_Malloc(sizeof(void *));
13561 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013562 p->error_indicator = 1;
13563 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013564 return NULL;
13565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013566 ssize_t _children_capacity = 1;
13567 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013568 { // ',' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013569 if (p->error_indicator) {
13570 return NULL;
13571 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013572 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070013573 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070013574 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013575 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070013576 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013577 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070013578 )
13579 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013580 _res = elem;
13581 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013582 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013583 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013584 return NULL;
13585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013586 if (_n == _children_capacity) {
13587 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013588 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13589 if (!_new_children) {
13590 p->error_indicator = 1;
13591 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013592 return NULL;
13593 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013594 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013595 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013596 _children[_n++] = _res;
13597 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013598 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013599 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013601 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13602 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013603 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013604 p->error_indicator = 1;
13605 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013606 return NULL;
13607 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013608 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13609 PyMem_Free(_children);
13610 _PyPegen_insert_memo(p, _start_mark, _loop0_26_type, _seq);
13611 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013612}
13613
13614// _gather_25: NAME _loop0_26
13615static asdl_seq *
13616_gather_25_rule(Parser *p)
13617{
13618 if (p->error_indicator) {
13619 return NULL;
13620 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013621 asdl_seq * _res = NULL;
13622 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013623 { // NAME _loop0_26
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013624 if (p->error_indicator) {
13625 return NULL;
13626 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013627 expr_ty elem;
13628 asdl_seq * seq;
13629 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013630 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070013631 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013632 (seq = _loop0_26_rule(p)) // _loop0_26
Guido van Rossumc001c092020-04-30 12:12:19 -070013633 )
13634 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013635 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070013636 goto done;
13637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013638 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013639 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013640 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013641 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013642 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013643}
13644
13645// _loop0_28: ',' NAME
13646static asdl_seq *
13647_loop0_28_rule(Parser *p)
13648{
13649 if (p->error_indicator) {
13650 return NULL;
13651 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013652 void *_res = NULL;
13653 int _mark = p->mark;
13654 int _start_mark = p->mark;
13655 void **_children = PyMem_Malloc(sizeof(void *));
13656 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013657 p->error_indicator = 1;
13658 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013659 return NULL;
13660 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013661 ssize_t _children_capacity = 1;
13662 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013663 { // ',' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013664 if (p->error_indicator) {
13665 return NULL;
13666 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013667 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070013668 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070013669 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013670 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070013671 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013672 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070013673 )
13674 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013675 _res = elem;
13676 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013677 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013678 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013679 return NULL;
13680 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013681 if (_n == _children_capacity) {
13682 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013683 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13684 if (!_new_children) {
13685 p->error_indicator = 1;
13686 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013687 return NULL;
13688 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013689 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013691 _children[_n++] = _res;
13692 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013694 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013695 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013696 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13697 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013698 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013699 p->error_indicator = 1;
13700 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013701 return NULL;
13702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013703 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13704 PyMem_Free(_children);
13705 _PyPegen_insert_memo(p, _start_mark, _loop0_28_type, _seq);
13706 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013707}
13708
13709// _gather_27: NAME _loop0_28
13710static asdl_seq *
13711_gather_27_rule(Parser *p)
13712{
13713 if (p->error_indicator) {
13714 return NULL;
13715 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013716 asdl_seq * _res = NULL;
13717 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013718 { // NAME _loop0_28
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013719 if (p->error_indicator) {
13720 return NULL;
13721 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013722 expr_ty elem;
13723 asdl_seq * seq;
13724 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013725 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070013726 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013727 (seq = _loop0_28_rule(p)) // _loop0_28
Guido van Rossumc001c092020-04-30 12:12:19 -070013728 )
13729 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013730 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070013731 goto done;
13732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013733 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013734 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013735 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013736 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013737 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013738}
13739
13740// _tmp_29: ',' expression
13741static void *
13742_tmp_29_rule(Parser *p)
13743{
13744 if (p->error_indicator) {
13745 return NULL;
13746 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013747 void * _res = NULL;
13748 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013749 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013750 if (p->error_indicator) {
13751 return NULL;
13752 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013753 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070013754 expr_ty z;
13755 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013756 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070013757 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013758 (z = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070013759 )
13760 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013761 _res = z;
13762 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013763 p->error_indicator = 1;
13764 return NULL;
13765 }
13766 goto done;
13767 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013768 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013769 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013770 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013771 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013772 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013773}
13774
13775// _loop0_30: ('.' | '...')
13776static asdl_seq *
13777_loop0_30_rule(Parser *p)
13778{
13779 if (p->error_indicator) {
13780 return NULL;
13781 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013782 void *_res = NULL;
13783 int _mark = p->mark;
13784 int _start_mark = p->mark;
13785 void **_children = PyMem_Malloc(sizeof(void *));
13786 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013787 p->error_indicator = 1;
13788 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013789 return NULL;
13790 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013791 ssize_t _children_capacity = 1;
13792 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013793 { // ('.' | '...')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013794 if (p->error_indicator) {
13795 return NULL;
13796 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013797 void *_tmp_136_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013798 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013799 (_tmp_136_var = _tmp_136_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070013800 )
13801 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013802 _res = _tmp_136_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013803 if (_n == _children_capacity) {
13804 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013805 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13806 if (!_new_children) {
13807 p->error_indicator = 1;
13808 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013809 return NULL;
13810 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013811 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013812 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013813 _children[_n++] = _res;
13814 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013816 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013818 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13819 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013820 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013821 p->error_indicator = 1;
13822 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013823 return NULL;
13824 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013825 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13826 PyMem_Free(_children);
13827 _PyPegen_insert_memo(p, _start_mark, _loop0_30_type, _seq);
13828 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013829}
13830
13831// _loop1_31: ('.' | '...')
13832static asdl_seq *
13833_loop1_31_rule(Parser *p)
13834{
13835 if (p->error_indicator) {
13836 return NULL;
13837 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013838 void *_res = NULL;
13839 int _mark = p->mark;
13840 int _start_mark = p->mark;
13841 void **_children = PyMem_Malloc(sizeof(void *));
13842 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013843 p->error_indicator = 1;
13844 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013845 return NULL;
13846 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013847 ssize_t _children_capacity = 1;
13848 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013849 { // ('.' | '...')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013850 if (p->error_indicator) {
13851 return NULL;
13852 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013853 void *_tmp_137_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013854 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013855 (_tmp_137_var = _tmp_137_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070013856 )
13857 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013858 _res = _tmp_137_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013859 if (_n == _children_capacity) {
13860 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013861 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13862 if (!_new_children) {
13863 p->error_indicator = 1;
13864 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013865 return NULL;
13866 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013867 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013868 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013869 _children[_n++] = _res;
13870 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013871 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013872 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013873 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013874 if (_n == 0 || p->error_indicator) {
13875 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013876 return NULL;
13877 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013878 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13879 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013880 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013881 p->error_indicator = 1;
13882 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013883 return NULL;
13884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013885 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13886 PyMem_Free(_children);
13887 _PyPegen_insert_memo(p, _start_mark, _loop1_31_type, _seq);
13888 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013889}
13890
13891// _loop0_33: ',' import_from_as_name
13892static asdl_seq *
13893_loop0_33_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013894{
13895 if (p->error_indicator) {
13896 return NULL;
13897 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013898 void *_res = NULL;
13899 int _mark = p->mark;
13900 int _start_mark = p->mark;
13901 void **_children = PyMem_Malloc(sizeof(void *));
13902 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013903 p->error_indicator = 1;
13904 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013905 return NULL;
13906 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013907 ssize_t _children_capacity = 1;
13908 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013909 { // ',' import_from_as_name
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013910 if (p->error_indicator) {
13911 return NULL;
13912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013913 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013914 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013915 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013916 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013917 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013918 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013919 )
13920 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013921 _res = elem;
13922 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013923 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013924 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013925 return NULL;
13926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013927 if (_n == _children_capacity) {
13928 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013929 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13930 if (!_new_children) {
13931 p->error_indicator = 1;
13932 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013933 return NULL;
13934 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013935 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013937 _children[_n++] = _res;
13938 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013939 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013940 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013941 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013942 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13943 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013944 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013945 p->error_indicator = 1;
13946 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013947 return NULL;
13948 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013949 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13950 PyMem_Free(_children);
13951 _PyPegen_insert_memo(p, _start_mark, _loop0_33_type, _seq);
13952 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013953}
13954
Guido van Rossumc001c092020-04-30 12:12:19 -070013955// _gather_32: import_from_as_name _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013956static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070013957_gather_32_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013958{
13959 if (p->error_indicator) {
13960 return NULL;
13961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013962 asdl_seq * _res = NULL;
13963 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013964 { // import_from_as_name _loop0_33
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013965 if (p->error_indicator) {
13966 return NULL;
13967 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013968 alias_ty elem;
13969 asdl_seq * seq;
13970 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013971 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013972 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013973 (seq = _loop0_33_rule(p)) // _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013974 )
13975 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013976 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013977 goto done;
13978 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013979 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013980 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013981 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013982 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013983 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013984}
13985
Guido van Rossumc001c092020-04-30 12:12:19 -070013986// _tmp_34: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013987static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013988_tmp_34_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013989{
13990 if (p->error_indicator) {
13991 return NULL;
13992 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013993 void * _res = NULL;
13994 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013995 { // 'as' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013996 if (p->error_indicator) {
13997 return NULL;
13998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013999 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014000 expr_ty z;
14001 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014002 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014003 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014004 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014005 )
14006 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014007 _res = z;
14008 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014009 p->error_indicator = 1;
14010 return NULL;
14011 }
14012 goto done;
14013 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014014 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014015 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014016 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014017 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014018 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014019}
14020
Guido van Rossumc001c092020-04-30 12:12:19 -070014021// _loop0_36: ',' dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014022static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070014023_loop0_36_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014024{
14025 if (p->error_indicator) {
14026 return NULL;
14027 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014028 void *_res = NULL;
14029 int _mark = p->mark;
14030 int _start_mark = p->mark;
14031 void **_children = PyMem_Malloc(sizeof(void *));
14032 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014033 p->error_indicator = 1;
14034 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014035 return NULL;
14036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014037 ssize_t _children_capacity = 1;
14038 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014039 { // ',' dotted_as_name
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014040 if (p->error_indicator) {
14041 return NULL;
14042 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014043 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014044 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014045 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014046 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014047 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014048 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014049 )
14050 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014051 _res = elem;
14052 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014053 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014054 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014055 return NULL;
14056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014057 if (_n == _children_capacity) {
14058 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014059 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14060 if (!_new_children) {
14061 p->error_indicator = 1;
14062 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014063 return NULL;
14064 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014065 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014066 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014067 _children[_n++] = _res;
14068 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014069 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014070 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014072 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14073 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014074 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014075 p->error_indicator = 1;
14076 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014077 return NULL;
14078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014079 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14080 PyMem_Free(_children);
14081 _PyPegen_insert_memo(p, _start_mark, _loop0_36_type, _seq);
14082 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014083}
14084
Guido van Rossumc001c092020-04-30 12:12:19 -070014085// _gather_35: dotted_as_name _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014086static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070014087_gather_35_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014088{
14089 if (p->error_indicator) {
14090 return NULL;
14091 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014092 asdl_seq * _res = NULL;
14093 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014094 { // dotted_as_name _loop0_36
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014095 if (p->error_indicator) {
14096 return NULL;
14097 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014098 alias_ty elem;
14099 asdl_seq * seq;
14100 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014101 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014102 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014103 (seq = _loop0_36_rule(p)) // _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014104 )
14105 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014106 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014107 goto done;
14108 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014109 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014110 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014111 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014112 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014113 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014114}
14115
Guido van Rossumc001c092020-04-30 12:12:19 -070014116// _tmp_37: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014117static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070014118_tmp_37_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014119{
14120 if (p->error_indicator) {
14121 return NULL;
14122 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014123 void * _res = NULL;
14124 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014125 { // 'as' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014126 if (p->error_indicator) {
14127 return NULL;
14128 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014129 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014130 expr_ty z;
14131 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014132 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014133 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014134 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014135 )
14136 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014137 _res = z;
14138 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014139 p->error_indicator = 1;
14140 return NULL;
14141 }
14142 goto done;
14143 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014144 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014145 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014146 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014147 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014148 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014149}
14150
Guido van Rossumc001c092020-04-30 12:12:19 -070014151// _loop0_39: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014152static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070014153_loop0_39_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014154{
14155 if (p->error_indicator) {
14156 return NULL;
14157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014158 void *_res = NULL;
14159 int _mark = p->mark;
14160 int _start_mark = p->mark;
14161 void **_children = PyMem_Malloc(sizeof(void *));
14162 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014163 p->error_indicator = 1;
14164 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014165 return NULL;
14166 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014167 ssize_t _children_capacity = 1;
14168 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014169 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014170 if (p->error_indicator) {
14171 return NULL;
14172 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014173 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014174 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014175 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014176 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014177 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014178 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014179 )
14180 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014181 _res = elem;
14182 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014183 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014184 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014185 return NULL;
14186 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014187 if (_n == _children_capacity) {
14188 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014189 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14190 if (!_new_children) {
14191 p->error_indicator = 1;
14192 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014193 return NULL;
14194 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014195 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014196 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014197 _children[_n++] = _res;
14198 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014199 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014200 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014201 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014202 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14203 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014204 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014205 p->error_indicator = 1;
14206 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014207 return NULL;
14208 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014209 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14210 PyMem_Free(_children);
14211 _PyPegen_insert_memo(p, _start_mark, _loop0_39_type, _seq);
14212 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014213}
14214
Guido van Rossumc001c092020-04-30 12:12:19 -070014215// _gather_38: with_item _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014216static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070014217_gather_38_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014218{
14219 if (p->error_indicator) {
14220 return NULL;
14221 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014222 asdl_seq * _res = NULL;
14223 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014224 { // with_item _loop0_39
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014225 if (p->error_indicator) {
14226 return NULL;
14227 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014228 withitem_ty elem;
14229 asdl_seq * seq;
14230 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014231 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014232 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014233 (seq = _loop0_39_rule(p)) // _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014234 )
14235 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014236 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014237 goto done;
14238 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014239 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014240 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014241 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014242 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014243 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014244}
14245
Guido van Rossumc001c092020-04-30 12:12:19 -070014246// _loop0_41: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014247static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070014248_loop0_41_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014249{
14250 if (p->error_indicator) {
14251 return NULL;
14252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014253 void *_res = NULL;
14254 int _mark = p->mark;
14255 int _start_mark = p->mark;
14256 void **_children = PyMem_Malloc(sizeof(void *));
14257 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014258 p->error_indicator = 1;
14259 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014260 return NULL;
14261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014262 ssize_t _children_capacity = 1;
14263 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014264 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014265 if (p->error_indicator) {
14266 return NULL;
14267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014268 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014269 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014270 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014271 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014272 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014273 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014274 )
14275 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014276 _res = elem;
14277 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014278 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014279 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014280 return NULL;
14281 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014282 if (_n == _children_capacity) {
14283 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014284 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14285 if (!_new_children) {
14286 p->error_indicator = 1;
14287 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014288 return NULL;
14289 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014290 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014292 _children[_n++] = _res;
14293 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014295 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014296 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014297 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14298 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014299 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014300 p->error_indicator = 1;
14301 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014302 return NULL;
14303 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014304 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14305 PyMem_Free(_children);
14306 _PyPegen_insert_memo(p, _start_mark, _loop0_41_type, _seq);
14307 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014308}
14309
Guido van Rossumc001c092020-04-30 12:12:19 -070014310// _gather_40: with_item _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014311static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070014312_gather_40_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014313{
14314 if (p->error_indicator) {
14315 return NULL;
14316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014317 asdl_seq * _res = NULL;
14318 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014319 { // with_item _loop0_41
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014320 if (p->error_indicator) {
14321 return NULL;
14322 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014323 withitem_ty elem;
14324 asdl_seq * seq;
14325 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014326 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014327 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014328 (seq = _loop0_41_rule(p)) // _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014329 )
14330 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014331 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014332 goto done;
14333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014334 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014335 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014336 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014337 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014338 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014339}
14340
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014341// _loop0_43: ',' with_item
14342static asdl_seq *
14343_loop0_43_rule(Parser *p)
14344{
14345 if (p->error_indicator) {
14346 return NULL;
14347 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014348 void *_res = NULL;
14349 int _mark = p->mark;
14350 int _start_mark = p->mark;
14351 void **_children = PyMem_Malloc(sizeof(void *));
14352 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014353 p->error_indicator = 1;
14354 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014355 return NULL;
14356 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014357 ssize_t _children_capacity = 1;
14358 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014359 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014360 if (p->error_indicator) {
14361 return NULL;
14362 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014363 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014364 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014365 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014366 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014367 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014368 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014369 )
14370 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014371 _res = elem;
14372 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014373 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014374 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014375 return NULL;
14376 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014377 if (_n == _children_capacity) {
14378 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014379 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14380 if (!_new_children) {
14381 p->error_indicator = 1;
14382 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014383 return NULL;
14384 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014385 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014387 _children[_n++] = _res;
14388 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014389 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014390 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014392 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14393 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014394 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014395 p->error_indicator = 1;
14396 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014397 return NULL;
14398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014399 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14400 PyMem_Free(_children);
14401 _PyPegen_insert_memo(p, _start_mark, _loop0_43_type, _seq);
14402 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014403}
14404
14405// _gather_42: with_item _loop0_43
14406static asdl_seq *
14407_gather_42_rule(Parser *p)
14408{
14409 if (p->error_indicator) {
14410 return NULL;
14411 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014412 asdl_seq * _res = NULL;
14413 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014414 { // with_item _loop0_43
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014415 if (p->error_indicator) {
14416 return NULL;
14417 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014418 withitem_ty elem;
14419 asdl_seq * seq;
14420 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014421 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014422 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014423 (seq = _loop0_43_rule(p)) // _loop0_43
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014424 )
14425 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014426 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014427 goto done;
14428 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014429 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014430 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014431 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014432 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014433 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014434}
14435
14436// _loop0_45: ',' with_item
14437static asdl_seq *
14438_loop0_45_rule(Parser *p)
14439{
14440 if (p->error_indicator) {
14441 return NULL;
14442 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014443 void *_res = NULL;
14444 int _mark = p->mark;
14445 int _start_mark = p->mark;
14446 void **_children = PyMem_Malloc(sizeof(void *));
14447 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014448 p->error_indicator = 1;
14449 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014450 return NULL;
14451 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014452 ssize_t _children_capacity = 1;
14453 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014454 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014455 if (p->error_indicator) {
14456 return NULL;
14457 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014458 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014459 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014460 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014461 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014462 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014463 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014464 )
14465 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014466 _res = elem;
14467 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014468 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014469 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014470 return NULL;
14471 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014472 if (_n == _children_capacity) {
14473 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014474 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14475 if (!_new_children) {
14476 p->error_indicator = 1;
14477 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014478 return NULL;
14479 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014480 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014481 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014482 _children[_n++] = _res;
14483 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014484 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014485 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014486 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014487 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14488 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014489 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014490 p->error_indicator = 1;
14491 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014492 return NULL;
14493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014494 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14495 PyMem_Free(_children);
14496 _PyPegen_insert_memo(p, _start_mark, _loop0_45_type, _seq);
14497 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014498}
14499
14500// _gather_44: with_item _loop0_45
14501static asdl_seq *
14502_gather_44_rule(Parser *p)
14503{
14504 if (p->error_indicator) {
14505 return NULL;
14506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014507 asdl_seq * _res = NULL;
14508 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014509 { // with_item _loop0_45
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014510 if (p->error_indicator) {
14511 return NULL;
14512 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014513 withitem_ty elem;
14514 asdl_seq * seq;
14515 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014516 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014517 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014518 (seq = _loop0_45_rule(p)) // _loop0_45
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014519 )
14520 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014521 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014522 goto done;
14523 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014524 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014525 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014526 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014527 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014528 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014529}
14530
14531// _tmp_46: 'as' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014532static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014533_tmp_46_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014534{
14535 if (p->error_indicator) {
14536 return NULL;
14537 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014538 void * _res = NULL;
14539 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014540 { // 'as' target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014541 if (p->error_indicator) {
14542 return NULL;
14543 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014544 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014545 expr_ty t;
14546 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014547 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014548 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014549 (t = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014550 )
14551 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014552 _res = t;
14553 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014554 p->error_indicator = 1;
14555 return NULL;
14556 }
14557 goto done;
14558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014559 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014561 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014562 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014563 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014564}
14565
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014566// _loop1_47: except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014567static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014568_loop1_47_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014569{
14570 if (p->error_indicator) {
14571 return NULL;
14572 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014573 void *_res = NULL;
14574 int _mark = p->mark;
14575 int _start_mark = p->mark;
14576 void **_children = PyMem_Malloc(sizeof(void *));
14577 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014578 p->error_indicator = 1;
14579 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014580 return NULL;
14581 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014582 ssize_t _children_capacity = 1;
14583 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014584 { // except_block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014585 if (p->error_indicator) {
14586 return NULL;
14587 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014588 excepthandler_ty except_block_var;
14589 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014590 (except_block_var = except_block_rule(p)) // except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014591 )
14592 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014593 _res = except_block_var;
14594 if (_n == _children_capacity) {
14595 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014596 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14597 if (!_new_children) {
14598 p->error_indicator = 1;
14599 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014600 return NULL;
14601 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014602 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014603 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014604 _children[_n++] = _res;
14605 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014606 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014607 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014608 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014609 if (_n == 0 || p->error_indicator) {
14610 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014611 return NULL;
14612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014613 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14614 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014615 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014616 p->error_indicator = 1;
14617 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014618 return NULL;
14619 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014620 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14621 PyMem_Free(_children);
14622 _PyPegen_insert_memo(p, _start_mark, _loop1_47_type, _seq);
14623 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014624}
14625
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030014626// _tmp_48: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014627static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014628_tmp_48_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014629{
14630 if (p->error_indicator) {
14631 return NULL;
14632 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014633 void * _res = NULL;
14634 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030014635 { // 'as' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014636 if (p->error_indicator) {
14637 return NULL;
14638 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014639 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014640 expr_ty z;
14641 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014642 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014643 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030014644 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014645 )
14646 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014647 _res = z;
14648 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014649 p->error_indicator = 1;
14650 return NULL;
14651 }
14652 goto done;
14653 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014654 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014656 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014657 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014658 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014659}
14660
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014661// _tmp_49: 'from' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014662static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014663_tmp_49_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014664{
14665 if (p->error_indicator) {
14666 return NULL;
14667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014668 void * _res = NULL;
14669 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014670 { // 'from' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014671 if (p->error_indicator) {
14672 return NULL;
14673 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014674 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014675 expr_ty z;
14676 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014677 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014678 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014679 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014680 )
14681 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014682 _res = z;
14683 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014684 p->error_indicator = 1;
14685 return NULL;
14686 }
14687 goto done;
14688 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014689 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014691 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014692 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014693 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014694}
14695
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014696// _tmp_50: '->' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014697static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014698_tmp_50_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014699{
14700 if (p->error_indicator) {
14701 return NULL;
14702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014703 void * _res = NULL;
14704 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014705 { // '->' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014706 if (p->error_indicator) {
14707 return NULL;
14708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014709 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070014710 expr_ty z;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014711 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014712 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014713 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014714 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014715 )
14716 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014717 _res = z;
14718 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014719 p->error_indicator = 1;
14720 return NULL;
14721 }
14722 goto done;
14723 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014724 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014725 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014726 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014727 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014728 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014729}
14730
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014731// _tmp_51: '->' expression
Guido van Rossumc001c092020-04-30 12:12:19 -070014732static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014733_tmp_51_rule(Parser *p)
14734{
14735 if (p->error_indicator) {
14736 return NULL;
14737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014738 void * _res = NULL;
14739 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014740 { // '->' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014741 if (p->error_indicator) {
14742 return NULL;
14743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014744 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014745 expr_ty z;
14746 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014747 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014748 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014749 (z = expression_rule(p)) // expression
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014750 )
14751 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014752 _res = z;
14753 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014754 p->error_indicator = 1;
14755 return NULL;
14756 }
14757 goto done;
14758 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014759 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014760 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014761 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014762 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014763 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014764}
14765
14766// _tmp_52: NEWLINE INDENT
14767static void *
14768_tmp_52_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070014769{
14770 if (p->error_indicator) {
14771 return NULL;
14772 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014773 void * _res = NULL;
14774 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014775 { // NEWLINE INDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014776 if (p->error_indicator) {
14777 return NULL;
14778 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010014779 Token * indent_var;
14780 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070014781 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014782 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070014783 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014784 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070014785 )
14786 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014787 _res = _PyPegen_dummy_name(p, newline_var, indent_var);
Guido van Rossumc001c092020-04-30 12:12:19 -070014788 goto done;
14789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014790 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014792 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070014793 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014794 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070014795}
14796
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014797// _loop0_53: param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014798static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014799_loop0_53_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014800{
14801 if (p->error_indicator) {
14802 return NULL;
14803 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014804 void *_res = NULL;
14805 int _mark = p->mark;
14806 int _start_mark = p->mark;
14807 void **_children = PyMem_Malloc(sizeof(void *));
14808 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014809 p->error_indicator = 1;
14810 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014811 return NULL;
14812 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014813 ssize_t _children_capacity = 1;
14814 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014815 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014816 if (p->error_indicator) {
14817 return NULL;
14818 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014819 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014820 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014821 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014822 )
14823 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014824 _res = param_no_default_var;
14825 if (_n == _children_capacity) {
14826 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014827 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14828 if (!_new_children) {
14829 p->error_indicator = 1;
14830 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014831 return NULL;
14832 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014833 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014834 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014835 _children[_n++] = _res;
14836 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014837 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014838 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014839 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014840 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14841 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014842 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014843 p->error_indicator = 1;
14844 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014845 return NULL;
14846 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014847 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14848 PyMem_Free(_children);
14849 _PyPegen_insert_memo(p, _start_mark, _loop0_53_type, _seq);
14850 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014851}
14852
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014853// _loop0_54: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014854static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014855_loop0_54_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014856{
14857 if (p->error_indicator) {
14858 return NULL;
14859 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014860 void *_res = NULL;
14861 int _mark = p->mark;
14862 int _start_mark = p->mark;
14863 void **_children = PyMem_Malloc(sizeof(void *));
14864 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014865 p->error_indicator = 1;
14866 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014867 return NULL;
14868 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014869 ssize_t _children_capacity = 1;
14870 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014871 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014872 if (p->error_indicator) {
14873 return NULL;
14874 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014875 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014876 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014877 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014878 )
14879 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014880 _res = param_with_default_var;
14881 if (_n == _children_capacity) {
14882 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014883 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14884 if (!_new_children) {
14885 p->error_indicator = 1;
14886 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014887 return NULL;
14888 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014889 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070014890 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014891 _children[_n++] = _res;
14892 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014893 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014894 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014895 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014896 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14897 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014898 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014899 p->error_indicator = 1;
14900 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014901 return NULL;
14902 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014903 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14904 PyMem_Free(_children);
14905 _PyPegen_insert_memo(p, _start_mark, _loop0_54_type, _seq);
14906 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070014907}
14908
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014909// _loop0_55: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014910static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014911_loop0_55_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070014912{
14913 if (p->error_indicator) {
14914 return NULL;
14915 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014916 void *_res = NULL;
14917 int _mark = p->mark;
14918 int _start_mark = p->mark;
14919 void **_children = PyMem_Malloc(sizeof(void *));
14920 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014921 p->error_indicator = 1;
14922 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014923 return NULL;
14924 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014925 ssize_t _children_capacity = 1;
14926 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014927 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014928 if (p->error_indicator) {
14929 return NULL;
14930 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014931 NameDefaultPair* param_with_default_var;
14932 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014933 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014934 )
14935 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014936 _res = param_with_default_var;
14937 if (_n == _children_capacity) {
14938 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014939 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14940 if (!_new_children) {
14941 p->error_indicator = 1;
14942 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014943 return NULL;
14944 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014945 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070014946 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014947 _children[_n++] = _res;
14948 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014949 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014950 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014951 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014952 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14953 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014954 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014955 p->error_indicator = 1;
14956 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014957 return NULL;
14958 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014959 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14960 PyMem_Free(_children);
14961 _PyPegen_insert_memo(p, _start_mark, _loop0_55_type, _seq);
14962 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070014963}
14964
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014965// _loop1_56: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014966static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014967_loop1_56_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070014968{
14969 if (p->error_indicator) {
14970 return NULL;
14971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014972 void *_res = NULL;
14973 int _mark = p->mark;
14974 int _start_mark = p->mark;
14975 void **_children = PyMem_Malloc(sizeof(void *));
14976 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014977 p->error_indicator = 1;
14978 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014979 return NULL;
14980 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014981 ssize_t _children_capacity = 1;
14982 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014983 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014984 if (p->error_indicator) {
14985 return NULL;
14986 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014987 arg_ty param_no_default_var;
14988 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014989 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014990 )
14991 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014992 _res = param_no_default_var;
14993 if (_n == _children_capacity) {
14994 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014995 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14996 if (!_new_children) {
14997 p->error_indicator = 1;
14998 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014999 return NULL;
15000 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015001 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015003 _children[_n++] = _res;
15004 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015005 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015006 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015007 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015008 if (_n == 0 || p->error_indicator) {
15009 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015010 return NULL;
15011 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015012 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15013 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015014 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015015 p->error_indicator = 1;
15016 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015017 return NULL;
15018 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015019 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15020 PyMem_Free(_children);
15021 _PyPegen_insert_memo(p, _start_mark, _loop1_56_type, _seq);
15022 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015023}
15024
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015025// _loop0_57: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015026static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015027_loop0_57_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015028{
15029 if (p->error_indicator) {
15030 return NULL;
15031 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015032 void *_res = NULL;
15033 int _mark = p->mark;
15034 int _start_mark = p->mark;
15035 void **_children = PyMem_Malloc(sizeof(void *));
15036 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015037 p->error_indicator = 1;
15038 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015039 return NULL;
15040 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015041 ssize_t _children_capacity = 1;
15042 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070015043 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015044 if (p->error_indicator) {
15045 return NULL;
15046 }
Guido van Rossumc001c092020-04-30 12:12:19 -070015047 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015048 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015049 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015050 )
15051 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015052 _res = param_with_default_var;
15053 if (_n == _children_capacity) {
15054 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015055 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15056 if (!_new_children) {
15057 p->error_indicator = 1;
15058 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015059 return NULL;
15060 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015061 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015062 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015063 _children[_n++] = _res;
15064 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015065 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015066 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015067 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015068 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15069 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015070 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015071 p->error_indicator = 1;
15072 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015073 return NULL;
15074 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015075 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15076 PyMem_Free(_children);
15077 _PyPegen_insert_memo(p, _start_mark, _loop0_57_type, _seq);
15078 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015079}
15080
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015081// _loop1_58: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015082static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015083_loop1_58_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015084{
15085 if (p->error_indicator) {
15086 return NULL;
15087 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015088 void *_res = NULL;
15089 int _mark = p->mark;
15090 int _start_mark = p->mark;
15091 void **_children = PyMem_Malloc(sizeof(void *));
15092 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015093 p->error_indicator = 1;
15094 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015095 return NULL;
15096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015097 ssize_t _children_capacity = 1;
15098 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070015099 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015100 if (p->error_indicator) {
15101 return NULL;
15102 }
Guido van Rossumc001c092020-04-30 12:12:19 -070015103 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015104 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015105 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015106 )
15107 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015108 _res = param_with_default_var;
15109 if (_n == _children_capacity) {
15110 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015111 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15112 if (!_new_children) {
15113 p->error_indicator = 1;
15114 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015115 return NULL;
15116 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015117 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015119 _children[_n++] = _res;
15120 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015121 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015122 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015123 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015124 if (_n == 0 || p->error_indicator) {
15125 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070015126 return NULL;
15127 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015128 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15129 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015130 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015131 p->error_indicator = 1;
15132 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015133 return NULL;
15134 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015135 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15136 PyMem_Free(_children);
15137 _PyPegen_insert_memo(p, _start_mark, _loop1_58_type, _seq);
15138 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015139}
15140
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015141// _loop1_59: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015142static asdl_seq *
15143_loop1_59_rule(Parser *p)
15144{
15145 if (p->error_indicator) {
15146 return NULL;
15147 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015148 void *_res = NULL;
15149 int _mark = p->mark;
15150 int _start_mark = p->mark;
15151 void **_children = PyMem_Malloc(sizeof(void *));
15152 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015153 p->error_indicator = 1;
15154 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015155 return NULL;
15156 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015157 ssize_t _children_capacity = 1;
15158 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015159 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015160 if (p->error_indicator) {
15161 return NULL;
15162 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015163 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070015164 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015165 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015166 )
15167 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015168 _res = param_no_default_var;
15169 if (_n == _children_capacity) {
15170 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015171 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15172 if (!_new_children) {
15173 p->error_indicator = 1;
15174 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015175 return NULL;
15176 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015177 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070015178 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015179 _children[_n++] = _res;
15180 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015181 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015182 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015184 if (_n == 0 || p->error_indicator) {
15185 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070015186 return NULL;
15187 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015188 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15189 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015190 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015191 p->error_indicator = 1;
15192 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015193 return NULL;
15194 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015195 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15196 PyMem_Free(_children);
15197 _PyPegen_insert_memo(p, _start_mark, _loop1_59_type, _seq);
15198 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015199}
15200
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015201// _loop1_60: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015202static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015203_loop1_60_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070015204{
15205 if (p->error_indicator) {
15206 return NULL;
15207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015208 void *_res = NULL;
15209 int _mark = p->mark;
15210 int _start_mark = p->mark;
15211 void **_children = PyMem_Malloc(sizeof(void *));
15212 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015213 p->error_indicator = 1;
15214 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015215 return NULL;
15216 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015217 ssize_t _children_capacity = 1;
15218 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015219 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015220 if (p->error_indicator) {
15221 return NULL;
15222 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015223 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070015224 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015225 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015226 )
15227 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015228 _res = param_no_default_var;
15229 if (_n == _children_capacity) {
15230 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015231 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15232 if (!_new_children) {
15233 p->error_indicator = 1;
15234 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015235 return NULL;
15236 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015237 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070015238 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015239 _children[_n++] = _res;
15240 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015242 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015244 if (_n == 0 || p->error_indicator) {
15245 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070015246 return NULL;
15247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015248 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15249 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015250 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015251 p->error_indicator = 1;
15252 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015253 return NULL;
15254 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015255 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15256 PyMem_Free(_children);
15257 _PyPegen_insert_memo(p, _start_mark, _loop1_60_type, _seq);
15258 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015259}
15260
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015261// _loop0_61: param_no_default
15262static asdl_seq *
15263_loop0_61_rule(Parser *p)
15264{
15265 if (p->error_indicator) {
15266 return NULL;
15267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015268 void *_res = NULL;
15269 int _mark = p->mark;
15270 int _start_mark = p->mark;
15271 void **_children = PyMem_Malloc(sizeof(void *));
15272 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015273 p->error_indicator = 1;
15274 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015275 return NULL;
15276 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015277 ssize_t _children_capacity = 1;
15278 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015279 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015280 if (p->error_indicator) {
15281 return NULL;
15282 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015283 arg_ty param_no_default_var;
15284 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015285 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015286 )
15287 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015288 _res = param_no_default_var;
15289 if (_n == _children_capacity) {
15290 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015291 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15292 if (!_new_children) {
15293 p->error_indicator = 1;
15294 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015295 return NULL;
15296 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015297 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015298 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015299 _children[_n++] = _res;
15300 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015301 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015302 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015303 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015304 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15305 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015306 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015307 p->error_indicator = 1;
15308 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015309 return NULL;
15310 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015311 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15312 PyMem_Free(_children);
15313 _PyPegen_insert_memo(p, _start_mark, _loop0_61_type, _seq);
15314 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015315}
15316
15317// _loop1_62: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015318static asdl_seq *
15319_loop1_62_rule(Parser *p)
15320{
15321 if (p->error_indicator) {
15322 return NULL;
15323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015324 void *_res = NULL;
15325 int _mark = p->mark;
15326 int _start_mark = p->mark;
15327 void **_children = PyMem_Malloc(sizeof(void *));
15328 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015329 p->error_indicator = 1;
15330 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015331 return NULL;
15332 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015333 ssize_t _children_capacity = 1;
15334 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015335 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015336 if (p->error_indicator) {
15337 return NULL;
15338 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015339 NameDefaultPair* param_with_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070015340 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015341 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015342 )
15343 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015344 _res = param_with_default_var;
15345 if (_n == _children_capacity) {
15346 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015347 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15348 if (!_new_children) {
15349 p->error_indicator = 1;
15350 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015351 return NULL;
15352 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015353 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070015354 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015355 _children[_n++] = _res;
15356 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015358 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015360 if (_n == 0 || p->error_indicator) {
15361 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070015362 return NULL;
15363 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015364 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15365 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015366 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015367 p->error_indicator = 1;
15368 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015369 return NULL;
15370 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015371 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15372 PyMem_Free(_children);
15373 _PyPegen_insert_memo(p, _start_mark, _loop1_62_type, _seq);
15374 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015375}
15376
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015377// _loop0_63: param_no_default
15378static asdl_seq *
15379_loop0_63_rule(Parser *p)
15380{
15381 if (p->error_indicator) {
15382 return NULL;
15383 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015384 void *_res = NULL;
15385 int _mark = p->mark;
15386 int _start_mark = p->mark;
15387 void **_children = PyMem_Malloc(sizeof(void *));
15388 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015389 p->error_indicator = 1;
15390 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015391 return NULL;
15392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015393 ssize_t _children_capacity = 1;
15394 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015395 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015396 if (p->error_indicator) {
15397 return NULL;
15398 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015399 arg_ty param_no_default_var;
15400 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015401 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015402 )
15403 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015404 _res = param_no_default_var;
15405 if (_n == _children_capacity) {
15406 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015407 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15408 if (!_new_children) {
15409 p->error_indicator = 1;
15410 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015411 return NULL;
15412 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015413 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015414 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015415 _children[_n++] = _res;
15416 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015417 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015418 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015419 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015420 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15421 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015422 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015423 p->error_indicator = 1;
15424 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015425 return NULL;
15426 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015427 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15428 PyMem_Free(_children);
15429 _PyPegen_insert_memo(p, _start_mark, _loop0_63_type, _seq);
15430 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015431}
15432
15433// _loop1_64: param_with_default
15434static asdl_seq *
15435_loop1_64_rule(Parser *p)
15436{
15437 if (p->error_indicator) {
15438 return NULL;
15439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015440 void *_res = NULL;
15441 int _mark = p->mark;
15442 int _start_mark = p->mark;
15443 void **_children = PyMem_Malloc(sizeof(void *));
15444 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015445 p->error_indicator = 1;
15446 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015447 return NULL;
15448 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015449 ssize_t _children_capacity = 1;
15450 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015451 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015452 if (p->error_indicator) {
15453 return NULL;
15454 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015455 NameDefaultPair* param_with_default_var;
15456 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015457 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015458 )
15459 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015460 _res = param_with_default_var;
15461 if (_n == _children_capacity) {
15462 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015463 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15464 if (!_new_children) {
15465 p->error_indicator = 1;
15466 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015467 return NULL;
15468 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015469 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015470 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015471 _children[_n++] = _res;
15472 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015473 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015474 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015475 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015476 if (_n == 0 || p->error_indicator) {
15477 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015478 return NULL;
15479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015480 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15481 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015482 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015483 p->error_indicator = 1;
15484 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015485 return NULL;
15486 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015487 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15488 PyMem_Free(_children);
15489 _PyPegen_insert_memo(p, _start_mark, _loop1_64_type, _seq);
15490 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015491}
15492
15493// _loop0_65: param_maybe_default
15494static asdl_seq *
15495_loop0_65_rule(Parser *p)
15496{
15497 if (p->error_indicator) {
15498 return NULL;
15499 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015500 void *_res = NULL;
15501 int _mark = p->mark;
15502 int _start_mark = p->mark;
15503 void **_children = PyMem_Malloc(sizeof(void *));
15504 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015505 p->error_indicator = 1;
15506 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015507 return NULL;
15508 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015509 ssize_t _children_capacity = 1;
15510 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015511 { // param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015512 if (p->error_indicator) {
15513 return NULL;
15514 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015515 NameDefaultPair* param_maybe_default_var;
15516 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015517 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015518 )
15519 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015520 _res = param_maybe_default_var;
15521 if (_n == _children_capacity) {
15522 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015523 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15524 if (!_new_children) {
15525 p->error_indicator = 1;
15526 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015527 return NULL;
15528 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015529 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015530 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015531 _children[_n++] = _res;
15532 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015533 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015534 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015535 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015536 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15537 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015538 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015539 p->error_indicator = 1;
15540 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015541 return NULL;
15542 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015543 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15544 PyMem_Free(_children);
15545 _PyPegen_insert_memo(p, _start_mark, _loop0_65_type, _seq);
15546 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015547}
15548
15549// _loop1_66: param_maybe_default
15550static asdl_seq *
15551_loop1_66_rule(Parser *p)
15552{
15553 if (p->error_indicator) {
15554 return NULL;
15555 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015556 void *_res = NULL;
15557 int _mark = p->mark;
15558 int _start_mark = p->mark;
15559 void **_children = PyMem_Malloc(sizeof(void *));
15560 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015561 p->error_indicator = 1;
15562 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015563 return NULL;
15564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015565 ssize_t _children_capacity = 1;
15566 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015567 { // param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015568 if (p->error_indicator) {
15569 return NULL;
15570 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015571 NameDefaultPair* param_maybe_default_var;
15572 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015573 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015574 )
15575 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015576 _res = param_maybe_default_var;
15577 if (_n == _children_capacity) {
15578 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015579 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15580 if (!_new_children) {
15581 p->error_indicator = 1;
15582 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015583 return NULL;
15584 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015585 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015586 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015587 _children[_n++] = _res;
15588 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015590 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015591 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015592 if (_n == 0 || p->error_indicator) {
15593 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015594 return NULL;
15595 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015596 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15597 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015598 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015599 p->error_indicator = 1;
15600 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015601 return NULL;
15602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015603 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15604 PyMem_Free(_children);
15605 _PyPegen_insert_memo(p, _start_mark, _loop1_66_type, _seq);
15606 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015607}
15608
15609// _loop1_67: ('@' named_expression NEWLINE)
15610static asdl_seq *
15611_loop1_67_rule(Parser *p)
15612{
15613 if (p->error_indicator) {
15614 return NULL;
15615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015616 void *_res = NULL;
15617 int _mark = p->mark;
15618 int _start_mark = p->mark;
15619 void **_children = PyMem_Malloc(sizeof(void *));
15620 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015621 p->error_indicator = 1;
15622 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015623 return NULL;
15624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015625 ssize_t _children_capacity = 1;
15626 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015627 { // ('@' named_expression NEWLINE)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015628 if (p->error_indicator) {
15629 return NULL;
15630 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015631 void *_tmp_138_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015632 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015633 (_tmp_138_var = _tmp_138_rule(p)) // '@' named_expression NEWLINE
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015634 )
15635 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015636 _res = _tmp_138_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015637 if (_n == _children_capacity) {
15638 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015639 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15640 if (!_new_children) {
15641 p->error_indicator = 1;
15642 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015643 return NULL;
15644 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015645 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015646 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015647 _children[_n++] = _res;
15648 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015650 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015651 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015652 if (_n == 0 || p->error_indicator) {
15653 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015654 return NULL;
15655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015656 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15657 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015658 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015659 p->error_indicator = 1;
15660 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015661 return NULL;
15662 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015663 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15664 PyMem_Free(_children);
15665 _PyPegen_insert_memo(p, _start_mark, _loop1_67_type, _seq);
15666 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015667}
15668
15669// _tmp_68: '(' arguments? ')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015670static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015671_tmp_68_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015672{
15673 if (p->error_indicator) {
15674 return NULL;
15675 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015676 void * _res = NULL;
15677 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015678 { // '(' arguments? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015679 if (p->error_indicator) {
15680 return NULL;
15681 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015682 Token * _literal;
15683 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015684 void *z;
15685 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015686 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015687 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015688 (z = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015689 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015690 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015691 )
15692 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015693 _res = z;
15694 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015695 p->error_indicator = 1;
15696 return NULL;
15697 }
15698 goto done;
15699 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015700 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015701 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015702 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015703 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015704 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015705}
15706
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015707// _loop0_70: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015708static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015709_loop0_70_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015710{
15711 if (p->error_indicator) {
15712 return NULL;
15713 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015714 void *_res = NULL;
15715 int _mark = p->mark;
15716 int _start_mark = p->mark;
15717 void **_children = PyMem_Malloc(sizeof(void *));
15718 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015719 p->error_indicator = 1;
15720 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015721 return NULL;
15722 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015723 ssize_t _children_capacity = 1;
15724 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015725 { // ',' star_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015726 if (p->error_indicator) {
15727 return NULL;
15728 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015729 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015730 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015731 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015732 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015733 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015734 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015735 )
15736 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015737 _res = elem;
15738 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015739 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015740 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015741 return NULL;
15742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015743 if (_n == _children_capacity) {
15744 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015745 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15746 if (!_new_children) {
15747 p->error_indicator = 1;
15748 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015749 return NULL;
15750 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015751 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015752 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015753 _children[_n++] = _res;
15754 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015755 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015756 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015757 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015758 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15759 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015760 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015761 p->error_indicator = 1;
15762 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015763 return NULL;
15764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015765 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15766 PyMem_Free(_children);
15767 _PyPegen_insert_memo(p, _start_mark, _loop0_70_type, _seq);
15768 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015769}
15770
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015771// _gather_69: star_expression _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015772static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015773_gather_69_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015774{
15775 if (p->error_indicator) {
15776 return NULL;
15777 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015778 asdl_seq * _res = NULL;
15779 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015780 { // star_expression _loop0_70
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015781 if (p->error_indicator) {
15782 return NULL;
15783 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015784 expr_ty elem;
15785 asdl_seq * seq;
15786 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015787 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015788 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015789 (seq = _loop0_70_rule(p)) // _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015790 )
15791 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015792 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015793 goto done;
15794 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015795 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015796 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015797 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015798 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015799 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015800}
15801
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015802// _loop1_71: (',' star_expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015803static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015804_loop1_71_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015805{
15806 if (p->error_indicator) {
15807 return NULL;
15808 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015809 void *_res = NULL;
15810 int _mark = p->mark;
15811 int _start_mark = p->mark;
15812 void **_children = PyMem_Malloc(sizeof(void *));
15813 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015814 p->error_indicator = 1;
15815 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015816 return NULL;
15817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015818 ssize_t _children_capacity = 1;
15819 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015820 { // (',' star_expression)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015821 if (p->error_indicator) {
15822 return NULL;
15823 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015824 void *_tmp_139_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015825 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015826 (_tmp_139_var = _tmp_139_rule(p)) // ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015827 )
15828 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015829 _res = _tmp_139_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015830 if (_n == _children_capacity) {
15831 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015832 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15833 if (!_new_children) {
15834 p->error_indicator = 1;
15835 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015836 return NULL;
15837 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015838 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015839 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015840 _children[_n++] = _res;
15841 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015842 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015843 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015844 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015845 if (_n == 0 || p->error_indicator) {
15846 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015847 return NULL;
15848 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015849 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15850 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015851 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015852 p->error_indicator = 1;
15853 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015854 return NULL;
15855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015856 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15857 PyMem_Free(_children);
15858 _PyPegen_insert_memo(p, _start_mark, _loop1_71_type, _seq);
15859 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015860}
15861
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015862// _loop0_73: ',' star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015863static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015864_loop0_73_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015865{
15866 if (p->error_indicator) {
15867 return NULL;
15868 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015869 void *_res = NULL;
15870 int _mark = p->mark;
15871 int _start_mark = p->mark;
15872 void **_children = PyMem_Malloc(sizeof(void *));
15873 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015874 p->error_indicator = 1;
15875 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015876 return NULL;
15877 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015878 ssize_t _children_capacity = 1;
15879 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015880 { // ',' star_named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015881 if (p->error_indicator) {
15882 return NULL;
15883 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015884 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015885 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015886 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015887 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015888 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015889 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015890 )
15891 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015892 _res = elem;
15893 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015894 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015895 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015896 return NULL;
15897 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015898 if (_n == _children_capacity) {
15899 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015900 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15901 if (!_new_children) {
15902 p->error_indicator = 1;
15903 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015904 return NULL;
15905 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015906 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015907 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015908 _children[_n++] = _res;
15909 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015911 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015913 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15914 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015915 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015916 p->error_indicator = 1;
15917 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015918 return NULL;
15919 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015920 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15921 PyMem_Free(_children);
15922 _PyPegen_insert_memo(p, _start_mark, _loop0_73_type, _seq);
15923 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015924}
15925
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015926// _gather_72: star_named_expression _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015927static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015928_gather_72_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015929{
15930 if (p->error_indicator) {
15931 return NULL;
15932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015933 asdl_seq * _res = NULL;
15934 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015935 { // star_named_expression _loop0_73
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015936 if (p->error_indicator) {
15937 return NULL;
15938 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015939 expr_ty elem;
15940 asdl_seq * seq;
15941 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015942 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015943 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015944 (seq = _loop0_73_rule(p)) // _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015945 )
15946 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015947 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015948 goto done;
15949 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015950 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015951 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015952 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015953 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015954 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015955}
15956
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015957// _loop1_74: (',' expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015958static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015959_loop1_74_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015960{
15961 if (p->error_indicator) {
15962 return NULL;
15963 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015964 void *_res = NULL;
15965 int _mark = p->mark;
15966 int _start_mark = p->mark;
15967 void **_children = PyMem_Malloc(sizeof(void *));
15968 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015969 p->error_indicator = 1;
15970 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015971 return NULL;
15972 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015973 ssize_t _children_capacity = 1;
15974 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015975 { // (',' expression)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015976 if (p->error_indicator) {
15977 return NULL;
15978 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015979 void *_tmp_140_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015980 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015981 (_tmp_140_var = _tmp_140_rule(p)) // ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015982 )
15983 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015984 _res = _tmp_140_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015985 if (_n == _children_capacity) {
15986 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015987 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15988 if (!_new_children) {
15989 p->error_indicator = 1;
15990 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015991 return NULL;
15992 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015993 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015994 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015995 _children[_n++] = _res;
15996 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015997 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015998 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015999 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016000 if (_n == 0 || p->error_indicator) {
16001 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016002 return NULL;
16003 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016004 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16005 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016006 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016007 p->error_indicator = 1;
16008 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016009 return NULL;
16010 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016011 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16012 PyMem_Free(_children);
16013 _PyPegen_insert_memo(p, _start_mark, _loop1_74_type, _seq);
16014 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016015}
16016
Guido van Rossum3941d972020-05-01 09:42:03 -070016017// _loop0_75: lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016018static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016019_loop0_75_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016020{
16021 if (p->error_indicator) {
16022 return NULL;
16023 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016024 void *_res = NULL;
16025 int _mark = p->mark;
16026 int _start_mark = p->mark;
16027 void **_children = PyMem_Malloc(sizeof(void *));
16028 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016029 p->error_indicator = 1;
16030 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016031 return NULL;
16032 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016033 ssize_t _children_capacity = 1;
16034 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016035 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016036 if (p->error_indicator) {
16037 return NULL;
16038 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016039 arg_ty lambda_param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016040 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016041 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016042 )
16043 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016044 _res = lambda_param_no_default_var;
16045 if (_n == _children_capacity) {
16046 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016047 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16048 if (!_new_children) {
16049 p->error_indicator = 1;
16050 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016051 return NULL;
16052 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016053 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016055 _children[_n++] = _res;
16056 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016057 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016058 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016059 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016060 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16061 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016062 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016063 p->error_indicator = 1;
16064 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016065 return NULL;
16066 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016067 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16068 PyMem_Free(_children);
16069 _PyPegen_insert_memo(p, _start_mark, _loop0_75_type, _seq);
16070 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016071}
16072
Guido van Rossum3941d972020-05-01 09:42:03 -070016073// _loop0_76: lambda_param_with_default
16074static asdl_seq *
16075_loop0_76_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016076{
16077 if (p->error_indicator) {
16078 return NULL;
16079 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016080 void *_res = NULL;
16081 int _mark = p->mark;
16082 int _start_mark = p->mark;
16083 void **_children = PyMem_Malloc(sizeof(void *));
16084 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016085 p->error_indicator = 1;
16086 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016087 return NULL;
16088 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016089 ssize_t _children_capacity = 1;
16090 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016091 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016092 if (p->error_indicator) {
16093 return NULL;
16094 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016095 NameDefaultPair* lambda_param_with_default_var;
16096 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016097 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016098 )
16099 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016100 _res = lambda_param_with_default_var;
16101 if (_n == _children_capacity) {
16102 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016103 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16104 if (!_new_children) {
16105 p->error_indicator = 1;
16106 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016107 return NULL;
16108 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016109 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016110 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016111 _children[_n++] = _res;
16112 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016113 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016114 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016115 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016116 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16117 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016118 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016119 p->error_indicator = 1;
16120 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016121 return NULL;
16122 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016123 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16124 PyMem_Free(_children);
16125 _PyPegen_insert_memo(p, _start_mark, _loop0_76_type, _seq);
16126 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016127}
16128
Guido van Rossum3941d972020-05-01 09:42:03 -070016129// _loop0_77: lambda_param_with_default
16130static asdl_seq *
16131_loop0_77_rule(Parser *p)
16132{
16133 if (p->error_indicator) {
16134 return NULL;
16135 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016136 void *_res = NULL;
16137 int _mark = p->mark;
16138 int _start_mark = p->mark;
16139 void **_children = PyMem_Malloc(sizeof(void *));
16140 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016141 p->error_indicator = 1;
16142 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016143 return NULL;
16144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016145 ssize_t _children_capacity = 1;
16146 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016147 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016148 if (p->error_indicator) {
16149 return NULL;
16150 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016151 NameDefaultPair* lambda_param_with_default_var;
16152 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016153 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016154 )
16155 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016156 _res = lambda_param_with_default_var;
16157 if (_n == _children_capacity) {
16158 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016159 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16160 if (!_new_children) {
16161 p->error_indicator = 1;
16162 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016163 return NULL;
16164 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016165 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016166 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016167 _children[_n++] = _res;
16168 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016170 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016172 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16173 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016174 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016175 p->error_indicator = 1;
16176 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016177 return NULL;
16178 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016179 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16180 PyMem_Free(_children);
16181 _PyPegen_insert_memo(p, _start_mark, _loop0_77_type, _seq);
16182 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016183}
16184
16185// _loop1_78: lambda_param_no_default
16186static asdl_seq *
16187_loop1_78_rule(Parser *p)
16188{
16189 if (p->error_indicator) {
16190 return NULL;
16191 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016192 void *_res = NULL;
16193 int _mark = p->mark;
16194 int _start_mark = p->mark;
16195 void **_children = PyMem_Malloc(sizeof(void *));
16196 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016197 p->error_indicator = 1;
16198 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016199 return NULL;
16200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016201 ssize_t _children_capacity = 1;
16202 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016203 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016204 if (p->error_indicator) {
16205 return NULL;
16206 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016207 arg_ty lambda_param_no_default_var;
16208 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016209 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016210 )
16211 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016212 _res = lambda_param_no_default_var;
16213 if (_n == _children_capacity) {
16214 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016215 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16216 if (!_new_children) {
16217 p->error_indicator = 1;
16218 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016219 return NULL;
16220 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016221 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016223 _children[_n++] = _res;
16224 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016225 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016226 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016228 if (_n == 0 || p->error_indicator) {
16229 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016230 return NULL;
16231 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016232 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16233 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016234 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016235 p->error_indicator = 1;
16236 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016237 return NULL;
16238 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016239 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16240 PyMem_Free(_children);
16241 _PyPegen_insert_memo(p, _start_mark, _loop1_78_type, _seq);
16242 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016243}
16244
16245// _loop0_79: lambda_param_with_default
16246static asdl_seq *
16247_loop0_79_rule(Parser *p)
16248{
16249 if (p->error_indicator) {
16250 return NULL;
16251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016252 void *_res = NULL;
16253 int _mark = p->mark;
16254 int _start_mark = p->mark;
16255 void **_children = PyMem_Malloc(sizeof(void *));
16256 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016257 p->error_indicator = 1;
16258 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016259 return NULL;
16260 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016261 ssize_t _children_capacity = 1;
16262 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016263 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016264 if (p->error_indicator) {
16265 return NULL;
16266 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016267 NameDefaultPair* lambda_param_with_default_var;
16268 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016269 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016270 )
16271 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016272 _res = lambda_param_with_default_var;
16273 if (_n == _children_capacity) {
16274 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016275 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16276 if (!_new_children) {
16277 p->error_indicator = 1;
16278 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016279 return NULL;
16280 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016281 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016282 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016283 _children[_n++] = _res;
16284 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016286 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016287 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016288 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16289 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016290 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016291 p->error_indicator = 1;
16292 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016293 return NULL;
16294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016295 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16296 PyMem_Free(_children);
16297 _PyPegen_insert_memo(p, _start_mark, _loop0_79_type, _seq);
16298 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016299}
16300
16301// _loop1_80: lambda_param_with_default
16302static asdl_seq *
16303_loop1_80_rule(Parser *p)
16304{
16305 if (p->error_indicator) {
16306 return NULL;
16307 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016308 void *_res = NULL;
16309 int _mark = p->mark;
16310 int _start_mark = p->mark;
16311 void **_children = PyMem_Malloc(sizeof(void *));
16312 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016313 p->error_indicator = 1;
16314 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016315 return NULL;
16316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016317 ssize_t _children_capacity = 1;
16318 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016319 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016320 if (p->error_indicator) {
16321 return NULL;
16322 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016323 NameDefaultPair* lambda_param_with_default_var;
16324 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016325 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016326 )
16327 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016328 _res = lambda_param_with_default_var;
16329 if (_n == _children_capacity) {
16330 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016331 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16332 if (!_new_children) {
16333 p->error_indicator = 1;
16334 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016335 return NULL;
16336 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016337 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016338 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016339 _children[_n++] = _res;
16340 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016341 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016342 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016343 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016344 if (_n == 0 || p->error_indicator) {
16345 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016346 return NULL;
16347 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016348 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16349 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016350 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016351 p->error_indicator = 1;
16352 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016353 return NULL;
16354 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016355 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16356 PyMem_Free(_children);
16357 _PyPegen_insert_memo(p, _start_mark, _loop1_80_type, _seq);
16358 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016359}
16360
16361// _loop1_81: lambda_param_no_default
16362static asdl_seq *
16363_loop1_81_rule(Parser *p)
16364{
16365 if (p->error_indicator) {
16366 return NULL;
16367 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016368 void *_res = NULL;
16369 int _mark = p->mark;
16370 int _start_mark = p->mark;
16371 void **_children = PyMem_Malloc(sizeof(void *));
16372 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016373 p->error_indicator = 1;
16374 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016375 return NULL;
16376 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016377 ssize_t _children_capacity = 1;
16378 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016379 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016380 if (p->error_indicator) {
16381 return NULL;
16382 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016383 arg_ty lambda_param_no_default_var;
16384 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016385 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016386 )
16387 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016388 _res = lambda_param_no_default_var;
16389 if (_n == _children_capacity) {
16390 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016391 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16392 if (!_new_children) {
16393 p->error_indicator = 1;
16394 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016395 return NULL;
16396 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016397 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016399 _children[_n++] = _res;
16400 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016401 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016402 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016403 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016404 if (_n == 0 || p->error_indicator) {
16405 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016406 return NULL;
16407 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016408 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16409 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016410 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016411 p->error_indicator = 1;
16412 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016413 return NULL;
16414 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016415 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16416 PyMem_Free(_children);
16417 _PyPegen_insert_memo(p, _start_mark, _loop1_81_type, _seq);
16418 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016419}
16420
16421// _loop1_82: lambda_param_no_default
16422static asdl_seq *
16423_loop1_82_rule(Parser *p)
16424{
16425 if (p->error_indicator) {
16426 return NULL;
16427 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016428 void *_res = NULL;
16429 int _mark = p->mark;
16430 int _start_mark = p->mark;
16431 void **_children = PyMem_Malloc(sizeof(void *));
16432 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016433 p->error_indicator = 1;
16434 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016435 return NULL;
16436 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016437 ssize_t _children_capacity = 1;
16438 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016439 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016440 if (p->error_indicator) {
16441 return NULL;
16442 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016443 arg_ty lambda_param_no_default_var;
16444 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016445 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016446 )
16447 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016448 _res = lambda_param_no_default_var;
16449 if (_n == _children_capacity) {
16450 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016451 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16452 if (!_new_children) {
16453 p->error_indicator = 1;
16454 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016455 return NULL;
16456 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016457 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016458 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016459 _children[_n++] = _res;
16460 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016461 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016462 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016463 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016464 if (_n == 0 || p->error_indicator) {
16465 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016466 return NULL;
16467 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016468 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16469 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016470 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016471 p->error_indicator = 1;
16472 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016473 return NULL;
16474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016475 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16476 PyMem_Free(_children);
16477 _PyPegen_insert_memo(p, _start_mark, _loop1_82_type, _seq);
16478 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016479}
16480
16481// _loop0_83: lambda_param_no_default
16482static asdl_seq *
16483_loop0_83_rule(Parser *p)
16484{
16485 if (p->error_indicator) {
16486 return NULL;
16487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016488 void *_res = NULL;
16489 int _mark = p->mark;
16490 int _start_mark = p->mark;
16491 void **_children = PyMem_Malloc(sizeof(void *));
16492 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016493 p->error_indicator = 1;
16494 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016495 return NULL;
16496 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016497 ssize_t _children_capacity = 1;
16498 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016499 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016500 if (p->error_indicator) {
16501 return NULL;
16502 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016503 arg_ty lambda_param_no_default_var;
16504 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016505 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016506 )
16507 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016508 _res = lambda_param_no_default_var;
16509 if (_n == _children_capacity) {
16510 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016511 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16512 if (!_new_children) {
16513 p->error_indicator = 1;
16514 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016515 return NULL;
16516 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016517 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016518 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016519 _children[_n++] = _res;
16520 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016521 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016522 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016523 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016524 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16525 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016526 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016527 p->error_indicator = 1;
16528 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016529 return NULL;
16530 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016531 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16532 PyMem_Free(_children);
16533 _PyPegen_insert_memo(p, _start_mark, _loop0_83_type, _seq);
16534 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016535}
16536
16537// _loop1_84: lambda_param_with_default
16538static asdl_seq *
16539_loop1_84_rule(Parser *p)
16540{
16541 if (p->error_indicator) {
16542 return NULL;
16543 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016544 void *_res = NULL;
16545 int _mark = p->mark;
16546 int _start_mark = p->mark;
16547 void **_children = PyMem_Malloc(sizeof(void *));
16548 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016549 p->error_indicator = 1;
16550 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016551 return NULL;
16552 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016553 ssize_t _children_capacity = 1;
16554 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016555 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016556 if (p->error_indicator) {
16557 return NULL;
16558 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016559 NameDefaultPair* lambda_param_with_default_var;
16560 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016561 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016562 )
16563 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016564 _res = lambda_param_with_default_var;
16565 if (_n == _children_capacity) {
16566 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016567 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16568 if (!_new_children) {
16569 p->error_indicator = 1;
16570 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016571 return NULL;
16572 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016573 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016574 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016575 _children[_n++] = _res;
16576 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016577 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016578 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016579 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016580 if (_n == 0 || p->error_indicator) {
16581 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016582 return NULL;
16583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016584 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16585 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016586 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016587 p->error_indicator = 1;
16588 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016589 return NULL;
16590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016591 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16592 PyMem_Free(_children);
16593 _PyPegen_insert_memo(p, _start_mark, _loop1_84_type, _seq);
16594 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016595}
16596
16597// _loop0_85: lambda_param_no_default
16598static asdl_seq *
16599_loop0_85_rule(Parser *p)
16600{
16601 if (p->error_indicator) {
16602 return NULL;
16603 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016604 void *_res = NULL;
16605 int _mark = p->mark;
16606 int _start_mark = p->mark;
16607 void **_children = PyMem_Malloc(sizeof(void *));
16608 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016609 p->error_indicator = 1;
16610 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016611 return NULL;
16612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016613 ssize_t _children_capacity = 1;
16614 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016615 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016616 if (p->error_indicator) {
16617 return NULL;
16618 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016619 arg_ty lambda_param_no_default_var;
16620 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016621 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016622 )
16623 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016624 _res = lambda_param_no_default_var;
16625 if (_n == _children_capacity) {
16626 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016627 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16628 if (!_new_children) {
16629 p->error_indicator = 1;
16630 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016631 return NULL;
16632 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016633 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016634 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016635 _children[_n++] = _res;
16636 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016638 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016639 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016640 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16641 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016642 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016643 p->error_indicator = 1;
16644 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016645 return NULL;
16646 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016647 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16648 PyMem_Free(_children);
16649 _PyPegen_insert_memo(p, _start_mark, _loop0_85_type, _seq);
16650 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016651}
16652
16653// _loop1_86: lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016654static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016655_loop1_86_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016656{
16657 if (p->error_indicator) {
16658 return NULL;
16659 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016660 void *_res = NULL;
16661 int _mark = p->mark;
16662 int _start_mark = p->mark;
16663 void **_children = PyMem_Malloc(sizeof(void *));
16664 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016665 p->error_indicator = 1;
16666 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016667 return NULL;
16668 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016669 ssize_t _children_capacity = 1;
16670 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016671 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016672 if (p->error_indicator) {
16673 return NULL;
16674 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016675 NameDefaultPair* lambda_param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016676 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016677 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016678 )
16679 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016680 _res = lambda_param_with_default_var;
16681 if (_n == _children_capacity) {
16682 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016683 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16684 if (!_new_children) {
16685 p->error_indicator = 1;
16686 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016687 return NULL;
16688 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016689 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016691 _children[_n++] = _res;
16692 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016694 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016695 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016696 if (_n == 0 || p->error_indicator) {
16697 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016698 return NULL;
16699 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016700 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16701 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016702 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016703 p->error_indicator = 1;
16704 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016705 return NULL;
16706 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016707 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16708 PyMem_Free(_children);
16709 _PyPegen_insert_memo(p, _start_mark, _loop1_86_type, _seq);
16710 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016711}
16712
Guido van Rossum3941d972020-05-01 09:42:03 -070016713// _loop0_87: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016714static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016715_loop0_87_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016716{
16717 if (p->error_indicator) {
16718 return NULL;
16719 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016720 void *_res = NULL;
16721 int _mark = p->mark;
16722 int _start_mark = p->mark;
16723 void **_children = PyMem_Malloc(sizeof(void *));
16724 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016725 p->error_indicator = 1;
16726 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016727 return NULL;
16728 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016729 ssize_t _children_capacity = 1;
16730 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016731 { // lambda_param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016732 if (p->error_indicator) {
16733 return NULL;
16734 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016735 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016736 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016737 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016738 )
16739 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016740 _res = lambda_param_maybe_default_var;
16741 if (_n == _children_capacity) {
16742 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016743 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16744 if (!_new_children) {
16745 p->error_indicator = 1;
16746 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016747 return NULL;
16748 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016749 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016750 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016751 _children[_n++] = _res;
16752 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016753 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016754 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016755 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016756 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16757 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016758 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016759 p->error_indicator = 1;
16760 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016761 return NULL;
16762 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016763 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16764 PyMem_Free(_children);
16765 _PyPegen_insert_memo(p, _start_mark, _loop0_87_type, _seq);
16766 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016767}
16768
Guido van Rossum3941d972020-05-01 09:42:03 -070016769// _loop1_88: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016770static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016771_loop1_88_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016772{
16773 if (p->error_indicator) {
16774 return NULL;
16775 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016776 void *_res = NULL;
16777 int _mark = p->mark;
16778 int _start_mark = p->mark;
16779 void **_children = PyMem_Malloc(sizeof(void *));
16780 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016781 p->error_indicator = 1;
16782 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016783 return NULL;
16784 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016785 ssize_t _children_capacity = 1;
16786 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016787 { // lambda_param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016788 if (p->error_indicator) {
16789 return NULL;
16790 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016791 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016792 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016793 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016794 )
16795 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016796 _res = lambda_param_maybe_default_var;
16797 if (_n == _children_capacity) {
16798 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016799 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16800 if (!_new_children) {
16801 p->error_indicator = 1;
16802 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016803 return NULL;
16804 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016805 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016807 _children[_n++] = _res;
16808 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016809 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016810 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016812 if (_n == 0 || p->error_indicator) {
16813 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016814 return NULL;
16815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016816 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16817 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016818 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016819 p->error_indicator = 1;
16820 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016821 return NULL;
16822 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016823 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16824 PyMem_Free(_children);
16825 _PyPegen_insert_memo(p, _start_mark, _loop1_88_type, _seq);
16826 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016827}
16828
Guido van Rossum3941d972020-05-01 09:42:03 -070016829// _loop1_89: ('or' conjunction)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016830static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016831_loop1_89_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016832{
16833 if (p->error_indicator) {
16834 return NULL;
16835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016836 void *_res = NULL;
16837 int _mark = p->mark;
16838 int _start_mark = p->mark;
16839 void **_children = PyMem_Malloc(sizeof(void *));
16840 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016841 p->error_indicator = 1;
16842 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016843 return NULL;
16844 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016845 ssize_t _children_capacity = 1;
16846 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016847 { // ('or' conjunction)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016848 if (p->error_indicator) {
16849 return NULL;
16850 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016851 void *_tmp_141_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016852 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016853 (_tmp_141_var = _tmp_141_rule(p)) // 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016854 )
16855 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016856 _res = _tmp_141_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016857 if (_n == _children_capacity) {
16858 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016859 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16860 if (!_new_children) {
16861 p->error_indicator = 1;
16862 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016863 return NULL;
16864 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016865 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016866 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016867 _children[_n++] = _res;
16868 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016869 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016870 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016871 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016872 if (_n == 0 || p->error_indicator) {
16873 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016874 return NULL;
16875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016876 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16877 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016878 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016879 p->error_indicator = 1;
16880 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016881 return NULL;
16882 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016883 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16884 PyMem_Free(_children);
16885 _PyPegen_insert_memo(p, _start_mark, _loop1_89_type, _seq);
16886 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016887}
16888
Guido van Rossum3941d972020-05-01 09:42:03 -070016889// _loop1_90: ('and' inversion)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016890static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016891_loop1_90_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016892{
16893 if (p->error_indicator) {
16894 return NULL;
16895 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016896 void *_res = NULL;
16897 int _mark = p->mark;
16898 int _start_mark = p->mark;
16899 void **_children = PyMem_Malloc(sizeof(void *));
16900 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016901 p->error_indicator = 1;
16902 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016903 return NULL;
16904 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016905 ssize_t _children_capacity = 1;
16906 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016907 { // ('and' inversion)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016908 if (p->error_indicator) {
16909 return NULL;
16910 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016911 void *_tmp_142_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016912 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016913 (_tmp_142_var = _tmp_142_rule(p)) // 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016914 )
16915 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016916 _res = _tmp_142_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016917 if (_n == _children_capacity) {
16918 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016919 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16920 if (!_new_children) {
16921 p->error_indicator = 1;
16922 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016923 return NULL;
16924 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016925 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016927 _children[_n++] = _res;
16928 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016929 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016930 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016932 if (_n == 0 || p->error_indicator) {
16933 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016934 return NULL;
16935 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016936 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16937 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016938 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016939 p->error_indicator = 1;
16940 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016941 return NULL;
16942 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016943 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16944 PyMem_Free(_children);
16945 _PyPegen_insert_memo(p, _start_mark, _loop1_90_type, _seq);
16946 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016947}
16948
Guido van Rossum3941d972020-05-01 09:42:03 -070016949// _loop1_91: compare_op_bitwise_or_pair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016950static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016951_loop1_91_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016952{
16953 if (p->error_indicator) {
16954 return NULL;
16955 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016956 void *_res = NULL;
16957 int _mark = p->mark;
16958 int _start_mark = p->mark;
16959 void **_children = PyMem_Malloc(sizeof(void *));
16960 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016961 p->error_indicator = 1;
16962 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016963 return NULL;
16964 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016965 ssize_t _children_capacity = 1;
16966 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016967 { // compare_op_bitwise_or_pair
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016968 if (p->error_indicator) {
16969 return NULL;
16970 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016971 CmpopExprPair* compare_op_bitwise_or_pair_var;
16972 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016973 (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 +010016974 )
16975 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016976 _res = compare_op_bitwise_or_pair_var;
16977 if (_n == _children_capacity) {
16978 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016979 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16980 if (!_new_children) {
16981 p->error_indicator = 1;
16982 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016983 return NULL;
16984 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016985 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016987 _children[_n++] = _res;
16988 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016989 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016990 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016991 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016992 if (_n == 0 || p->error_indicator) {
16993 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016994 return NULL;
16995 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016996 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16997 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016998 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016999 p->error_indicator = 1;
17000 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017001 return NULL;
17002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017003 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17004 PyMem_Free(_children);
17005 _PyPegen_insert_memo(p, _start_mark, _loop1_91_type, _seq);
17006 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017007}
17008
Guido van Rossum3941d972020-05-01 09:42:03 -070017009// _tmp_92: '!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010017010static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017011_tmp_92_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010017012{
17013 if (p->error_indicator) {
17014 return NULL;
17015 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017016 void * _res = NULL;
17017 int _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017018 { // '!='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017019 if (p->error_indicator) {
17020 return NULL;
17021 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010017022 Token * tok;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017023 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017024 (tok = _PyPegen_expect_token(p, 28)) // token='!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010017025 )
17026 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017027 _res = _PyPegen_check_barry_as_flufl ( p ) ? NULL : tok;
17028 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindo2b74c832020-04-27 18:02:07 +010017029 p->error_indicator = 1;
17030 return NULL;
17031 }
17032 goto done;
17033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017034 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017035 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017036 _res = NULL;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017037 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017038 return _res;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017039}
17040
Guido van Rossum3941d972020-05-01 09:42:03 -070017041// _loop0_94: ',' slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017042static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017043_loop0_94_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017044{
17045 if (p->error_indicator) {
17046 return NULL;
17047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017048 void *_res = NULL;
17049 int _mark = p->mark;
17050 int _start_mark = p->mark;
17051 void **_children = PyMem_Malloc(sizeof(void *));
17052 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017053 p->error_indicator = 1;
17054 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017055 return NULL;
17056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017057 ssize_t _children_capacity = 1;
17058 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017059 { // ',' slice
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017060 if (p->error_indicator) {
17061 return NULL;
17062 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017063 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017064 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017065 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017066 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017067 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017068 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017069 )
17070 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017071 _res = elem;
17072 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017073 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017074 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017075 return NULL;
17076 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017077 if (_n == _children_capacity) {
17078 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017079 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17080 if (!_new_children) {
17081 p->error_indicator = 1;
17082 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017083 return NULL;
17084 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017085 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017086 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017087 _children[_n++] = _res;
17088 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017089 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017090 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017091 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017092 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17093 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017094 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017095 p->error_indicator = 1;
17096 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017097 return NULL;
17098 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017099 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17100 PyMem_Free(_children);
17101 _PyPegen_insert_memo(p, _start_mark, _loop0_94_type, _seq);
17102 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017103}
17104
Guido van Rossum3941d972020-05-01 09:42:03 -070017105// _gather_93: slice _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017106static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017107_gather_93_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017108{
17109 if (p->error_indicator) {
17110 return NULL;
17111 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017112 asdl_seq * _res = NULL;
17113 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017114 { // slice _loop0_94
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017115 if (p->error_indicator) {
17116 return NULL;
17117 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017118 expr_ty elem;
17119 asdl_seq * seq;
17120 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017121 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017122 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017123 (seq = _loop0_94_rule(p)) // _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017124 )
17125 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017126 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017127 goto done;
17128 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017129 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017130 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017131 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017132 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017133 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017134}
17135
Guido van Rossum3941d972020-05-01 09:42:03 -070017136// _tmp_95: ':' expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017137static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017138_tmp_95_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017139{
17140 if (p->error_indicator) {
17141 return NULL;
17142 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017143 void * _res = NULL;
17144 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017145 { // ':' expression?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017146 if (p->error_indicator) {
17147 return NULL;
17148 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017149 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017150 void *d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017151 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017152 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017153 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017154 (d = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017155 )
17156 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017157 _res = d;
17158 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017159 p->error_indicator = 1;
17160 return NULL;
17161 }
17162 goto done;
17163 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017164 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017165 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017166 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017167 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017168 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017169}
17170
Guido van Rossum3941d972020-05-01 09:42:03 -070017171// _tmp_96: tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017172static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017173_tmp_96_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017174{
17175 if (p->error_indicator) {
17176 return NULL;
17177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017178 void * _res = NULL;
17179 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017180 { // tuple
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017181 if (p->error_indicator) {
17182 return NULL;
17183 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017184 expr_ty tuple_var;
17185 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017186 (tuple_var = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017187 )
17188 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017189 _res = tuple_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017190 goto done;
17191 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017192 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017193 }
17194 { // group
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017195 if (p->error_indicator) {
17196 return NULL;
17197 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017198 expr_ty group_var;
17199 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017200 (group_var = group_rule(p)) // group
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017201 )
17202 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017203 _res = group_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017204 goto done;
17205 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017206 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017207 }
17208 { // genexp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017209 if (p->error_indicator) {
17210 return NULL;
17211 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017212 expr_ty genexp_var;
17213 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017214 (genexp_var = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017215 )
17216 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017217 _res = genexp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017218 goto done;
17219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017220 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017221 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017222 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017223 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017224 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017225}
17226
Guido van Rossum3941d972020-05-01 09:42:03 -070017227// _tmp_97: list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017228static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017229_tmp_97_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017230{
17231 if (p->error_indicator) {
17232 return NULL;
17233 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017234 void * _res = NULL;
17235 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017236 { // list
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017237 if (p->error_indicator) {
17238 return NULL;
17239 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017240 expr_ty list_var;
17241 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017242 (list_var = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017243 )
17244 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017245 _res = list_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017246 goto done;
17247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017248 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017249 }
17250 { // listcomp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017251 if (p->error_indicator) {
17252 return NULL;
17253 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017254 expr_ty listcomp_var;
17255 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017256 (listcomp_var = listcomp_rule(p)) // listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017257 )
17258 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017259 _res = listcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017260 goto done;
17261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017262 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017264 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017265 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017266 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017267}
17268
Guido van Rossum3941d972020-05-01 09:42:03 -070017269// _tmp_98: dict | set | dictcomp | setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017270static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017271_tmp_98_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017272{
17273 if (p->error_indicator) {
17274 return NULL;
17275 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017276 void * _res = NULL;
17277 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017278 { // dict
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017279 if (p->error_indicator) {
17280 return NULL;
17281 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017282 expr_ty dict_var;
17283 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017284 (dict_var = dict_rule(p)) // dict
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017285 )
17286 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017287 _res = dict_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017288 goto done;
17289 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017290 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017291 }
17292 { // set
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017293 if (p->error_indicator) {
17294 return NULL;
17295 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017296 expr_ty set_var;
17297 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017298 (set_var = set_rule(p)) // set
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017299 )
17300 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017301 _res = set_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017302 goto done;
17303 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017304 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017305 }
17306 { // dictcomp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017307 if (p->error_indicator) {
17308 return NULL;
17309 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017310 expr_ty dictcomp_var;
17311 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017312 (dictcomp_var = dictcomp_rule(p)) // dictcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017313 )
17314 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017315 _res = dictcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017316 goto done;
17317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017318 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017319 }
17320 { // setcomp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017321 if (p->error_indicator) {
17322 return NULL;
17323 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017324 expr_ty setcomp_var;
17325 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017326 (setcomp_var = setcomp_rule(p)) // setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017327 )
17328 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017329 _res = setcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017330 goto done;
17331 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017332 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017334 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017335 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017336 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017337}
17338
Guido van Rossum3941d972020-05-01 09:42:03 -070017339// _loop1_99: STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017340static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017341_loop1_99_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017342{
17343 if (p->error_indicator) {
17344 return NULL;
17345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017346 void *_res = NULL;
17347 int _mark = p->mark;
17348 int _start_mark = p->mark;
17349 void **_children = PyMem_Malloc(sizeof(void *));
17350 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017351 p->error_indicator = 1;
17352 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017353 return NULL;
17354 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017355 ssize_t _children_capacity = 1;
17356 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017357 { // STRING
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017358 if (p->error_indicator) {
17359 return NULL;
17360 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017361 expr_ty string_var;
17362 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010017363 (string_var = _PyPegen_string_token(p)) // STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017364 )
17365 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017366 _res = string_var;
17367 if (_n == _children_capacity) {
17368 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017369 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17370 if (!_new_children) {
17371 p->error_indicator = 1;
17372 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017373 return NULL;
17374 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017375 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017376 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017377 _children[_n++] = _res;
17378 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017379 }
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 if (_n == 0 || p->error_indicator) {
17383 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017384 return NULL;
17385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017386 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17387 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017388 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017389 p->error_indicator = 1;
17390 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017391 return NULL;
17392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017393 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17394 PyMem_Free(_children);
17395 _PyPegen_insert_memo(p, _start_mark, _loop1_99_type, _seq);
17396 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017397}
17398
Guido van Rossum3941d972020-05-01 09:42:03 -070017399// _tmp_100: star_named_expression ',' star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017400static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017401_tmp_100_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017402{
17403 if (p->error_indicator) {
17404 return NULL;
17405 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017406 void * _res = NULL;
17407 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017408 { // star_named_expression ',' star_named_expressions?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017409 if (p->error_indicator) {
17410 return NULL;
17411 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017412 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017413 expr_ty y;
17414 void *z;
17415 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017416 (y = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017417 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017418 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017419 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017420 (z = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017421 )
17422 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017423 _res = _PyPegen_seq_insert_in_front ( p , y , z );
17424 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017425 p->error_indicator = 1;
17426 return NULL;
17427 }
17428 goto done;
17429 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017430 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017431 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017432 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017433 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017434 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017435}
17436
Guido van Rossum3941d972020-05-01 09:42:03 -070017437// _tmp_101: yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017438static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017439_tmp_101_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017440{
17441 if (p->error_indicator) {
17442 return NULL;
17443 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017444 void * _res = NULL;
17445 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017446 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017447 if (p->error_indicator) {
17448 return NULL;
17449 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017450 expr_ty yield_expr_var;
17451 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017452 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017453 )
17454 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017455 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017456 goto done;
17457 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017458 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017459 }
17460 { // named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017461 if (p->error_indicator) {
17462 return NULL;
17463 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017464 expr_ty named_expression_var;
17465 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017466 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017467 )
17468 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017469 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017470 goto done;
17471 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017472 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017473 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017474 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017475 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017476 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017477}
17478
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -070017479// _loop0_103: ',' double_starred_kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017480static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017481_loop0_103_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017482{
17483 if (p->error_indicator) {
17484 return NULL;
17485 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017486 void *_res = NULL;
17487 int _mark = p->mark;
17488 int _start_mark = p->mark;
17489 void **_children = PyMem_Malloc(sizeof(void *));
17490 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017491 p->error_indicator = 1;
17492 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017493 return NULL;
17494 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017495 ssize_t _children_capacity = 1;
17496 ssize_t _n = 0;
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -070017497 { // ',' double_starred_kvpair
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017498 if (p->error_indicator) {
17499 return NULL;
17500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017501 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017502 KeyValuePair* elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017503 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017504 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017505 &&
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -070017506 (elem = double_starred_kvpair_rule(p)) // double_starred_kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017507 )
17508 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017509 _res = elem;
17510 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017511 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017512 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017513 return NULL;
17514 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017515 if (_n == _children_capacity) {
17516 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017517 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17518 if (!_new_children) {
17519 p->error_indicator = 1;
17520 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017521 return NULL;
17522 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017523 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017524 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017525 _children[_n++] = _res;
17526 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017528 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017529 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017530 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17531 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017532 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017533 p->error_indicator = 1;
17534 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017535 return NULL;
17536 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017537 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17538 PyMem_Free(_children);
17539 _PyPegen_insert_memo(p, _start_mark, _loop0_103_type, _seq);
17540 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017541}
17542
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -070017543// _gather_102: double_starred_kvpair _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017544static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017545_gather_102_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017546{
17547 if (p->error_indicator) {
17548 return NULL;
17549 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017550 asdl_seq * _res = NULL;
17551 int _mark = p->mark;
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -070017552 { // double_starred_kvpair _loop0_103
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017553 if (p->error_indicator) {
17554 return NULL;
17555 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017556 KeyValuePair* elem;
17557 asdl_seq * seq;
17558 if (
Miss Islington (bot)d00aaf32020-05-21 15:58:16 -070017559 (elem = double_starred_kvpair_rule(p)) // double_starred_kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017560 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017561 (seq = _loop0_103_rule(p)) // _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017562 )
17563 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017564 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017565 goto done;
17566 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017567 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017568 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017569 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017570 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017571 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017572}
17573
Guido van Rossum3941d972020-05-01 09:42:03 -070017574// _loop1_104: for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017575static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017576_loop1_104_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017577{
17578 if (p->error_indicator) {
17579 return NULL;
17580 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017581 void *_res = NULL;
17582 int _mark = p->mark;
17583 int _start_mark = p->mark;
17584 void **_children = PyMem_Malloc(sizeof(void *));
17585 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017586 p->error_indicator = 1;
17587 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017588 return NULL;
17589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017590 ssize_t _children_capacity = 1;
17591 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017592 { // for_if_clause
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017593 if (p->error_indicator) {
17594 return NULL;
17595 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017596 comprehension_ty for_if_clause_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017597 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010017598 (for_if_clause_var = for_if_clause_rule(p)) // for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017599 )
17600 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017601 _res = for_if_clause_var;
17602 if (_n == _children_capacity) {
17603 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017604 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17605 if (!_new_children) {
17606 p->error_indicator = 1;
17607 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017608 return NULL;
17609 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017610 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017611 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017612 _children[_n++] = _res;
17613 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017614 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017615 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017616 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017617 if (_n == 0 || p->error_indicator) {
17618 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017619 return NULL;
17620 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017621 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17622 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017623 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017624 p->error_indicator = 1;
17625 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017626 return NULL;
17627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017628 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17629 PyMem_Free(_children);
17630 _PyPegen_insert_memo(p, _start_mark, _loop1_104_type, _seq);
17631 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017632}
17633
Guido van Rossum3941d972020-05-01 09:42:03 -070017634// _loop0_105: ('if' disjunction)
Pablo Galindo2b74c832020-04-27 18:02:07 +010017635static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017636_loop0_105_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010017637{
17638 if (p->error_indicator) {
17639 return NULL;
17640 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017641 void *_res = NULL;
17642 int _mark = p->mark;
17643 int _start_mark = p->mark;
17644 void **_children = PyMem_Malloc(sizeof(void *));
17645 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017646 p->error_indicator = 1;
17647 PyErr_NoMemory();
Pablo Galindo2b74c832020-04-27 18:02:07 +010017648 return NULL;
17649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017650 ssize_t _children_capacity = 1;
17651 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017652 { // ('if' disjunction)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017653 if (p->error_indicator) {
17654 return NULL;
17655 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017656 void *_tmp_143_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017657 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017658 (_tmp_143_var = _tmp_143_rule(p)) // 'if' disjunction
Pablo Galindo2b74c832020-04-27 18:02:07 +010017659 )
17660 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017661 _res = _tmp_143_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017662 if (_n == _children_capacity) {
17663 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017664 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17665 if (!_new_children) {
17666 p->error_indicator = 1;
17667 PyErr_NoMemory();
Pablo Galindo2b74c832020-04-27 18:02:07 +010017668 return NULL;
17669 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017670 _children = _new_children;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017671 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017672 _children[_n++] = _res;
17673 _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017674 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017675 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017677 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17678 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017679 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017680 p->error_indicator = 1;
17681 PyErr_NoMemory();
Pablo Galindo2b74c832020-04-27 18:02:07 +010017682 return NULL;
17683 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017684 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17685 PyMem_Free(_children);
17686 _PyPegen_insert_memo(p, _start_mark, _loop0_105_type, _seq);
17687 return _seq;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017688}
17689
Guido van Rossum3941d972020-05-01 09:42:03 -070017690// _loop0_106: ('if' disjunction)
Guido van Rossumc001c092020-04-30 12:12:19 -070017691static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017692_loop0_106_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070017693{
17694 if (p->error_indicator) {
17695 return NULL;
17696 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017697 void *_res = NULL;
17698 int _mark = p->mark;
17699 int _start_mark = p->mark;
17700 void **_children = PyMem_Malloc(sizeof(void *));
17701 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017702 p->error_indicator = 1;
17703 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017704 return NULL;
17705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017706 ssize_t _children_capacity = 1;
17707 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017708 { // ('if' disjunction)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017709 if (p->error_indicator) {
17710 return NULL;
17711 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017712 void *_tmp_144_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017713 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017714 (_tmp_144_var = _tmp_144_rule(p)) // 'if' disjunction
Guido van Rossumc001c092020-04-30 12:12:19 -070017715 )
17716 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017717 _res = _tmp_144_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017718 if (_n == _children_capacity) {
17719 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017720 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17721 if (!_new_children) {
17722 p->error_indicator = 1;
17723 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017724 return NULL;
17725 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017726 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017727 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017728 _children[_n++] = _res;
17729 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017731 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017733 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17734 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017735 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017736 p->error_indicator = 1;
17737 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017738 return NULL;
17739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017740 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17741 PyMem_Free(_children);
17742 _PyPegen_insert_memo(p, _start_mark, _loop0_106_type, _seq);
17743 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017744}
17745
Guido van Rossum3941d972020-05-01 09:42:03 -070017746// _tmp_107: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017747static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017748_tmp_107_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017749{
17750 if (p->error_indicator) {
17751 return NULL;
17752 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017753 void * _res = NULL;
17754 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017755 { // ',' args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017756 if (p->error_indicator) {
17757 return NULL;
17758 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017759 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017760 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017761 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017762 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017763 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017764 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017765 )
17766 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017767 _res = c;
17768 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017769 p->error_indicator = 1;
17770 return NULL;
17771 }
Guido van Rossumc001c092020-04-30 12:12:19 -070017772 goto done;
17773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017774 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017775 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017776 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070017777 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017778 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070017779}
17780
Guido van Rossum3941d972020-05-01 09:42:03 -070017781// _tmp_108: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017782static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017783_tmp_108_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017784{
17785 if (p->error_indicator) {
17786 return NULL;
17787 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017788 void * _res = NULL;
17789 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017790 { // ',' args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017791 if (p->error_indicator) {
17792 return NULL;
17793 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017794 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017795 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017796 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017797 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017798 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017799 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017800 )
17801 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017802 _res = c;
17803 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017804 p->error_indicator = 1;
17805 return NULL;
17806 }
17807 goto done;
17808 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017809 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017810 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017811 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017812 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017813 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017814}
17815
Guido van Rossum3941d972020-05-01 09:42:03 -070017816// _loop0_110: ',' kwarg_or_starred
17817static asdl_seq *
17818_loop0_110_rule(Parser *p)
17819{
17820 if (p->error_indicator) {
17821 return NULL;
17822 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017823 void *_res = NULL;
17824 int _mark = p->mark;
17825 int _start_mark = p->mark;
17826 void **_children = PyMem_Malloc(sizeof(void *));
17827 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017828 p->error_indicator = 1;
17829 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017830 return NULL;
17831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017832 ssize_t _children_capacity = 1;
17833 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070017834 { // ',' kwarg_or_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017835 if (p->error_indicator) {
17836 return NULL;
17837 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017838 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070017839 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070017840 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017841 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070017842 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017843 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070017844 )
17845 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017846 _res = elem;
17847 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070017848 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017849 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070017850 return NULL;
17851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017852 if (_n == _children_capacity) {
17853 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017854 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17855 if (!_new_children) {
17856 p->error_indicator = 1;
17857 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017858 return NULL;
17859 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017860 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070017861 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017862 _children[_n++] = _res;
17863 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017864 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017865 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017866 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017867 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17868 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017869 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017870 p->error_indicator = 1;
17871 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017872 return NULL;
17873 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017874 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17875 PyMem_Free(_children);
17876 _PyPegen_insert_memo(p, _start_mark, _loop0_110_type, _seq);
17877 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070017878}
17879
17880// _gather_109: kwarg_or_starred _loop0_110
17881static asdl_seq *
17882_gather_109_rule(Parser *p)
17883{
17884 if (p->error_indicator) {
17885 return NULL;
17886 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017887 asdl_seq * _res = NULL;
17888 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017889 { // kwarg_or_starred _loop0_110
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017890 if (p->error_indicator) {
17891 return NULL;
17892 }
Guido van Rossum3941d972020-05-01 09:42:03 -070017893 KeywordOrStarred* elem;
17894 asdl_seq * seq;
17895 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017896 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070017897 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017898 (seq = _loop0_110_rule(p)) // _loop0_110
Guido van Rossum3941d972020-05-01 09:42:03 -070017899 )
17900 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017901 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070017902 goto done;
17903 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017904 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017905 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017906 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070017907 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017908 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070017909}
17910
17911// _loop0_112: ',' kwarg_or_double_starred
17912static asdl_seq *
17913_loop0_112_rule(Parser *p)
17914{
17915 if (p->error_indicator) {
17916 return NULL;
17917 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017918 void *_res = NULL;
17919 int _mark = p->mark;
17920 int _start_mark = p->mark;
17921 void **_children = PyMem_Malloc(sizeof(void *));
17922 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017923 p->error_indicator = 1;
17924 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017925 return NULL;
17926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017927 ssize_t _children_capacity = 1;
17928 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070017929 { // ',' kwarg_or_double_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017930 if (p->error_indicator) {
17931 return NULL;
17932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017933 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070017934 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070017935 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017936 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070017937 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017938 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070017939 )
17940 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017941 _res = elem;
17942 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070017943 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017944 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070017945 return NULL;
17946 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017947 if (_n == _children_capacity) {
17948 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017949 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17950 if (!_new_children) {
17951 p->error_indicator = 1;
17952 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017953 return NULL;
17954 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017955 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070017956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017957 _children[_n++] = _res;
17958 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017959 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017960 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017962 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17963 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017964 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017965 p->error_indicator = 1;
17966 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017967 return NULL;
17968 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017969 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17970 PyMem_Free(_children);
17971 _PyPegen_insert_memo(p, _start_mark, _loop0_112_type, _seq);
17972 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070017973}
17974
17975// _gather_111: kwarg_or_double_starred _loop0_112
17976static asdl_seq *
17977_gather_111_rule(Parser *p)
17978{
17979 if (p->error_indicator) {
17980 return NULL;
17981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017982 asdl_seq * _res = NULL;
17983 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017984 { // kwarg_or_double_starred _loop0_112
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017985 if (p->error_indicator) {
17986 return NULL;
17987 }
Guido van Rossum3941d972020-05-01 09:42:03 -070017988 KeywordOrStarred* elem;
17989 asdl_seq * seq;
17990 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017991 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070017992 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017993 (seq = _loop0_112_rule(p)) // _loop0_112
Guido van Rossum3941d972020-05-01 09:42:03 -070017994 )
17995 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017996 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070017997 goto done;
17998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017999 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070018000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018001 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070018002 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018003 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070018004}
18005
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018006// _loop0_114: ',' kwarg_or_starred
Pablo Galindo2b74c832020-04-27 18:02:07 +010018007static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018008_loop0_114_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018009{
18010 if (p->error_indicator) {
18011 return NULL;
18012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018013 void *_res = NULL;
18014 int _mark = p->mark;
18015 int _start_mark = p->mark;
18016 void **_children = PyMem_Malloc(sizeof(void *));
18017 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018018 p->error_indicator = 1;
18019 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018020 return NULL;
18021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018022 ssize_t _children_capacity = 1;
18023 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070018024 { // ',' kwarg_or_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018025 if (p->error_indicator) {
18026 return NULL;
18027 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018028 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070018029 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070018030 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018031 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070018032 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018033 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070018034 )
18035 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018036 _res = elem;
18037 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070018038 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018039 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070018040 return NULL;
18041 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018042 if (_n == _children_capacity) {
18043 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018044 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18045 if (!_new_children) {
18046 p->error_indicator = 1;
18047 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018048 return NULL;
18049 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018050 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070018051 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018052 _children[_n++] = _res;
18053 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018055 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018057 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18058 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018059 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018060 p->error_indicator = 1;
18061 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018062 return NULL;
18063 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018064 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18065 PyMem_Free(_children);
18066 _PyPegen_insert_memo(p, _start_mark, _loop0_114_type, _seq);
18067 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070018068}
18069
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018070// _gather_113: kwarg_or_starred _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070018071static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018072_gather_113_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070018073{
18074 if (p->error_indicator) {
18075 return NULL;
18076 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018077 asdl_seq * _res = NULL;
18078 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018079 { // kwarg_or_starred _loop0_114
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018080 if (p->error_indicator) {
18081 return NULL;
18082 }
Guido van Rossumc001c092020-04-30 12:12:19 -070018083 KeywordOrStarred* elem;
18084 asdl_seq * seq;
18085 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018086 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070018087 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018088 (seq = _loop0_114_rule(p)) // _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070018089 )
18090 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018091 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070018092 goto done;
18093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018094 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018096 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070018097 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018098 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070018099}
18100
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018101// _loop0_116: ',' kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070018102static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018103_loop0_116_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070018104{
18105 if (p->error_indicator) {
18106 return NULL;
18107 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018108 void *_res = NULL;
18109 int _mark = p->mark;
18110 int _start_mark = p->mark;
18111 void **_children = PyMem_Malloc(sizeof(void *));
18112 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018113 p->error_indicator = 1;
18114 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018115 return NULL;
18116 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018117 ssize_t _children_capacity = 1;
18118 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070018119 { // ',' kwarg_or_double_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018120 if (p->error_indicator) {
18121 return NULL;
18122 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018123 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070018124 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070018125 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018126 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070018127 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018128 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070018129 )
18130 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018131 _res = elem;
18132 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070018133 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018134 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070018135 return NULL;
18136 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018137 if (_n == _children_capacity) {
18138 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018139 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18140 if (!_new_children) {
18141 p->error_indicator = 1;
18142 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018143 return NULL;
18144 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018145 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070018146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018147 _children[_n++] = _res;
18148 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018149 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018150 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018152 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18153 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018154 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018155 p->error_indicator = 1;
18156 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018157 return NULL;
18158 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018159 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18160 PyMem_Free(_children);
18161 _PyPegen_insert_memo(p, _start_mark, _loop0_116_type, _seq);
18162 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070018163}
18164
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018165// _gather_115: kwarg_or_double_starred _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070018166static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018167_gather_115_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070018168{
18169 if (p->error_indicator) {
18170 return NULL;
18171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018172 asdl_seq * _res = NULL;
18173 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018174 { // kwarg_or_double_starred _loop0_116
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018175 if (p->error_indicator) {
18176 return NULL;
18177 }
Guido van Rossumc001c092020-04-30 12:12:19 -070018178 KeywordOrStarred* elem;
18179 asdl_seq * seq;
18180 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018181 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070018182 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018183 (seq = _loop0_116_rule(p)) // _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070018184 )
18185 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018186 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070018187 goto done;
18188 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018189 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018190 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018191 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070018192 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018193 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070018194}
18195
Guido van Rossum3941d972020-05-01 09:42:03 -070018196// _loop0_117: (',' star_target)
Guido van Rossumc001c092020-04-30 12:12:19 -070018197static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018198_loop0_117_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018199{
18200 if (p->error_indicator) {
18201 return NULL;
18202 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018203 void *_res = NULL;
18204 int _mark = p->mark;
18205 int _start_mark = p->mark;
18206 void **_children = PyMem_Malloc(sizeof(void *));
18207 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018208 p->error_indicator = 1;
18209 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018210 return NULL;
18211 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018212 ssize_t _children_capacity = 1;
18213 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018214 { // (',' star_target)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018215 if (p->error_indicator) {
18216 return NULL;
18217 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018218 void *_tmp_145_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018219 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018220 (_tmp_145_var = _tmp_145_rule(p)) // ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018221 )
18222 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018223 _res = _tmp_145_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018224 if (_n == _children_capacity) {
18225 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018226 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18227 if (!_new_children) {
18228 p->error_indicator = 1;
18229 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018230 return NULL;
18231 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018232 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018233 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018234 _children[_n++] = _res;
18235 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018236 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018237 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018238 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018239 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18240 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018241 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018242 p->error_indicator = 1;
18243 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018244 return NULL;
18245 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018246 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18247 PyMem_Free(_children);
18248 _PyPegen_insert_memo(p, _start_mark, _loop0_117_type, _seq);
18249 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018250}
18251
Guido van Rossum3941d972020-05-01 09:42:03 -070018252// _loop0_119: ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018253static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018254_loop0_119_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070018255{
18256 if (p->error_indicator) {
18257 return NULL;
18258 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018259 void *_res = NULL;
18260 int _mark = p->mark;
18261 int _start_mark = p->mark;
18262 void **_children = PyMem_Malloc(sizeof(void *));
18263 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018264 p->error_indicator = 1;
18265 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018266 return NULL;
18267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018268 ssize_t _children_capacity = 1;
18269 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018270 { // ',' star_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018271 if (p->error_indicator) {
18272 return NULL;
18273 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018274 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018275 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018276 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018277 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018278 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018279 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018280 )
18281 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018282 _res = elem;
18283 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018284 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018285 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018286 return NULL;
18287 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018288 if (_n == _children_capacity) {
18289 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018290 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18291 if (!_new_children) {
18292 p->error_indicator = 1;
18293 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018294 return NULL;
18295 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018296 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018297 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018298 _children[_n++] = _res;
18299 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018301 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018302 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018303 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18304 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018305 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018306 p->error_indicator = 1;
18307 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018308 return NULL;
18309 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018310 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18311 PyMem_Free(_children);
18312 _PyPegen_insert_memo(p, _start_mark, _loop0_119_type, _seq);
18313 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018314}
18315
Guido van Rossum3941d972020-05-01 09:42:03 -070018316// _gather_118: star_target _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018317static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018318_gather_118_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018319{
18320 if (p->error_indicator) {
18321 return NULL;
18322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018323 asdl_seq * _res = NULL;
18324 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070018325 { // star_target _loop0_119
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018326 if (p->error_indicator) {
18327 return NULL;
18328 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018329 expr_ty elem;
18330 asdl_seq * seq;
18331 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018332 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018333 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018334 (seq = _loop0_119_rule(p)) // _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018335 )
18336 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018337 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018338 goto done;
18339 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018340 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018341 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018342 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018343 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018344 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018345}
18346
Guido van Rossum3941d972020-05-01 09:42:03 -070018347// _tmp_120: !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018348static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070018349_tmp_120_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018350{
18351 if (p->error_indicator) {
18352 return NULL;
18353 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018354 void * _res = NULL;
18355 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018356 { // !'*' star_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018357 if (p->error_indicator) {
18358 return NULL;
18359 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018360 expr_ty star_target_var;
18361 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018362 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018363 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018364 (star_target_var = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018365 )
18366 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018367 _res = star_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018368 goto done;
18369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018370 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018371 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018372 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018373 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018374 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018375}
18376
Guido van Rossum3941d972020-05-01 09:42:03 -070018377// _loop0_122: ',' del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018378static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018379_loop0_122_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018380{
18381 if (p->error_indicator) {
18382 return NULL;
18383 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018384 void *_res = NULL;
18385 int _mark = p->mark;
18386 int _start_mark = p->mark;
18387 void **_children = PyMem_Malloc(sizeof(void *));
18388 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018389 p->error_indicator = 1;
18390 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018391 return NULL;
18392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018393 ssize_t _children_capacity = 1;
18394 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018395 { // ',' del_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018396 if (p->error_indicator) {
18397 return NULL;
18398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018399 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018400 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018401 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018402 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018403 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018404 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018405 )
18406 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018407 _res = elem;
18408 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018409 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018410 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018411 return NULL;
18412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018413 if (_n == _children_capacity) {
18414 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018415 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18416 if (!_new_children) {
18417 p->error_indicator = 1;
18418 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018419 return NULL;
18420 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018421 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018422 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018423 _children[_n++] = _res;
18424 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018426 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018427 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018428 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18429 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018430 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018431 p->error_indicator = 1;
18432 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018433 return NULL;
18434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018435 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18436 PyMem_Free(_children);
18437 _PyPegen_insert_memo(p, _start_mark, _loop0_122_type, _seq);
18438 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018439}
18440
Guido van Rossum3941d972020-05-01 09:42:03 -070018441// _gather_121: del_target _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018442static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018443_gather_121_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018444{
18445 if (p->error_indicator) {
18446 return NULL;
18447 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018448 asdl_seq * _res = NULL;
18449 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070018450 { // del_target _loop0_122
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018451 if (p->error_indicator) {
18452 return NULL;
18453 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018454 expr_ty elem;
18455 asdl_seq * seq;
18456 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018457 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018458 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018459 (seq = _loop0_122_rule(p)) // _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018460 )
18461 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018462 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018463 goto done;
18464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018465 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018467 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018468 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018469 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018470}
18471
Guido van Rossum3941d972020-05-01 09:42:03 -070018472// _loop0_124: ',' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018473static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018474_loop0_124_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018475{
18476 if (p->error_indicator) {
18477 return NULL;
18478 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018479 void *_res = NULL;
18480 int _mark = p->mark;
18481 int _start_mark = p->mark;
18482 void **_children = PyMem_Malloc(sizeof(void *));
18483 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018484 p->error_indicator = 1;
18485 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018486 return NULL;
18487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018488 ssize_t _children_capacity = 1;
18489 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018490 { // ',' target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018491 if (p->error_indicator) {
18492 return NULL;
18493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018494 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018495 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018496 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018497 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018498 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018499 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018500 )
18501 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018502 _res = elem;
18503 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018504 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018505 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018506 return NULL;
18507 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018508 if (_n == _children_capacity) {
18509 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018510 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18511 if (!_new_children) {
18512 p->error_indicator = 1;
18513 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018514 return NULL;
18515 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018516 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018517 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018518 _children[_n++] = _res;
18519 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018520 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018521 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018522 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018523 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18524 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018525 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018526 p->error_indicator = 1;
18527 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018528 return NULL;
18529 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018530 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18531 PyMem_Free(_children);
18532 _PyPegen_insert_memo(p, _start_mark, _loop0_124_type, _seq);
18533 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018534}
18535
Guido van Rossum3941d972020-05-01 09:42:03 -070018536// _gather_123: target _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018537static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018538_gather_123_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018539{
18540 if (p->error_indicator) {
18541 return NULL;
18542 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018543 asdl_seq * _res = NULL;
18544 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070018545 { // target _loop0_124
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018546 if (p->error_indicator) {
18547 return NULL;
18548 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018549 expr_ty elem;
18550 asdl_seq * seq;
18551 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018552 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018553 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018554 (seq = _loop0_124_rule(p)) // _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018555 )
18556 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018557 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018558 goto done;
18559 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018560 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018561 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018562 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018563 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018564 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018565}
18566
Guido van Rossum3941d972020-05-01 09:42:03 -070018567// _tmp_125: args | expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018568static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070018569_tmp_125_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018570{
18571 if (p->error_indicator) {
18572 return NULL;
18573 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018574 void * _res = NULL;
18575 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018576 { // args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018577 if (p->error_indicator) {
18578 return NULL;
18579 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018580 expr_ty args_var;
18581 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018582 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018583 )
18584 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018585 _res = args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018586 goto done;
18587 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018588 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018589 }
18590 { // expression for_if_clauses
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018591 if (p->error_indicator) {
18592 return NULL;
18593 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018594 expr_ty expression_var;
18595 asdl_seq* for_if_clauses_var;
18596 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018597 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018598 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018599 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018600 )
18601 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018602 _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018603 goto done;
18604 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018605 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018606 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018607 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018608 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018609 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018610}
18611
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018612// _loop0_126: star_named_expressions
18613static asdl_seq *
18614_loop0_126_rule(Parser *p)
18615{
18616 if (p->error_indicator) {
18617 return NULL;
18618 }
18619 void *_res = NULL;
18620 int _mark = p->mark;
18621 int _start_mark = p->mark;
18622 void **_children = PyMem_Malloc(sizeof(void *));
18623 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018624 p->error_indicator = 1;
18625 PyErr_NoMemory();
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018626 return NULL;
18627 }
18628 ssize_t _children_capacity = 1;
18629 ssize_t _n = 0;
18630 { // star_named_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018631 if (p->error_indicator) {
18632 return NULL;
18633 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018634 asdl_seq* star_named_expressions_var;
18635 while (
18636 (star_named_expressions_var = star_named_expressions_rule(p)) // star_named_expressions
18637 )
18638 {
18639 _res = star_named_expressions_var;
18640 if (_n == _children_capacity) {
18641 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018642 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18643 if (!_new_children) {
18644 p->error_indicator = 1;
18645 PyErr_NoMemory();
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018646 return NULL;
18647 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018648 _children = _new_children;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018649 }
18650 _children[_n++] = _res;
18651 _mark = p->mark;
18652 }
18653 p->mark = _mark;
18654 }
18655 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18656 if (!_seq) {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018657 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018658 p->error_indicator = 1;
18659 PyErr_NoMemory();
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018660 return NULL;
18661 }
18662 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18663 PyMem_Free(_children);
18664 _PyPegen_insert_memo(p, _start_mark, _loop0_126_type, _seq);
18665 return _seq;
18666}
18667
18668// _tmp_127: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018669static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018670_tmp_127_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018671{
18672 if (p->error_indicator) {
18673 return NULL;
18674 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018675 void * _res = NULL;
18676 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018677 { // '=' annotated_rhs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018678 if (p->error_indicator) {
18679 return NULL;
18680 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018681 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018682 expr_ty annotated_rhs_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018683 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018684 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018685 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018686 (annotated_rhs_var = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018687 )
18688 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018689 _res = _PyPegen_dummy_name(p, _literal, annotated_rhs_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018690 goto done;
18691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018692 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018694 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018695 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018696 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018697}
18698
Pablo Galindo16ab0702020-05-15 02:04:52 +010018699// _tmp_128: yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018700static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018701_tmp_128_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018702{
18703 if (p->error_indicator) {
18704 return NULL;
18705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018706 void * _res = NULL;
18707 int _mark = p->mark;
Pablo Galindo16ab0702020-05-15 02:04:52 +010018708 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018709 if (p->error_indicator) {
18710 return NULL;
18711 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010018712 expr_ty yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018713 if (
Pablo Galindo16ab0702020-05-15 02:04:52 +010018714 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018715 )
18716 {
Pablo Galindo16ab0702020-05-15 02:04:52 +010018717 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018718 goto done;
18719 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018720 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018721 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010018722 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018723 if (p->error_indicator) {
18724 return NULL;
18725 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010018726 expr_ty star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018727 if (
Pablo Galindo16ab0702020-05-15 02:04:52 +010018728 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018729 )
18730 {
Pablo Galindo16ab0702020-05-15 02:04:52 +010018731 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018732 goto done;
18733 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018734 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018735 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018736 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018737 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018738 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018739}
18740
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018741// _tmp_129: yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018742static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018743_tmp_129_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018744{
18745 if (p->error_indicator) {
18746 return NULL;
18747 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018748 void * _res = NULL;
18749 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018750 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018751 if (p->error_indicator) {
18752 return NULL;
18753 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018754 expr_ty yield_expr_var;
18755 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018756 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018757 )
18758 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018759 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018760 goto done;
18761 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018762 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018763 }
18764 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018765 if (p->error_indicator) {
18766 return NULL;
18767 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018768 expr_ty star_expressions_var;
18769 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018770 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018771 )
18772 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018773 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018774 goto done;
18775 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018776 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018777 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018778 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018779 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018780 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018781}
18782
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018783// _tmp_130: '[' | '(' | '{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018784static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018785_tmp_130_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018786{
18787 if (p->error_indicator) {
18788 return NULL;
18789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018790 void * _res = NULL;
18791 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018792 { // '['
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018793 if (p->error_indicator) {
18794 return NULL;
18795 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018796 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018797 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018798 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018799 )
18800 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018801 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018802 goto done;
18803 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018804 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018805 }
18806 { // '('
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018807 if (p->error_indicator) {
18808 return NULL;
18809 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018810 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018811 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018812 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018813 )
18814 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018815 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018816 goto done;
18817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018818 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018819 }
18820 { // '{'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018821 if (p->error_indicator) {
18822 return NULL;
18823 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018824 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018825 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018826 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018827 )
18828 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018829 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018830 goto done;
18831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018832 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018834 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018835 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018836 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018837}
18838
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018839// _loop0_131: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018840static asdl_seq *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018841_loop0_131_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018842{
18843 if (p->error_indicator) {
18844 return NULL;
18845 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018846 void *_res = NULL;
18847 int _mark = p->mark;
18848 int _start_mark = p->mark;
18849 void **_children = PyMem_Malloc(sizeof(void *));
18850 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018851 p->error_indicator = 1;
18852 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018853 return NULL;
18854 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018855 ssize_t _children_capacity = 1;
18856 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070018857 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018858 if (p->error_indicator) {
18859 return NULL;
18860 }
Guido van Rossumc001c092020-04-30 12:12:19 -070018861 arg_ty param_no_default_var;
18862 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018863 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018864 )
18865 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018866 _res = param_no_default_var;
18867 if (_n == _children_capacity) {
18868 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018869 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18870 if (!_new_children) {
18871 p->error_indicator = 1;
18872 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018873 return NULL;
18874 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018875 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070018876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018877 _children[_n++] = _res;
18878 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018879 }
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 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18883 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018884 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018885 p->error_indicator = 1;
18886 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018887 return NULL;
18888 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018889 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18890 PyMem_Free(_children);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018891 _PyPegen_insert_memo(p, _start_mark, _loop0_131_type, _seq);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018892 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018893}
18894
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018895// _tmp_132: slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018896static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018897_tmp_132_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018898{
18899 if (p->error_indicator) {
18900 return NULL;
18901 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018902 void * _res = NULL;
18903 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018904 { // slash_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018905 if (p->error_indicator) {
18906 return NULL;
18907 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018908 SlashWithDefault* slash_with_default_var;
18909 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018910 (slash_with_default_var = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018911 )
18912 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018913 _res = slash_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018914 goto done;
18915 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018916 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018917 }
Guido van Rossumc001c092020-04-30 12:12:19 -070018918 { // param_with_default+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018919 if (p->error_indicator) {
18920 return NULL;
18921 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018922 asdl_seq * _loop1_146_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018923 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018924 (_loop1_146_var = _loop1_146_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018925 )
18926 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018927 _res = _loop1_146_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018928 goto done;
18929 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018930 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018932 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018933 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018934 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018935}
18936
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018937// _tmp_133: ')' | ',' (')' | '**')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018938static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018939_tmp_133_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018940{
18941 if (p->error_indicator) {
18942 return NULL;
18943 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018944 void * _res = NULL;
18945 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018946 { // ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018947 if (p->error_indicator) {
18948 return NULL;
18949 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018950 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018951 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018952 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018953 )
18954 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018955 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018956 goto done;
18957 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018958 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018959 }
18960 { // ',' (')' | '**')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018961 if (p->error_indicator) {
18962 return NULL;
18963 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018964 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018965 void *_tmp_147_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018966 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018967 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018968 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018969 (_tmp_147_var = _tmp_147_rule(p)) // ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018970 )
18971 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018972 _res = _PyPegen_dummy_name(p, _literal, _tmp_147_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018973 goto done;
18974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018975 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018976 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018977 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018978 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018979 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018980}
18981
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018982// _tmp_134: ':' | ',' (':' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018983static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018984_tmp_134_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018985{
18986 if (p->error_indicator) {
18987 return NULL;
18988 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018989 void * _res = NULL;
18990 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018991 { // ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018992 if (p->error_indicator) {
18993 return NULL;
18994 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018995 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018996 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018997 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018998 )
18999 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019000 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019001 goto done;
19002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019003 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019004 }
19005 { // ',' (':' | '**')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019006 if (p->error_indicator) {
19007 return NULL;
19008 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019009 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019010 void *_tmp_148_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019011 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019012 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019013 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019014 (_tmp_148_var = _tmp_148_rule(p)) // ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019015 )
19016 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019017 _res = _PyPegen_dummy_name(p, _literal, _tmp_148_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019018 goto done;
19019 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019020 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019022 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019023 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019024 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019025}
19026
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019027// _tmp_135: star_targets '='
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019028static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019029_tmp_135_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019030{
19031 if (p->error_indicator) {
19032 return NULL;
19033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019034 void * _res = NULL;
19035 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019036 { // star_targets '='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019037 if (p->error_indicator) {
19038 return NULL;
19039 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019040 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019041 expr_ty z;
19042 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010019043 (z = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019044 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019045 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019046 )
19047 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019048 _res = z;
19049 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019050 p->error_indicator = 1;
19051 return NULL;
19052 }
19053 goto done;
19054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019055 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019057 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019058 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019059 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019060}
19061
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019062// _tmp_136: '.' | '...'
19063static void *
19064_tmp_136_rule(Parser *p)
19065{
19066 if (p->error_indicator) {
19067 return NULL;
19068 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019069 void * _res = NULL;
19070 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019071 { // '.'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019072 if (p->error_indicator) {
19073 return NULL;
19074 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019075 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019076 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019077 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019078 )
19079 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019080 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019081 goto done;
19082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019083 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019084 }
19085 { // '...'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019086 if (p->error_indicator) {
19087 return NULL;
19088 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019089 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019090 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019091 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019092 )
19093 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019094 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019095 goto done;
19096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019097 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019098 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019099 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019100 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019101 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019102}
19103
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019104// _tmp_137: '.' | '...'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019105static void *
19106_tmp_137_rule(Parser *p)
19107{
19108 if (p->error_indicator) {
19109 return NULL;
19110 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019111 void * _res = NULL;
19112 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019113 { // '.'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019114 if (p->error_indicator) {
19115 return NULL;
19116 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019117 Token * _literal;
19118 if (
19119 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
19120 )
19121 {
19122 _res = _literal;
19123 goto done;
19124 }
19125 p->mark = _mark;
19126 }
19127 { // '...'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019128 if (p->error_indicator) {
19129 return NULL;
19130 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019131 Token * _literal;
19132 if (
19133 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
19134 )
19135 {
19136 _res = _literal;
19137 goto done;
19138 }
19139 p->mark = _mark;
19140 }
19141 _res = NULL;
19142 done:
19143 return _res;
19144}
19145
19146// _tmp_138: '@' named_expression NEWLINE
19147static void *
19148_tmp_138_rule(Parser *p)
19149{
19150 if (p->error_indicator) {
19151 return NULL;
19152 }
19153 void * _res = NULL;
19154 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019155 { // '@' named_expression NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019156 if (p->error_indicator) {
19157 return NULL;
19158 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019159 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019160 expr_ty f;
Pablo Galindob796b3f2020-05-01 12:32:26 +010019161 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019162 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019163 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019164 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019165 (f = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019166 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019167 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019168 )
19169 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019170 _res = f;
19171 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019172 p->error_indicator = 1;
19173 return NULL;
19174 }
19175 goto done;
19176 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019177 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019178 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019179 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019180 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019181 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019182}
19183
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019184// _tmp_139: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019185static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019186_tmp_139_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019187{
19188 if (p->error_indicator) {
19189 return NULL;
19190 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019191 void * _res = NULL;
19192 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019193 { // ',' star_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019194 if (p->error_indicator) {
19195 return NULL;
19196 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019197 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019198 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019199 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019200 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019201 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019202 (c = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019203 )
19204 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019205 _res = c;
19206 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019207 p->error_indicator = 1;
19208 return NULL;
19209 }
19210 goto done;
19211 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019212 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019214 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019215 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019216 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019217}
19218
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019219// _tmp_140: ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019220static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019221_tmp_140_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019222{
19223 if (p->error_indicator) {
19224 return NULL;
19225 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019226 void * _res = NULL;
19227 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019228 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019229 if (p->error_indicator) {
19230 return NULL;
19231 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019232 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019233 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019234 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019235 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019236 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019237 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019238 )
19239 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019240 _res = c;
19241 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019242 p->error_indicator = 1;
19243 return NULL;
19244 }
19245 goto done;
19246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019247 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019249 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019250 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019251 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019252}
19253
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019254// _tmp_141: 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019255static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019256_tmp_141_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019257{
19258 if (p->error_indicator) {
19259 return NULL;
19260 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019261 void * _res = NULL;
19262 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019263 { // 'or' conjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019264 if (p->error_indicator) {
19265 return NULL;
19266 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019267 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019268 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019269 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019270 (_keyword = _PyPegen_expect_token(p, 532)) // token='or'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019271 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019272 (c = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019273 )
19274 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019275 _res = c;
19276 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019277 p->error_indicator = 1;
19278 return NULL;
19279 }
19280 goto done;
19281 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019282 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019283 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019284 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019285 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019286 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019287}
19288
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019289// _tmp_142: 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019290static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019291_tmp_142_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019292{
19293 if (p->error_indicator) {
19294 return NULL;
19295 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019296 void * _res = NULL;
19297 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019298 { // 'and' inversion
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019299 if (p->error_indicator) {
19300 return NULL;
19301 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019302 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019303 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019304 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019305 (_keyword = _PyPegen_expect_token(p, 533)) // token='and'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019306 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019307 (c = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019308 )
19309 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019310 _res = c;
19311 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019312 p->error_indicator = 1;
19313 return NULL;
19314 }
19315 goto done;
19316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019317 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019318 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019319 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019320 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019321 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019322}
19323
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019324// _tmp_143: 'if' disjunction
19325static void *
19326_tmp_143_rule(Parser *p)
19327{
19328 if (p->error_indicator) {
19329 return NULL;
19330 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019331 void * _res = NULL;
19332 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019333 { // 'if' disjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019334 if (p->error_indicator) {
19335 return NULL;
19336 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019337 Token * _keyword;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019338 expr_ty z;
19339 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019340 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019341 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019342 (z = disjunction_rule(p)) // disjunction
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019343 )
19344 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019345 _res = z;
19346 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019347 p->error_indicator = 1;
19348 return NULL;
19349 }
19350 goto done;
19351 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019352 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019353 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019354 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019355 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019356 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019357}
19358
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019359// _tmp_144: 'if' disjunction
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019360static void *
19361_tmp_144_rule(Parser *p)
19362{
19363 if (p->error_indicator) {
19364 return NULL;
19365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019366 void * _res = NULL;
19367 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019368 { // 'if' disjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019369 if (p->error_indicator) {
19370 return NULL;
19371 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019372 Token * _keyword;
19373 expr_ty z;
19374 if (
19375 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
19376 &&
19377 (z = disjunction_rule(p)) // disjunction
19378 )
19379 {
19380 _res = z;
19381 if (_res == NULL && PyErr_Occurred()) {
19382 p->error_indicator = 1;
19383 return NULL;
19384 }
19385 goto done;
19386 }
19387 p->mark = _mark;
19388 }
19389 _res = NULL;
19390 done:
19391 return _res;
19392}
19393
19394// _tmp_145: ',' star_target
19395static void *
19396_tmp_145_rule(Parser *p)
19397{
19398 if (p->error_indicator) {
19399 return NULL;
19400 }
19401 void * _res = NULL;
19402 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019403 { // ',' star_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019404 if (p->error_indicator) {
19405 return NULL;
19406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019407 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019408 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019409 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019410 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019411 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019412 (c = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019413 )
19414 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019415 _res = c;
19416 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019417 p->error_indicator = 1;
19418 return NULL;
19419 }
19420 goto done;
19421 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019422 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019423 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019424 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019425 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019426 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019427}
19428
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019429// _loop1_146: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019430static asdl_seq *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019431_loop1_146_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070019432{
19433 if (p->error_indicator) {
19434 return NULL;
19435 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019436 void *_res = NULL;
19437 int _mark = p->mark;
19438 int _start_mark = p->mark;
19439 void **_children = PyMem_Malloc(sizeof(void *));
19440 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019441 p->error_indicator = 1;
19442 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070019443 return NULL;
19444 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019445 ssize_t _children_capacity = 1;
19446 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070019447 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019448 if (p->error_indicator) {
19449 return NULL;
19450 }
Guido van Rossumc001c092020-04-30 12:12:19 -070019451 NameDefaultPair* param_with_default_var;
19452 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010019453 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070019454 )
19455 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019456 _res = param_with_default_var;
19457 if (_n == _children_capacity) {
19458 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019459 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19460 if (!_new_children) {
19461 p->error_indicator = 1;
19462 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070019463 return NULL;
19464 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019465 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070019466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019467 _children[_n++] = _res;
19468 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070019469 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019470 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070019471 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019472 if (_n == 0 || p->error_indicator) {
19473 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070019474 return NULL;
19475 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019476 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19477 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019478 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019479 p->error_indicator = 1;
19480 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070019481 return NULL;
19482 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019483 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19484 PyMem_Free(_children);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019485 _PyPegen_insert_memo(p, _start_mark, _loop1_146_type, _seq);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019486 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070019487}
19488
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019489// _tmp_147: ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019490static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019491_tmp_147_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019492{
19493 if (p->error_indicator) {
19494 return NULL;
19495 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019496 void * _res = NULL;
19497 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019498 { // ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019499 if (p->error_indicator) {
19500 return NULL;
19501 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019502 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019503 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019504 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019505 )
19506 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019507 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019508 goto done;
19509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019510 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019511 }
19512 { // '**'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019513 if (p->error_indicator) {
19514 return NULL;
19515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019516 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019517 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019518 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019519 )
19520 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019521 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019522 goto done;
19523 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019524 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019525 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019526 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019527 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019528 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019529}
19530
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019531// _tmp_148: ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019532static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019533_tmp_148_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019534{
19535 if (p->error_indicator) {
19536 return NULL;
19537 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019538 void * _res = NULL;
19539 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019540 { // ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019541 if (p->error_indicator) {
19542 return NULL;
19543 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019544 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019545 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019546 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019547 )
19548 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019549 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019550 goto done;
19551 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019552 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019553 }
19554 { // '**'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019555 if (p->error_indicator) {
19556 return NULL;
19557 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019558 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019559 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019560 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019561 )
19562 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019563 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019564 goto done;
19565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019566 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019567 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019568 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019569 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019570 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019571}
19572
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019573void *
19574_PyPegen_parse(Parser *p)
19575{
19576 // Initialize keywords
19577 p->keywords = reserved_keywords;
19578 p->n_keyword_lists = n_keyword_lists;
19579
19580 // Run parser
19581 void *result = NULL;
19582 if (p->start_rule == Py_file_input) {
19583 result = file_rule(p);
19584 } else if (p->start_rule == Py_single_input) {
19585 result = interactive_rule(p);
19586 } else if (p->start_rule == Py_eval_input) {
19587 result = eval_rule(p);
Guido van Rossumc001c092020-04-30 12:12:19 -070019588 } else if (p->start_rule == Py_func_type_input) {
19589 result = func_type_rule(p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019590 } else if (p->start_rule == Py_fstring_input) {
19591 result = fstring_rule(p);
19592 }
19593
19594 return result;
19595}
19596
19597// The end