blob: b1b248187ea3ed988b2adc03399e92a2ac5464ad [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
187#define kvpairs_type 1116
188#define kvpair_type 1117
189#define for_if_clauses_type 1118
190#define for_if_clause_type 1119
191#define yield_expr_type 1120
192#define arguments_type 1121
193#define args_type 1122
194#define kwargs_type 1123
195#define starred_expression_type 1124
196#define kwarg_or_starred_type 1125
197#define kwarg_or_double_starred_type 1126
198#define star_targets_type 1127
199#define star_targets_seq_type 1128
200#define star_target_type 1129
201#define star_atom_type 1130
202#define inside_paren_ann_assign_target_type 1131
203#define ann_assign_subscript_attribute_target_type 1132
204#define del_targets_type 1133
205#define del_target_type 1134
206#define del_t_atom_type 1135
Shantanu27c0d9b2020-05-11 14:53:58 -0700207#define del_target_end_type 1136
208#define targets_type 1137
209#define target_type 1138
210#define t_primary_type 1139 // Left-recursive
211#define t_lookahead_type 1140
212#define t_atom_type 1141
213#define incorrect_arguments_type 1142
214#define invalid_kwarg_type 1143
215#define invalid_named_expression_type 1144
216#define invalid_assignment_type 1145
217#define invalid_block_type 1146
218#define invalid_comprehension_type 1147
219#define invalid_parameters_type 1148
220#define invalid_star_etc_type 1149
221#define invalid_lambda_star_etc_type 1150
222#define invalid_double_type_comments_type 1151
223#define invalid_del_target_type 1152
224#define _loop0_1_type 1153
225#define _loop0_2_type 1154
226#define _loop0_4_type 1155
227#define _gather_3_type 1156
228#define _loop0_6_type 1157
229#define _gather_5_type 1158
230#define _loop0_8_type 1159
231#define _gather_7_type 1160
232#define _loop0_10_type 1161
233#define _gather_9_type 1162
234#define _loop1_11_type 1163
235#define _loop0_13_type 1164
236#define _gather_12_type 1165
237#define _tmp_14_type 1166
238#define _tmp_15_type 1167
239#define _tmp_16_type 1168
240#define _tmp_17_type 1169
241#define _tmp_18_type 1170
242#define _tmp_19_type 1171
243#define _tmp_20_type 1172
244#define _tmp_21_type 1173
245#define _loop1_22_type 1174
246#define _tmp_23_type 1175
247#define _tmp_24_type 1176
248#define _loop0_26_type 1177
249#define _gather_25_type 1178
250#define _loop0_28_type 1179
251#define _gather_27_type 1180
252#define _tmp_29_type 1181
253#define _loop0_30_type 1182
254#define _loop1_31_type 1183
255#define _loop0_33_type 1184
256#define _gather_32_type 1185
257#define _tmp_34_type 1186
258#define _loop0_36_type 1187
259#define _gather_35_type 1188
260#define _tmp_37_type 1189
261#define _loop0_39_type 1190
262#define _gather_38_type 1191
263#define _loop0_41_type 1192
264#define _gather_40_type 1193
265#define _loop0_43_type 1194
266#define _gather_42_type 1195
267#define _loop0_45_type 1196
268#define _gather_44_type 1197
269#define _tmp_46_type 1198
270#define _loop1_47_type 1199
271#define _tmp_48_type 1200
272#define _tmp_49_type 1201
273#define _tmp_50_type 1202
274#define _tmp_51_type 1203
275#define _tmp_52_type 1204
276#define _loop0_53_type 1205
277#define _loop0_54_type 1206
278#define _loop0_55_type 1207
279#define _loop1_56_type 1208
280#define _loop0_57_type 1209
281#define _loop1_58_type 1210
282#define _loop1_59_type 1211
283#define _loop1_60_type 1212
284#define _loop0_61_type 1213
285#define _loop1_62_type 1214
286#define _loop0_63_type 1215
287#define _loop1_64_type 1216
288#define _loop0_65_type 1217
289#define _loop1_66_type 1218
290#define _loop1_67_type 1219
291#define _tmp_68_type 1220
292#define _loop0_70_type 1221
293#define _gather_69_type 1222
294#define _loop1_71_type 1223
295#define _loop0_73_type 1224
296#define _gather_72_type 1225
297#define _loop1_74_type 1226
298#define _loop0_75_type 1227
299#define _loop0_76_type 1228
300#define _loop0_77_type 1229
301#define _loop1_78_type 1230
302#define _loop0_79_type 1231
303#define _loop1_80_type 1232
304#define _loop1_81_type 1233
305#define _loop1_82_type 1234
306#define _loop0_83_type 1235
307#define _loop1_84_type 1236
308#define _loop0_85_type 1237
309#define _loop1_86_type 1238
310#define _loop0_87_type 1239
311#define _loop1_88_type 1240
312#define _loop1_89_type 1241
313#define _loop1_90_type 1242
314#define _loop1_91_type 1243
315#define _tmp_92_type 1244
316#define _loop0_94_type 1245
317#define _gather_93_type 1246
318#define _tmp_95_type 1247
319#define _tmp_96_type 1248
320#define _tmp_97_type 1249
321#define _tmp_98_type 1250
322#define _loop1_99_type 1251
323#define _tmp_100_type 1252
324#define _tmp_101_type 1253
325#define _loop0_103_type 1254
326#define _gather_102_type 1255
327#define _loop1_104_type 1256
328#define _loop0_105_type 1257
329#define _loop0_106_type 1258
330#define _tmp_107_type 1259
331#define _tmp_108_type 1260
332#define _loop0_110_type 1261
333#define _gather_109_type 1262
334#define _loop0_112_type 1263
335#define _gather_111_type 1264
336#define _loop0_114_type 1265
337#define _gather_113_type 1266
338#define _loop0_116_type 1267
339#define _gather_115_type 1268
340#define _loop0_117_type 1269
341#define _loop0_119_type 1270
342#define _gather_118_type 1271
343#define _tmp_120_type 1272
344#define _loop0_122_type 1273
345#define _gather_121_type 1274
346#define _loop0_124_type 1275
347#define _gather_123_type 1276
348#define _tmp_125_type 1277
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300349#define _loop0_126_type 1278
Shantanu27c0d9b2020-05-11 14:53:58 -0700350#define _tmp_127_type 1279
351#define _tmp_128_type 1280
352#define _tmp_129_type 1281
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300353#define _tmp_130_type 1282
354#define _loop0_131_type 1283
Shantanu27c0d9b2020-05-11 14:53:58 -0700355#define _tmp_132_type 1284
356#define _tmp_133_type 1285
357#define _tmp_134_type 1286
358#define _tmp_135_type 1287
359#define _tmp_136_type 1288
360#define _tmp_137_type 1289
361#define _tmp_138_type 1290
362#define _tmp_139_type 1291
363#define _tmp_140_type 1292
364#define _tmp_141_type 1293
365#define _tmp_142_type 1294
366#define _tmp_143_type 1295
367#define _tmp_144_type 1296
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300368#define _tmp_145_type 1297
369#define _loop1_146_type 1298
Shantanu27c0d9b2020-05-11 14:53:58 -0700370#define _tmp_147_type 1299
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300371#define _tmp_148_type 1300
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100372
373static mod_ty file_rule(Parser *p);
374static mod_ty interactive_rule(Parser *p);
375static mod_ty eval_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700376static mod_ty func_type_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100377static expr_ty fstring_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700378static asdl_seq* type_expressions_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100379static asdl_seq* statements_rule(Parser *p);
380static asdl_seq* statement_rule(Parser *p);
381static asdl_seq* statement_newline_rule(Parser *p);
382static asdl_seq* simple_stmt_rule(Parser *p);
383static stmt_ty small_stmt_rule(Parser *p);
384static stmt_ty compound_stmt_rule(Parser *p);
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +0300385static stmt_ty assignment_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100386static AugOperator* augassign_rule(Parser *p);
387static stmt_ty global_stmt_rule(Parser *p);
388static stmt_ty nonlocal_stmt_rule(Parser *p);
389static stmt_ty yield_stmt_rule(Parser *p);
390static stmt_ty assert_stmt_rule(Parser *p);
391static stmt_ty del_stmt_rule(Parser *p);
392static stmt_ty import_stmt_rule(Parser *p);
393static stmt_ty import_name_rule(Parser *p);
394static stmt_ty import_from_rule(Parser *p);
395static asdl_seq* import_from_targets_rule(Parser *p);
396static asdl_seq* import_from_as_names_rule(Parser *p);
397static alias_ty import_from_as_name_rule(Parser *p);
398static asdl_seq* dotted_as_names_rule(Parser *p);
399static alias_ty dotted_as_name_rule(Parser *p);
400static expr_ty dotted_name_rule(Parser *p);
401static stmt_ty if_stmt_rule(Parser *p);
402static stmt_ty elif_stmt_rule(Parser *p);
403static asdl_seq* else_block_rule(Parser *p);
404static stmt_ty while_stmt_rule(Parser *p);
405static stmt_ty for_stmt_rule(Parser *p);
406static stmt_ty with_stmt_rule(Parser *p);
407static withitem_ty with_item_rule(Parser *p);
408static stmt_ty try_stmt_rule(Parser *p);
409static excepthandler_ty except_block_rule(Parser *p);
410static asdl_seq* finally_block_rule(Parser *p);
411static stmt_ty return_stmt_rule(Parser *p);
412static stmt_ty raise_stmt_rule(Parser *p);
413static stmt_ty function_def_rule(Parser *p);
414static stmt_ty function_def_raw_rule(Parser *p);
Pablo Galindod9552412020-05-01 16:32:09 +0100415static Token* func_type_comment_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100416static arguments_ty params_rule(Parser *p);
417static arguments_ty parameters_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700418static asdl_seq* slash_no_default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100419static SlashWithDefault* slash_with_default_rule(Parser *p);
420static StarEtc* star_etc_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100421static arg_ty kwds_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700422static arg_ty param_no_default_rule(Parser *p);
423static NameDefaultPair* param_with_default_rule(Parser *p);
424static NameDefaultPair* param_maybe_default_rule(Parser *p);
425static arg_ty param_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100426static expr_ty annotation_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700427static expr_ty default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100428static asdl_seq* decorators_rule(Parser *p);
429static stmt_ty class_def_rule(Parser *p);
430static stmt_ty class_def_raw_rule(Parser *p);
431static asdl_seq* block_rule(Parser *p);
432static asdl_seq* expressions_list_rule(Parser *p);
433static expr_ty star_expressions_rule(Parser *p);
434static expr_ty star_expression_rule(Parser *p);
435static asdl_seq* star_named_expressions_rule(Parser *p);
436static expr_ty star_named_expression_rule(Parser *p);
437static expr_ty named_expression_rule(Parser *p);
438static expr_ty annotated_rhs_rule(Parser *p);
439static expr_ty expressions_rule(Parser *p);
440static expr_ty expression_rule(Parser *p);
441static expr_ty lambdef_rule(Parser *p);
442static arguments_ty lambda_parameters_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700443static asdl_seq* lambda_slash_no_default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100444static SlashWithDefault* lambda_slash_with_default_rule(Parser *p);
445static StarEtc* lambda_star_etc_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100446static arg_ty lambda_kwds_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700447static arg_ty lambda_param_no_default_rule(Parser *p);
448static NameDefaultPair* lambda_param_with_default_rule(Parser *p);
449static NameDefaultPair* lambda_param_maybe_default_rule(Parser *p);
450static arg_ty lambda_param_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100451static expr_ty disjunction_rule(Parser *p);
452static expr_ty conjunction_rule(Parser *p);
453static expr_ty inversion_rule(Parser *p);
454static expr_ty comparison_rule(Parser *p);
455static CmpopExprPair* compare_op_bitwise_or_pair_rule(Parser *p);
456static CmpopExprPair* eq_bitwise_or_rule(Parser *p);
457static CmpopExprPair* noteq_bitwise_or_rule(Parser *p);
458static CmpopExprPair* lte_bitwise_or_rule(Parser *p);
459static CmpopExprPair* lt_bitwise_or_rule(Parser *p);
460static CmpopExprPair* gte_bitwise_or_rule(Parser *p);
461static CmpopExprPair* gt_bitwise_or_rule(Parser *p);
462static CmpopExprPair* notin_bitwise_or_rule(Parser *p);
463static CmpopExprPair* in_bitwise_or_rule(Parser *p);
464static CmpopExprPair* isnot_bitwise_or_rule(Parser *p);
465static CmpopExprPair* is_bitwise_or_rule(Parser *p);
466static expr_ty bitwise_or_rule(Parser *p);
467static expr_ty bitwise_xor_rule(Parser *p);
468static expr_ty bitwise_and_rule(Parser *p);
469static expr_ty shift_expr_rule(Parser *p);
470static expr_ty sum_rule(Parser *p);
471static expr_ty term_rule(Parser *p);
472static expr_ty factor_rule(Parser *p);
473static expr_ty power_rule(Parser *p);
474static expr_ty await_primary_rule(Parser *p);
475static expr_ty primary_rule(Parser *p);
476static expr_ty slices_rule(Parser *p);
477static expr_ty slice_rule(Parser *p);
478static expr_ty atom_rule(Parser *p);
479static expr_ty strings_rule(Parser *p);
480static expr_ty list_rule(Parser *p);
481static expr_ty listcomp_rule(Parser *p);
482static expr_ty tuple_rule(Parser *p);
483static expr_ty group_rule(Parser *p);
484static expr_ty genexp_rule(Parser *p);
485static expr_ty set_rule(Parser *p);
486static expr_ty setcomp_rule(Parser *p);
487static expr_ty dict_rule(Parser *p);
488static expr_ty dictcomp_rule(Parser *p);
489static asdl_seq* kvpairs_rule(Parser *p);
490static KeyValuePair* kvpair_rule(Parser *p);
491static asdl_seq* for_if_clauses_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300492static comprehension_ty for_if_clause_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100493static expr_ty yield_expr_rule(Parser *p);
494static expr_ty arguments_rule(Parser *p);
495static expr_ty args_rule(Parser *p);
496static asdl_seq* kwargs_rule(Parser *p);
497static expr_ty starred_expression_rule(Parser *p);
498static KeywordOrStarred* kwarg_or_starred_rule(Parser *p);
499static KeywordOrStarred* kwarg_or_double_starred_rule(Parser *p);
500static expr_ty star_targets_rule(Parser *p);
501static asdl_seq* star_targets_seq_rule(Parser *p);
502static expr_ty star_target_rule(Parser *p);
503static expr_ty star_atom_rule(Parser *p);
504static expr_ty inside_paren_ann_assign_target_rule(Parser *p);
505static expr_ty ann_assign_subscript_attribute_target_rule(Parser *p);
506static asdl_seq* del_targets_rule(Parser *p);
507static expr_ty del_target_rule(Parser *p);
508static expr_ty del_t_atom_rule(Parser *p);
Shantanu27c0d9b2020-05-11 14:53:58 -0700509static void *del_target_end_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100510static asdl_seq* targets_rule(Parser *p);
511static expr_ty target_rule(Parser *p);
512static expr_ty t_primary_rule(Parser *p);
513static void *t_lookahead_rule(Parser *p);
514static expr_ty t_atom_rule(Parser *p);
515static void *incorrect_arguments_rule(Parser *p);
Lysandros Nikolaou4638c642020-05-07 13:44:06 +0300516static void *invalid_kwarg_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100517static void *invalid_named_expression_rule(Parser *p);
518static void *invalid_assignment_rule(Parser *p);
519static void *invalid_block_rule(Parser *p);
520static void *invalid_comprehension_rule(Parser *p);
521static void *invalid_parameters_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300522static void *invalid_star_etc_rule(Parser *p);
523static void *invalid_lambda_star_etc_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700524static void *invalid_double_type_comments_rule(Parser *p);
Shantanu27c0d9b2020-05-11 14:53:58 -0700525static void *invalid_del_target_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100526static asdl_seq *_loop0_1_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700527static asdl_seq *_loop0_2_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100528static asdl_seq *_loop0_4_rule(Parser *p);
529static asdl_seq *_gather_3_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700530static asdl_seq *_loop0_6_rule(Parser *p);
531static asdl_seq *_gather_5_rule(Parser *p);
532static asdl_seq *_loop0_8_rule(Parser *p);
533static asdl_seq *_gather_7_rule(Parser *p);
534static asdl_seq *_loop0_10_rule(Parser *p);
535static asdl_seq *_gather_9_rule(Parser *p);
536static asdl_seq *_loop1_11_rule(Parser *p);
537static asdl_seq *_loop0_13_rule(Parser *p);
538static asdl_seq *_gather_12_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100539static void *_tmp_14_rule(Parser *p);
540static void *_tmp_15_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700541static void *_tmp_16_rule(Parser *p);
542static void *_tmp_17_rule(Parser *p);
543static void *_tmp_18_rule(Parser *p);
544static void *_tmp_19_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100545static void *_tmp_20_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700546static void *_tmp_21_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100547static asdl_seq *_loop1_22_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700548static void *_tmp_23_rule(Parser *p);
549static void *_tmp_24_rule(Parser *p);
550static asdl_seq *_loop0_26_rule(Parser *p);
551static asdl_seq *_gather_25_rule(Parser *p);
552static asdl_seq *_loop0_28_rule(Parser *p);
553static asdl_seq *_gather_27_rule(Parser *p);
554static void *_tmp_29_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100555static asdl_seq *_loop0_30_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700556static asdl_seq *_loop1_31_rule(Parser *p);
557static asdl_seq *_loop0_33_rule(Parser *p);
558static asdl_seq *_gather_32_rule(Parser *p);
559static void *_tmp_34_rule(Parser *p);
560static asdl_seq *_loop0_36_rule(Parser *p);
561static asdl_seq *_gather_35_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100562static void *_tmp_37_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700563static asdl_seq *_loop0_39_rule(Parser *p);
564static asdl_seq *_gather_38_rule(Parser *p);
565static asdl_seq *_loop0_41_rule(Parser *p);
566static asdl_seq *_gather_40_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300567static asdl_seq *_loop0_43_rule(Parser *p);
568static asdl_seq *_gather_42_rule(Parser *p);
569static asdl_seq *_loop0_45_rule(Parser *p);
570static asdl_seq *_gather_44_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100571static void *_tmp_46_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300572static asdl_seq *_loop1_47_rule(Parser *p);
573static void *_tmp_48_rule(Parser *p);
574static void *_tmp_49_rule(Parser *p);
575static void *_tmp_50_rule(Parser *p);
576static void *_tmp_51_rule(Parser *p);
577static void *_tmp_52_rule(Parser *p);
578static asdl_seq *_loop0_53_rule(Parser *p);
579static asdl_seq *_loop0_54_rule(Parser *p);
580static asdl_seq *_loop0_55_rule(Parser *p);
581static asdl_seq *_loop1_56_rule(Parser *p);
582static asdl_seq *_loop0_57_rule(Parser *p);
583static asdl_seq *_loop1_58_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700584static asdl_seq *_loop1_59_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300585static asdl_seq *_loop1_60_rule(Parser *p);
586static asdl_seq *_loop0_61_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700587static asdl_seq *_loop1_62_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300588static asdl_seq *_loop0_63_rule(Parser *p);
589static asdl_seq *_loop1_64_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700590static asdl_seq *_loop0_65_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700591static asdl_seq *_loop1_66_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300592static asdl_seq *_loop1_67_rule(Parser *p);
593static void *_tmp_68_rule(Parser *p);
594static asdl_seq *_loop0_70_rule(Parser *p);
595static asdl_seq *_gather_69_rule(Parser *p);
596static asdl_seq *_loop1_71_rule(Parser *p);
597static asdl_seq *_loop0_73_rule(Parser *p);
598static asdl_seq *_gather_72_rule(Parser *p);
599static asdl_seq *_loop1_74_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700600static asdl_seq *_loop0_75_rule(Parser *p);
601static asdl_seq *_loop0_76_rule(Parser *p);
602static asdl_seq *_loop0_77_rule(Parser *p);
603static asdl_seq *_loop1_78_rule(Parser *p);
604static asdl_seq *_loop0_79_rule(Parser *p);
605static asdl_seq *_loop1_80_rule(Parser *p);
606static asdl_seq *_loop1_81_rule(Parser *p);
607static asdl_seq *_loop1_82_rule(Parser *p);
608static asdl_seq *_loop0_83_rule(Parser *p);
609static asdl_seq *_loop1_84_rule(Parser *p);
610static asdl_seq *_loop0_85_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300611static asdl_seq *_loop1_86_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700612static asdl_seq *_loop0_87_rule(Parser *p);
613static asdl_seq *_loop1_88_rule(Parser *p);
614static asdl_seq *_loop1_89_rule(Parser *p);
615static asdl_seq *_loop1_90_rule(Parser *p);
616static asdl_seq *_loop1_91_rule(Parser *p);
617static void *_tmp_92_rule(Parser *p);
618static asdl_seq *_loop0_94_rule(Parser *p);
619static asdl_seq *_gather_93_rule(Parser *p);
620static void *_tmp_95_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700621static void *_tmp_96_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700622static void *_tmp_97_rule(Parser *p);
623static void *_tmp_98_rule(Parser *p);
624static asdl_seq *_loop1_99_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100625static void *_tmp_100_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300626static void *_tmp_101_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700627static asdl_seq *_loop0_103_rule(Parser *p);
628static asdl_seq *_gather_102_rule(Parser *p);
629static asdl_seq *_loop1_104_rule(Parser *p);
630static asdl_seq *_loop0_105_rule(Parser *p);
631static asdl_seq *_loop0_106_rule(Parser *p);
632static void *_tmp_107_rule(Parser *p);
633static void *_tmp_108_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300634static asdl_seq *_loop0_110_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700635static asdl_seq *_gather_109_rule(Parser *p);
636static asdl_seq *_loop0_112_rule(Parser *p);
637static asdl_seq *_gather_111_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100638static asdl_seq *_loop0_114_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300639static asdl_seq *_gather_113_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100640static asdl_seq *_loop0_116_rule(Parser *p);
641static asdl_seq *_gather_115_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700642static asdl_seq *_loop0_117_rule(Parser *p);
643static asdl_seq *_loop0_119_rule(Parser *p);
644static asdl_seq *_gather_118_rule(Parser *p);
645static void *_tmp_120_rule(Parser *p);
646static asdl_seq *_loop0_122_rule(Parser *p);
647static asdl_seq *_gather_121_rule(Parser *p);
648static asdl_seq *_loop0_124_rule(Parser *p);
649static asdl_seq *_gather_123_rule(Parser *p);
650static void *_tmp_125_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300651static asdl_seq *_loop0_126_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700652static void *_tmp_127_rule(Parser *p);
653static void *_tmp_128_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100654static void *_tmp_129_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300655static void *_tmp_130_rule(Parser *p);
656static asdl_seq *_loop0_131_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100657static void *_tmp_132_rule(Parser *p);
658static void *_tmp_133_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700659static void *_tmp_134_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100660static void *_tmp_135_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700661static void *_tmp_136_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100662static void *_tmp_137_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700663static void *_tmp_138_rule(Parser *p);
664static void *_tmp_139_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300665static void *_tmp_140_rule(Parser *p);
666static void *_tmp_141_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700667static void *_tmp_142_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300668static void *_tmp_143_rule(Parser *p);
669static void *_tmp_144_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300670static void *_tmp_145_rule(Parser *p);
671static asdl_seq *_loop1_146_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300672static void *_tmp_147_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300673static void *_tmp_148_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100674
675
676// file: statements? $
677static mod_ty
678file_rule(Parser *p)
679{
680 if (p->error_indicator) {
681 return NULL;
682 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100683 mod_ty _res = NULL;
684 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100685 { // statements? $
686 void *a;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100687 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100688 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100689 (a = statements_rule(p), 1) // statements?
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100690 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100691 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100692 )
693 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100694 _res = _PyPegen_make_module ( p , a );
695 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100696 p->error_indicator = 1;
697 return NULL;
698 }
699 goto done;
700 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100701 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100703 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100704 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100705 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100706}
707
708// interactive: statement_newline
709static mod_ty
710interactive_rule(Parser *p)
711{
712 if (p->error_indicator) {
713 return NULL;
714 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100715 mod_ty _res = NULL;
716 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100717 { // statement_newline
718 asdl_seq* a;
719 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100720 (a = statement_newline_rule(p)) // statement_newline
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100721 )
722 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100723 _res = Interactive ( a , p -> arena );
724 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100725 p->error_indicator = 1;
726 return NULL;
727 }
728 goto done;
729 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100730 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100731 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100732 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100733 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100734 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100735}
736
737// eval: expressions NEWLINE* $
738static mod_ty
739eval_rule(Parser *p)
740{
741 if (p->error_indicator) {
742 return NULL;
743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100744 mod_ty _res = NULL;
745 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100746 { // expressions NEWLINE* $
747 asdl_seq * _loop0_1_var;
748 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100749 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100750 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100751 (a = expressions_rule(p)) // expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100752 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100753 (_loop0_1_var = _loop0_1_rule(p)) // NEWLINE*
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100754 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100755 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100756 )
757 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100758 _res = Expression ( a , p -> arena );
759 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100760 p->error_indicator = 1;
761 return NULL;
762 }
763 goto done;
764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100765 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100766 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100767 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100768 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100769 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100770}
771
Guido van Rossumc001c092020-04-30 12:12:19 -0700772// func_type: '(' type_expressions? ')' '->' expression NEWLINE* $
773static mod_ty
774func_type_rule(Parser *p)
775{
776 if (p->error_indicator) {
777 return NULL;
778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100779 mod_ty _res = NULL;
780 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700781 { // '(' type_expressions? ')' '->' expression NEWLINE* $
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100782 Token * _literal;
783 Token * _literal_1;
784 Token * _literal_2;
Guido van Rossumc001c092020-04-30 12:12:19 -0700785 asdl_seq * _loop0_2_var;
786 void *a;
787 expr_ty b;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100788 Token * endmarker_var;
Guido van Rossumc001c092020-04-30 12:12:19 -0700789 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100790 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Guido van Rossumc001c092020-04-30 12:12:19 -0700791 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100792 (a = type_expressions_rule(p), 1) // type_expressions?
Guido van Rossumc001c092020-04-30 12:12:19 -0700793 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100794 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -0700795 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100796 (_literal_2 = _PyPegen_expect_token(p, 51)) // token='->'
Guido van Rossumc001c092020-04-30 12:12:19 -0700797 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100798 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700799 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100800 (_loop0_2_var = _loop0_2_rule(p)) // NEWLINE*
Guido van Rossumc001c092020-04-30 12:12:19 -0700801 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100802 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Guido van Rossumc001c092020-04-30 12:12:19 -0700803 )
804 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100805 _res = FunctionType ( a , b , p -> arena );
806 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700807 p->error_indicator = 1;
808 return NULL;
809 }
810 goto done;
811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100812 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700813 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100814 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -0700815 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100816 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -0700817}
818
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100819// fstring: star_expressions
820static expr_ty
821fstring_rule(Parser *p)
822{
823 if (p->error_indicator) {
824 return NULL;
825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100826 expr_ty _res = NULL;
827 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100828 { // star_expressions
829 expr_ty star_expressions_var;
830 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100831 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100832 )
833 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100834 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100835 goto done;
836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100837 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100838 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100839 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100840 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100841 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100842}
843
Guido van Rossumc001c092020-04-30 12:12:19 -0700844// type_expressions:
845// | ','.expression+ ',' '*' expression ',' '**' expression
846// | ','.expression+ ',' '*' expression
847// | ','.expression+ ',' '**' expression
Shantanu603d3542020-05-03 22:08:14 -0700848// | '*' expression ',' '**' expression
849// | '*' expression
850// | '**' expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700851// | ','.expression+
852static asdl_seq*
853type_expressions_rule(Parser *p)
854{
855 if (p->error_indicator) {
856 return NULL;
857 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100858 asdl_seq* _res = NULL;
859 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700860 { // ','.expression+ ',' '*' expression ',' '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100861 Token * _literal;
862 Token * _literal_1;
863 Token * _literal_2;
864 Token * _literal_3;
Guido van Rossumc001c092020-04-30 12:12:19 -0700865 asdl_seq * a;
866 expr_ty b;
867 expr_ty c;
Guido van Rossumc001c092020-04-30 12:12:19 -0700868 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100869 (a = _gather_3_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700870 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100871 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700872 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100873 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Guido van Rossumc001c092020-04-30 12:12:19 -0700874 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100875 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700876 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100877 (_literal_2 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700878 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100879 (_literal_3 = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -0700880 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100881 (c = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700882 )
883 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100884 _res = _PyPegen_seq_append_to_end ( p , CHECK ( _PyPegen_seq_append_to_end ( p , a , b ) ) , c );
885 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700886 p->error_indicator = 1;
887 return NULL;
888 }
889 goto done;
890 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100891 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700892 }
893 { // ','.expression+ ',' '*' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100894 Token * _literal;
895 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -0700896 asdl_seq * a;
897 expr_ty b;
Guido van Rossumc001c092020-04-30 12:12:19 -0700898 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100899 (a = _gather_5_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700900 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100901 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700902 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100903 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Guido van Rossumc001c092020-04-30 12:12:19 -0700904 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100905 (b = 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 , a , b );
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
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100918 Token * _literal;
919 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -0700920 asdl_seq * a;
921 expr_ty b;
Guido van Rossumc001c092020-04-30 12:12:19 -0700922 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100923 (a = _gather_7_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700924 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100925 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700926 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100927 (_literal_1 = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -0700928 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100929 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700930 )
931 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100932 _res = _PyPegen_seq_append_to_end ( p , a , b );
933 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700934 p->error_indicator = 1;
935 return NULL;
936 }
937 goto done;
938 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100939 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700940 }
Shantanu603d3542020-05-03 22:08:14 -0700941 { // '*' expression ',' '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100942 Token * _literal;
943 Token * _literal_1;
944 Token * _literal_2;
Shantanu603d3542020-05-03 22:08:14 -0700945 expr_ty a;
946 expr_ty b;
Shantanu603d3542020-05-03 22:08:14 -0700947 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100948 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Shantanu603d3542020-05-03 22:08:14 -0700949 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100950 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700951 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100952 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Shantanu603d3542020-05-03 22:08:14 -0700953 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100954 (_literal_2 = _PyPegen_expect_token(p, 35)) // token='**'
Shantanu603d3542020-05-03 22:08:14 -0700955 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100956 (b = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700957 )
958 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100959 _res = _PyPegen_seq_append_to_end ( p , CHECK ( _PyPegen_singleton_seq ( p , a ) ) , b );
960 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -0700961 p->error_indicator = 1;
962 return NULL;
963 }
964 goto done;
965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100966 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -0700967 }
968 { // '*' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100969 Token * _literal;
Shantanu603d3542020-05-03 22:08:14 -0700970 expr_ty a;
Shantanu603d3542020-05-03 22:08:14 -0700971 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100972 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Shantanu603d3542020-05-03 22:08:14 -0700973 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100974 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700975 )
976 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100977 _res = _PyPegen_singleton_seq ( p , a );
978 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -0700979 p->error_indicator = 1;
980 return NULL;
981 }
982 goto done;
983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100984 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -0700985 }
986 { // '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100987 Token * _literal;
Shantanu603d3542020-05-03 22:08:14 -0700988 expr_ty a;
Shantanu603d3542020-05-03 22:08:14 -0700989 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100990 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Shantanu603d3542020-05-03 22:08:14 -0700991 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100992 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700993 )
994 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100995 _res = _PyPegen_singleton_seq ( p , a );
996 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -0700997 p->error_indicator = 1;
998 return NULL;
999 }
1000 goto done;
1001 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001002 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -07001003 }
Guido van Rossumc001c092020-04-30 12:12:19 -07001004 { // ','.expression+
1005 asdl_seq * _gather_9_var;
1006 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001007 (_gather_9_var = _gather_9_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -07001008 )
1009 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001010 _res = _gather_9_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07001011 goto done;
1012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001013 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07001014 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001015 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07001016 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001017 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07001018}
1019
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001020// statements: statement+
1021static asdl_seq*
1022statements_rule(Parser *p)
1023{
1024 if (p->error_indicator) {
1025 return NULL;
1026 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001027 asdl_seq* _res = NULL;
1028 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001029 { // statement+
1030 asdl_seq * a;
1031 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001032 (a = _loop1_11_rule(p)) // statement+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001033 )
1034 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001035 _res = _PyPegen_seq_flatten ( p , a );
1036 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001037 p->error_indicator = 1;
1038 return NULL;
1039 }
1040 goto done;
1041 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001042 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001043 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001044 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001045 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001046 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001047}
1048
1049// statement: compound_stmt | simple_stmt
1050static asdl_seq*
1051statement_rule(Parser *p)
1052{
1053 if (p->error_indicator) {
1054 return NULL;
1055 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001056 asdl_seq* _res = NULL;
1057 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001058 { // compound_stmt
1059 stmt_ty a;
1060 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001061 (a = compound_stmt_rule(p)) // compound_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001062 )
1063 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001064 _res = _PyPegen_singleton_seq ( p , a );
1065 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001066 p->error_indicator = 1;
1067 return NULL;
1068 }
1069 goto done;
1070 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001071 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001072 }
1073 { // simple_stmt
1074 asdl_seq* simple_stmt_var;
1075 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001076 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001077 )
1078 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001079 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001080 goto done;
1081 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001082 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001083 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001084 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001085 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001086 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001087}
1088
1089// statement_newline: compound_stmt NEWLINE | simple_stmt | NEWLINE | $
1090static asdl_seq*
1091statement_newline_rule(Parser *p)
1092{
1093 if (p->error_indicator) {
1094 return NULL;
1095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001096 asdl_seq* _res = NULL;
1097 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001098 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1099 p->error_indicator = 1;
1100 return NULL;
1101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001102 int _start_lineno = p->tokens[_mark]->lineno;
1103 UNUSED(_start_lineno); // Only used by EXTRA macro
1104 int _start_col_offset = p->tokens[_mark]->col_offset;
1105 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001106 { // compound_stmt NEWLINE
1107 stmt_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001108 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001109 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001110 (a = compound_stmt_rule(p)) // compound_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001111 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001112 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001113 )
1114 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001115 _res = _PyPegen_singleton_seq ( p , a );
1116 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001117 p->error_indicator = 1;
1118 return NULL;
1119 }
1120 goto done;
1121 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001122 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001123 }
1124 { // simple_stmt
1125 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 }
1135 { // NEWLINE
Pablo Galindob796b3f2020-05-01 12:32:26 +01001136 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001137 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001138 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001139 )
1140 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001141 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1142 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001143 return NULL;
1144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001145 int _end_lineno = _token->end_lineno;
1146 UNUSED(_end_lineno); // Only used by EXTRA macro
1147 int _end_col_offset = _token->end_col_offset;
1148 UNUSED(_end_col_offset); // Only used by EXTRA macro
1149 _res = _PyPegen_singleton_seq ( p , CHECK ( _Py_Pass ( EXTRA ) ) );
1150 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001151 p->error_indicator = 1;
1152 return NULL;
1153 }
1154 goto done;
1155 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001156 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001157 }
1158 { // $
Pablo Galindob796b3f2020-05-01 12:32:26 +01001159 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001160 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001161 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001162 )
1163 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001164 _res = _PyPegen_interactive_exit ( p );
1165 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001166 p->error_indicator = 1;
1167 return NULL;
1168 }
1169 goto done;
1170 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001171 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001172 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001173 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001174 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001175 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001176}
1177
1178// simple_stmt: small_stmt !';' NEWLINE | ';'.small_stmt+ ';'? NEWLINE
1179static asdl_seq*
1180simple_stmt_rule(Parser *p)
1181{
1182 if (p->error_indicator) {
1183 return NULL;
1184 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001185 asdl_seq* _res = NULL;
1186 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001187 { // small_stmt !';' NEWLINE
1188 stmt_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001189 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001190 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001191 (a = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001192 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001193 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 13) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001194 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001195 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001196 )
1197 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001198 _res = _PyPegen_singleton_seq ( p , a );
1199 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001200 p->error_indicator = 1;
1201 return NULL;
1202 }
1203 goto done;
1204 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001205 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001206 }
1207 { // ';'.small_stmt+ ';'? NEWLINE
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001208 void *_opt_var;
1209 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001210 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001211 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001212 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001213 (a = _gather_12_rule(p)) // ';'.small_stmt+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001214 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001215 (_opt_var = _PyPegen_expect_token(p, 13), 1) // ';'?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001216 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001217 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001218 )
1219 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001220 _res = a;
1221 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001222 p->error_indicator = 1;
1223 return NULL;
1224 }
1225 goto done;
1226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001227 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001229 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001230 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001231 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001232}
1233
1234// small_stmt:
1235// | assignment
1236// | star_expressions
1237// | &'return' return_stmt
1238// | &('import' | 'from') import_stmt
1239// | &'raise' raise_stmt
1240// | 'pass'
1241// | &'del' del_stmt
1242// | &'yield' yield_stmt
1243// | &'assert' assert_stmt
1244// | 'break'
1245// | 'continue'
1246// | &'global' global_stmt
1247// | &'nonlocal' nonlocal_stmt
1248static stmt_ty
1249small_stmt_rule(Parser *p)
1250{
1251 if (p->error_indicator) {
1252 return NULL;
1253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001254 stmt_ty _res = NULL;
1255 if (_PyPegen_is_memoized(p, small_stmt_type, &_res))
1256 return _res;
1257 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001258 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1259 p->error_indicator = 1;
1260 return NULL;
1261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001262 int _start_lineno = p->tokens[_mark]->lineno;
1263 UNUSED(_start_lineno); // Only used by EXTRA macro
1264 int _start_col_offset = p->tokens[_mark]->col_offset;
1265 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001266 { // assignment
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +03001267 stmt_ty assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001268 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001269 (assignment_var = assignment_rule(p)) // assignment
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001270 )
1271 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001272 _res = assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001273 goto done;
1274 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001275 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001276 }
1277 { // star_expressions
1278 expr_ty e;
1279 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001280 (e = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001281 )
1282 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001283 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1284 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001285 return NULL;
1286 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001287 int _end_lineno = _token->end_lineno;
1288 UNUSED(_end_lineno); // Only used by EXTRA macro
1289 int _end_col_offset = _token->end_col_offset;
1290 UNUSED(_end_col_offset); // Only used by EXTRA macro
1291 _res = _Py_Expr ( e , EXTRA );
1292 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001293 p->error_indicator = 1;
1294 return NULL;
1295 }
1296 goto done;
1297 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001298 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001299 }
1300 { // &'return' return_stmt
1301 stmt_ty return_stmt_var;
1302 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001303 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 500) // token='return'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001304 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001305 (return_stmt_var = return_stmt_rule(p)) // return_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001306 )
1307 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001308 _res = return_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001309 goto done;
1310 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001311 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001312 }
1313 { // &('import' | 'from') import_stmt
1314 stmt_ty import_stmt_var;
1315 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001316 _PyPegen_lookahead(1, _tmp_14_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001317 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001318 (import_stmt_var = import_stmt_rule(p)) // import_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001319 )
1320 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001321 _res = import_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001322 goto done;
1323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001324 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001325 }
1326 { // &'raise' raise_stmt
1327 stmt_ty raise_stmt_var;
1328 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001329 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 501) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001330 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001331 (raise_stmt_var = raise_stmt_rule(p)) // raise_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001332 )
1333 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001334 _res = raise_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001335 goto done;
1336 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001337 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001338 }
1339 { // 'pass'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001340 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001341 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001342 (_keyword = _PyPegen_expect_token(p, 502)) // token='pass'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001343 )
1344 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001345 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1346 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001347 return NULL;
1348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001349 int _end_lineno = _token->end_lineno;
1350 UNUSED(_end_lineno); // Only used by EXTRA macro
1351 int _end_col_offset = _token->end_col_offset;
1352 UNUSED(_end_col_offset); // Only used by EXTRA macro
1353 _res = _Py_Pass ( EXTRA );
1354 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001355 p->error_indicator = 1;
1356 return NULL;
1357 }
1358 goto done;
1359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001360 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001361 }
1362 { // &'del' del_stmt
1363 stmt_ty del_stmt_var;
1364 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001365 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 503) // token='del'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001366 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001367 (del_stmt_var = del_stmt_rule(p)) // del_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001368 )
1369 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001370 _res = del_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001371 goto done;
1372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001373 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001374 }
1375 { // &'yield' yield_stmt
1376 stmt_ty yield_stmt_var;
1377 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001378 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 504) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001379 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001380 (yield_stmt_var = yield_stmt_rule(p)) // yield_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001381 )
1382 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001383 _res = yield_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001384 goto done;
1385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001386 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001387 }
1388 { // &'assert' assert_stmt
1389 stmt_ty assert_stmt_var;
1390 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001391 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 505) // token='assert'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001392 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001393 (assert_stmt_var = assert_stmt_rule(p)) // assert_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001394 )
1395 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001396 _res = assert_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001397 goto done;
1398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001399 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001400 }
1401 { // 'break'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001402 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001403 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001404 (_keyword = _PyPegen_expect_token(p, 506)) // token='break'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001405 )
1406 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001407 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1408 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001409 return NULL;
1410 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001411 int _end_lineno = _token->end_lineno;
1412 UNUSED(_end_lineno); // Only used by EXTRA macro
1413 int _end_col_offset = _token->end_col_offset;
1414 UNUSED(_end_col_offset); // Only used by EXTRA macro
1415 _res = _Py_Break ( EXTRA );
1416 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001417 p->error_indicator = 1;
1418 return NULL;
1419 }
1420 goto done;
1421 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001422 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001423 }
1424 { // 'continue'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001425 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001426 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001427 (_keyword = _PyPegen_expect_token(p, 507)) // token='continue'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001428 )
1429 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001430 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1431 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001432 return NULL;
1433 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001434 int _end_lineno = _token->end_lineno;
1435 UNUSED(_end_lineno); // Only used by EXTRA macro
1436 int _end_col_offset = _token->end_col_offset;
1437 UNUSED(_end_col_offset); // Only used by EXTRA macro
1438 _res = _Py_Continue ( EXTRA );
1439 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001440 p->error_indicator = 1;
1441 return NULL;
1442 }
1443 goto done;
1444 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001445 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001446 }
1447 { // &'global' global_stmt
1448 stmt_ty global_stmt_var;
1449 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001450 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 508) // token='global'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001451 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001452 (global_stmt_var = global_stmt_rule(p)) // global_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001453 )
1454 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001455 _res = global_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001456 goto done;
1457 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001458 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001459 }
1460 { // &'nonlocal' nonlocal_stmt
1461 stmt_ty nonlocal_stmt_var;
1462 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001463 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 509) // token='nonlocal'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001464 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001465 (nonlocal_stmt_var = nonlocal_stmt_rule(p)) // nonlocal_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001466 )
1467 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001468 _res = nonlocal_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001469 goto done;
1470 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001471 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001473 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001474 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001475 _PyPegen_insert_memo(p, _mark, small_stmt_type, _res);
1476 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001477}
1478
1479// compound_stmt:
1480// | &('def' | '@' | ASYNC) function_def
1481// | &'if' if_stmt
1482// | &('class' | '@') class_def
1483// | &('with' | ASYNC) with_stmt
1484// | &('for' | ASYNC) for_stmt
1485// | &'try' try_stmt
1486// | &'while' while_stmt
1487static stmt_ty
1488compound_stmt_rule(Parser *p)
1489{
1490 if (p->error_indicator) {
1491 return NULL;
1492 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001493 stmt_ty _res = NULL;
1494 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001495 { // &('def' | '@' | ASYNC) function_def
1496 stmt_ty function_def_var;
1497 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001498 _PyPegen_lookahead(1, _tmp_15_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001499 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001500 (function_def_var = function_def_rule(p)) // function_def
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001501 )
1502 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001503 _res = function_def_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001504 goto done;
1505 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001506 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001507 }
1508 { // &'if' if_stmt
1509 stmt_ty if_stmt_var;
1510 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001511 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 510) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001512 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001513 (if_stmt_var = if_stmt_rule(p)) // if_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001514 )
1515 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001516 _res = if_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001517 goto done;
1518 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001519 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001520 }
1521 { // &('class' | '@') class_def
1522 stmt_ty class_def_var;
1523 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001524 _PyPegen_lookahead(1, _tmp_16_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001525 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001526 (class_def_var = class_def_rule(p)) // class_def
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001527 )
1528 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001529 _res = class_def_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001530 goto done;
1531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001532 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001533 }
1534 { // &('with' | ASYNC) with_stmt
1535 stmt_ty with_stmt_var;
1536 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001537 _PyPegen_lookahead(1, _tmp_17_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001538 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001539 (with_stmt_var = with_stmt_rule(p)) // with_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001540 )
1541 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001542 _res = with_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001543 goto done;
1544 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001545 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001546 }
1547 { // &('for' | ASYNC) for_stmt
1548 stmt_ty for_stmt_var;
1549 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001550 _PyPegen_lookahead(1, _tmp_18_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001551 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001552 (for_stmt_var = for_stmt_rule(p)) // for_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001553 )
1554 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001555 _res = for_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001556 goto done;
1557 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001558 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001559 }
1560 { // &'try' try_stmt
1561 stmt_ty try_stmt_var;
1562 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001563 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 511) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001564 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001565 (try_stmt_var = try_stmt_rule(p)) // try_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001566 )
1567 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001568 _res = try_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001569 goto done;
1570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001571 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001572 }
1573 { // &'while' while_stmt
1574 stmt_ty while_stmt_var;
1575 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001576 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 512) // token='while'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001577 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001578 (while_stmt_var = while_stmt_rule(p)) // while_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001579 )
1580 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001581 _res = while_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001582 goto done;
1583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001584 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001586 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001587 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001588 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001589}
1590
1591// assignment:
1592// | NAME ':' expression ['=' annotated_rhs]
1593// | ('(' inside_paren_ann_assign_target ')' | ann_assign_subscript_attribute_target) ':' expression ['=' annotated_rhs]
Guido van Rossumc001c092020-04-30 12:12:19 -07001594// | ((star_targets '='))+ (yield_expr | star_expressions) TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001595// | target augassign (yield_expr | star_expressions)
1596// | invalid_assignment
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +03001597static stmt_ty
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001598assignment_rule(Parser *p)
1599{
1600 if (p->error_indicator) {
1601 return NULL;
1602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001603 stmt_ty _res = NULL;
1604 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001605 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1606 p->error_indicator = 1;
1607 return NULL;
1608 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001609 int _start_lineno = p->tokens[_mark]->lineno;
1610 UNUSED(_start_lineno); // Only used by EXTRA macro
1611 int _start_col_offset = p->tokens[_mark]->col_offset;
1612 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001613 { // NAME ':' expression ['=' annotated_rhs]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001614 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001615 expr_ty a;
1616 expr_ty b;
1617 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001618 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001619 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001620 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001621 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001622 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001623 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001624 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001625 (c = _tmp_19_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001626 )
1627 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001628 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1629 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001630 return NULL;
1631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001632 int _end_lineno = _token->end_lineno;
1633 UNUSED(_end_lineno); // Only used by EXTRA macro
1634 int _end_col_offset = _token->end_col_offset;
1635 UNUSED(_end_col_offset); // Only used by EXTRA macro
1636 _res = CHECK_VERSION ( 6 , "Variable annotation syntax is" , _Py_AnnAssign ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , b , c , 1 , EXTRA ) );
1637 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001638 p->error_indicator = 1;
1639 return NULL;
1640 }
1641 goto done;
1642 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001643 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001644 }
1645 { // ('(' inside_paren_ann_assign_target ')' | ann_assign_subscript_attribute_target) ':' expression ['=' annotated_rhs]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001646 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001647 void *a;
1648 expr_ty b;
1649 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001650 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001651 (a = _tmp_20_rule(p)) // '(' inside_paren_ann_assign_target ')' | ann_assign_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001652 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001653 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001654 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001655 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001656 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001657 (c = _tmp_21_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001658 )
1659 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001660 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1661 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001662 return NULL;
1663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001664 int _end_lineno = _token->end_lineno;
1665 UNUSED(_end_lineno); // Only used by EXTRA macro
1666 int _end_col_offset = _token->end_col_offset;
1667 UNUSED(_end_col_offset); // Only used by EXTRA macro
1668 _res = CHECK_VERSION ( 6 , "Variable annotations syntax is" , _Py_AnnAssign ( a , b , c , 0 , EXTRA ) );
1669 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001670 p->error_indicator = 1;
1671 return NULL;
1672 }
1673 goto done;
1674 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001675 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001676 }
Guido van Rossumc001c092020-04-30 12:12:19 -07001677 { // ((star_targets '='))+ (yield_expr | star_expressions) TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001678 asdl_seq * a;
1679 void *b;
Guido van Rossumc001c092020-04-30 12:12:19 -07001680 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001681 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001682 (a = _loop1_22_rule(p)) // ((star_targets '='))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001683 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001684 (b = _tmp_23_rule(p)) // yield_expr | star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -07001685 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001686 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001687 )
1688 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001689 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1690 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001691 return NULL;
1692 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001693 int _end_lineno = _token->end_lineno;
1694 UNUSED(_end_lineno); // Only used by EXTRA macro
1695 int _end_col_offset = _token->end_col_offset;
1696 UNUSED(_end_col_offset); // Only used by EXTRA macro
1697 _res = _Py_Assign ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
1698 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001699 p->error_indicator = 1;
1700 return NULL;
1701 }
1702 goto done;
1703 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001704 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001705 }
1706 { // target augassign (yield_expr | star_expressions)
1707 expr_ty a;
1708 AugOperator* b;
1709 void *c;
1710 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001711 (a = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001712 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001713 (b = augassign_rule(p)) // augassign
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001714 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001715 (c = _tmp_24_rule(p)) // yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001716 )
1717 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001718 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1719 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001720 return NULL;
1721 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001722 int _end_lineno = _token->end_lineno;
1723 UNUSED(_end_lineno); // Only used by EXTRA macro
1724 int _end_col_offset = _token->end_col_offset;
1725 UNUSED(_end_col_offset); // Only used by EXTRA macro
1726 _res = _Py_AugAssign ( a , b -> kind , c , EXTRA );
1727 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001728 p->error_indicator = 1;
1729 return NULL;
1730 }
1731 goto done;
1732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001733 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001734 }
1735 { // invalid_assignment
1736 void *invalid_assignment_var;
1737 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001738 (invalid_assignment_var = invalid_assignment_rule(p)) // invalid_assignment
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001739 )
1740 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001741 _res = invalid_assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001742 goto done;
1743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001744 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001745 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001746 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001747 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001748 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001749}
1750
1751// augassign:
1752// | '+='
1753// | '-='
1754// | '*='
1755// | '@='
1756// | '/='
1757// | '%='
1758// | '&='
1759// | '|='
1760// | '^='
1761// | '<<='
1762// | '>>='
1763// | '**='
1764// | '//='
1765static AugOperator*
1766augassign_rule(Parser *p)
1767{
1768 if (p->error_indicator) {
1769 return NULL;
1770 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001771 AugOperator* _res = NULL;
1772 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001773 { // '+='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001774 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001775 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001776 (_literal = _PyPegen_expect_token(p, 36)) // token='+='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001777 )
1778 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001779 _res = _PyPegen_augoperator ( p , Add );
1780 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001781 p->error_indicator = 1;
1782 return NULL;
1783 }
1784 goto done;
1785 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001786 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001787 }
1788 { // '-='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001789 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001790 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001791 (_literal = _PyPegen_expect_token(p, 37)) // token='-='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001792 )
1793 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001794 _res = _PyPegen_augoperator ( p , Sub );
1795 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001796 p->error_indicator = 1;
1797 return NULL;
1798 }
1799 goto done;
1800 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001801 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001802 }
1803 { // '*='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001804 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001805 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001806 (_literal = _PyPegen_expect_token(p, 38)) // token='*='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001807 )
1808 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001809 _res = _PyPegen_augoperator ( p , Mult );
1810 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001811 p->error_indicator = 1;
1812 return NULL;
1813 }
1814 goto done;
1815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001816 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001817 }
1818 { // '@='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001819 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001820 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001821 (_literal = _PyPegen_expect_token(p, 50)) // token='@='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001822 )
1823 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001824 _res = CHECK_VERSION ( 5 , "The '@' operator is" , _PyPegen_augoperator ( p , MatMult ) );
1825 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001826 p->error_indicator = 1;
1827 return NULL;
1828 }
1829 goto done;
1830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001831 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001832 }
1833 { // '/='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001834 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001835 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001836 (_literal = _PyPegen_expect_token(p, 39)) // token='/='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001837 )
1838 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001839 _res = _PyPegen_augoperator ( p , Div );
1840 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001841 p->error_indicator = 1;
1842 return NULL;
1843 }
1844 goto done;
1845 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001846 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001847 }
1848 { // '%='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001849 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001850 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001851 (_literal = _PyPegen_expect_token(p, 40)) // token='%='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001852 )
1853 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001854 _res = _PyPegen_augoperator ( p , Mod );
1855 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001856 p->error_indicator = 1;
1857 return NULL;
1858 }
1859 goto done;
1860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001861 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001862 }
1863 { // '&='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001864 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001865 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001866 (_literal = _PyPegen_expect_token(p, 41)) // token='&='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001867 )
1868 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001869 _res = _PyPegen_augoperator ( p , BitAnd );
1870 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001871 p->error_indicator = 1;
1872 return NULL;
1873 }
1874 goto done;
1875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001876 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001877 }
1878 { // '|='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001879 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001880 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001881 (_literal = _PyPegen_expect_token(p, 42)) // token='|='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001882 )
1883 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001884 _res = _PyPegen_augoperator ( p , BitOr );
1885 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001886 p->error_indicator = 1;
1887 return NULL;
1888 }
1889 goto done;
1890 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001891 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001892 }
1893 { // '^='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001894 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001895 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001896 (_literal = _PyPegen_expect_token(p, 43)) // token='^='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001897 )
1898 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001899 _res = _PyPegen_augoperator ( p , BitXor );
1900 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001901 p->error_indicator = 1;
1902 return NULL;
1903 }
1904 goto done;
1905 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001906 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001907 }
1908 { // '<<='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001909 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001910 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001911 (_literal = _PyPegen_expect_token(p, 44)) // token='<<='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001912 )
1913 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001914 _res = _PyPegen_augoperator ( p , LShift );
1915 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001916 p->error_indicator = 1;
1917 return NULL;
1918 }
1919 goto done;
1920 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001921 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001922 }
1923 { // '>>='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001924 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001925 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001926 (_literal = _PyPegen_expect_token(p, 45)) // token='>>='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001927 )
1928 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001929 _res = _PyPegen_augoperator ( p , RShift );
1930 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001931 p->error_indicator = 1;
1932 return NULL;
1933 }
1934 goto done;
1935 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001936 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001937 }
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, 46)) // token='**='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001942 )
1943 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001944 _res = _PyPegen_augoperator ( p , Pow );
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 { // '//='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001954 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001955 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001956 (_literal = _PyPegen_expect_token(p, 48)) // token='//='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001957 )
1958 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001959 _res = _PyPegen_augoperator ( p , FloorDiv );
1960 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001961 p->error_indicator = 1;
1962 return NULL;
1963 }
1964 goto done;
1965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001966 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001967 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001968 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001969 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001970 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001971}
1972
1973// global_stmt: 'global' ','.NAME+
1974static stmt_ty
1975global_stmt_rule(Parser *p)
1976{
1977 if (p->error_indicator) {
1978 return NULL;
1979 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001980 stmt_ty _res = NULL;
1981 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001982 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1983 p->error_indicator = 1;
1984 return NULL;
1985 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001986 int _start_lineno = p->tokens[_mark]->lineno;
1987 UNUSED(_start_lineno); // Only used by EXTRA macro
1988 int _start_col_offset = p->tokens[_mark]->col_offset;
1989 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001990 { // 'global' ','.NAME+
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001991 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001992 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001993 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001994 (_keyword = _PyPegen_expect_token(p, 508)) // token='global'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001995 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001996 (a = _gather_25_rule(p)) // ','.NAME+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001997 )
1998 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001999 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2000 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002001 return NULL;
2002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002003 int _end_lineno = _token->end_lineno;
2004 UNUSED(_end_lineno); // Only used by EXTRA macro
2005 int _end_col_offset = _token->end_col_offset;
2006 UNUSED(_end_col_offset); // Only used by EXTRA macro
2007 _res = _Py_Global ( CHECK ( _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2008 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002009 p->error_indicator = 1;
2010 return NULL;
2011 }
2012 goto done;
2013 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002014 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002015 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002016 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002017 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002018 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002019}
2020
2021// nonlocal_stmt: 'nonlocal' ','.NAME+
2022static stmt_ty
2023nonlocal_stmt_rule(Parser *p)
2024{
2025 if (p->error_indicator) {
2026 return NULL;
2027 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002028 stmt_ty _res = NULL;
2029 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002030 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2031 p->error_indicator = 1;
2032 return NULL;
2033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002034 int _start_lineno = p->tokens[_mark]->lineno;
2035 UNUSED(_start_lineno); // Only used by EXTRA macro
2036 int _start_col_offset = p->tokens[_mark]->col_offset;
2037 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002038 { // 'nonlocal' ','.NAME+
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002039 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002040 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002041 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002042 (_keyword = _PyPegen_expect_token(p, 509)) // token='nonlocal'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002043 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002044 (a = _gather_27_rule(p)) // ','.NAME+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002045 )
2046 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002047 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2048 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002049 return NULL;
2050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002051 int _end_lineno = _token->end_lineno;
2052 UNUSED(_end_lineno); // Only used by EXTRA macro
2053 int _end_col_offset = _token->end_col_offset;
2054 UNUSED(_end_col_offset); // Only used by EXTRA macro
2055 _res = _Py_Nonlocal ( CHECK ( _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2056 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002057 p->error_indicator = 1;
2058 return NULL;
2059 }
2060 goto done;
2061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002062 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002063 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002064 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002065 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002066 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002067}
2068
2069// yield_stmt: yield_expr
2070static stmt_ty
2071yield_stmt_rule(Parser *p)
2072{
2073 if (p->error_indicator) {
2074 return NULL;
2075 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002076 stmt_ty _res = NULL;
2077 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002078 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2079 p->error_indicator = 1;
2080 return NULL;
2081 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002082 int _start_lineno = p->tokens[_mark]->lineno;
2083 UNUSED(_start_lineno); // Only used by EXTRA macro
2084 int _start_col_offset = p->tokens[_mark]->col_offset;
2085 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002086 { // yield_expr
2087 expr_ty y;
2088 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002089 (y = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002090 )
2091 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002092 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2093 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002094 return NULL;
2095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002096 int _end_lineno = _token->end_lineno;
2097 UNUSED(_end_lineno); // Only used by EXTRA macro
2098 int _end_col_offset = _token->end_col_offset;
2099 UNUSED(_end_col_offset); // Only used by EXTRA macro
2100 _res = _Py_Expr ( y , EXTRA );
2101 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002102 p->error_indicator = 1;
2103 return NULL;
2104 }
2105 goto done;
2106 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002107 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002108 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002109 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002110 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002111 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002112}
2113
2114// assert_stmt: 'assert' expression [',' expression]
2115static stmt_ty
2116assert_stmt_rule(Parser *p)
2117{
2118 if (p->error_indicator) {
2119 return NULL;
2120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002121 stmt_ty _res = NULL;
2122 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002123 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2124 p->error_indicator = 1;
2125 return NULL;
2126 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002127 int _start_lineno = p->tokens[_mark]->lineno;
2128 UNUSED(_start_lineno); // Only used by EXTRA macro
2129 int _start_col_offset = p->tokens[_mark]->col_offset;
2130 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002131 { // 'assert' expression [',' expression]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002132 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002133 expr_ty a;
2134 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002135 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002136 (_keyword = _PyPegen_expect_token(p, 505)) // token='assert'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002137 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002138 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002139 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002140 (b = _tmp_29_rule(p), 1) // [',' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002141 )
2142 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002143 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2144 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002145 return NULL;
2146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002147 int _end_lineno = _token->end_lineno;
2148 UNUSED(_end_lineno); // Only used by EXTRA macro
2149 int _end_col_offset = _token->end_col_offset;
2150 UNUSED(_end_col_offset); // Only used by EXTRA macro
2151 _res = _Py_Assert ( a , b , EXTRA );
2152 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002153 p->error_indicator = 1;
2154 return NULL;
2155 }
2156 goto done;
2157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002158 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002159 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002160 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002161 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002162 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002163}
2164
2165// del_stmt: 'del' del_targets
2166static stmt_ty
2167del_stmt_rule(Parser *p)
2168{
2169 if (p->error_indicator) {
2170 return NULL;
2171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002172 stmt_ty _res = NULL;
2173 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002174 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2175 p->error_indicator = 1;
2176 return NULL;
2177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002178 int _start_lineno = p->tokens[_mark]->lineno;
2179 UNUSED(_start_lineno); // Only used by EXTRA macro
2180 int _start_col_offset = p->tokens[_mark]->col_offset;
2181 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002182 { // 'del' del_targets
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002183 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002184 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002185 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002186 (_keyword = _PyPegen_expect_token(p, 503)) // token='del'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002187 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002188 (a = del_targets_rule(p)) // del_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002189 )
2190 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002191 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2192 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002193 return NULL;
2194 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002195 int _end_lineno = _token->end_lineno;
2196 UNUSED(_end_lineno); // Only used by EXTRA macro
2197 int _end_col_offset = _token->end_col_offset;
2198 UNUSED(_end_col_offset); // Only used by EXTRA macro
2199 _res = _Py_Delete ( a , EXTRA );
2200 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002201 p->error_indicator = 1;
2202 return NULL;
2203 }
2204 goto done;
2205 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002206 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002208 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002209 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002210 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002211}
2212
2213// import_stmt: import_name | import_from
2214static stmt_ty
2215import_stmt_rule(Parser *p)
2216{
2217 if (p->error_indicator) {
2218 return NULL;
2219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002220 stmt_ty _res = NULL;
2221 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002222 { // import_name
2223 stmt_ty import_name_var;
2224 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002225 (import_name_var = import_name_rule(p)) // import_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002226 )
2227 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002228 _res = import_name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002229 goto done;
2230 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002231 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002232 }
2233 { // import_from
2234 stmt_ty import_from_var;
2235 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002236 (import_from_var = import_from_rule(p)) // import_from
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002237 )
2238 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002239 _res = import_from_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002240 goto done;
2241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002242 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002244 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002245 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002246 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002247}
2248
2249// import_name: 'import' dotted_as_names
2250static stmt_ty
2251import_name_rule(Parser *p)
2252{
2253 if (p->error_indicator) {
2254 return NULL;
2255 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002256 stmt_ty _res = NULL;
2257 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002258 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2259 p->error_indicator = 1;
2260 return NULL;
2261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002262 int _start_lineno = p->tokens[_mark]->lineno;
2263 UNUSED(_start_lineno); // Only used by EXTRA macro
2264 int _start_col_offset = p->tokens[_mark]->col_offset;
2265 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002266 { // 'import' dotted_as_names
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002267 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002268 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002269 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002270 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002271 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002272 (a = dotted_as_names_rule(p)) // dotted_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002273 )
2274 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002275 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2276 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002277 return NULL;
2278 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002279 int _end_lineno = _token->end_lineno;
2280 UNUSED(_end_lineno); // Only used by EXTRA macro
2281 int _end_col_offset = _token->end_col_offset;
2282 UNUSED(_end_col_offset); // Only used by EXTRA macro
2283 _res = _Py_Import ( a , EXTRA );
2284 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002285 p->error_indicator = 1;
2286 return NULL;
2287 }
2288 goto done;
2289 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002290 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002292 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002293 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002294 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002295}
2296
2297// import_from:
2298// | 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
2299// | 'from' (('.' | '...'))+ 'import' import_from_targets
2300static stmt_ty
2301import_from_rule(Parser *p)
2302{
2303 if (p->error_indicator) {
2304 return NULL;
2305 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002306 stmt_ty _res = NULL;
2307 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002308 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2309 p->error_indicator = 1;
2310 return NULL;
2311 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002312 int _start_lineno = p->tokens[_mark]->lineno;
2313 UNUSED(_start_lineno); // Only used by EXTRA macro
2314 int _start_col_offset = p->tokens[_mark]->col_offset;
2315 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002316 { // 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002317 Token * _keyword;
2318 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002319 asdl_seq * a;
2320 expr_ty b;
2321 asdl_seq* c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002322 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002323 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002324 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002325 (a = _loop0_30_rule(p)) // (('.' | '...'))*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002326 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002327 (b = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002328 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002329 (_keyword_1 = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002330 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002331 (c = import_from_targets_rule(p)) // import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002332 )
2333 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002334 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2335 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002336 return NULL;
2337 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002338 int _end_lineno = _token->end_lineno;
2339 UNUSED(_end_lineno); // Only used by EXTRA macro
2340 int _end_col_offset = _token->end_col_offset;
2341 UNUSED(_end_col_offset); // Only used by EXTRA macro
2342 _res = _Py_ImportFrom ( b -> v . Name . id , c , _PyPegen_seq_count_dots ( a ) , EXTRA );
2343 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002344 p->error_indicator = 1;
2345 return NULL;
2346 }
2347 goto done;
2348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002349 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002350 }
2351 { // 'from' (('.' | '...'))+ 'import' import_from_targets
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002352 Token * _keyword;
2353 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002354 asdl_seq * a;
2355 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002356 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002357 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002358 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002359 (a = _loop1_31_rule(p)) // (('.' | '...'))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002360 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002361 (_keyword_1 = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002362 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002363 (b = import_from_targets_rule(p)) // import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002364 )
2365 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002366 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2367 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002368 return NULL;
2369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002370 int _end_lineno = _token->end_lineno;
2371 UNUSED(_end_lineno); // Only used by EXTRA macro
2372 int _end_col_offset = _token->end_col_offset;
2373 UNUSED(_end_col_offset); // Only used by EXTRA macro
2374 _res = _Py_ImportFrom ( NULL , b , _PyPegen_seq_count_dots ( a ) , EXTRA );
2375 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002376 p->error_indicator = 1;
2377 return NULL;
2378 }
2379 goto done;
2380 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002381 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002383 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002384 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002385 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002386}
2387
2388// import_from_targets: '(' import_from_as_names ','? ')' | import_from_as_names | '*'
2389static asdl_seq*
2390import_from_targets_rule(Parser *p)
2391{
2392 if (p->error_indicator) {
2393 return NULL;
2394 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002395 asdl_seq* _res = NULL;
2396 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002397 { // '(' import_from_as_names ','? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002398 Token * _literal;
2399 Token * _literal_1;
2400 void *_opt_var;
2401 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002402 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002403 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002404 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002405 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002406 (a = import_from_as_names_rule(p)) // import_from_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002407 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002408 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002409 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002410 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002411 )
2412 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002413 _res = a;
2414 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002415 p->error_indicator = 1;
2416 return NULL;
2417 }
2418 goto done;
2419 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002420 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002421 }
2422 { // import_from_as_names
2423 asdl_seq* import_from_as_names_var;
2424 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002425 (import_from_as_names_var = import_from_as_names_rule(p)) // import_from_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002426 )
2427 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002428 _res = import_from_as_names_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002429 goto done;
2430 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002431 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002432 }
2433 { // '*'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002434 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002435 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002436 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002437 )
2438 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002439 _res = _PyPegen_singleton_seq ( p , CHECK ( _PyPegen_alias_for_star ( p ) ) );
2440 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002441 p->error_indicator = 1;
2442 return NULL;
2443 }
2444 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_from_as_names: ','.import_from_as_name+
2454static asdl_seq*
2455import_from_as_names_rule(Parser *p)
2456{
2457 if (p->error_indicator) {
2458 return NULL;
2459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002460 asdl_seq* _res = NULL;
2461 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002462 { // ','.import_from_as_name+
2463 asdl_seq * a;
2464 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002465 (a = _gather_32_rule(p)) // ','.import_from_as_name+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002466 )
2467 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002468 _res = a;
2469 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002470 p->error_indicator = 1;
2471 return NULL;
2472 }
2473 goto done;
2474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002475 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002476 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002477 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002478 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002479 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002480}
2481
2482// import_from_as_name: NAME ['as' NAME]
2483static alias_ty
2484import_from_as_name_rule(Parser *p)
2485{
2486 if (p->error_indicator) {
2487 return NULL;
2488 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002489 alias_ty _res = NULL;
2490 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002491 { // NAME ['as' NAME]
2492 expr_ty a;
2493 void *b;
2494 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002495 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002496 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002497 (b = _tmp_34_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002498 )
2499 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002500 _res = _Py_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , p -> arena );
2501 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002502 p->error_indicator = 1;
2503 return NULL;
2504 }
2505 goto done;
2506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002507 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002508 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002509 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002510 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002511 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002512}
2513
2514// dotted_as_names: ','.dotted_as_name+
2515static asdl_seq*
2516dotted_as_names_rule(Parser *p)
2517{
2518 if (p->error_indicator) {
2519 return NULL;
2520 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002521 asdl_seq* _res = NULL;
2522 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002523 { // ','.dotted_as_name+
2524 asdl_seq * a;
2525 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002526 (a = _gather_35_rule(p)) // ','.dotted_as_name+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002527 )
2528 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002529 _res = a;
2530 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002531 p->error_indicator = 1;
2532 return NULL;
2533 }
2534 goto done;
2535 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002536 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002537 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002538 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002539 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002540 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002541}
2542
2543// dotted_as_name: dotted_name ['as' NAME]
2544static alias_ty
2545dotted_as_name_rule(Parser *p)
2546{
2547 if (p->error_indicator) {
2548 return NULL;
2549 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002550 alias_ty _res = NULL;
2551 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002552 { // dotted_name ['as' NAME]
2553 expr_ty a;
2554 void *b;
2555 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002556 (a = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002557 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002558 (b = _tmp_37_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002559 )
2560 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002561 _res = _Py_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , p -> arena );
2562 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002563 p->error_indicator = 1;
2564 return NULL;
2565 }
2566 goto done;
2567 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002568 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002570 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002571 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002572 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002573}
2574
2575// Left-recursive
2576// dotted_name: dotted_name '.' NAME | NAME
2577static expr_ty dotted_name_raw(Parser *);
2578static expr_ty
2579dotted_name_rule(Parser *p)
2580{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002581 expr_ty _res = NULL;
2582 if (_PyPegen_is_memoized(p, dotted_name_type, &_res))
2583 return _res;
2584 int _mark = p->mark;
2585 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002586 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002587 int tmpvar_0 = _PyPegen_update_memo(p, _mark, dotted_name_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002588 if (tmpvar_0) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002589 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002591 p->mark = _mark;
2592 void *_raw = dotted_name_raw(p);
2593 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002594 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002595 _resmark = p->mark;
2596 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002597 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002598 p->mark = _resmark;
2599 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002600}
2601static expr_ty
2602dotted_name_raw(Parser *p)
2603{
2604 if (p->error_indicator) {
2605 return NULL;
2606 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002607 expr_ty _res = NULL;
2608 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002609 { // dotted_name '.' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002610 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002611 expr_ty a;
2612 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002613 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002614 (a = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002615 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002616 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002617 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002618 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002619 )
2620 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002621 _res = _PyPegen_join_names_with_dot ( p , a , b );
2622 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002623 p->error_indicator = 1;
2624 return NULL;
2625 }
2626 goto done;
2627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002628 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002629 }
2630 { // NAME
2631 expr_ty name_var;
2632 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002633 (name_var = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002634 )
2635 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002636 _res = name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002637 goto done;
2638 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002639 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002640 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002641 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002642 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002643 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002644}
2645
2646// if_stmt:
2647// | 'if' named_expression ':' block elif_stmt
2648// | 'if' named_expression ':' block else_block?
2649static stmt_ty
2650if_stmt_rule(Parser *p)
2651{
2652 if (p->error_indicator) {
2653 return NULL;
2654 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002655 stmt_ty _res = NULL;
2656 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002657 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2658 p->error_indicator = 1;
2659 return NULL;
2660 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002661 int _start_lineno = p->tokens[_mark]->lineno;
2662 UNUSED(_start_lineno); // Only used by EXTRA macro
2663 int _start_col_offset = p->tokens[_mark]->col_offset;
2664 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002665 { // 'if' named_expression ':' block elif_stmt
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002666 Token * _keyword;
2667 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002668 expr_ty a;
2669 asdl_seq* b;
2670 stmt_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002671 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002672 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002673 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002674 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002675 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002676 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002677 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002678 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002679 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002680 (c = elif_stmt_rule(p)) // elif_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002681 )
2682 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002683 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2684 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002685 return NULL;
2686 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002687 int _end_lineno = _token->end_lineno;
2688 UNUSED(_end_lineno); // Only used by EXTRA macro
2689 int _end_col_offset = _token->end_col_offset;
2690 UNUSED(_end_col_offset); // Only used by EXTRA macro
2691 _res = _Py_If ( a , b , CHECK ( _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
2692 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002693 p->error_indicator = 1;
2694 return NULL;
2695 }
2696 goto done;
2697 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002698 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002699 }
2700 { // 'if' named_expression ':' block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002701 Token * _keyword;
2702 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002703 expr_ty a;
2704 asdl_seq* b;
2705 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002706 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002707 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002708 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002709 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002710 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002711 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002712 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002713 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002714 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002715 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002716 )
2717 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002718 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2719 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002720 return NULL;
2721 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002722 int _end_lineno = _token->end_lineno;
2723 UNUSED(_end_lineno); // Only used by EXTRA macro
2724 int _end_col_offset = _token->end_col_offset;
2725 UNUSED(_end_col_offset); // Only used by EXTRA macro
2726 _res = _Py_If ( a , b , c , EXTRA );
2727 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002728 p->error_indicator = 1;
2729 return NULL;
2730 }
2731 goto done;
2732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002733 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002734 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002735 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002736 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002737 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002738}
2739
2740// elif_stmt:
2741// | 'elif' named_expression ':' block elif_stmt
2742// | 'elif' named_expression ':' block else_block?
2743static stmt_ty
2744elif_stmt_rule(Parser *p)
2745{
2746 if (p->error_indicator) {
2747 return NULL;
2748 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002749 stmt_ty _res = NULL;
2750 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002751 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2752 p->error_indicator = 1;
2753 return NULL;
2754 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002755 int _start_lineno = p->tokens[_mark]->lineno;
2756 UNUSED(_start_lineno); // Only used by EXTRA macro
2757 int _start_col_offset = p->tokens[_mark]->col_offset;
2758 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002759 { // 'elif' named_expression ':' block elif_stmt
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002760 Token * _keyword;
2761 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002762 expr_ty a;
2763 asdl_seq* b;
2764 stmt_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002765 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002766 (_keyword = _PyPegen_expect_token(p, 515)) // token='elif'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002767 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002768 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002769 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002770 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002771 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002772 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002773 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002774 (c = elif_stmt_rule(p)) // elif_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002775 )
2776 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002777 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2778 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002779 return NULL;
2780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002781 int _end_lineno = _token->end_lineno;
2782 UNUSED(_end_lineno); // Only used by EXTRA macro
2783 int _end_col_offset = _token->end_col_offset;
2784 UNUSED(_end_col_offset); // Only used by EXTRA macro
2785 _res = _Py_If ( a , b , CHECK ( _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
2786 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002787 p->error_indicator = 1;
2788 return NULL;
2789 }
2790 goto done;
2791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002792 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002793 }
2794 { // 'elif' named_expression ':' block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002795 Token * _keyword;
2796 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002797 expr_ty a;
2798 asdl_seq* b;
2799 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002800 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002801 (_keyword = _PyPegen_expect_token(p, 515)) // token='elif'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002802 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002803 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002804 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002805 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002806 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002807 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002808 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002809 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002810 )
2811 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002812 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2813 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002814 return NULL;
2815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002816 int _end_lineno = _token->end_lineno;
2817 UNUSED(_end_lineno); // Only used by EXTRA macro
2818 int _end_col_offset = _token->end_col_offset;
2819 UNUSED(_end_col_offset); // Only used by EXTRA macro
2820 _res = _Py_If ( a , b , c , EXTRA );
2821 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002822 p->error_indicator = 1;
2823 return NULL;
2824 }
2825 goto done;
2826 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002827 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002828 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002829 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002830 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002831 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002832}
2833
2834// else_block: 'else' ':' block
2835static asdl_seq*
2836else_block_rule(Parser *p)
2837{
2838 if (p->error_indicator) {
2839 return NULL;
2840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002841 asdl_seq* _res = NULL;
2842 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002843 { // 'else' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002844 Token * _keyword;
2845 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002846 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002847 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002848 (_keyword = _PyPegen_expect_token(p, 516)) // token='else'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002849 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002850 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002851 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002852 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002853 )
2854 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002855 _res = b;
2856 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002857 p->error_indicator = 1;
2858 return NULL;
2859 }
2860 goto done;
2861 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002862 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002863 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002864 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002865 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002866 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002867}
2868
2869// while_stmt: 'while' named_expression ':' block else_block?
2870static stmt_ty
2871while_stmt_rule(Parser *p)
2872{
2873 if (p->error_indicator) {
2874 return NULL;
2875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002876 stmt_ty _res = NULL;
2877 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002878 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2879 p->error_indicator = 1;
2880 return NULL;
2881 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002882 int _start_lineno = p->tokens[_mark]->lineno;
2883 UNUSED(_start_lineno); // Only used by EXTRA macro
2884 int _start_col_offset = p->tokens[_mark]->col_offset;
2885 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002886 { // 'while' named_expression ':' block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002887 Token * _keyword;
2888 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002889 expr_ty a;
2890 asdl_seq* b;
2891 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002892 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002893 (_keyword = _PyPegen_expect_token(p, 512)) // token='while'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002894 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002895 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002896 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002897 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002898 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002899 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002900 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002901 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002902 )
2903 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002904 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2905 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002906 return NULL;
2907 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002908 int _end_lineno = _token->end_lineno;
2909 UNUSED(_end_lineno); // Only used by EXTRA macro
2910 int _end_col_offset = _token->end_col_offset;
2911 UNUSED(_end_col_offset); // Only used by EXTRA macro
2912 _res = _Py_While ( a , b , c , EXTRA );
2913 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002914 p->error_indicator = 1;
2915 return NULL;
2916 }
2917 goto done;
2918 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002919 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002920 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002921 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002922 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002923 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002924}
2925
Guido van Rossumc001c092020-04-30 12:12:19 -07002926// for_stmt:
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002927// | 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
2928// | ASYNC 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002929static stmt_ty
2930for_stmt_rule(Parser *p)
2931{
2932 if (p->error_indicator) {
2933 return NULL;
2934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002935 stmt_ty _res = NULL;
2936 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002937 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2938 p->error_indicator = 1;
2939 return NULL;
2940 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002941 int _start_lineno = p->tokens[_mark]->lineno;
2942 UNUSED(_start_lineno); // Only used by EXTRA macro
2943 int _start_col_offset = p->tokens[_mark]->col_offset;
2944 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002945 { // 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002946 Token * _keyword;
2947 Token * _keyword_1;
2948 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002949 asdl_seq* b;
2950 void *el;
2951 expr_ty ex;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002952 expr_ty t;
Guido van Rossumc001c092020-04-30 12:12:19 -07002953 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002954 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002955 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002956 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002957 (t = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002958 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002959 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002960 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002961 (ex = star_expressions_rule(p)) // star_expressions
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002962 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002963 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002964 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002965 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002966 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002967 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002968 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002969 (el = else_block_rule(p), 1) // else_block?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002970 )
2971 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002972 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2973 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002974 return NULL;
2975 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002976 int _end_lineno = _token->end_lineno;
2977 UNUSED(_end_lineno); // Only used by EXTRA macro
2978 int _end_col_offset = _token->end_col_offset;
2979 UNUSED(_end_col_offset); // Only used by EXTRA macro
2980 _res = _Py_For ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
2981 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002982 p->error_indicator = 1;
2983 return NULL;
2984 }
2985 goto done;
2986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002987 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002988 }
2989 { // ASYNC 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002990 Token * _keyword;
2991 Token * _keyword_1;
2992 Token * _literal;
Pablo Galindob796b3f2020-05-01 12:32:26 +01002993 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002994 asdl_seq* b;
2995 void *el;
2996 expr_ty ex;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002997 expr_ty t;
2998 void *tc;
2999 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003000 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003001 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003002 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003003 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003004 (t = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003005 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003006 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003007 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003008 (ex = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003009 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003010 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003011 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003012 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07003013 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003014 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003015 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003016 (el = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003017 )
3018 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003019 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3020 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003021 return NULL;
3022 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003023 int _end_lineno = _token->end_lineno;
3024 UNUSED(_end_lineno); // Only used by EXTRA macro
3025 int _end_col_offset = _token->end_col_offset;
3026 UNUSED(_end_col_offset); // Only used by EXTRA macro
3027 _res = CHECK_VERSION ( 5 , "Async for loops are" , _Py_AsyncFor ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
3028 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003029 p->error_indicator = 1;
3030 return NULL;
3031 }
3032 goto done;
3033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003034 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003035 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003036 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003037 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003038 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003039}
3040
3041// with_stmt:
Pablo Galindo99db2a12020-05-06 22:54:34 +01003042// | 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003043// | 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindo99db2a12020-05-06 22:54:34 +01003044// | ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003045// | ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003046static stmt_ty
3047with_stmt_rule(Parser *p)
3048{
3049 if (p->error_indicator) {
3050 return NULL;
3051 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003052 stmt_ty _res = NULL;
3053 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003054 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3055 p->error_indicator = 1;
3056 return NULL;
3057 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003058 int _start_lineno = p->tokens[_mark]->lineno;
3059 UNUSED(_start_lineno); // Only used by EXTRA macro
3060 int _start_col_offset = p->tokens[_mark]->col_offset;
3061 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindo99db2a12020-05-06 22:54:34 +01003062 { // 'with' '(' ','.with_item+ ','? ')' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003063 Token * _keyword;
3064 Token * _literal;
3065 Token * _literal_1;
3066 Token * _literal_2;
3067 void *_opt_var;
3068 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003069 asdl_seq * a;
3070 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003071 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003072 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003073 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003074 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003075 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003076 (a = _gather_38_rule(p)) // ','.with_item+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003077 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003078 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindo99db2a12020-05-06 22:54:34 +01003079 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003080 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003081 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003082 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003083 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003084 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003085 )
3086 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003087 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3088 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003089 return NULL;
3090 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003091 int _end_lineno = _token->end_lineno;
3092 UNUSED(_end_lineno); // Only used by EXTRA macro
3093 int _end_col_offset = _token->end_col_offset;
3094 UNUSED(_end_col_offset); // Only used by EXTRA macro
3095 _res = _Py_With ( a , b , NULL , EXTRA );
3096 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003097 p->error_indicator = 1;
3098 return NULL;
3099 }
3100 goto done;
3101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003102 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003103 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003104 { // 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003105 Token * _keyword;
3106 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003107 asdl_seq * a;
3108 asdl_seq* b;
Guido van Rossumc001c092020-04-30 12:12:19 -07003109 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003110 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003111 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003112 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003113 (a = _gather_40_rule(p)) // ','.with_item+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003114 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003115 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003116 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003117 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07003118 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003119 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003120 )
3121 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003122 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3123 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003124 return NULL;
3125 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003126 int _end_lineno = _token->end_lineno;
3127 UNUSED(_end_lineno); // Only used by EXTRA macro
3128 int _end_col_offset = _token->end_col_offset;
3129 UNUSED(_end_col_offset); // Only used by EXTRA macro
3130 _res = _Py_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
3131 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003132 p->error_indicator = 1;
3133 return NULL;
3134 }
3135 goto done;
3136 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003137 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003138 }
Pablo Galindo99db2a12020-05-06 22:54:34 +01003139 { // ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003140 Token * _keyword;
3141 Token * _literal;
3142 Token * _literal_1;
3143 Token * _literal_2;
3144 void *_opt_var;
3145 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003146 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003147 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003148 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003149 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003150 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003151 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003152 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003153 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003154 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003155 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003156 (a = _gather_42_rule(p)) // ','.with_item+
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003157 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003158 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindo99db2a12020-05-06 22:54:34 +01003159 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003160 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003161 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003162 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003163 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003164 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003165 )
3166 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003167 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3168 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003169 return NULL;
3170 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003171 int _end_lineno = _token->end_lineno;
3172 UNUSED(_end_lineno); // Only used by EXTRA macro
3173 int _end_col_offset = _token->end_col_offset;
3174 UNUSED(_end_col_offset); // Only used by EXTRA macro
3175 _res = CHECK_VERSION ( 5 , "Async with statements are" , _Py_AsyncWith ( a , b , NULL , EXTRA ) );
3176 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003177 p->error_indicator = 1;
3178 return NULL;
3179 }
3180 goto done;
3181 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003182 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003183 }
3184 { // ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003185 Token * _keyword;
3186 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003187 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003188 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003189 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003190 void *tc;
3191 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003192 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003193 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003194 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003195 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003196 (a = _gather_44_rule(p)) // ','.with_item+
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003197 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003198 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003199 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003200 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003201 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003202 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003203 )
3204 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003205 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3206 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003207 return NULL;
3208 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003209 int _end_lineno = _token->end_lineno;
3210 UNUSED(_end_lineno); // Only used by EXTRA macro
3211 int _end_col_offset = _token->end_col_offset;
3212 UNUSED(_end_col_offset); // Only used by EXTRA macro
3213 _res = CHECK_VERSION ( 5 , "Async with statements are" , _Py_AsyncWith ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
3214 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003215 p->error_indicator = 1;
3216 return NULL;
3217 }
3218 goto done;
3219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003220 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003221 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003222 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003223 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003224 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003225}
3226
3227// with_item: expression ['as' target]
3228static withitem_ty
3229with_item_rule(Parser *p)
3230{
3231 if (p->error_indicator) {
3232 return NULL;
3233 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003234 withitem_ty _res = NULL;
3235 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003236 { // expression ['as' target]
3237 expr_ty e;
3238 void *o;
3239 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003240 (e = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003241 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003242 (o = _tmp_46_rule(p), 1) // ['as' target]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003243 )
3244 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003245 _res = _Py_withitem ( e , o , p -> arena );
3246 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003247 p->error_indicator = 1;
3248 return NULL;
3249 }
3250 goto done;
3251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003252 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003254 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003255 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003256 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003257}
3258
3259// try_stmt:
3260// | 'try' ':' block finally_block
3261// | 'try' ':' block except_block+ else_block? finally_block?
3262static stmt_ty
3263try_stmt_rule(Parser *p)
3264{
3265 if (p->error_indicator) {
3266 return NULL;
3267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003268 stmt_ty _res = NULL;
3269 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003270 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3271 p->error_indicator = 1;
3272 return NULL;
3273 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003274 int _start_lineno = p->tokens[_mark]->lineno;
3275 UNUSED(_start_lineno); // Only used by EXTRA macro
3276 int _start_col_offset = p->tokens[_mark]->col_offset;
3277 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003278 { // 'try' ':' block finally_block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003279 Token * _keyword;
3280 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003281 asdl_seq* b;
3282 asdl_seq* f;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003283 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003284 (_keyword = _PyPegen_expect_token(p, 511)) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003285 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003286 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003287 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003288 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003289 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003290 (f = finally_block_rule(p)) // finally_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003291 )
3292 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003293 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3294 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003295 return NULL;
3296 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003297 int _end_lineno = _token->end_lineno;
3298 UNUSED(_end_lineno); // Only used by EXTRA macro
3299 int _end_col_offset = _token->end_col_offset;
3300 UNUSED(_end_col_offset); // Only used by EXTRA macro
3301 _res = _Py_Try ( b , NULL , NULL , f , EXTRA );
3302 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003303 p->error_indicator = 1;
3304 return NULL;
3305 }
3306 goto done;
3307 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003308 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003309 }
3310 { // 'try' ':' block except_block+ else_block? finally_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003311 Token * _keyword;
3312 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003313 asdl_seq* b;
3314 void *el;
3315 asdl_seq * ex;
3316 void *f;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003317 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003318 (_keyword = _PyPegen_expect_token(p, 511)) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003319 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003320 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003321 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003322 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003323 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003324 (ex = _loop1_47_rule(p)) // except_block+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003325 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003326 (el = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003327 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003328 (f = finally_block_rule(p), 1) // finally_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003329 )
3330 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003331 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3332 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003333 return NULL;
3334 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003335 int _end_lineno = _token->end_lineno;
3336 UNUSED(_end_lineno); // Only used by EXTRA macro
3337 int _end_col_offset = _token->end_col_offset;
3338 UNUSED(_end_col_offset); // Only used by EXTRA macro
3339 _res = _Py_Try ( b , ex , el , f , EXTRA );
3340 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003341 p->error_indicator = 1;
3342 return NULL;
3343 }
3344 goto done;
3345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003346 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003347 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003348 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003349 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003350 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003351}
3352
3353// except_block: 'except' expression ['as' target] ':' block | 'except' ':' block
3354static excepthandler_ty
3355except_block_rule(Parser *p)
3356{
3357 if (p->error_indicator) {
3358 return NULL;
3359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003360 excepthandler_ty _res = NULL;
3361 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003362 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3363 p->error_indicator = 1;
3364 return NULL;
3365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003366 int _start_lineno = p->tokens[_mark]->lineno;
3367 UNUSED(_start_lineno); // Only used by EXTRA macro
3368 int _start_col_offset = p->tokens[_mark]->col_offset;
3369 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003370 { // 'except' expression ['as' target] ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003371 Token * _keyword;
3372 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003373 asdl_seq* b;
3374 expr_ty e;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003375 void *t;
3376 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003377 (_keyword = _PyPegen_expect_token(p, 520)) // token='except'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003378 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003379 (e = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003380 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003381 (t = _tmp_48_rule(p), 1) // ['as' target]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003382 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003383 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003384 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003385 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003386 )
3387 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003388 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3389 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003390 return NULL;
3391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003392 int _end_lineno = _token->end_lineno;
3393 UNUSED(_end_lineno); // Only used by EXTRA macro
3394 int _end_col_offset = _token->end_col_offset;
3395 UNUSED(_end_col_offset); // Only used by EXTRA macro
3396 _res = _Py_ExceptHandler ( e , ( t ) ? ( ( expr_ty ) t ) -> v . Name . id : NULL , b , EXTRA );
3397 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003398 p->error_indicator = 1;
3399 return NULL;
3400 }
3401 goto done;
3402 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003403 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003404 }
3405 { // 'except' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003406 Token * _keyword;
3407 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003408 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003409 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003410 (_keyword = _PyPegen_expect_token(p, 520)) // token='except'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003411 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003412 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003413 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003414 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003415 )
3416 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003417 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3418 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003419 return NULL;
3420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003421 int _end_lineno = _token->end_lineno;
3422 UNUSED(_end_lineno); // Only used by EXTRA macro
3423 int _end_col_offset = _token->end_col_offset;
3424 UNUSED(_end_col_offset); // Only used by EXTRA macro
3425 _res = _Py_ExceptHandler ( NULL , NULL , b , EXTRA );
3426 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003427 p->error_indicator = 1;
3428 return NULL;
3429 }
3430 goto done;
3431 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003432 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003433 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003434 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003435 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003436 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003437}
3438
3439// finally_block: 'finally' ':' block
3440static asdl_seq*
3441finally_block_rule(Parser *p)
3442{
3443 if (p->error_indicator) {
3444 return NULL;
3445 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003446 asdl_seq* _res = NULL;
3447 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003448 { // 'finally' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003449 Token * _keyword;
3450 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003451 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003452 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003453 (_keyword = _PyPegen_expect_token(p, 521)) // token='finally'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003454 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003455 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003456 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003457 (a = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003458 )
3459 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003460 _res = a;
3461 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003462 p->error_indicator = 1;
3463 return NULL;
3464 }
3465 goto done;
3466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003467 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003469 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003470 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003471 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003472}
3473
3474// return_stmt: 'return' star_expressions?
3475static stmt_ty
3476return_stmt_rule(Parser *p)
3477{
3478 if (p->error_indicator) {
3479 return NULL;
3480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003481 stmt_ty _res = NULL;
3482 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003483 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3484 p->error_indicator = 1;
3485 return NULL;
3486 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003487 int _start_lineno = p->tokens[_mark]->lineno;
3488 UNUSED(_start_lineno); // Only used by EXTRA macro
3489 int _start_col_offset = p->tokens[_mark]->col_offset;
3490 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003491 { // 'return' star_expressions?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003492 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003493 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003494 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003495 (_keyword = _PyPegen_expect_token(p, 500)) // token='return'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003496 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003497 (a = star_expressions_rule(p), 1) // star_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003498 )
3499 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003500 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3501 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003502 return NULL;
3503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003504 int _end_lineno = _token->end_lineno;
3505 UNUSED(_end_lineno); // Only used by EXTRA macro
3506 int _end_col_offset = _token->end_col_offset;
3507 UNUSED(_end_col_offset); // Only used by EXTRA macro
3508 _res = _Py_Return ( a , EXTRA );
3509 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003510 p->error_indicator = 1;
3511 return NULL;
3512 }
3513 goto done;
3514 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003515 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003516 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003517 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003518 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003519 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003520}
3521
3522// raise_stmt: 'raise' expression ['from' expression] | 'raise'
3523static stmt_ty
3524raise_stmt_rule(Parser *p)
3525{
3526 if (p->error_indicator) {
3527 return NULL;
3528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003529 stmt_ty _res = NULL;
3530 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003531 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3532 p->error_indicator = 1;
3533 return NULL;
3534 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003535 int _start_lineno = p->tokens[_mark]->lineno;
3536 UNUSED(_start_lineno); // Only used by EXTRA macro
3537 int _start_col_offset = p->tokens[_mark]->col_offset;
3538 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003539 { // 'raise' expression ['from' expression]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003540 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003541 expr_ty a;
3542 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003543 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003544 (_keyword = _PyPegen_expect_token(p, 501)) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003545 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003546 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003547 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003548 (b = _tmp_49_rule(p), 1) // ['from' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003549 )
3550 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003551 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3552 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003553 return NULL;
3554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003555 int _end_lineno = _token->end_lineno;
3556 UNUSED(_end_lineno); // Only used by EXTRA macro
3557 int _end_col_offset = _token->end_col_offset;
3558 UNUSED(_end_col_offset); // Only used by EXTRA macro
3559 _res = _Py_Raise ( a , b , EXTRA );
3560 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003561 p->error_indicator = 1;
3562 return NULL;
3563 }
3564 goto done;
3565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003566 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003567 }
3568 { // 'raise'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003569 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003570 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003571 (_keyword = _PyPegen_expect_token(p, 501)) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003572 )
3573 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003574 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3575 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003576 return NULL;
3577 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003578 int _end_lineno = _token->end_lineno;
3579 UNUSED(_end_lineno); // Only used by EXTRA macro
3580 int _end_col_offset = _token->end_col_offset;
3581 UNUSED(_end_col_offset); // Only used by EXTRA macro
3582 _res = _Py_Raise ( NULL , NULL , EXTRA );
3583 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003584 p->error_indicator = 1;
3585 return NULL;
3586 }
3587 goto done;
3588 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003589 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003591 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003592 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003593 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003594}
3595
3596// function_def: decorators function_def_raw | function_def_raw
3597static stmt_ty
3598function_def_rule(Parser *p)
3599{
3600 if (p->error_indicator) {
3601 return NULL;
3602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003603 stmt_ty _res = NULL;
3604 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003605 { // decorators function_def_raw
3606 asdl_seq* d;
3607 stmt_ty f;
3608 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003609 (d = decorators_rule(p)) // decorators
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003610 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003611 (f = function_def_raw_rule(p)) // function_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003612 )
3613 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003614 _res = _PyPegen_function_def_decorators ( p , d , f );
3615 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003616 p->error_indicator = 1;
3617 return NULL;
3618 }
3619 goto done;
3620 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003621 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003622 }
3623 { // function_def_raw
3624 stmt_ty function_def_raw_var;
3625 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003626 (function_def_raw_var = function_def_raw_rule(p)) // function_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003627 )
3628 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003629 _res = function_def_raw_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003630 goto done;
3631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003632 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003633 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003634 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003635 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003636 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003637}
3638
Guido van Rossumc001c092020-04-30 12:12:19 -07003639// function_def_raw:
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003640// | 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
3641// | ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003642static stmt_ty
3643function_def_raw_rule(Parser *p)
3644{
3645 if (p->error_indicator) {
3646 return NULL;
3647 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003648 stmt_ty _res = NULL;
3649 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003650 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3651 p->error_indicator = 1;
3652 return NULL;
3653 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003654 int _start_lineno = p->tokens[_mark]->lineno;
3655 UNUSED(_start_lineno); // Only used by EXTRA macro
3656 int _start_col_offset = p->tokens[_mark]->col_offset;
3657 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003658 { // 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003659 Token * _keyword;
3660 Token * _literal;
3661 Token * _literal_1;
3662 Token * _literal_2;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003663 void *a;
3664 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003665 expr_ty n;
3666 void *params;
Guido van Rossumc001c092020-04-30 12:12:19 -07003667 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003668 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003669 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003670 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003671 (n = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003672 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003673 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003674 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003675 (params = params_rule(p), 1) // params?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003676 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003677 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003678 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003679 (a = _tmp_50_rule(p), 1) // ['->' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003680 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003681 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003682 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003683 (tc = func_type_comment_rule(p), 1) // func_type_comment?
Guido van Rossumc001c092020-04-30 12:12:19 -07003684 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003685 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003686 )
3687 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003688 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3689 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003690 return NULL;
3691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003692 int _end_lineno = _token->end_lineno;
3693 UNUSED(_end_lineno); // Only used by EXTRA macro
3694 int _end_col_offset = _token->end_col_offset;
3695 UNUSED(_end_col_offset); // Only used by EXTRA macro
3696 _res = _Py_FunctionDef ( n -> v . Name . id , ( params ) ? params : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
3697 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003698 p->error_indicator = 1;
3699 return NULL;
3700 }
3701 goto done;
3702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003703 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003704 }
3705 { // ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003706 Token * _keyword;
3707 Token * _literal;
3708 Token * _literal_1;
3709 Token * _literal_2;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003710 void *a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003711 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003712 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003713 expr_ty n;
3714 void *params;
3715 void *tc;
3716 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003717 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003718 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003719 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003720 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003721 (n = _PyPegen_name_token(p)) // NAME
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003722 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003723 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003724 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003725 (params = params_rule(p), 1) // params?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003726 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003727 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003728 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003729 (a = _tmp_51_rule(p), 1) // ['->' expression]
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003730 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003731 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003732 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003733 (tc = func_type_comment_rule(p), 1) // func_type_comment?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003734 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003735 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003736 )
3737 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003738 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3739 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003740 return NULL;
3741 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003742 int _end_lineno = _token->end_lineno;
3743 UNUSED(_end_lineno); // Only used by EXTRA macro
3744 int _end_col_offset = _token->end_col_offset;
3745 UNUSED(_end_col_offset); // Only used by EXTRA macro
3746 _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 ) );
3747 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003748 p->error_indicator = 1;
3749 return NULL;
3750 }
3751 goto done;
3752 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003753 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003754 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003755 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003756 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003757 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003758}
3759
Guido van Rossumc001c092020-04-30 12:12:19 -07003760// func_type_comment:
3761// | NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
3762// | invalid_double_type_comments
3763// | TYPE_COMMENT
Pablo Galindod9552412020-05-01 16:32:09 +01003764static Token*
Guido van Rossumc001c092020-04-30 12:12:19 -07003765func_type_comment_rule(Parser *p)
3766{
3767 if (p->error_indicator) {
3768 return NULL;
3769 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003770 Token* _res = NULL;
3771 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003772 { // NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
Pablo Galindob796b3f2020-05-01 12:32:26 +01003773 Token * newline_var;
3774 Token * t;
Guido van Rossumc001c092020-04-30 12:12:19 -07003775 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003776 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -07003777 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003778 (t = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -07003779 &&
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003780 _PyPegen_lookahead(1, _tmp_52_rule, p)
Guido van Rossumc001c092020-04-30 12:12:19 -07003781 )
3782 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003783 _res = t;
3784 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07003785 p->error_indicator = 1;
3786 return NULL;
3787 }
3788 goto done;
3789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003790 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003791 }
3792 { // invalid_double_type_comments
3793 void *invalid_double_type_comments_var;
3794 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003795 (invalid_double_type_comments_var = invalid_double_type_comments_rule(p)) // invalid_double_type_comments
Guido van Rossumc001c092020-04-30 12:12:19 -07003796 )
3797 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003798 _res = invalid_double_type_comments_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07003799 goto done;
3800 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003801 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003802 }
3803 { // TYPE_COMMENT
Pablo Galindob796b3f2020-05-01 12:32:26 +01003804 Token * type_comment_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07003805 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003806 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -07003807 )
3808 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003809 _res = type_comment_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07003810 goto done;
3811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003812 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003813 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003814 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07003815 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003816 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07003817}
3818
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003819// params: invalid_parameters | parameters
3820static arguments_ty
3821params_rule(Parser *p)
3822{
3823 if (p->error_indicator) {
3824 return NULL;
3825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003826 arguments_ty _res = NULL;
3827 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003828 { // invalid_parameters
3829 void *invalid_parameters_var;
3830 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003831 (invalid_parameters_var = invalid_parameters_rule(p)) // invalid_parameters
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003832 )
3833 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003834 _res = invalid_parameters_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003835 goto done;
3836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003837 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003838 }
3839 { // parameters
3840 arguments_ty parameters_var;
3841 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003842 (parameters_var = parameters_rule(p)) // parameters
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003843 )
3844 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003845 _res = parameters_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003846 goto done;
3847 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003848 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003849 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003850 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003851 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003852 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003853}
3854
3855// parameters:
Guido van Rossumc001c092020-04-30 12:12:19 -07003856// | slash_no_default param_no_default* param_with_default* star_etc?
3857// | slash_with_default param_with_default* star_etc?
3858// | param_no_default+ param_with_default* star_etc?
3859// | param_with_default+ star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003860// | star_etc
3861static arguments_ty
3862parameters_rule(Parser *p)
3863{
3864 if (p->error_indicator) {
3865 return NULL;
3866 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003867 arguments_ty _res = NULL;
3868 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003869 { // slash_no_default param_no_default* param_with_default* star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003870 asdl_seq* a;
Guido van Rossumc001c092020-04-30 12:12:19 -07003871 asdl_seq * b;
3872 asdl_seq * c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003873 void *d;
3874 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003875 (a = slash_no_default_rule(p)) // slash_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003876 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003877 (b = _loop0_53_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003878 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003879 (c = _loop0_54_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003880 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003881 (d = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003882 )
3883 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003884 _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
3885 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003886 p->error_indicator = 1;
3887 return NULL;
3888 }
3889 goto done;
3890 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003891 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003892 }
Guido van Rossumc001c092020-04-30 12:12:19 -07003893 { // slash_with_default param_with_default* star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003894 SlashWithDefault* a;
Guido van Rossumc001c092020-04-30 12:12:19 -07003895 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003896 void *c;
3897 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003898 (a = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003899 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003900 (b = _loop0_55_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003901 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003902 (c = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003903 )
3904 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003905 _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
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 }
Guido van Rossumc001c092020-04-30 12:12:19 -07003914 { // param_no_default+ param_with_default* star_etc?
3915 asdl_seq * a;
3916 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003917 void *c;
3918 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003919 (a = _loop1_56_rule(p)) // param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003920 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003921 (b = _loop0_57_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003922 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003923 (c = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003924 )
3925 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003926 _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
3927 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003928 p->error_indicator = 1;
3929 return NULL;
3930 }
3931 goto done;
3932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003933 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003934 }
Guido van Rossumc001c092020-04-30 12:12:19 -07003935 { // param_with_default+ star_etc?
3936 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003937 void *b;
3938 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003939 (a = _loop1_58_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003940 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003941 (b = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003942 )
3943 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003944 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
3945 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003946 p->error_indicator = 1;
3947 return NULL;
3948 }
3949 goto done;
3950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003951 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003952 }
3953 { // star_etc
3954 StarEtc* a;
3955 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003956 (a = star_etc_rule(p)) // star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003957 )
3958 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003959 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
3960 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003961 p->error_indicator = 1;
3962 return NULL;
3963 }
3964 goto done;
3965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003966 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003967 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003968 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003969 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003970 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003971}
3972
Guido van Rossumc001c092020-04-30 12:12:19 -07003973// slash_no_default: param_no_default+ '/' ',' | param_no_default+ '/' &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003974static asdl_seq*
Guido van Rossumc001c092020-04-30 12:12:19 -07003975slash_no_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003976{
3977 if (p->error_indicator) {
3978 return NULL;
3979 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003980 asdl_seq* _res = NULL;
3981 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003982 { // param_no_default+ '/' ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003983 Token * _literal;
3984 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07003985 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003986 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003987 (a = _loop1_59_rule(p)) // param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003988 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003989 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003990 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003991 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07003992 )
3993 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003994 _res = a;
3995 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07003996 p->error_indicator = 1;
3997 return NULL;
3998 }
3999 goto done;
4000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004001 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004002 }
4003 { // param_no_default+ '/' &')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004004 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004005 asdl_seq * a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004006 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004007 (a = _loop1_60_rule(p)) // param_no_default+
Guido van Rossumc001c092020-04-30 12:12:19 -07004008 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004009 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossumc001c092020-04-30 12:12:19 -07004010 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004011 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004012 )
4013 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004014 _res = a;
4015 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004016 p->error_indicator = 1;
4017 return NULL;
4018 }
4019 goto done;
4020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004021 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004022 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004023 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004024 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004025 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004026}
4027
Guido van Rossumc001c092020-04-30 12:12:19 -07004028// slash_with_default:
4029// | param_no_default* param_with_default+ '/' ','
4030// | param_no_default* param_with_default+ '/' &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004031static SlashWithDefault*
4032slash_with_default_rule(Parser *p)
4033{
4034 if (p->error_indicator) {
4035 return NULL;
4036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004037 SlashWithDefault* _res = NULL;
4038 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004039 { // param_no_default* param_with_default+ '/' ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004040 Token * _literal;
4041 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07004042 asdl_seq * a;
4043 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004044 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004045 (a = _loop0_61_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004046 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004047 (b = _loop1_62_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004048 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004049 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004050 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004051 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004052 )
4053 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004054 _res = _PyPegen_slash_with_default ( p , a , b );
4055 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004056 p->error_indicator = 1;
4057 return NULL;
4058 }
4059 goto done;
4060 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004061 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004062 }
4063 { // param_no_default* param_with_default+ '/' &')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004064 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004065 asdl_seq * a;
4066 asdl_seq * b;
Guido van Rossumc001c092020-04-30 12:12:19 -07004067 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004068 (a = _loop0_63_rule(p)) // param_no_default*
Guido van Rossumc001c092020-04-30 12:12:19 -07004069 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004070 (b = _loop1_64_rule(p)) // param_with_default+
Guido van Rossumc001c092020-04-30 12:12:19 -07004071 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004072 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossumc001c092020-04-30 12:12:19 -07004073 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004074 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004075 )
4076 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004077 _res = _PyPegen_slash_with_default ( p , a , b );
4078 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004079 p->error_indicator = 1;
4080 return NULL;
4081 }
4082 goto done;
4083 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004084 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004085 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004086 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004087 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004088 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004089}
4090
4091// star_etc:
Guido van Rossumc001c092020-04-30 12:12:19 -07004092// | '*' param_no_default param_maybe_default* kwds?
4093// | '*' ',' param_maybe_default+ kwds?
4094// | kwds
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004095// | invalid_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004096static StarEtc*
4097star_etc_rule(Parser *p)
4098{
4099 if (p->error_indicator) {
4100 return NULL;
4101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004102 StarEtc* _res = NULL;
4103 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004104 { // '*' param_no_default param_maybe_default* kwds?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004105 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004106 arg_ty a;
4107 asdl_seq * b;
4108 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004109 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004110 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004111 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004112 (a = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004113 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004114 (b = _loop0_65_rule(p)) // param_maybe_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004115 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004116 (c = kwds_rule(p), 1) // kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004117 )
4118 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004119 _res = _PyPegen_star_etc ( p , a , b , c );
4120 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004121 p->error_indicator = 1;
4122 return NULL;
4123 }
4124 goto done;
4125 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004126 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004127 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004128 { // '*' ',' param_maybe_default+ kwds?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004129 Token * _literal;
4130 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004131 asdl_seq * b;
4132 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004133 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004134 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004135 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004136 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004137 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004138 (b = _loop1_66_rule(p)) // param_maybe_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004139 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004140 (c = kwds_rule(p), 1) // kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004141 )
4142 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004143 _res = _PyPegen_star_etc ( p , NULL , b , c );
4144 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004145 p->error_indicator = 1;
4146 return NULL;
4147 }
4148 goto done;
4149 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004150 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004151 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004152 { // kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004153 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004154 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004155 (a = kwds_rule(p)) // kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004156 )
4157 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004158 _res = _PyPegen_star_etc ( p , NULL , NULL , a );
4159 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004160 p->error_indicator = 1;
4161 return NULL;
4162 }
4163 goto done;
4164 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004165 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004166 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004167 { // invalid_star_etc
4168 void *invalid_star_etc_var;
4169 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004170 (invalid_star_etc_var = invalid_star_etc_rule(p)) // invalid_star_etc
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004171 )
4172 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004173 _res = invalid_star_etc_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004174 goto done;
4175 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004176 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004178 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004179 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004180 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004181}
4182
Guido van Rossumc001c092020-04-30 12:12:19 -07004183// kwds: '**' param_no_default
4184static arg_ty
4185kwds_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004186{
4187 if (p->error_indicator) {
4188 return NULL;
4189 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004190 arg_ty _res = NULL;
4191 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004192 { // '**' param_no_default
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004193 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004194 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004195 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004196 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -07004197 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004198 (a = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -07004199 )
4200 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004201 _res = a;
4202 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004203 p->error_indicator = 1;
4204 return NULL;
4205 }
4206 goto done;
4207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004208 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004210 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07004211 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004212 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07004213}
4214
4215// param_no_default: param ',' TYPE_COMMENT? | param TYPE_COMMENT? &')'
4216static arg_ty
4217param_no_default_rule(Parser *p)
4218{
4219 if (p->error_indicator) {
4220 return NULL;
4221 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004222 arg_ty _res = NULL;
4223 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004224 { // param ',' TYPE_COMMENT?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004225 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004226 arg_ty a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004227 void *tc;
4228 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004229 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004230 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004231 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004232 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004233 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004234 )
4235 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004236 _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
4237 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004238 p->error_indicator = 1;
4239 return NULL;
4240 }
4241 goto done;
4242 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004243 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004244 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004245 { // param TYPE_COMMENT? &')'
4246 arg_ty a;
4247 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004248 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004249 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004250 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004251 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004252 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004253 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004254 )
4255 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004256 _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
4257 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004258 p->error_indicator = 1;
4259 return NULL;
4260 }
4261 goto done;
4262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004263 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004264 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004265 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004266 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004267 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004268}
4269
Guido van Rossumc001c092020-04-30 12:12:19 -07004270// param_with_default: param default ',' TYPE_COMMENT? | param default TYPE_COMMENT? &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004271static NameDefaultPair*
Guido van Rossumc001c092020-04-30 12:12:19 -07004272param_with_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004273{
4274 if (p->error_indicator) {
4275 return NULL;
4276 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004277 NameDefaultPair* _res = NULL;
4278 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004279 { // param default ',' TYPE_COMMENT?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004280 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004281 arg_ty a;
4282 expr_ty c;
Guido van Rossumc001c092020-04-30 12:12:19 -07004283 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004284 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004285 (a = param_rule(p)) // param
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004286 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004287 (c = default_rule(p)) // default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004288 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004289 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004290 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004291 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004292 )
4293 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004294 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4295 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004296 p->error_indicator = 1;
4297 return NULL;
4298 }
4299 goto done;
4300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004301 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004302 }
4303 { // param default TYPE_COMMENT? &')'
4304 arg_ty a;
4305 expr_ty c;
4306 void *tc;
4307 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004308 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004309 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004310 (c = default_rule(p)) // default
Guido van Rossumc001c092020-04-30 12:12:19 -07004311 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004312 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004313 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004314 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -07004315 )
4316 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004317 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4318 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004319 p->error_indicator = 1;
4320 return NULL;
4321 }
4322 goto done;
4323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004324 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004325 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004326 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004327 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004328 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004329}
4330
Guido van Rossumc001c092020-04-30 12:12:19 -07004331// param_maybe_default:
4332// | param default? ',' TYPE_COMMENT?
4333// | param default? TYPE_COMMENT? &')'
4334static NameDefaultPair*
4335param_maybe_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004336{
4337 if (p->error_indicator) {
4338 return NULL;
4339 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004340 NameDefaultPair* _res = NULL;
4341 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004342 { // param default? ',' TYPE_COMMENT?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004343 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004344 arg_ty a;
4345 void *c;
Guido van Rossumc001c092020-04-30 12:12:19 -07004346 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004347 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004348 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004349 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004350 (c = default_rule(p), 1) // default?
Guido van Rossumc001c092020-04-30 12:12:19 -07004351 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004352 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004353 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004354 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004355 )
4356 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004357 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4358 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004359 p->error_indicator = 1;
4360 return NULL;
4361 }
4362 goto done;
4363 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004364 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004365 }
4366 { // param default? TYPE_COMMENT? &')'
4367 arg_ty a;
4368 void *c;
4369 void *tc;
4370 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004371 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004372 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004373 (c = default_rule(p), 1) // default?
Guido van Rossumc001c092020-04-30 12:12:19 -07004374 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004375 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004376 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004377 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -07004378 )
4379 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004380 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4381 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004382 p->error_indicator = 1;
4383 return NULL;
4384 }
4385 goto done;
4386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004387 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004388 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004389 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004390 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004391 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004392}
4393
Guido van Rossumc001c092020-04-30 12:12:19 -07004394// param: NAME annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004395static arg_ty
Guido van Rossumc001c092020-04-30 12:12:19 -07004396param_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004397{
4398 if (p->error_indicator) {
4399 return NULL;
4400 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004401 arg_ty _res = NULL;
4402 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004403 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4404 p->error_indicator = 1;
4405 return NULL;
4406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004407 int _start_lineno = p->tokens[_mark]->lineno;
4408 UNUSED(_start_lineno); // Only used by EXTRA macro
4409 int _start_col_offset = p->tokens[_mark]->col_offset;
4410 UNUSED(_start_col_offset); // Only used by EXTRA macro
Guido van Rossumc001c092020-04-30 12:12:19 -07004411 { // NAME annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004412 expr_ty a;
4413 void *b;
4414 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004415 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004416 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004417 (b = annotation_rule(p), 1) // annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004418 )
4419 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004420 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4421 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004422 return NULL;
4423 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004424 int _end_lineno = _token->end_lineno;
4425 UNUSED(_end_lineno); // Only used by EXTRA macro
4426 int _end_col_offset = _token->end_col_offset;
4427 UNUSED(_end_col_offset); // Only used by EXTRA macro
4428 _res = _Py_arg ( a -> v . Name . id , b , NULL , EXTRA );
4429 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004430 p->error_indicator = 1;
4431 return NULL;
4432 }
4433 goto done;
4434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004435 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004436 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004437 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004438 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004439 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004440}
4441
Guido van Rossumc001c092020-04-30 12:12:19 -07004442// annotation: ':' expression
4443static expr_ty
4444annotation_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004445{
4446 if (p->error_indicator) {
4447 return NULL;
4448 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004449 expr_ty _res = NULL;
4450 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004451 { // ':' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004452 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004453 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004454 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004455 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004456 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004457 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004458 )
4459 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004460 _res = a;
4461 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004462 p->error_indicator = 1;
4463 return NULL;
4464 }
4465 goto done;
4466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004467 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004469 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004470 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004471 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004472}
4473
Guido van Rossumc001c092020-04-30 12:12:19 -07004474// default: '=' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004475static expr_ty
Guido van Rossumc001c092020-04-30 12:12:19 -07004476default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004477{
4478 if (p->error_indicator) {
4479 return NULL;
4480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004481 expr_ty _res = NULL;
4482 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004483 { // '=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004484 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004485 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004486 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004487 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Guido van Rossumc001c092020-04-30 12:12:19 -07004488 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004489 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004490 )
4491 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004492 _res = a;
4493 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004494 p->error_indicator = 1;
4495 return NULL;
4496 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004497 goto done;
4498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004499 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004501 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004502 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004503 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004504}
4505
4506// decorators: (('@' named_expression NEWLINE))+
4507static asdl_seq*
4508decorators_rule(Parser *p)
4509{
4510 if (p->error_indicator) {
4511 return NULL;
4512 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004513 asdl_seq* _res = NULL;
4514 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004515 { // (('@' named_expression NEWLINE))+
4516 asdl_seq * a;
4517 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004518 (a = _loop1_67_rule(p)) // (('@' named_expression NEWLINE))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004519 )
4520 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004521 _res = a;
4522 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004523 p->error_indicator = 1;
4524 return NULL;
4525 }
4526 goto done;
4527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004528 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004529 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004530 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004531 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004532 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004533}
4534
4535// class_def: decorators class_def_raw | class_def_raw
4536static stmt_ty
4537class_def_rule(Parser *p)
4538{
4539 if (p->error_indicator) {
4540 return NULL;
4541 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004542 stmt_ty _res = NULL;
4543 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004544 { // decorators class_def_raw
4545 asdl_seq* a;
4546 stmt_ty b;
4547 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004548 (a = decorators_rule(p)) // decorators
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004549 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004550 (b = class_def_raw_rule(p)) // class_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004551 )
4552 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004553 _res = _PyPegen_class_def_decorators ( p , a , b );
4554 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004555 p->error_indicator = 1;
4556 return NULL;
4557 }
4558 goto done;
4559 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004560 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004561 }
4562 { // class_def_raw
4563 stmt_ty class_def_raw_var;
4564 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004565 (class_def_raw_var = class_def_raw_rule(p)) // class_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004566 )
4567 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004568 _res = class_def_raw_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004569 goto done;
4570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004571 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004572 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004573 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004574 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004575 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004576}
4577
4578// class_def_raw: 'class' NAME ['(' arguments? ')'] ':' block
4579static stmt_ty
4580class_def_raw_rule(Parser *p)
4581{
4582 if (p->error_indicator) {
4583 return NULL;
4584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004585 stmt_ty _res = NULL;
4586 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004587 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4588 p->error_indicator = 1;
4589 return NULL;
4590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004591 int _start_lineno = p->tokens[_mark]->lineno;
4592 UNUSED(_start_lineno); // Only used by EXTRA macro
4593 int _start_col_offset = p->tokens[_mark]->col_offset;
4594 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004595 { // 'class' NAME ['(' arguments? ')'] ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004596 Token * _keyword;
4597 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004598 expr_ty a;
4599 void *b;
4600 asdl_seq* c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004601 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004602 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004603 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004604 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004605 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004606 (b = _tmp_68_rule(p), 1) // ['(' arguments? ')']
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004607 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004608 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004609 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004610 (c = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004611 )
4612 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004613 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4614 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004615 return NULL;
4616 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004617 int _end_lineno = _token->end_lineno;
4618 UNUSED(_end_lineno); // Only used by EXTRA macro
4619 int _end_col_offset = _token->end_col_offset;
4620 UNUSED(_end_col_offset); // Only used by EXTRA macro
4621 _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 );
4622 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004623 p->error_indicator = 1;
4624 return NULL;
4625 }
4626 goto done;
4627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004628 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004629 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004630 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004631 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004632 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004633}
4634
4635// block: NEWLINE INDENT statements DEDENT | simple_stmt | invalid_block
4636static asdl_seq*
4637block_rule(Parser *p)
4638{
4639 if (p->error_indicator) {
4640 return NULL;
4641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004642 asdl_seq* _res = NULL;
4643 if (_PyPegen_is_memoized(p, block_type, &_res))
4644 return _res;
4645 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004646 { // NEWLINE INDENT statements DEDENT
4647 asdl_seq* a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01004648 Token * dedent_var;
4649 Token * indent_var;
4650 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004651 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004652 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004653 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004654 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004655 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004656 (a = statements_rule(p)) // statements
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004657 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004658 (dedent_var = _PyPegen_expect_token(p, DEDENT)) // token='DEDENT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004659 )
4660 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004661 _res = a;
4662 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004663 p->error_indicator = 1;
4664 return NULL;
4665 }
4666 goto done;
4667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004668 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004669 }
4670 { // simple_stmt
4671 asdl_seq* simple_stmt_var;
4672 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004673 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004674 )
4675 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004676 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004677 goto done;
4678 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004679 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004680 }
4681 { // invalid_block
4682 void *invalid_block_var;
4683 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004684 (invalid_block_var = invalid_block_rule(p)) // invalid_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004685 )
4686 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004687 _res = invalid_block_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004688 goto done;
4689 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004690 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004692 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004693 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004694 _PyPegen_insert_memo(p, _mark, block_type, _res);
4695 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004696}
4697
4698// expressions_list: ','.star_expression+ ','?
4699static asdl_seq*
4700expressions_list_rule(Parser *p)
4701{
4702 if (p->error_indicator) {
4703 return NULL;
4704 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004705 asdl_seq* _res = NULL;
4706 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004707 { // ','.star_expression+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004708 void *_opt_var;
4709 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004710 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004711 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004712 (a = _gather_69_rule(p)) // ','.star_expression+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004713 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004714 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004715 )
4716 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004717 _res = a;
4718 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004719 p->error_indicator = 1;
4720 return NULL;
4721 }
4722 goto done;
4723 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004724 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004725 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004726 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004727 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004728 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004729}
4730
4731// star_expressions:
4732// | star_expression ((',' star_expression))+ ','?
4733// | star_expression ','
4734// | star_expression
4735static expr_ty
4736star_expressions_rule(Parser *p)
4737{
4738 if (p->error_indicator) {
4739 return NULL;
4740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004741 expr_ty _res = NULL;
4742 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004743 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4744 p->error_indicator = 1;
4745 return NULL;
4746 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004747 int _start_lineno = p->tokens[_mark]->lineno;
4748 UNUSED(_start_lineno); // Only used by EXTRA macro
4749 int _start_col_offset = p->tokens[_mark]->col_offset;
4750 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004751 { // star_expression ((',' star_expression))+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004752 void *_opt_var;
4753 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004754 expr_ty a;
4755 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004756 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004757 (a = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004758 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004759 (b = _loop1_71_rule(p)) // ((',' star_expression))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004760 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004761 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004762 )
4763 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004764 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4765 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004766 return NULL;
4767 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004768 int _end_lineno = _token->end_lineno;
4769 UNUSED(_end_lineno); // Only used by EXTRA macro
4770 int _end_col_offset = _token->end_col_offset;
4771 UNUSED(_end_col_offset); // Only used by EXTRA macro
4772 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
4773 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004774 p->error_indicator = 1;
4775 return NULL;
4776 }
4777 goto done;
4778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004779 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004780 }
4781 { // star_expression ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004782 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004783 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004784 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004785 (a = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004786 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004787 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004788 )
4789 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004790 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4791 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004792 return NULL;
4793 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004794 int _end_lineno = _token->end_lineno;
4795 UNUSED(_end_lineno); // Only used by EXTRA macro
4796 int _end_col_offset = _token->end_col_offset;
4797 UNUSED(_end_col_offset); // Only used by EXTRA macro
4798 _res = _Py_Tuple ( CHECK ( _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
4799 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004800 p->error_indicator = 1;
4801 return NULL;
4802 }
4803 goto done;
4804 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004805 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004806 }
4807 { // star_expression
4808 expr_ty star_expression_var;
4809 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004810 (star_expression_var = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004811 )
4812 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004813 _res = star_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004814 goto done;
4815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004816 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004818 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004819 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004820 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004821}
4822
4823// star_expression: '*' bitwise_or | expression
4824static expr_ty
4825star_expression_rule(Parser *p)
4826{
4827 if (p->error_indicator) {
4828 return NULL;
4829 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004830 expr_ty _res = NULL;
4831 if (_PyPegen_is_memoized(p, star_expression_type, &_res))
4832 return _res;
4833 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004834 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4835 p->error_indicator = 1;
4836 return NULL;
4837 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004838 int _start_lineno = p->tokens[_mark]->lineno;
4839 UNUSED(_start_lineno); // Only used by EXTRA macro
4840 int _start_col_offset = p->tokens[_mark]->col_offset;
4841 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004842 { // '*' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004843 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004844 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004845 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004846 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004847 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004848 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004849 )
4850 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004851 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4852 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004853 return NULL;
4854 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004855 int _end_lineno = _token->end_lineno;
4856 UNUSED(_end_lineno); // Only used by EXTRA macro
4857 int _end_col_offset = _token->end_col_offset;
4858 UNUSED(_end_col_offset); // Only used by EXTRA macro
4859 _res = _Py_Starred ( a , Load , EXTRA );
4860 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004861 p->error_indicator = 1;
4862 return NULL;
4863 }
4864 goto done;
4865 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004866 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004867 }
4868 { // expression
4869 expr_ty expression_var;
4870 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004871 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004872 )
4873 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004874 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004875 goto done;
4876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004877 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004879 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004880 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004881 _PyPegen_insert_memo(p, _mark, star_expression_type, _res);
4882 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004883}
4884
4885// star_named_expressions: ','.star_named_expression+ ','?
4886static asdl_seq*
4887star_named_expressions_rule(Parser *p)
4888{
4889 if (p->error_indicator) {
4890 return NULL;
4891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004892 asdl_seq* _res = NULL;
4893 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004894 { // ','.star_named_expression+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004895 void *_opt_var;
4896 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004897 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004898 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004899 (a = _gather_72_rule(p)) // ','.star_named_expression+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004900 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004901 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004902 )
4903 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004904 _res = a;
4905 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004906 p->error_indicator = 1;
4907 return NULL;
4908 }
4909 goto done;
4910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004911 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004913 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004914 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004915 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004916}
4917
4918// star_named_expression: '*' bitwise_or | named_expression
4919static expr_ty
4920star_named_expression_rule(Parser *p)
4921{
4922 if (p->error_indicator) {
4923 return NULL;
4924 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004925 expr_ty _res = NULL;
4926 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004927 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4928 p->error_indicator = 1;
4929 return NULL;
4930 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004931 int _start_lineno = p->tokens[_mark]->lineno;
4932 UNUSED(_start_lineno); // Only used by EXTRA macro
4933 int _start_col_offset = p->tokens[_mark]->col_offset;
4934 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004935 { // '*' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004936 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004937 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004938 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004939 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004940 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004941 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004942 )
4943 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004944 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4945 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004946 return NULL;
4947 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004948 int _end_lineno = _token->end_lineno;
4949 UNUSED(_end_lineno); // Only used by EXTRA macro
4950 int _end_col_offset = _token->end_col_offset;
4951 UNUSED(_end_col_offset); // Only used by EXTRA macro
4952 _res = _Py_Starred ( a , Load , EXTRA );
4953 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004954 p->error_indicator = 1;
4955 return NULL;
4956 }
4957 goto done;
4958 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004959 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004960 }
4961 { // named_expression
4962 expr_ty named_expression_var;
4963 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004964 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004965 )
4966 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004967 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004968 goto done;
4969 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004970 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004972 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004973 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004974 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004975}
4976
4977// named_expression: NAME ':=' expression | expression !':=' | invalid_named_expression
4978static expr_ty
4979named_expression_rule(Parser *p)
4980{
4981 if (p->error_indicator) {
4982 return NULL;
4983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004984 expr_ty _res = NULL;
4985 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004986 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4987 p->error_indicator = 1;
4988 return NULL;
4989 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004990 int _start_lineno = p->tokens[_mark]->lineno;
4991 UNUSED(_start_lineno); // Only used by EXTRA macro
4992 int _start_col_offset = p->tokens[_mark]->col_offset;
4993 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004994 { // NAME ':=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004995 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004996 expr_ty a;
4997 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004998 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004999 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005000 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005001 (_literal = _PyPegen_expect_token(p, 53)) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005002 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005003 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005004 )
5005 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005006 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5007 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005008 return NULL;
5009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005010 int _end_lineno = _token->end_lineno;
5011 UNUSED(_end_lineno); // Only used by EXTRA macro
5012 int _end_col_offset = _token->end_col_offset;
5013 UNUSED(_end_col_offset); // Only used by EXTRA macro
5014 _res = _Py_NamedExpr ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , b , EXTRA );
5015 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005016 p->error_indicator = 1;
5017 return NULL;
5018 }
5019 goto done;
5020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005021 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005022 }
5023 { // expression !':='
5024 expr_ty expression_var;
5025 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005026 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005027 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005028 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005029 )
5030 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005031 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005032 goto done;
5033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005034 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005035 }
5036 { // invalid_named_expression
5037 void *invalid_named_expression_var;
5038 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005039 (invalid_named_expression_var = invalid_named_expression_rule(p)) // invalid_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005040 )
5041 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005042 _res = invalid_named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005043 goto done;
5044 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005045 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005046 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005047 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005048 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005049 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005050}
5051
5052// annotated_rhs: yield_expr | star_expressions
5053static expr_ty
5054annotated_rhs_rule(Parser *p)
5055{
5056 if (p->error_indicator) {
5057 return NULL;
5058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005059 expr_ty _res = NULL;
5060 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005061 { // yield_expr
5062 expr_ty yield_expr_var;
5063 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005064 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005065 )
5066 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005067 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005068 goto done;
5069 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005070 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005071 }
5072 { // star_expressions
5073 expr_ty star_expressions_var;
5074 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005075 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005076 )
5077 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005078 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005079 goto done;
5080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005081 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005083 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005084 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005085 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005086}
5087
5088// expressions: expression ((',' expression))+ ','? | expression ',' | expression
5089static expr_ty
5090expressions_rule(Parser *p)
5091{
5092 if (p->error_indicator) {
5093 return NULL;
5094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005095 expr_ty _res = NULL;
5096 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005097 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5098 p->error_indicator = 1;
5099 return NULL;
5100 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005101 int _start_lineno = p->tokens[_mark]->lineno;
5102 UNUSED(_start_lineno); // Only used by EXTRA macro
5103 int _start_col_offset = p->tokens[_mark]->col_offset;
5104 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005105 { // expression ((',' expression))+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005106 void *_opt_var;
5107 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005108 expr_ty a;
5109 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005110 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005111 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005112 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005113 (b = _loop1_74_rule(p)) // ((',' expression))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005114 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005115 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005116 )
5117 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005118 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5119 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005120 return NULL;
5121 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005122 int _end_lineno = _token->end_lineno;
5123 UNUSED(_end_lineno); // Only used by EXTRA macro
5124 int _end_col_offset = _token->end_col_offset;
5125 UNUSED(_end_col_offset); // Only used by EXTRA macro
5126 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
5127 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005128 p->error_indicator = 1;
5129 return NULL;
5130 }
5131 goto done;
5132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005133 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005134 }
5135 { // expression ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005136 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005137 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005138 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005139 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005140 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005141 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005142 )
5143 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005144 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5145 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005146 return NULL;
5147 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005148 int _end_lineno = _token->end_lineno;
5149 UNUSED(_end_lineno); // Only used by EXTRA macro
5150 int _end_col_offset = _token->end_col_offset;
5151 UNUSED(_end_col_offset); // Only used by EXTRA macro
5152 _res = _Py_Tuple ( CHECK ( _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
5153 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005154 p->error_indicator = 1;
5155 return NULL;
5156 }
5157 goto done;
5158 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005159 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005160 }
5161 { // expression
5162 expr_ty expression_var;
5163 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005164 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005165 )
5166 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005167 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005168 goto done;
5169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005170 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005172 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005173 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005174 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005175}
5176
5177// expression: disjunction 'if' disjunction 'else' expression | disjunction | lambdef
5178static expr_ty
5179expression_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 if (_PyPegen_is_memoized(p, expression_type, &_res))
5186 return _res;
5187 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005188 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5189 p->error_indicator = 1;
5190 return NULL;
5191 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005192 int _start_lineno = p->tokens[_mark]->lineno;
5193 UNUSED(_start_lineno); // Only used by EXTRA macro
5194 int _start_col_offset = p->tokens[_mark]->col_offset;
5195 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005196 { // disjunction 'if' disjunction 'else' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005197 Token * _keyword;
5198 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005199 expr_ty a;
5200 expr_ty b;
5201 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005202 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005203 (a = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005204 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005205 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005206 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005207 (b = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005208 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005209 (_keyword_1 = _PyPegen_expect_token(p, 516)) // token='else'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005210 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005211 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005212 )
5213 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005214 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5215 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005216 return NULL;
5217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005218 int _end_lineno = _token->end_lineno;
5219 UNUSED(_end_lineno); // Only used by EXTRA macro
5220 int _end_col_offset = _token->end_col_offset;
5221 UNUSED(_end_col_offset); // Only used by EXTRA macro
5222 _res = _Py_IfExp ( b , a , c , EXTRA );
5223 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005224 p->error_indicator = 1;
5225 return NULL;
5226 }
5227 goto done;
5228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005229 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005230 }
5231 { // disjunction
5232 expr_ty disjunction_var;
5233 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005234 (disjunction_var = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005235 )
5236 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005237 _res = disjunction_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005238 goto done;
5239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005240 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005241 }
5242 { // lambdef
5243 expr_ty lambdef_var;
5244 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005245 (lambdef_var = lambdef_rule(p)) // lambdef
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005246 )
5247 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005248 _res = lambdef_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005249 goto done;
5250 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005251 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005253 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005254 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005255 _PyPegen_insert_memo(p, _mark, expression_type, _res);
5256 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005257}
5258
5259// lambdef: 'lambda' lambda_parameters? ':' expression
5260static expr_ty
5261lambdef_rule(Parser *p)
5262{
5263 if (p->error_indicator) {
5264 return NULL;
5265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005266 expr_ty _res = NULL;
5267 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005268 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5269 p->error_indicator = 1;
5270 return NULL;
5271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005272 int _start_lineno = p->tokens[_mark]->lineno;
5273 UNUSED(_start_lineno); // Only used by EXTRA macro
5274 int _start_col_offset = p->tokens[_mark]->col_offset;
5275 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005276 { // 'lambda' lambda_parameters? ':' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005277 Token * _keyword;
5278 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005279 void *a;
5280 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005281 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005282 (_keyword = _PyPegen_expect_token(p, 524)) // token='lambda'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005283 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005284 (a = lambda_parameters_rule(p), 1) // lambda_parameters?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005285 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005286 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005287 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005288 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005289 )
5290 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005291 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5292 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005293 return NULL;
5294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005295 int _end_lineno = _token->end_lineno;
5296 UNUSED(_end_lineno); // Only used by EXTRA macro
5297 int _end_col_offset = _token->end_col_offset;
5298 UNUSED(_end_col_offset); // Only used by EXTRA macro
5299 _res = _Py_Lambda ( ( a ) ? a : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , EXTRA );
5300 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005301 p->error_indicator = 1;
5302 return NULL;
5303 }
5304 goto done;
5305 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005306 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005307 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005308 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005309 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005310 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005311}
5312
5313// lambda_parameters:
Guido van Rossum3941d972020-05-01 09:42:03 -07005314// | lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
5315// | lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
5316// | lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
5317// | lambda_param_with_default+ lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005318// | lambda_star_etc
5319static arguments_ty
5320lambda_parameters_rule(Parser *p)
5321{
5322 if (p->error_indicator) {
5323 return NULL;
5324 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005325 arguments_ty _res = NULL;
5326 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005327 { // lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005328 asdl_seq* a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005329 asdl_seq * b;
5330 asdl_seq * c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005331 void *d;
5332 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005333 (a = lambda_slash_no_default_rule(p)) // lambda_slash_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005334 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005335 (b = _loop0_75_rule(p)) // lambda_param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005336 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005337 (c = _loop0_76_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005338 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005339 (d = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005340 )
5341 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005342 _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
5343 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005344 p->error_indicator = 1;
5345 return NULL;
5346 }
5347 goto done;
5348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005349 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005350 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005351 { // lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005352 SlashWithDefault* a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005353 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005354 void *c;
5355 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005356 (a = lambda_slash_with_default_rule(p)) // lambda_slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005357 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005358 (b = _loop0_77_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005359 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005360 (c = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005361 )
5362 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005363 _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
5364 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005365 p->error_indicator = 1;
5366 return NULL;
5367 }
5368 goto done;
5369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005370 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005371 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005372 { // lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
5373 asdl_seq * a;
5374 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005375 void *c;
5376 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005377 (a = _loop1_78_rule(p)) // lambda_param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005378 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005379 (b = _loop0_79_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005380 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005381 (c = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005382 )
5383 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005384 _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
5385 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005386 p->error_indicator = 1;
5387 return NULL;
5388 }
5389 goto done;
5390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005391 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005392 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005393 { // lambda_param_with_default+ lambda_star_etc?
5394 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005395 void *b;
5396 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005397 (a = _loop1_80_rule(p)) // lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005398 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005399 (b = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005400 )
5401 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005402 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
5403 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005404 p->error_indicator = 1;
5405 return NULL;
5406 }
5407 goto done;
5408 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005409 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005410 }
5411 { // lambda_star_etc
5412 StarEtc* a;
5413 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005414 (a = lambda_star_etc_rule(p)) // lambda_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005415 )
5416 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005417 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
5418 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005419 p->error_indicator = 1;
5420 return NULL;
5421 }
5422 goto done;
5423 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005424 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005426 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005427 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005428 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005429}
5430
Guido van Rossum3941d972020-05-01 09:42:03 -07005431// lambda_slash_no_default:
5432// | lambda_param_no_default+ '/' ','
5433// | lambda_param_no_default+ '/' &':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005434static asdl_seq*
Guido van Rossum3941d972020-05-01 09:42:03 -07005435lambda_slash_no_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005436{
5437 if (p->error_indicator) {
5438 return NULL;
5439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005440 asdl_seq* _res = NULL;
5441 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005442 { // lambda_param_no_default+ '/' ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005443 Token * _literal;
5444 Token * _literal_1;
Guido van Rossum3941d972020-05-01 09:42:03 -07005445 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005446 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005447 (a = _loop1_81_rule(p)) // lambda_param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005448 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005449 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005450 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005451 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005452 )
5453 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005454 _res = a;
5455 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005456 p->error_indicator = 1;
5457 return NULL;
5458 }
5459 goto done;
5460 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005461 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005462 }
5463 { // lambda_param_no_default+ '/' &':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005464 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005465 asdl_seq * a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005466 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005467 (a = _loop1_82_rule(p)) // lambda_param_no_default+
Guido van Rossum3941d972020-05-01 09:42:03 -07005468 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005469 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossum3941d972020-05-01 09:42:03 -07005470 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005471 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005472 )
5473 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005474 _res = a;
5475 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005476 p->error_indicator = 1;
5477 return NULL;
5478 }
5479 goto done;
5480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005481 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005482 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005483 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005484 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005485 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005486}
5487
Guido van Rossum3941d972020-05-01 09:42:03 -07005488// lambda_slash_with_default:
5489// | lambda_param_no_default* lambda_param_with_default+ '/' ','
5490// | lambda_param_no_default* lambda_param_with_default+ '/' &':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005491static SlashWithDefault*
5492lambda_slash_with_default_rule(Parser *p)
5493{
5494 if (p->error_indicator) {
5495 return NULL;
5496 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005497 SlashWithDefault* _res = NULL;
5498 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005499 { // lambda_param_no_default* lambda_param_with_default+ '/' ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005500 Token * _literal;
5501 Token * _literal_1;
Guido van Rossum3941d972020-05-01 09:42:03 -07005502 asdl_seq * a;
5503 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005504 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005505 (a = _loop0_83_rule(p)) // lambda_param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005506 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005507 (b = _loop1_84_rule(p)) // lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005508 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005509 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005510 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005511 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005512 )
5513 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005514 _res = _PyPegen_slash_with_default ( p , a , b );
5515 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005516 p->error_indicator = 1;
5517 return NULL;
5518 }
5519 goto done;
5520 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005521 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005522 }
5523 { // lambda_param_no_default* lambda_param_with_default+ '/' &':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005524 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005525 asdl_seq * a;
5526 asdl_seq * b;
Guido van Rossum3941d972020-05-01 09:42:03 -07005527 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005528 (a = _loop0_85_rule(p)) // lambda_param_no_default*
Guido van Rossum3941d972020-05-01 09:42:03 -07005529 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005530 (b = _loop1_86_rule(p)) // lambda_param_with_default+
Guido van Rossum3941d972020-05-01 09:42:03 -07005531 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005532 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossum3941d972020-05-01 09:42:03 -07005533 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005534 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005535 )
5536 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005537 _res = _PyPegen_slash_with_default ( p , a , b );
5538 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005539 p->error_indicator = 1;
5540 return NULL;
5541 }
5542 goto done;
5543 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005544 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005545 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005546 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005547 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005548 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005549}
5550
5551// lambda_star_etc:
Guido van Rossum3941d972020-05-01 09:42:03 -07005552// | '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
5553// | '*' ',' lambda_param_maybe_default+ lambda_kwds?
5554// | lambda_kwds
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005555// | invalid_lambda_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005556static StarEtc*
5557lambda_star_etc_rule(Parser *p)
5558{
5559 if (p->error_indicator) {
5560 return NULL;
5561 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005562 StarEtc* _res = NULL;
5563 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005564 { // '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005565 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005566 arg_ty a;
5567 asdl_seq * b;
5568 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005569 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005570 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005571 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005572 (a = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005573 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005574 (b = _loop0_87_rule(p)) // lambda_param_maybe_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005575 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005576 (c = lambda_kwds_rule(p), 1) // lambda_kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005577 )
5578 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005579 _res = _PyPegen_star_etc ( p , a , b , c );
5580 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005581 p->error_indicator = 1;
5582 return NULL;
5583 }
5584 goto done;
5585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005586 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005587 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005588 { // '*' ',' lambda_param_maybe_default+ lambda_kwds?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005589 Token * _literal;
5590 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005591 asdl_seq * b;
5592 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005593 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005594 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005595 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005596 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005597 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005598 (b = _loop1_88_rule(p)) // lambda_param_maybe_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005599 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005600 (c = lambda_kwds_rule(p), 1) // lambda_kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005601 )
5602 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005603 _res = _PyPegen_star_etc ( p , NULL , b , c );
5604 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005605 p->error_indicator = 1;
5606 return NULL;
5607 }
5608 goto done;
5609 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005610 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005611 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005612 { // lambda_kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005613 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005614 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005615 (a = lambda_kwds_rule(p)) // lambda_kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005616 )
5617 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005618 _res = _PyPegen_star_etc ( p , NULL , NULL , a );
5619 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005620 p->error_indicator = 1;
5621 return NULL;
5622 }
5623 goto done;
5624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005625 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005626 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005627 { // invalid_lambda_star_etc
5628 void *invalid_lambda_star_etc_var;
5629 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005630 (invalid_lambda_star_etc_var = invalid_lambda_star_etc_rule(p)) // invalid_lambda_star_etc
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005631 )
5632 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005633 _res = invalid_lambda_star_etc_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005634 goto done;
5635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005636 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005638 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005639 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005640 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005641}
5642
Guido van Rossum3941d972020-05-01 09:42:03 -07005643// lambda_kwds: '**' lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005644static arg_ty
Guido van Rossum3941d972020-05-01 09:42:03 -07005645lambda_kwds_rule(Parser *p)
5646{
5647 if (p->error_indicator) {
5648 return NULL;
5649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005650 arg_ty _res = NULL;
5651 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005652 { // '**' lambda_param_no_default
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005653 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005654 arg_ty a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005655 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005656 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossum3941d972020-05-01 09:42:03 -07005657 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005658 (a = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -07005659 )
5660 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005661 _res = a;
5662 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005663 p->error_indicator = 1;
5664 return NULL;
5665 }
5666 goto done;
5667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005668 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005669 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005670 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07005671 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005672 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07005673}
5674
5675// lambda_param_no_default: lambda_param ',' | lambda_param &':'
5676static arg_ty
5677lambda_param_no_default_rule(Parser *p)
5678{
5679 if (p->error_indicator) {
5680 return NULL;
5681 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005682 arg_ty _res = NULL;
5683 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005684 { // lambda_param ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005685 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005686 arg_ty a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005687 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005688 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005689 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005690 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005691 )
5692 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005693 _res = a;
5694 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005695 p->error_indicator = 1;
5696 return NULL;
5697 }
5698 goto done;
5699 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005700 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005701 }
5702 { // lambda_param &':'
5703 arg_ty a;
5704 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005705 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005706 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005707 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07005708 )
5709 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005710 _res = a;
5711 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005712 p->error_indicator = 1;
5713 return NULL;
5714 }
5715 goto done;
5716 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005717 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005718 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005719 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07005720 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005721 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07005722}
5723
5724// lambda_param_with_default: lambda_param default ',' | lambda_param default &':'
5725static NameDefaultPair*
5726lambda_param_with_default_rule(Parser *p)
5727{
5728 if (p->error_indicator) {
5729 return NULL;
5730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005731 NameDefaultPair* _res = NULL;
5732 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005733 { // lambda_param default ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005734 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005735 arg_ty a;
5736 expr_ty c;
Guido van Rossum3941d972020-05-01 09:42:03 -07005737 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005738 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005739 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005740 (c = default_rule(p)) // default
Guido van Rossum3941d972020-05-01 09:42:03 -07005741 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005742 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005743 )
5744 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005745 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
5746 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005747 p->error_indicator = 1;
5748 return NULL;
5749 }
5750 goto done;
5751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005752 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005753 }
5754 { // lambda_param default &':'
5755 arg_ty a;
5756 expr_ty c;
5757 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005758 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005759 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005760 (c = default_rule(p)) // default
Guido van Rossum3941d972020-05-01 09:42:03 -07005761 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005762 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07005763 )
5764 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005765 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
5766 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005767 p->error_indicator = 1;
5768 return NULL;
5769 }
5770 goto done;
5771 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005772 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005774 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07005775 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005776 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07005777}
5778
5779// lambda_param_maybe_default: lambda_param default? ',' | lambda_param default? &':'
5780static NameDefaultPair*
5781lambda_param_maybe_default_rule(Parser *p)
5782{
5783 if (p->error_indicator) {
5784 return NULL;
5785 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005786 NameDefaultPair* _res = NULL;
5787 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005788 { // lambda_param default? ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005789 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005790 arg_ty a;
5791 void *c;
Guido van Rossum3941d972020-05-01 09:42:03 -07005792 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005793 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005794 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005795 (c = default_rule(p), 1) // default?
Guido van Rossum3941d972020-05-01 09:42:03 -07005796 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005797 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005798 )
5799 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005800 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
5801 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005802 p->error_indicator = 1;
5803 return NULL;
5804 }
5805 goto done;
5806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005807 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005808 }
5809 { // lambda_param default? &':'
5810 arg_ty a;
5811 void *c;
5812 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005813 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005814 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005815 (c = default_rule(p), 1) // default?
Guido van Rossum3941d972020-05-01 09:42:03 -07005816 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005817 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07005818 )
5819 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005820 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
5821 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005822 p->error_indicator = 1;
5823 return NULL;
5824 }
5825 goto done;
5826 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005827 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005828 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005829 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07005830 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005831 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07005832}
5833
5834// lambda_param: NAME
5835static arg_ty
5836lambda_param_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005837{
5838 if (p->error_indicator) {
5839 return NULL;
5840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005841 arg_ty _res = NULL;
5842 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005843 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5844 p->error_indicator = 1;
5845 return NULL;
5846 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005847 int _start_lineno = p->tokens[_mark]->lineno;
5848 UNUSED(_start_lineno); // Only used by EXTRA macro
5849 int _start_col_offset = p->tokens[_mark]->col_offset;
5850 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005851 { // NAME
5852 expr_ty a;
5853 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005854 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005855 )
5856 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005857 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5858 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005859 return NULL;
5860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005861 int _end_lineno = _token->end_lineno;
5862 UNUSED(_end_lineno); // Only used by EXTRA macro
5863 int _end_col_offset = _token->end_col_offset;
5864 UNUSED(_end_col_offset); // Only used by EXTRA macro
5865 _res = _Py_arg ( a -> v . Name . id , NULL , NULL , EXTRA );
5866 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005867 p->error_indicator = 1;
5868 return NULL;
5869 }
5870 goto done;
5871 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005872 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005873 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005874 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005875 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005876 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005877}
5878
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005879// disjunction: conjunction (('or' conjunction))+ | conjunction
5880static expr_ty
5881disjunction_rule(Parser *p)
5882{
5883 if (p->error_indicator) {
5884 return NULL;
5885 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005886 expr_ty _res = NULL;
5887 if (_PyPegen_is_memoized(p, disjunction_type, &_res))
5888 return _res;
5889 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005890 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5891 p->error_indicator = 1;
5892 return NULL;
5893 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005894 int _start_lineno = p->tokens[_mark]->lineno;
5895 UNUSED(_start_lineno); // Only used by EXTRA macro
5896 int _start_col_offset = p->tokens[_mark]->col_offset;
5897 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005898 { // conjunction (('or' conjunction))+
5899 expr_ty a;
5900 asdl_seq * b;
5901 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005902 (a = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005903 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005904 (b = _loop1_89_rule(p)) // (('or' conjunction))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005905 )
5906 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005907 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5908 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005909 return NULL;
5910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005911 int _end_lineno = _token->end_lineno;
5912 UNUSED(_end_lineno); // Only used by EXTRA macro
5913 int _end_col_offset = _token->end_col_offset;
5914 UNUSED(_end_col_offset); // Only used by EXTRA macro
5915 _res = _Py_BoolOp ( Or , CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
5916 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005917 p->error_indicator = 1;
5918 return NULL;
5919 }
5920 goto done;
5921 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005922 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005923 }
5924 { // conjunction
5925 expr_ty conjunction_var;
5926 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005927 (conjunction_var = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005928 )
5929 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005930 _res = conjunction_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005931 goto done;
5932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005933 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005935 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005936 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005937 _PyPegen_insert_memo(p, _mark, disjunction_type, _res);
5938 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005939}
5940
5941// conjunction: inversion (('and' inversion))+ | inversion
5942static expr_ty
5943conjunction_rule(Parser *p)
5944{
5945 if (p->error_indicator) {
5946 return NULL;
5947 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005948 expr_ty _res = NULL;
5949 if (_PyPegen_is_memoized(p, conjunction_type, &_res))
5950 return _res;
5951 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005952 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5953 p->error_indicator = 1;
5954 return NULL;
5955 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005956 int _start_lineno = p->tokens[_mark]->lineno;
5957 UNUSED(_start_lineno); // Only used by EXTRA macro
5958 int _start_col_offset = p->tokens[_mark]->col_offset;
5959 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005960 { // inversion (('and' inversion))+
5961 expr_ty a;
5962 asdl_seq * b;
5963 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005964 (a = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005965 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005966 (b = _loop1_90_rule(p)) // (('and' inversion))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005967 )
5968 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005969 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5970 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005971 return NULL;
5972 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005973 int _end_lineno = _token->end_lineno;
5974 UNUSED(_end_lineno); // Only used by EXTRA macro
5975 int _end_col_offset = _token->end_col_offset;
5976 UNUSED(_end_col_offset); // Only used by EXTRA macro
5977 _res = _Py_BoolOp ( And , CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
5978 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005979 p->error_indicator = 1;
5980 return NULL;
5981 }
5982 goto done;
5983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005984 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005985 }
5986 { // inversion
5987 expr_ty inversion_var;
5988 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005989 (inversion_var = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005990 )
5991 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005992 _res = inversion_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005993 goto done;
5994 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005995 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005996 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005997 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005998 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005999 _PyPegen_insert_memo(p, _mark, conjunction_type, _res);
6000 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006001}
6002
6003// inversion: 'not' inversion | comparison
6004static expr_ty
6005inversion_rule(Parser *p)
6006{
6007 if (p->error_indicator) {
6008 return NULL;
6009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006010 expr_ty _res = NULL;
6011 if (_PyPegen_is_memoized(p, inversion_type, &_res))
6012 return _res;
6013 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006014 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6015 p->error_indicator = 1;
6016 return NULL;
6017 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006018 int _start_lineno = p->tokens[_mark]->lineno;
6019 UNUSED(_start_lineno); // Only used by EXTRA macro
6020 int _start_col_offset = p->tokens[_mark]->col_offset;
6021 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006022 { // 'not' inversion
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006023 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006024 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006025 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006026 (_keyword = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006027 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006028 (a = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006029 )
6030 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006031 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6032 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006033 return NULL;
6034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006035 int _end_lineno = _token->end_lineno;
6036 UNUSED(_end_lineno); // Only used by EXTRA macro
6037 int _end_col_offset = _token->end_col_offset;
6038 UNUSED(_end_col_offset); // Only used by EXTRA macro
6039 _res = _Py_UnaryOp ( Not , a , EXTRA );
6040 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006041 p->error_indicator = 1;
6042 return NULL;
6043 }
6044 goto done;
6045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006046 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006047 }
6048 { // comparison
6049 expr_ty comparison_var;
6050 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006051 (comparison_var = comparison_rule(p)) // comparison
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006052 )
6053 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006054 _res = comparison_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006055 goto done;
6056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006057 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006059 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006060 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006061 _PyPegen_insert_memo(p, _mark, inversion_type, _res);
6062 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006063}
6064
6065// comparison: bitwise_or compare_op_bitwise_or_pair+ | bitwise_or
6066static expr_ty
6067comparison_rule(Parser *p)
6068{
6069 if (p->error_indicator) {
6070 return NULL;
6071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006072 expr_ty _res = NULL;
6073 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006074 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6075 p->error_indicator = 1;
6076 return NULL;
6077 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006078 int _start_lineno = p->tokens[_mark]->lineno;
6079 UNUSED(_start_lineno); // Only used by EXTRA macro
6080 int _start_col_offset = p->tokens[_mark]->col_offset;
6081 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006082 { // bitwise_or compare_op_bitwise_or_pair+
6083 expr_ty a;
6084 asdl_seq * b;
6085 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006086 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006087 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006088 (b = _loop1_91_rule(p)) // compare_op_bitwise_or_pair+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006089 )
6090 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006091 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6092 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006093 return NULL;
6094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006095 int _end_lineno = _token->end_lineno;
6096 UNUSED(_end_lineno); // Only used by EXTRA macro
6097 int _end_col_offset = _token->end_col_offset;
6098 UNUSED(_end_col_offset); // Only used by EXTRA macro
6099 _res = _Py_Compare ( a , CHECK ( _PyPegen_get_cmpops ( p , b ) ) , CHECK ( _PyPegen_get_exprs ( p , b ) ) , EXTRA );
6100 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006101 p->error_indicator = 1;
6102 return NULL;
6103 }
6104 goto done;
6105 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006106 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006107 }
6108 { // bitwise_or
6109 expr_ty bitwise_or_var;
6110 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006111 (bitwise_or_var = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006112 )
6113 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006114 _res = bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006115 goto done;
6116 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006117 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006119 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006120 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006121 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006122}
6123
6124// compare_op_bitwise_or_pair:
6125// | eq_bitwise_or
6126// | noteq_bitwise_or
6127// | lte_bitwise_or
6128// | lt_bitwise_or
6129// | gte_bitwise_or
6130// | gt_bitwise_or
6131// | notin_bitwise_or
6132// | in_bitwise_or
6133// | isnot_bitwise_or
6134// | is_bitwise_or
6135static CmpopExprPair*
6136compare_op_bitwise_or_pair_rule(Parser *p)
6137{
6138 if (p->error_indicator) {
6139 return NULL;
6140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006141 CmpopExprPair* _res = NULL;
6142 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006143 { // eq_bitwise_or
6144 CmpopExprPair* eq_bitwise_or_var;
6145 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006146 (eq_bitwise_or_var = eq_bitwise_or_rule(p)) // eq_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006147 )
6148 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006149 _res = eq_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006150 goto done;
6151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006152 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006153 }
6154 { // noteq_bitwise_or
6155 CmpopExprPair* noteq_bitwise_or_var;
6156 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006157 (noteq_bitwise_or_var = noteq_bitwise_or_rule(p)) // noteq_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006158 )
6159 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006160 _res = noteq_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006161 goto done;
6162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006163 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006164 }
6165 { // lte_bitwise_or
6166 CmpopExprPair* lte_bitwise_or_var;
6167 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006168 (lte_bitwise_or_var = lte_bitwise_or_rule(p)) // lte_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006169 )
6170 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006171 _res = lte_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006172 goto done;
6173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006174 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006175 }
6176 { // lt_bitwise_or
6177 CmpopExprPair* lt_bitwise_or_var;
6178 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006179 (lt_bitwise_or_var = lt_bitwise_or_rule(p)) // lt_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006180 )
6181 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006182 _res = lt_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006183 goto done;
6184 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006185 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006186 }
6187 { // gte_bitwise_or
6188 CmpopExprPair* gte_bitwise_or_var;
6189 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006190 (gte_bitwise_or_var = gte_bitwise_or_rule(p)) // gte_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006191 )
6192 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006193 _res = gte_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006194 goto done;
6195 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006196 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006197 }
6198 { // gt_bitwise_or
6199 CmpopExprPair* gt_bitwise_or_var;
6200 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006201 (gt_bitwise_or_var = gt_bitwise_or_rule(p)) // gt_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006202 )
6203 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006204 _res = gt_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006205 goto done;
6206 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006207 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006208 }
6209 { // notin_bitwise_or
6210 CmpopExprPair* notin_bitwise_or_var;
6211 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006212 (notin_bitwise_or_var = notin_bitwise_or_rule(p)) // notin_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006213 )
6214 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006215 _res = notin_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006216 goto done;
6217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006218 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006219 }
6220 { // in_bitwise_or
6221 CmpopExprPair* in_bitwise_or_var;
6222 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006223 (in_bitwise_or_var = in_bitwise_or_rule(p)) // in_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006224 )
6225 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006226 _res = in_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006227 goto done;
6228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006229 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006230 }
6231 { // isnot_bitwise_or
6232 CmpopExprPair* isnot_bitwise_or_var;
6233 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006234 (isnot_bitwise_or_var = isnot_bitwise_or_rule(p)) // isnot_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006235 )
6236 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006237 _res = isnot_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006238 goto done;
6239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006240 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006241 }
6242 { // is_bitwise_or
6243 CmpopExprPair* is_bitwise_or_var;
6244 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006245 (is_bitwise_or_var = is_bitwise_or_rule(p)) // is_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006246 )
6247 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006248 _res = is_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006249 goto done;
6250 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006251 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006253 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006254 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006255 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006256}
6257
6258// eq_bitwise_or: '==' bitwise_or
6259static CmpopExprPair*
6260eq_bitwise_or_rule(Parser *p)
6261{
6262 if (p->error_indicator) {
6263 return NULL;
6264 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006265 CmpopExprPair* _res = NULL;
6266 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006267 { // '==' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006268 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006269 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006270 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006271 (_literal = _PyPegen_expect_token(p, 27)) // token='=='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006272 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006273 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006274 )
6275 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006276 _res = _PyPegen_cmpop_expr_pair ( p , Eq , a );
6277 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006278 p->error_indicator = 1;
6279 return NULL;
6280 }
6281 goto done;
6282 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006283 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006284 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006285 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006286 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006287 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006288}
6289
Pablo Galindo2b74c832020-04-27 18:02:07 +01006290// noteq_bitwise_or: ('!=') bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006291static CmpopExprPair*
6292noteq_bitwise_or_rule(Parser *p)
6293{
6294 if (p->error_indicator) {
6295 return NULL;
6296 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006297 CmpopExprPair* _res = NULL;
6298 int _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +01006299 { // ('!=') bitwise_or
Guido van Rossum3941d972020-05-01 09:42:03 -07006300 void *_tmp_92_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006301 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006302 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006303 (_tmp_92_var = _tmp_92_rule(p)) // '!='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006304 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006305 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006306 )
6307 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006308 _res = _PyPegen_cmpop_expr_pair ( p , NotEq , a );
6309 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006310 p->error_indicator = 1;
6311 return NULL;
6312 }
6313 goto done;
6314 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006315 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006317 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006318 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006319 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006320}
6321
6322// lte_bitwise_or: '<=' bitwise_or
6323static CmpopExprPair*
6324lte_bitwise_or_rule(Parser *p)
6325{
6326 if (p->error_indicator) {
6327 return NULL;
6328 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006329 CmpopExprPair* _res = NULL;
6330 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006331 { // '<=' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006332 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006333 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006334 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006335 (_literal = _PyPegen_expect_token(p, 29)) // token='<='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006336 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006337 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006338 )
6339 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006340 _res = _PyPegen_cmpop_expr_pair ( p , LtE , a );
6341 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006342 p->error_indicator = 1;
6343 return NULL;
6344 }
6345 goto done;
6346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006347 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006349 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006350 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006351 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006352}
6353
6354// lt_bitwise_or: '<' bitwise_or
6355static CmpopExprPair*
6356lt_bitwise_or_rule(Parser *p)
6357{
6358 if (p->error_indicator) {
6359 return NULL;
6360 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006361 CmpopExprPair* _res = NULL;
6362 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006363 { // '<' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006364 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006365 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006366 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006367 (_literal = _PyPegen_expect_token(p, 20)) // token='<'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006368 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006369 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006370 )
6371 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006372 _res = _PyPegen_cmpop_expr_pair ( p , Lt , a );
6373 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006374 p->error_indicator = 1;
6375 return NULL;
6376 }
6377 goto done;
6378 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006379 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006380 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006381 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006382 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006383 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006384}
6385
6386// gte_bitwise_or: '>=' bitwise_or
6387static CmpopExprPair*
6388gte_bitwise_or_rule(Parser *p)
6389{
6390 if (p->error_indicator) {
6391 return NULL;
6392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006393 CmpopExprPair* _res = NULL;
6394 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006395 { // '>=' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006396 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006397 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006398 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006399 (_literal = _PyPegen_expect_token(p, 30)) // token='>='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006400 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006401 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006402 )
6403 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006404 _res = _PyPegen_cmpop_expr_pair ( p , GtE , a );
6405 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006406 p->error_indicator = 1;
6407 return NULL;
6408 }
6409 goto done;
6410 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006411 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006413 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006414 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006415 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006416}
6417
6418// gt_bitwise_or: '>' bitwise_or
6419static CmpopExprPair*
6420gt_bitwise_or_rule(Parser *p)
6421{
6422 if (p->error_indicator) {
6423 return NULL;
6424 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006425 CmpopExprPair* _res = NULL;
6426 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006427 { // '>' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006428 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006429 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006430 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006431 (_literal = _PyPegen_expect_token(p, 21)) // token='>'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006432 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006433 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006434 )
6435 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006436 _res = _PyPegen_cmpop_expr_pair ( p , Gt , a );
6437 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006438 p->error_indicator = 1;
6439 return NULL;
6440 }
6441 goto done;
6442 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006443 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006444 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006445 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006446 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006447 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006448}
6449
6450// notin_bitwise_or: 'not' 'in' bitwise_or
6451static CmpopExprPair*
6452notin_bitwise_or_rule(Parser *p)
6453{
6454 if (p->error_indicator) {
6455 return NULL;
6456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006457 CmpopExprPair* _res = NULL;
6458 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006459 { // 'not' 'in' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006460 Token * _keyword;
6461 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006462 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006463 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006464 (_keyword = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006465 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006466 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006467 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006468 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006469 )
6470 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006471 _res = _PyPegen_cmpop_expr_pair ( p , NotIn , a );
6472 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006473 p->error_indicator = 1;
6474 return NULL;
6475 }
6476 goto done;
6477 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006478 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006480 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006481 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006482 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006483}
6484
6485// in_bitwise_or: 'in' bitwise_or
6486static CmpopExprPair*
6487in_bitwise_or_rule(Parser *p)
6488{
6489 if (p->error_indicator) {
6490 return NULL;
6491 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006492 CmpopExprPair* _res = NULL;
6493 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006494 { // 'in' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006495 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006496 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006497 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006498 (_keyword = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006499 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006500 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006501 )
6502 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006503 _res = _PyPegen_cmpop_expr_pair ( p , In , a );
6504 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006505 p->error_indicator = 1;
6506 return NULL;
6507 }
6508 goto done;
6509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006510 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006512 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006513 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006514 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006515}
6516
6517// isnot_bitwise_or: 'is' 'not' bitwise_or
6518static CmpopExprPair*
6519isnot_bitwise_or_rule(Parser *p)
6520{
6521 if (p->error_indicator) {
6522 return NULL;
6523 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006524 CmpopExprPair* _res = NULL;
6525 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006526 { // 'is' 'not' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006527 Token * _keyword;
6528 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006529 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006530 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006531 (_keyword = _PyPegen_expect_token(p, 526)) // token='is'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006532 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006533 (_keyword_1 = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006534 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006535 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006536 )
6537 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006538 _res = _PyPegen_cmpop_expr_pair ( p , IsNot , a );
6539 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006540 p->error_indicator = 1;
6541 return NULL;
6542 }
6543 goto done;
6544 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006545 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006547 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006548 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006549 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006550}
6551
6552// is_bitwise_or: 'is' bitwise_or
6553static CmpopExprPair*
6554is_bitwise_or_rule(Parser *p)
6555{
6556 if (p->error_indicator) {
6557 return NULL;
6558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006559 CmpopExprPair* _res = NULL;
6560 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006561 { // 'is' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006562 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006563 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006564 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006565 (_keyword = _PyPegen_expect_token(p, 526)) // token='is'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006566 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006567 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006568 )
6569 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006570 _res = _PyPegen_cmpop_expr_pair ( p , Is , a );
6571 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006572 p->error_indicator = 1;
6573 return NULL;
6574 }
6575 goto done;
6576 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006577 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006578 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006579 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006580 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006581 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006582}
6583
6584// Left-recursive
6585// bitwise_or: bitwise_or '|' bitwise_xor | bitwise_xor
6586static expr_ty bitwise_or_raw(Parser *);
6587static expr_ty
6588bitwise_or_rule(Parser *p)
6589{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006590 expr_ty _res = NULL;
6591 if (_PyPegen_is_memoized(p, bitwise_or_type, &_res))
6592 return _res;
6593 int _mark = p->mark;
6594 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006595 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006596 int tmpvar_1 = _PyPegen_update_memo(p, _mark, bitwise_or_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006597 if (tmpvar_1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006598 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006599 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006600 p->mark = _mark;
6601 void *_raw = bitwise_or_raw(p);
6602 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006603 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006604 _resmark = p->mark;
6605 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006606 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006607 p->mark = _resmark;
6608 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006609}
6610static expr_ty
6611bitwise_or_raw(Parser *p)
6612{
6613 if (p->error_indicator) {
6614 return NULL;
6615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006616 expr_ty _res = NULL;
6617 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006618 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6619 p->error_indicator = 1;
6620 return NULL;
6621 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006622 int _start_lineno = p->tokens[_mark]->lineno;
6623 UNUSED(_start_lineno); // Only used by EXTRA macro
6624 int _start_col_offset = p->tokens[_mark]->col_offset;
6625 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006626 { // bitwise_or '|' bitwise_xor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006627 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006628 expr_ty a;
6629 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006630 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006631 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006632 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006633 (_literal = _PyPegen_expect_token(p, 18)) // token='|'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006634 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006635 (b = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006636 )
6637 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006638 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6639 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006640 return NULL;
6641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006642 int _end_lineno = _token->end_lineno;
6643 UNUSED(_end_lineno); // Only used by EXTRA macro
6644 int _end_col_offset = _token->end_col_offset;
6645 UNUSED(_end_col_offset); // Only used by EXTRA macro
6646 _res = _Py_BinOp ( a , BitOr , b , EXTRA );
6647 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006648 p->error_indicator = 1;
6649 return NULL;
6650 }
6651 goto done;
6652 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006653 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006654 }
6655 { // bitwise_xor
6656 expr_ty bitwise_xor_var;
6657 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006658 (bitwise_xor_var = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006659 )
6660 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006661 _res = bitwise_xor_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006662 goto done;
6663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006664 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006665 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006666 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006667 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006668 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006669}
6670
6671// Left-recursive
6672// bitwise_xor: bitwise_xor '^' bitwise_and | bitwise_and
6673static expr_ty bitwise_xor_raw(Parser *);
6674static expr_ty
6675bitwise_xor_rule(Parser *p)
6676{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006677 expr_ty _res = NULL;
6678 if (_PyPegen_is_memoized(p, bitwise_xor_type, &_res))
6679 return _res;
6680 int _mark = p->mark;
6681 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006682 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006683 int tmpvar_2 = _PyPegen_update_memo(p, _mark, bitwise_xor_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006684 if (tmpvar_2) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006685 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006686 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006687 p->mark = _mark;
6688 void *_raw = bitwise_xor_raw(p);
6689 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006690 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006691 _resmark = p->mark;
6692 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006694 p->mark = _resmark;
6695 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006696}
6697static expr_ty
6698bitwise_xor_raw(Parser *p)
6699{
6700 if (p->error_indicator) {
6701 return NULL;
6702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006703 expr_ty _res = NULL;
6704 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006705 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6706 p->error_indicator = 1;
6707 return NULL;
6708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006709 int _start_lineno = p->tokens[_mark]->lineno;
6710 UNUSED(_start_lineno); // Only used by EXTRA macro
6711 int _start_col_offset = p->tokens[_mark]->col_offset;
6712 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006713 { // bitwise_xor '^' bitwise_and
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006714 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006715 expr_ty a;
6716 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006717 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006718 (a = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006719 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006720 (_literal = _PyPegen_expect_token(p, 32)) // token='^'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006721 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006722 (b = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006723 )
6724 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006725 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6726 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006727 return NULL;
6728 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006729 int _end_lineno = _token->end_lineno;
6730 UNUSED(_end_lineno); // Only used by EXTRA macro
6731 int _end_col_offset = _token->end_col_offset;
6732 UNUSED(_end_col_offset); // Only used by EXTRA macro
6733 _res = _Py_BinOp ( a , BitXor , b , EXTRA );
6734 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006735 p->error_indicator = 1;
6736 return NULL;
6737 }
6738 goto done;
6739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006740 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006741 }
6742 { // bitwise_and
6743 expr_ty bitwise_and_var;
6744 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006745 (bitwise_and_var = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006746 )
6747 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006748 _res = bitwise_and_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006749 goto done;
6750 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006751 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006752 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006753 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006754 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006755 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006756}
6757
6758// Left-recursive
6759// bitwise_and: bitwise_and '&' shift_expr | shift_expr
6760static expr_ty bitwise_and_raw(Parser *);
6761static expr_ty
6762bitwise_and_rule(Parser *p)
6763{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006764 expr_ty _res = NULL;
6765 if (_PyPegen_is_memoized(p, bitwise_and_type, &_res))
6766 return _res;
6767 int _mark = p->mark;
6768 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006769 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006770 int tmpvar_3 = _PyPegen_update_memo(p, _mark, bitwise_and_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006771 if (tmpvar_3) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006772 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006774 p->mark = _mark;
6775 void *_raw = bitwise_and_raw(p);
6776 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006777 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006778 _resmark = p->mark;
6779 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006781 p->mark = _resmark;
6782 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006783}
6784static expr_ty
6785bitwise_and_raw(Parser *p)
6786{
6787 if (p->error_indicator) {
6788 return NULL;
6789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006790 expr_ty _res = NULL;
6791 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006792 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6793 p->error_indicator = 1;
6794 return NULL;
6795 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006796 int _start_lineno = p->tokens[_mark]->lineno;
6797 UNUSED(_start_lineno); // Only used by EXTRA macro
6798 int _start_col_offset = p->tokens[_mark]->col_offset;
6799 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006800 { // bitwise_and '&' shift_expr
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006801 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006802 expr_ty a;
6803 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006804 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006805 (a = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006806 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006807 (_literal = _PyPegen_expect_token(p, 19)) // token='&'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006808 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006809 (b = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006810 )
6811 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006812 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6813 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006814 return NULL;
6815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006816 int _end_lineno = _token->end_lineno;
6817 UNUSED(_end_lineno); // Only used by EXTRA macro
6818 int _end_col_offset = _token->end_col_offset;
6819 UNUSED(_end_col_offset); // Only used by EXTRA macro
6820 _res = _Py_BinOp ( a , BitAnd , b , EXTRA );
6821 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006822 p->error_indicator = 1;
6823 return NULL;
6824 }
6825 goto done;
6826 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006827 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006828 }
6829 { // shift_expr
6830 expr_ty shift_expr_var;
6831 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006832 (shift_expr_var = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006833 )
6834 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006835 _res = shift_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006836 goto done;
6837 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006838 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006839 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006840 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006841 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006842 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006843}
6844
6845// Left-recursive
6846// shift_expr: shift_expr '<<' sum | shift_expr '>>' sum | sum
6847static expr_ty shift_expr_raw(Parser *);
6848static expr_ty
6849shift_expr_rule(Parser *p)
6850{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006851 expr_ty _res = NULL;
6852 if (_PyPegen_is_memoized(p, shift_expr_type, &_res))
6853 return _res;
6854 int _mark = p->mark;
6855 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006856 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006857 int tmpvar_4 = _PyPegen_update_memo(p, _mark, shift_expr_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006858 if (tmpvar_4) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006859 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006861 p->mark = _mark;
6862 void *_raw = shift_expr_raw(p);
6863 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006864 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006865 _resmark = p->mark;
6866 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006867 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006868 p->mark = _resmark;
6869 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006870}
6871static expr_ty
6872shift_expr_raw(Parser *p)
6873{
6874 if (p->error_indicator) {
6875 return NULL;
6876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006877 expr_ty _res = NULL;
6878 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006879 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6880 p->error_indicator = 1;
6881 return NULL;
6882 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006883 int _start_lineno = p->tokens[_mark]->lineno;
6884 UNUSED(_start_lineno); // Only used by EXTRA macro
6885 int _start_col_offset = p->tokens[_mark]->col_offset;
6886 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006887 { // shift_expr '<<' sum
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006888 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006889 expr_ty a;
6890 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006891 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006892 (a = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006893 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006894 (_literal = _PyPegen_expect_token(p, 33)) // token='<<'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006895 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006896 (b = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006897 )
6898 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006899 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6900 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006901 return NULL;
6902 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006903 int _end_lineno = _token->end_lineno;
6904 UNUSED(_end_lineno); // Only used by EXTRA macro
6905 int _end_col_offset = _token->end_col_offset;
6906 UNUSED(_end_col_offset); // Only used by EXTRA macro
6907 _res = _Py_BinOp ( a , LShift , b , EXTRA );
6908 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006909 p->error_indicator = 1;
6910 return NULL;
6911 }
6912 goto done;
6913 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006914 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006915 }
6916 { // shift_expr '>>' sum
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006917 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006918 expr_ty a;
6919 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006920 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006921 (a = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006922 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006923 (_literal = _PyPegen_expect_token(p, 34)) // token='>>'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006924 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006925 (b = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006926 )
6927 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006928 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6929 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006930 return NULL;
6931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006932 int _end_lineno = _token->end_lineno;
6933 UNUSED(_end_lineno); // Only used by EXTRA macro
6934 int _end_col_offset = _token->end_col_offset;
6935 UNUSED(_end_col_offset); // Only used by EXTRA macro
6936 _res = _Py_BinOp ( a , RShift , b , EXTRA );
6937 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006938 p->error_indicator = 1;
6939 return NULL;
6940 }
6941 goto done;
6942 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006943 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006944 }
6945 { // sum
6946 expr_ty sum_var;
6947 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006948 (sum_var = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006949 )
6950 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006951 _res = sum_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006952 goto done;
6953 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006954 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006955 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006956 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006957 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006958 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006959}
6960
6961// Left-recursive
6962// sum: sum '+' term | sum '-' term | term
6963static expr_ty sum_raw(Parser *);
6964static expr_ty
6965sum_rule(Parser *p)
6966{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006967 expr_ty _res = NULL;
6968 if (_PyPegen_is_memoized(p, sum_type, &_res))
6969 return _res;
6970 int _mark = p->mark;
6971 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006972 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006973 int tmpvar_5 = _PyPegen_update_memo(p, _mark, sum_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006974 if (tmpvar_5) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006975 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006976 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006977 p->mark = _mark;
6978 void *_raw = sum_raw(p);
6979 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006980 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006981 _resmark = p->mark;
6982 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006984 p->mark = _resmark;
6985 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006986}
6987static expr_ty
6988sum_raw(Parser *p)
6989{
6990 if (p->error_indicator) {
6991 return NULL;
6992 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006993 expr_ty _res = NULL;
6994 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006995 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6996 p->error_indicator = 1;
6997 return NULL;
6998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006999 int _start_lineno = p->tokens[_mark]->lineno;
7000 UNUSED(_start_lineno); // Only used by EXTRA macro
7001 int _start_col_offset = p->tokens[_mark]->col_offset;
7002 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007003 { // sum '+' term
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007004 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007005 expr_ty a;
7006 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007007 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007008 (a = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007009 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007010 (_literal = _PyPegen_expect_token(p, 14)) // token='+'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007011 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007012 (b = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007013 )
7014 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007015 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7016 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007017 return NULL;
7018 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007019 int _end_lineno = _token->end_lineno;
7020 UNUSED(_end_lineno); // Only used by EXTRA macro
7021 int _end_col_offset = _token->end_col_offset;
7022 UNUSED(_end_col_offset); // Only used by EXTRA macro
7023 _res = _Py_BinOp ( a , Add , b , EXTRA );
7024 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007025 p->error_indicator = 1;
7026 return NULL;
7027 }
7028 goto done;
7029 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007030 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007031 }
7032 { // sum '-' term
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007033 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007034 expr_ty a;
7035 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007036 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007037 (a = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007038 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007039 (_literal = _PyPegen_expect_token(p, 15)) // token='-'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007040 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007041 (b = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007042 )
7043 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007044 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7045 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007046 return NULL;
7047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007048 int _end_lineno = _token->end_lineno;
7049 UNUSED(_end_lineno); // Only used by EXTRA macro
7050 int _end_col_offset = _token->end_col_offset;
7051 UNUSED(_end_col_offset); // Only used by EXTRA macro
7052 _res = _Py_BinOp ( a , Sub , b , EXTRA );
7053 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007054 p->error_indicator = 1;
7055 return NULL;
7056 }
7057 goto done;
7058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007059 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007060 }
7061 { // term
7062 expr_ty term_var;
7063 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007064 (term_var = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007065 )
7066 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007067 _res = term_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007068 goto done;
7069 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007070 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007072 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007073 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007074 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007075}
7076
7077// Left-recursive
7078// term:
7079// | term '*' factor
7080// | term '/' factor
7081// | term '//' factor
7082// | term '%' factor
7083// | term '@' factor
7084// | factor
7085static expr_ty term_raw(Parser *);
7086static expr_ty
7087term_rule(Parser *p)
7088{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007089 expr_ty _res = NULL;
7090 if (_PyPegen_is_memoized(p, term_type, &_res))
7091 return _res;
7092 int _mark = p->mark;
7093 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007094 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007095 int tmpvar_6 = _PyPegen_update_memo(p, _mark, term_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007096 if (tmpvar_6) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007097 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007098 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007099 p->mark = _mark;
7100 void *_raw = term_raw(p);
7101 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007102 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007103 _resmark = p->mark;
7104 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007105 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007106 p->mark = _resmark;
7107 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007108}
7109static expr_ty
7110term_raw(Parser *p)
7111{
7112 if (p->error_indicator) {
7113 return NULL;
7114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007115 expr_ty _res = NULL;
7116 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007117 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7118 p->error_indicator = 1;
7119 return NULL;
7120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007121 int _start_lineno = p->tokens[_mark]->lineno;
7122 UNUSED(_start_lineno); // Only used by EXTRA macro
7123 int _start_col_offset = p->tokens[_mark]->col_offset;
7124 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007125 { // term '*' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007126 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007127 expr_ty a;
7128 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007129 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007130 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007131 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007132 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007133 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007134 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007135 )
7136 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007137 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7138 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007139 return NULL;
7140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007141 int _end_lineno = _token->end_lineno;
7142 UNUSED(_end_lineno); // Only used by EXTRA macro
7143 int _end_col_offset = _token->end_col_offset;
7144 UNUSED(_end_col_offset); // Only used by EXTRA macro
7145 _res = _Py_BinOp ( a , Mult , b , EXTRA );
7146 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007147 p->error_indicator = 1;
7148 return NULL;
7149 }
7150 goto done;
7151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007152 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007153 }
7154 { // term '/' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007155 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007156 expr_ty a;
7157 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007158 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007159 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007160 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007161 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007162 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007163 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007164 )
7165 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007166 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7167 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007168 return NULL;
7169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007170 int _end_lineno = _token->end_lineno;
7171 UNUSED(_end_lineno); // Only used by EXTRA macro
7172 int _end_col_offset = _token->end_col_offset;
7173 UNUSED(_end_col_offset); // Only used by EXTRA macro
7174 _res = _Py_BinOp ( a , Div , b , EXTRA );
7175 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007176 p->error_indicator = 1;
7177 return NULL;
7178 }
7179 goto done;
7180 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007181 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007182 }
7183 { // term '//' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007184 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007185 expr_ty a;
7186 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007187 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007188 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007189 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007190 (_literal = _PyPegen_expect_token(p, 47)) // token='//'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007191 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007192 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007193 )
7194 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007195 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7196 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007197 return NULL;
7198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007199 int _end_lineno = _token->end_lineno;
7200 UNUSED(_end_lineno); // Only used by EXTRA macro
7201 int _end_col_offset = _token->end_col_offset;
7202 UNUSED(_end_col_offset); // Only used by EXTRA macro
7203 _res = _Py_BinOp ( a , FloorDiv , b , EXTRA );
7204 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007205 p->error_indicator = 1;
7206 return NULL;
7207 }
7208 goto done;
7209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007210 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007211 }
7212 { // term '%' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007213 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007214 expr_ty a;
7215 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007216 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007217 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007218 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007219 (_literal = _PyPegen_expect_token(p, 24)) // token='%'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007220 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007221 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007222 )
7223 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007224 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7225 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007226 return NULL;
7227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007228 int _end_lineno = _token->end_lineno;
7229 UNUSED(_end_lineno); // Only used by EXTRA macro
7230 int _end_col_offset = _token->end_col_offset;
7231 UNUSED(_end_col_offset); // Only used by EXTRA macro
7232 _res = _Py_BinOp ( a , Mod , b , EXTRA );
7233 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007234 p->error_indicator = 1;
7235 return NULL;
7236 }
7237 goto done;
7238 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007239 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007240 }
7241 { // term '@' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007242 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007243 expr_ty a;
7244 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007245 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007246 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007247 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007248 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007249 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007250 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007251 )
7252 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007253 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7254 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007255 return NULL;
7256 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007257 int _end_lineno = _token->end_lineno;
7258 UNUSED(_end_lineno); // Only used by EXTRA macro
7259 int _end_col_offset = _token->end_col_offset;
7260 UNUSED(_end_col_offset); // Only used by EXTRA macro
7261 _res = CHECK_VERSION ( 5 , "The '@' operator is" , _Py_BinOp ( a , MatMult , b , EXTRA ) );
7262 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007263 p->error_indicator = 1;
7264 return NULL;
7265 }
7266 goto done;
7267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007268 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007269 }
7270 { // factor
7271 expr_ty factor_var;
7272 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007273 (factor_var = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007274 )
7275 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007276 _res = factor_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007277 goto done;
7278 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007279 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007280 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007281 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007282 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007283 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007284}
7285
7286// factor: '+' factor | '-' factor | '~' factor | power
7287static expr_ty
7288factor_rule(Parser *p)
7289{
7290 if (p->error_indicator) {
7291 return NULL;
7292 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007293 expr_ty _res = NULL;
7294 if (_PyPegen_is_memoized(p, factor_type, &_res))
7295 return _res;
7296 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007297 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7298 p->error_indicator = 1;
7299 return NULL;
7300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007301 int _start_lineno = p->tokens[_mark]->lineno;
7302 UNUSED(_start_lineno); // Only used by EXTRA macro
7303 int _start_col_offset = p->tokens[_mark]->col_offset;
7304 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007305 { // '+' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007306 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007307 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007308 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007309 (_literal = _PyPegen_expect_token(p, 14)) // token='+'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007310 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007311 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007312 )
7313 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007314 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7315 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007316 return NULL;
7317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007318 int _end_lineno = _token->end_lineno;
7319 UNUSED(_end_lineno); // Only used by EXTRA macro
7320 int _end_col_offset = _token->end_col_offset;
7321 UNUSED(_end_col_offset); // Only used by EXTRA macro
7322 _res = _Py_UnaryOp ( UAdd , a , EXTRA );
7323 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007324 p->error_indicator = 1;
7325 return NULL;
7326 }
7327 goto done;
7328 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007329 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007330 }
7331 { // '-' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007332 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007333 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007334 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007335 (_literal = _PyPegen_expect_token(p, 15)) // token='-'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007336 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007337 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007338 )
7339 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007340 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7341 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007342 return NULL;
7343 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007344 int _end_lineno = _token->end_lineno;
7345 UNUSED(_end_lineno); // Only used by EXTRA macro
7346 int _end_col_offset = _token->end_col_offset;
7347 UNUSED(_end_col_offset); // Only used by EXTRA macro
7348 _res = _Py_UnaryOp ( USub , a , EXTRA );
7349 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007350 p->error_indicator = 1;
7351 return NULL;
7352 }
7353 goto done;
7354 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007355 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007356 }
7357 { // '~' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007358 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007359 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007360 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007361 (_literal = _PyPegen_expect_token(p, 31)) // token='~'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007362 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007363 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007364 )
7365 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007366 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7367 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007368 return NULL;
7369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007370 int _end_lineno = _token->end_lineno;
7371 UNUSED(_end_lineno); // Only used by EXTRA macro
7372 int _end_col_offset = _token->end_col_offset;
7373 UNUSED(_end_col_offset); // Only used by EXTRA macro
7374 _res = _Py_UnaryOp ( Invert , a , EXTRA );
7375 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007376 p->error_indicator = 1;
7377 return NULL;
7378 }
7379 goto done;
7380 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007381 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007382 }
7383 { // power
7384 expr_ty power_var;
7385 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007386 (power_var = power_rule(p)) // power
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007387 )
7388 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007389 _res = power_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007390 goto done;
7391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007392 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007394 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007395 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007396 _PyPegen_insert_memo(p, _mark, factor_type, _res);
7397 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007398}
7399
7400// power: await_primary '**' factor | await_primary
7401static expr_ty
7402power_rule(Parser *p)
7403{
7404 if (p->error_indicator) {
7405 return NULL;
7406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007407 expr_ty _res = NULL;
7408 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007409 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7410 p->error_indicator = 1;
7411 return NULL;
7412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007413 int _start_lineno = p->tokens[_mark]->lineno;
7414 UNUSED(_start_lineno); // Only used by EXTRA macro
7415 int _start_col_offset = p->tokens[_mark]->col_offset;
7416 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007417 { // await_primary '**' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007418 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007419 expr_ty a;
7420 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007421 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007422 (a = await_primary_rule(p)) // await_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007423 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007424 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007425 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007426 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007427 )
7428 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007429 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7430 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007431 return NULL;
7432 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007433 int _end_lineno = _token->end_lineno;
7434 UNUSED(_end_lineno); // Only used by EXTRA macro
7435 int _end_col_offset = _token->end_col_offset;
7436 UNUSED(_end_col_offset); // Only used by EXTRA macro
7437 _res = _Py_BinOp ( a , Pow , b , EXTRA );
7438 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007439 p->error_indicator = 1;
7440 return NULL;
7441 }
7442 goto done;
7443 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007444 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007445 }
7446 { // await_primary
7447 expr_ty await_primary_var;
7448 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007449 (await_primary_var = await_primary_rule(p)) // await_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007450 )
7451 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007452 _res = await_primary_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007453 goto done;
7454 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007455 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007457 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007458 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007459 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007460}
7461
7462// await_primary: AWAIT primary | primary
7463static expr_ty
7464await_primary_rule(Parser *p)
7465{
7466 if (p->error_indicator) {
7467 return NULL;
7468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007469 expr_ty _res = NULL;
7470 if (_PyPegen_is_memoized(p, await_primary_type, &_res))
7471 return _res;
7472 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007473 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7474 p->error_indicator = 1;
7475 return NULL;
7476 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007477 int _start_lineno = p->tokens[_mark]->lineno;
7478 UNUSED(_start_lineno); // Only used by EXTRA macro
7479 int _start_col_offset = p->tokens[_mark]->col_offset;
7480 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007481 { // AWAIT primary
7482 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01007483 Token * await_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007484 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007485 (await_var = _PyPegen_expect_token(p, AWAIT)) // token='AWAIT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007486 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007487 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007488 )
7489 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007490 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7491 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007492 return NULL;
7493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007494 int _end_lineno = _token->end_lineno;
7495 UNUSED(_end_lineno); // Only used by EXTRA macro
7496 int _end_col_offset = _token->end_col_offset;
7497 UNUSED(_end_col_offset); // Only used by EXTRA macro
7498 _res = CHECK_VERSION ( 5 , "Await expressions are" , _Py_Await ( a , EXTRA ) );
7499 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007500 p->error_indicator = 1;
7501 return NULL;
7502 }
7503 goto done;
7504 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007505 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007506 }
7507 { // primary
7508 expr_ty primary_var;
7509 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007510 (primary_var = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007511 )
7512 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007513 _res = primary_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007514 goto done;
7515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007516 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007517 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007518 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007519 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007520 _PyPegen_insert_memo(p, _mark, await_primary_type, _res);
7521 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007522}
7523
7524// Left-recursive
7525// primary:
7526// | primary '.' NAME
7527// | primary genexp
7528// | primary '(' arguments? ')'
7529// | primary '[' slices ']'
7530// | atom
7531static expr_ty primary_raw(Parser *);
7532static expr_ty
7533primary_rule(Parser *p)
7534{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007535 expr_ty _res = NULL;
7536 if (_PyPegen_is_memoized(p, primary_type, &_res))
7537 return _res;
7538 int _mark = p->mark;
7539 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007540 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007541 int tmpvar_7 = _PyPegen_update_memo(p, _mark, primary_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007542 if (tmpvar_7) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007543 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007544 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007545 p->mark = _mark;
7546 void *_raw = primary_raw(p);
7547 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007548 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007549 _resmark = p->mark;
7550 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007551 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007552 p->mark = _resmark;
7553 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007554}
7555static expr_ty
7556primary_raw(Parser *p)
7557{
7558 if (p->error_indicator) {
7559 return NULL;
7560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007561 expr_ty _res = NULL;
7562 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007563 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7564 p->error_indicator = 1;
7565 return NULL;
7566 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007567 int _start_lineno = p->tokens[_mark]->lineno;
7568 UNUSED(_start_lineno); // Only used by EXTRA macro
7569 int _start_col_offset = p->tokens[_mark]->col_offset;
7570 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007571 { // primary '.' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007572 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007573 expr_ty a;
7574 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007575 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007576 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007577 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007578 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007579 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007580 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007581 )
7582 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007583 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7584 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007585 return NULL;
7586 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007587 int _end_lineno = _token->end_lineno;
7588 UNUSED(_end_lineno); // Only used by EXTRA macro
7589 int _end_col_offset = _token->end_col_offset;
7590 UNUSED(_end_col_offset); // Only used by EXTRA macro
7591 _res = _Py_Attribute ( a , b -> v . Name . id , Load , EXTRA );
7592 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007593 p->error_indicator = 1;
7594 return NULL;
7595 }
7596 goto done;
7597 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007598 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007599 }
7600 { // primary genexp
7601 expr_ty a;
7602 expr_ty b;
7603 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007604 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007605 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007606 (b = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007607 )
7608 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007609 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7610 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007611 return NULL;
7612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007613 int _end_lineno = _token->end_lineno;
7614 UNUSED(_end_lineno); // Only used by EXTRA macro
7615 int _end_col_offset = _token->end_col_offset;
7616 UNUSED(_end_col_offset); // Only used by EXTRA macro
7617 _res = _Py_Call ( a , CHECK ( _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
7618 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007619 p->error_indicator = 1;
7620 return NULL;
7621 }
7622 goto done;
7623 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007624 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007625 }
7626 { // primary '(' arguments? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007627 Token * _literal;
7628 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007629 expr_ty a;
7630 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007631 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007632 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007633 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007634 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007635 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007636 (b = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007637 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007638 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007639 )
7640 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007641 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7642 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007643 return NULL;
7644 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007645 int _end_lineno = _token->end_lineno;
7646 UNUSED(_end_lineno); // Only used by EXTRA macro
7647 int _end_col_offset = _token->end_col_offset;
7648 UNUSED(_end_col_offset); // Only used by EXTRA macro
7649 _res = _Py_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
7650 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007651 p->error_indicator = 1;
7652 return NULL;
7653 }
7654 goto done;
7655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007656 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007657 }
7658 { // primary '[' slices ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007659 Token * _literal;
7660 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007661 expr_ty a;
7662 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007663 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007664 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007665 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007666 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007667 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007668 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007669 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007670 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007671 )
7672 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007673 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7674 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007675 return NULL;
7676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007677 int _end_lineno = _token->end_lineno;
7678 UNUSED(_end_lineno); // Only used by EXTRA macro
7679 int _end_col_offset = _token->end_col_offset;
7680 UNUSED(_end_col_offset); // Only used by EXTRA macro
7681 _res = _Py_Subscript ( a , b , Load , EXTRA );
7682 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007683 p->error_indicator = 1;
7684 return NULL;
7685 }
7686 goto done;
7687 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007688 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007689 }
7690 { // atom
7691 expr_ty atom_var;
7692 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007693 (atom_var = atom_rule(p)) // atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007694 )
7695 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007696 _res = atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007697 goto done;
7698 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007699 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007700 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007701 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007702 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007703 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007704}
7705
7706// slices: slice !',' | ','.slice+ ','?
7707static expr_ty
7708slices_rule(Parser *p)
7709{
7710 if (p->error_indicator) {
7711 return NULL;
7712 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007713 expr_ty _res = NULL;
7714 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007715 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7716 p->error_indicator = 1;
7717 return NULL;
7718 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007719 int _start_lineno = p->tokens[_mark]->lineno;
7720 UNUSED(_start_lineno); // Only used by EXTRA macro
7721 int _start_col_offset = p->tokens[_mark]->col_offset;
7722 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007723 { // slice !','
7724 expr_ty a;
7725 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007726 (a = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007727 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007728 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007729 )
7730 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007731 _res = a;
7732 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007733 p->error_indicator = 1;
7734 return NULL;
7735 }
7736 goto done;
7737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007738 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007739 }
7740 { // ','.slice+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007741 void *_opt_var;
7742 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007743 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007744 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007745 (a = _gather_93_rule(p)) // ','.slice+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007746 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007747 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007748 )
7749 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007750 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7751 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007752 return NULL;
7753 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007754 int _end_lineno = _token->end_lineno;
7755 UNUSED(_end_lineno); // Only used by EXTRA macro
7756 int _end_col_offset = _token->end_col_offset;
7757 UNUSED(_end_col_offset); // Only used by EXTRA macro
7758 _res = _Py_Tuple ( a , Load , EXTRA );
7759 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007760 p->error_indicator = 1;
7761 return NULL;
7762 }
7763 goto done;
7764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007765 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007766 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007767 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007768 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007769 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007770}
7771
7772// slice: expression? ':' expression? [':' expression?] | expression
7773static expr_ty
7774slice_rule(Parser *p)
7775{
7776 if (p->error_indicator) {
7777 return NULL;
7778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007779 expr_ty _res = NULL;
7780 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007781 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7782 p->error_indicator = 1;
7783 return NULL;
7784 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007785 int _start_lineno = p->tokens[_mark]->lineno;
7786 UNUSED(_start_lineno); // Only used by EXTRA macro
7787 int _start_col_offset = p->tokens[_mark]->col_offset;
7788 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007789 { // expression? ':' expression? [':' expression?]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007790 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007791 void *a;
7792 void *b;
7793 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007794 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007795 (a = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007796 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007797 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007798 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007799 (b = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007800 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007801 (c = _tmp_95_rule(p), 1) // [':' expression?]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007802 )
7803 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007804 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7805 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007806 return NULL;
7807 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007808 int _end_lineno = _token->end_lineno;
7809 UNUSED(_end_lineno); // Only used by EXTRA macro
7810 int _end_col_offset = _token->end_col_offset;
7811 UNUSED(_end_col_offset); // Only used by EXTRA macro
7812 _res = _Py_Slice ( a , b , c , EXTRA );
7813 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007814 p->error_indicator = 1;
7815 return NULL;
7816 }
7817 goto done;
7818 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007819 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007820 }
7821 { // expression
7822 expr_ty a;
7823 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007824 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007825 )
7826 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007827 _res = a;
7828 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007829 p->error_indicator = 1;
7830 return NULL;
7831 }
7832 goto done;
7833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007834 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007836 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007837 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007838 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007839}
7840
7841// atom:
7842// | NAME
7843// | 'True'
7844// | 'False'
7845// | 'None'
7846// | '__new_parser__'
7847// | &STRING strings
7848// | NUMBER
7849// | &'(' (tuple | group | genexp)
7850// | &'[' (list | listcomp)
7851// | &'{' (dict | set | dictcomp | setcomp)
7852// | '...'
7853static expr_ty
7854atom_rule(Parser *p)
7855{
7856 if (p->error_indicator) {
7857 return NULL;
7858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007859 expr_ty _res = NULL;
7860 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007861 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7862 p->error_indicator = 1;
7863 return NULL;
7864 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007865 int _start_lineno = p->tokens[_mark]->lineno;
7866 UNUSED(_start_lineno); // Only used by EXTRA macro
7867 int _start_col_offset = p->tokens[_mark]->col_offset;
7868 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007869 { // NAME
7870 expr_ty name_var;
7871 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007872 (name_var = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007873 )
7874 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007875 _res = name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007876 goto done;
7877 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007878 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007879 }
7880 { // 'True'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007881 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007882 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007883 (_keyword = _PyPegen_expect_token(p, 527)) // token='True'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007884 )
7885 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007886 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7887 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007888 return NULL;
7889 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007890 int _end_lineno = _token->end_lineno;
7891 UNUSED(_end_lineno); // Only used by EXTRA macro
7892 int _end_col_offset = _token->end_col_offset;
7893 UNUSED(_end_col_offset); // Only used by EXTRA macro
7894 _res = _Py_Constant ( Py_True , NULL , EXTRA );
7895 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007896 p->error_indicator = 1;
7897 return NULL;
7898 }
7899 goto done;
7900 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007901 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007902 }
7903 { // 'False'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007904 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007905 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007906 (_keyword = _PyPegen_expect_token(p, 528)) // token='False'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007907 )
7908 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007909 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7910 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007911 return NULL;
7912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007913 int _end_lineno = _token->end_lineno;
7914 UNUSED(_end_lineno); // Only used by EXTRA macro
7915 int _end_col_offset = _token->end_col_offset;
7916 UNUSED(_end_col_offset); // Only used by EXTRA macro
7917 _res = _Py_Constant ( Py_False , NULL , EXTRA );
7918 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007919 p->error_indicator = 1;
7920 return NULL;
7921 }
7922 goto done;
7923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007924 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007925 }
7926 { // 'None'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007927 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007928 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007929 (_keyword = _PyPegen_expect_token(p, 529)) // token='None'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007930 )
7931 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007932 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7933 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007934 return NULL;
7935 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007936 int _end_lineno = _token->end_lineno;
7937 UNUSED(_end_lineno); // Only used by EXTRA macro
7938 int _end_col_offset = _token->end_col_offset;
7939 UNUSED(_end_col_offset); // Only used by EXTRA macro
7940 _res = _Py_Constant ( Py_None , NULL , EXTRA );
7941 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007942 p->error_indicator = 1;
7943 return NULL;
7944 }
7945 goto done;
7946 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007947 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007948 }
7949 { // '__new_parser__'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007950 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007951 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007952 (_keyword = _PyPegen_expect_token(p, 530)) // token='__new_parser__'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007953 )
7954 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007955 _res = RAISE_SYNTAX_ERROR ( "You found it!" );
7956 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007957 p->error_indicator = 1;
7958 return NULL;
7959 }
7960 goto done;
7961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007962 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007963 }
7964 { // &STRING strings
7965 expr_ty strings_var;
7966 if (
7967 _PyPegen_lookahead(1, _PyPegen_string_token, p)
7968 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007969 (strings_var = strings_rule(p)) // strings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007970 )
7971 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007972 _res = strings_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007973 goto done;
7974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007975 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007976 }
7977 { // NUMBER
7978 expr_ty number_var;
7979 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007980 (number_var = _PyPegen_number_token(p)) // NUMBER
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007981 )
7982 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007983 _res = number_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007984 goto done;
7985 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007986 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007987 }
7988 { // &'(' (tuple | group | genexp)
Guido van Rossum3941d972020-05-01 09:42:03 -07007989 void *_tmp_96_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007990 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007991 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007992 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007993 (_tmp_96_var = _tmp_96_rule(p)) // tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007994 )
7995 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007996 _res = _tmp_96_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007997 goto done;
7998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007999 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008000 }
Pablo Galindo2b74c832020-04-27 18:02:07 +01008001 { // &'[' (list | listcomp)
Guido van Rossum3941d972020-05-01 09:42:03 -07008002 void *_tmp_97_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008003 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008004 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008005 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008006 (_tmp_97_var = _tmp_97_rule(p)) // list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008007 )
8008 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008009 _res = _tmp_97_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008010 goto done;
8011 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008012 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008013 }
Pablo Galindo2b74c832020-04-27 18:02:07 +01008014 { // &'{' (dict | set | dictcomp | setcomp)
Guido van Rossum3941d972020-05-01 09:42:03 -07008015 void *_tmp_98_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008016 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008017 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25) // token='{'
Pablo Galindo2b74c832020-04-27 18:02:07 +01008018 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008019 (_tmp_98_var = _tmp_98_rule(p)) // dict | set | dictcomp | setcomp
Pablo Galindo2b74c832020-04-27 18:02:07 +01008020 )
8021 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008022 _res = _tmp_98_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008023 goto done;
8024 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008025 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008026 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008027 { // '...'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008028 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008029 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008030 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008031 )
8032 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008033 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8034 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008035 return NULL;
8036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008037 int _end_lineno = _token->end_lineno;
8038 UNUSED(_end_lineno); // Only used by EXTRA macro
8039 int _end_col_offset = _token->end_col_offset;
8040 UNUSED(_end_col_offset); // Only used by EXTRA macro
8041 _res = _Py_Constant ( Py_Ellipsis , NULL , EXTRA );
8042 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008043 p->error_indicator = 1;
8044 return NULL;
8045 }
8046 goto done;
8047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008048 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008049 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008050 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008051 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008052 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008053}
8054
8055// strings: STRING+
8056static expr_ty
8057strings_rule(Parser *p)
8058{
8059 if (p->error_indicator) {
8060 return NULL;
8061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008062 expr_ty _res = NULL;
8063 if (_PyPegen_is_memoized(p, strings_type, &_res))
8064 return _res;
8065 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008066 { // STRING+
8067 asdl_seq * a;
8068 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008069 (a = _loop1_99_rule(p)) // STRING+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008070 )
8071 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008072 _res = _PyPegen_concatenate_strings ( p , a );
8073 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008074 p->error_indicator = 1;
8075 return NULL;
8076 }
8077 goto done;
8078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008079 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008081 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008082 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008083 _PyPegen_insert_memo(p, _mark, strings_type, _res);
8084 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008085}
8086
8087// list: '[' star_named_expressions? ']'
8088static expr_ty
8089list_rule(Parser *p)
8090{
8091 if (p->error_indicator) {
8092 return NULL;
8093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008094 expr_ty _res = NULL;
8095 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008096 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8097 p->error_indicator = 1;
8098 return NULL;
8099 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008100 int _start_lineno = p->tokens[_mark]->lineno;
8101 UNUSED(_start_lineno); // Only used by EXTRA macro
8102 int _start_col_offset = p->tokens[_mark]->col_offset;
8103 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008104 { // '[' star_named_expressions? ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008105 Token * _literal;
8106 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008107 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008108 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008109 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008110 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008111 (a = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008112 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008113 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008114 )
8115 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008116 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8117 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008118 return NULL;
8119 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008120 int _end_lineno = _token->end_lineno;
8121 UNUSED(_end_lineno); // Only used by EXTRA macro
8122 int _end_col_offset = _token->end_col_offset;
8123 UNUSED(_end_col_offset); // Only used by EXTRA macro
8124 _res = _Py_List ( a , Load , EXTRA );
8125 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008126 p->error_indicator = 1;
8127 return NULL;
8128 }
8129 goto done;
8130 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008131 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008133 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008134 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008135 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008136}
8137
8138// listcomp: '[' named_expression for_if_clauses ']' | invalid_comprehension
8139static expr_ty
8140listcomp_rule(Parser *p)
8141{
8142 if (p->error_indicator) {
8143 return NULL;
8144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008145 expr_ty _res = NULL;
8146 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008147 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8148 p->error_indicator = 1;
8149 return NULL;
8150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008151 int _start_lineno = p->tokens[_mark]->lineno;
8152 UNUSED(_start_lineno); // Only used by EXTRA macro
8153 int _start_col_offset = p->tokens[_mark]->col_offset;
8154 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008155 { // '[' named_expression for_if_clauses ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008156 Token * _literal;
8157 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008158 expr_ty a;
8159 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008160 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008161 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008162 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008163 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008164 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008165 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008166 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008167 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008168 )
8169 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008170 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8171 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008172 return NULL;
8173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008174 int _end_lineno = _token->end_lineno;
8175 UNUSED(_end_lineno); // Only used by EXTRA macro
8176 int _end_col_offset = _token->end_col_offset;
8177 UNUSED(_end_col_offset); // Only used by EXTRA macro
8178 _res = _Py_ListComp ( a , b , EXTRA );
8179 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008180 p->error_indicator = 1;
8181 return NULL;
8182 }
8183 goto done;
8184 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008185 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008186 }
8187 { // invalid_comprehension
8188 void *invalid_comprehension_var;
8189 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008190 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008191 )
8192 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008193 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008194 goto done;
8195 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008196 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008197 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008198 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008199 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008200 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008201}
8202
8203// tuple: '(' [star_named_expression ',' star_named_expressions?] ')'
8204static expr_ty
8205tuple_rule(Parser *p)
8206{
8207 if (p->error_indicator) {
8208 return NULL;
8209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008210 expr_ty _res = NULL;
8211 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008212 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8213 p->error_indicator = 1;
8214 return NULL;
8215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008216 int _start_lineno = p->tokens[_mark]->lineno;
8217 UNUSED(_start_lineno); // Only used by EXTRA macro
8218 int _start_col_offset = p->tokens[_mark]->col_offset;
8219 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008220 { // '(' [star_named_expression ',' star_named_expressions?] ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008221 Token * _literal;
8222 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008223 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008224 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008225 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008226 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008227 (a = _tmp_100_rule(p), 1) // [star_named_expression ',' star_named_expressions?]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008228 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008229 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008230 )
8231 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008232 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8233 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008234 return NULL;
8235 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008236 int _end_lineno = _token->end_lineno;
8237 UNUSED(_end_lineno); // Only used by EXTRA macro
8238 int _end_col_offset = _token->end_col_offset;
8239 UNUSED(_end_col_offset); // Only used by EXTRA macro
8240 _res = _Py_Tuple ( a , Load , EXTRA );
8241 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008242 p->error_indicator = 1;
8243 return NULL;
8244 }
8245 goto done;
8246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008247 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008249 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008250 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008251 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008252}
8253
8254// group: '(' (yield_expr | named_expression) ')'
8255static expr_ty
8256group_rule(Parser *p)
8257{
8258 if (p->error_indicator) {
8259 return NULL;
8260 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008261 expr_ty _res = NULL;
8262 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008263 { // '(' (yield_expr | named_expression) ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008264 Token * _literal;
8265 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008266 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008267 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008268 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008269 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008270 (a = _tmp_101_rule(p)) // yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008271 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008272 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008273 )
8274 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008275 _res = a;
8276 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008277 p->error_indicator = 1;
8278 return NULL;
8279 }
8280 goto done;
8281 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008282 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008283 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008284 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008285 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008286 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008287}
8288
8289// genexp: '(' expression for_if_clauses ')' | invalid_comprehension
8290static expr_ty
8291genexp_rule(Parser *p)
8292{
8293 if (p->error_indicator) {
8294 return NULL;
8295 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008296 expr_ty _res = NULL;
8297 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008298 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8299 p->error_indicator = 1;
8300 return NULL;
8301 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008302 int _start_lineno = p->tokens[_mark]->lineno;
8303 UNUSED(_start_lineno); // Only used by EXTRA macro
8304 int _start_col_offset = p->tokens[_mark]->col_offset;
8305 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008306 { // '(' expression for_if_clauses ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008307 Token * _literal;
8308 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008309 expr_ty a;
8310 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008311 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008312 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008313 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008314 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008315 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008316 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008317 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008318 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008319 )
8320 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008321 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8322 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008323 return NULL;
8324 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008325 int _end_lineno = _token->end_lineno;
8326 UNUSED(_end_lineno); // Only used by EXTRA macro
8327 int _end_col_offset = _token->end_col_offset;
8328 UNUSED(_end_col_offset); // Only used by EXTRA macro
8329 _res = _Py_GeneratorExp ( a , b , EXTRA );
8330 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008331 p->error_indicator = 1;
8332 return NULL;
8333 }
8334 goto done;
8335 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008336 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008337 }
8338 { // invalid_comprehension
8339 void *invalid_comprehension_var;
8340 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008341 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008342 )
8343 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008344 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008345 goto done;
8346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008347 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008349 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008350 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008351 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008352}
8353
8354// set: '{' expressions_list '}'
8355static expr_ty
8356set_rule(Parser *p)
8357{
8358 if (p->error_indicator) {
8359 return NULL;
8360 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008361 expr_ty _res = NULL;
8362 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008363 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8364 p->error_indicator = 1;
8365 return NULL;
8366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008367 int _start_lineno = p->tokens[_mark]->lineno;
8368 UNUSED(_start_lineno); // Only used by EXTRA macro
8369 int _start_col_offset = p->tokens[_mark]->col_offset;
8370 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008371 { // '{' expressions_list '}'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008372 Token * _literal;
8373 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008374 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008375 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008376 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008377 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008378 (a = expressions_list_rule(p)) // expressions_list
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008379 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008380 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008381 )
8382 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008383 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8384 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008385 return NULL;
8386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008387 int _end_lineno = _token->end_lineno;
8388 UNUSED(_end_lineno); // Only used by EXTRA macro
8389 int _end_col_offset = _token->end_col_offset;
8390 UNUSED(_end_col_offset); // Only used by EXTRA macro
8391 _res = _Py_Set ( a , EXTRA );
8392 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008393 p->error_indicator = 1;
8394 return NULL;
8395 }
8396 goto done;
8397 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008398 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008399 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008400 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008401 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008402 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008403}
8404
8405// setcomp: '{' expression for_if_clauses '}' | invalid_comprehension
8406static expr_ty
8407setcomp_rule(Parser *p)
8408{
8409 if (p->error_indicator) {
8410 return NULL;
8411 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008412 expr_ty _res = NULL;
8413 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008414 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8415 p->error_indicator = 1;
8416 return NULL;
8417 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008418 int _start_lineno = p->tokens[_mark]->lineno;
8419 UNUSED(_start_lineno); // Only used by EXTRA macro
8420 int _start_col_offset = p->tokens[_mark]->col_offset;
8421 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008422 { // '{' expression for_if_clauses '}'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008423 Token * _literal;
8424 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008425 expr_ty a;
8426 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008427 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008428 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008429 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008430 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008431 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008432 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008433 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008434 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008435 )
8436 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008437 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8438 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008439 return NULL;
8440 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008441 int _end_lineno = _token->end_lineno;
8442 UNUSED(_end_lineno); // Only used by EXTRA macro
8443 int _end_col_offset = _token->end_col_offset;
8444 UNUSED(_end_col_offset); // Only used by EXTRA macro
8445 _res = _Py_SetComp ( a , b , EXTRA );
8446 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008447 p->error_indicator = 1;
8448 return NULL;
8449 }
8450 goto done;
8451 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008452 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008453 }
8454 { // invalid_comprehension
8455 void *invalid_comprehension_var;
8456 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008457 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008458 )
8459 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008460 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008461 goto done;
8462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008463 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008465 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008466 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008467 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008468}
8469
8470// dict: '{' kvpairs? '}'
8471static expr_ty
8472dict_rule(Parser *p)
8473{
8474 if (p->error_indicator) {
8475 return NULL;
8476 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008477 expr_ty _res = NULL;
8478 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008479 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8480 p->error_indicator = 1;
8481 return NULL;
8482 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008483 int _start_lineno = p->tokens[_mark]->lineno;
8484 UNUSED(_start_lineno); // Only used by EXTRA macro
8485 int _start_col_offset = p->tokens[_mark]->col_offset;
8486 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008487 { // '{' kvpairs? '}'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008488 Token * _literal;
8489 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008490 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008491 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008492 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008493 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008494 (a = kvpairs_rule(p), 1) // kvpairs?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008495 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008496 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
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_Dict ( CHECK ( _PyPegen_get_keys ( p , a ) ) , CHECK ( _PyPegen_get_values ( p , a ) ) , 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// dictcomp: '{' kvpair for_if_clauses '}'
8522static expr_ty
8523dictcomp_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 { // '{' kvpair for_if_clauses '}'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008539 Token * _literal;
8540 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008541 KeyValuePair* a;
8542 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008543 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008544 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008545 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008546 (a = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008547 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008548 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008549 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008550 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008551 )
8552 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008553 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8554 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008555 return NULL;
8556 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008557 int _end_lineno = _token->end_lineno;
8558 UNUSED(_end_lineno); // Only used by EXTRA macro
8559 int _end_col_offset = _token->end_col_offset;
8560 UNUSED(_end_col_offset); // Only used by EXTRA macro
8561 _res = _Py_DictComp ( a -> key , a -> value , b , EXTRA );
8562 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008563 p->error_indicator = 1;
8564 return NULL;
8565 }
8566 goto done;
8567 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008568 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008570 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008571 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008572 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008573}
8574
8575// kvpairs: ','.kvpair+ ','?
8576static asdl_seq*
8577kvpairs_rule(Parser *p)
8578{
8579 if (p->error_indicator) {
8580 return NULL;
8581 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008582 asdl_seq* _res = NULL;
8583 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008584 { // ','.kvpair+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008585 void *_opt_var;
8586 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008587 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008588 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008589 (a = _gather_102_rule(p)) // ','.kvpair+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008590 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008591 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008592 )
8593 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008594 _res = a;
8595 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008596 p->error_indicator = 1;
8597 return NULL;
8598 }
8599 goto done;
8600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008601 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008603 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008604 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008605 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008606}
8607
8608// kvpair: '**' bitwise_or | expression ':' expression
8609static KeyValuePair*
8610kvpair_rule(Parser *p)
8611{
8612 if (p->error_indicator) {
8613 return NULL;
8614 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008615 KeyValuePair* _res = NULL;
8616 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008617 { // '**' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008618 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008619 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008620 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008621 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008622 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008623 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008624 )
8625 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008626 _res = _PyPegen_key_value_pair ( p , NULL , a );
8627 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008628 p->error_indicator = 1;
8629 return NULL;
8630 }
8631 goto done;
8632 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008633 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008634 }
8635 { // expression ':' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008636 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008637 expr_ty a;
8638 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008639 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008640 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008641 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008642 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008643 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008644 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008645 )
8646 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008647 _res = _PyPegen_key_value_pair ( p , a , b );
8648 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008649 p->error_indicator = 1;
8650 return NULL;
8651 }
8652 goto done;
8653 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008654 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008656 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008657 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008658 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008659}
8660
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008661// for_if_clauses: for_if_clause+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008662static asdl_seq*
8663for_if_clauses_rule(Parser *p)
8664{
8665 if (p->error_indicator) {
8666 return NULL;
8667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008668 asdl_seq* _res = NULL;
8669 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008670 { // for_if_clause+
Guido van Rossum3941d972020-05-01 09:42:03 -07008671 asdl_seq * _loop1_104_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008672 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008673 (_loop1_104_var = _loop1_104_rule(p)) // for_if_clause+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008674 )
8675 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008676 _res = _loop1_104_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008677 goto done;
8678 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008679 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008680 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008681 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008682 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008683 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008684}
8685
8686// for_if_clause:
8687// | ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*
8688// | 'for' star_targets 'in' disjunction (('if' disjunction))*
8689static comprehension_ty
8690for_if_clause_rule(Parser *p)
8691{
8692 if (p->error_indicator) {
8693 return NULL;
8694 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008695 comprehension_ty _res = NULL;
8696 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008697 { // ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008698 Token * _keyword;
8699 Token * _keyword_1;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008700 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01008701 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008702 expr_ty b;
8703 asdl_seq * c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008704 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008705 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008706 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008707 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008708 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008709 (a = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008710 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008711 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008712 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008713 (b = disjunction_rule(p)) // disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008714 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008715 (c = _loop0_105_rule(p)) // (('if' disjunction))*
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008716 )
8717 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008718 _res = CHECK_VERSION ( 6 , "Async comprehensions are" , _Py_comprehension ( a , b , c , 1 , p -> arena ) );
8719 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008720 p->error_indicator = 1;
8721 return NULL;
8722 }
8723 goto done;
8724 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008725 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008726 }
8727 { // 'for' star_targets 'in' disjunction (('if' disjunction))*
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008728 Token * _keyword;
8729 Token * _keyword_1;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008730 expr_ty a;
8731 expr_ty b;
8732 asdl_seq * c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008733 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008734 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008735 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008736 (a = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008737 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008738 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008739 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008740 (b = disjunction_rule(p)) // disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008741 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008742 (c = _loop0_106_rule(p)) // (('if' disjunction))*
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008743 )
8744 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008745 _res = _Py_comprehension ( a , b , c , 0 , p -> arena );
8746 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008747 p->error_indicator = 1;
8748 return NULL;
8749 }
8750 goto done;
8751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008752 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008753 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008754 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008755 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008756 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008757}
8758
8759// yield_expr: 'yield' 'from' expression | 'yield' star_expressions?
8760static expr_ty
8761yield_expr_rule(Parser *p)
8762{
8763 if (p->error_indicator) {
8764 return NULL;
8765 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008766 expr_ty _res = NULL;
8767 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008768 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8769 p->error_indicator = 1;
8770 return NULL;
8771 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008772 int _start_lineno = p->tokens[_mark]->lineno;
8773 UNUSED(_start_lineno); // Only used by EXTRA macro
8774 int _start_col_offset = p->tokens[_mark]->col_offset;
8775 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008776 { // 'yield' 'from' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008777 Token * _keyword;
8778 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008779 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008780 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008781 (_keyword = _PyPegen_expect_token(p, 504)) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008782 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008783 (_keyword_1 = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008784 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008785 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008786 )
8787 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008788 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8789 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008790 return NULL;
8791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008792 int _end_lineno = _token->end_lineno;
8793 UNUSED(_end_lineno); // Only used by EXTRA macro
8794 int _end_col_offset = _token->end_col_offset;
8795 UNUSED(_end_col_offset); // Only used by EXTRA macro
8796 _res = _Py_YieldFrom ( a , EXTRA );
8797 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008798 p->error_indicator = 1;
8799 return NULL;
8800 }
8801 goto done;
8802 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008803 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008804 }
8805 { // 'yield' star_expressions?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008806 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008807 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008808 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008809 (_keyword = _PyPegen_expect_token(p, 504)) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008810 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008811 (a = star_expressions_rule(p), 1) // star_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008812 )
8813 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008814 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8815 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008816 return NULL;
8817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008818 int _end_lineno = _token->end_lineno;
8819 UNUSED(_end_lineno); // Only used by EXTRA macro
8820 int _end_col_offset = _token->end_col_offset;
8821 UNUSED(_end_col_offset); // Only used by EXTRA macro
8822 _res = _Py_Yield ( a , EXTRA );
8823 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008824 p->error_indicator = 1;
8825 return NULL;
8826 }
8827 goto done;
8828 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008829 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008831 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008832 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008833 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008834}
8835
8836// arguments: args ','? &')' | incorrect_arguments
8837static expr_ty
8838arguments_rule(Parser *p)
8839{
8840 if (p->error_indicator) {
8841 return NULL;
8842 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008843 expr_ty _res = NULL;
8844 if (_PyPegen_is_memoized(p, arguments_type, &_res))
8845 return _res;
8846 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008847 { // args ','? &')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008848 void *_opt_var;
8849 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008850 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008851 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008852 (a = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008853 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008854 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008855 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008856 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008857 )
8858 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008859 _res = a;
8860 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008861 p->error_indicator = 1;
8862 return NULL;
8863 }
8864 goto done;
8865 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008866 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008867 }
8868 { // incorrect_arguments
8869 void *incorrect_arguments_var;
8870 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008871 (incorrect_arguments_var = incorrect_arguments_rule(p)) // incorrect_arguments
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008872 )
8873 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008874 _res = incorrect_arguments_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008875 goto done;
8876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008877 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008879 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008880 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008881 _PyPegen_insert_memo(p, _mark, arguments_type, _res);
8882 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008883}
8884
8885// args: starred_expression [',' args] | kwargs | named_expression [',' args]
8886static expr_ty
8887args_rule(Parser *p)
8888{
8889 if (p->error_indicator) {
8890 return NULL;
8891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008892 expr_ty _res = NULL;
8893 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008894 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8895 p->error_indicator = 1;
8896 return NULL;
8897 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008898 int _start_lineno = p->tokens[_mark]->lineno;
8899 UNUSED(_start_lineno); // Only used by EXTRA macro
8900 int _start_col_offset = p->tokens[_mark]->col_offset;
8901 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008902 { // starred_expression [',' args]
8903 expr_ty a;
8904 void *b;
8905 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008906 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008907 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008908 (b = _tmp_107_rule(p), 1) // [',' args]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008909 )
8910 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008911 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8912 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008913 return NULL;
8914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008915 int _end_lineno = _token->end_lineno;
8916 UNUSED(_end_lineno); // Only used by EXTRA macro
8917 int _end_col_offset = _token->end_col_offset;
8918 UNUSED(_end_col_offset); // Only used by EXTRA macro
8919 _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 );
8920 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008921 p->error_indicator = 1;
8922 return NULL;
8923 }
8924 goto done;
8925 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008926 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008927 }
8928 { // kwargs
8929 asdl_seq* a;
8930 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008931 (a = kwargs_rule(p)) // kwargs
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008932 )
8933 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008934 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8935 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008936 return NULL;
8937 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008938 int _end_lineno = _token->end_lineno;
8939 UNUSED(_end_lineno); // Only used by EXTRA macro
8940 int _end_col_offset = _token->end_col_offset;
8941 UNUSED(_end_col_offset); // Only used by EXTRA macro
8942 _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 );
8943 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008944 p->error_indicator = 1;
8945 return NULL;
8946 }
8947 goto done;
8948 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008949 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008950 }
8951 { // named_expression [',' args]
8952 expr_ty a;
8953 void *b;
8954 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008955 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008956 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008957 (b = _tmp_108_rule(p), 1) // [',' args]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008958 )
8959 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008960 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8961 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008962 return NULL;
8963 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008964 int _end_lineno = _token->end_lineno;
8965 UNUSED(_end_lineno); // Only used by EXTRA macro
8966 int _end_col_offset = _token->end_col_offset;
8967 UNUSED(_end_col_offset); // Only used by EXTRA macro
8968 _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 );
8969 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008970 p->error_indicator = 1;
8971 return NULL;
8972 }
8973 goto done;
8974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008975 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008976 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008977 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008978 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008979 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008980}
8981
8982// kwargs:
8983// | ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
8984// | ','.kwarg_or_starred+
8985// | ','.kwarg_or_double_starred+
8986static asdl_seq*
8987kwargs_rule(Parser *p)
8988{
8989 if (p->error_indicator) {
8990 return NULL;
8991 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008992 asdl_seq* _res = NULL;
8993 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008994 { // ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008995 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008996 asdl_seq * a;
8997 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008998 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008999 (a = _gather_109_rule(p)) // ','.kwarg_or_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009000 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009001 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009002 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009003 (b = _gather_111_rule(p)) // ','.kwarg_or_double_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009004 )
9005 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009006 _res = _PyPegen_join_sequences ( p , a , b );
9007 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009008 p->error_indicator = 1;
9009 return NULL;
9010 }
9011 goto done;
9012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009013 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009014 }
9015 { // ','.kwarg_or_starred+
Guido van Rossum3941d972020-05-01 09:42:03 -07009016 asdl_seq * _gather_113_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009017 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009018 (_gather_113_var = _gather_113_rule(p)) // ','.kwarg_or_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009019 )
9020 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009021 _res = _gather_113_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009022 goto done;
9023 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009024 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009025 }
9026 { // ','.kwarg_or_double_starred+
Guido van Rossum3941d972020-05-01 09:42:03 -07009027 asdl_seq * _gather_115_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009028 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009029 (_gather_115_var = _gather_115_rule(p)) // ','.kwarg_or_double_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009030 )
9031 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009032 _res = _gather_115_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009033 goto done;
9034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009035 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009037 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009038 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009039 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009040}
9041
9042// starred_expression: '*' expression
9043static expr_ty
9044starred_expression_rule(Parser *p)
9045{
9046 if (p->error_indicator) {
9047 return NULL;
9048 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009049 expr_ty _res = NULL;
9050 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009051 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9052 p->error_indicator = 1;
9053 return NULL;
9054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009055 int _start_lineno = p->tokens[_mark]->lineno;
9056 UNUSED(_start_lineno); // Only used by EXTRA macro
9057 int _start_col_offset = p->tokens[_mark]->col_offset;
9058 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009059 { // '*' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009060 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009061 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009062 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009063 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009064 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009065 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009066 )
9067 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009068 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9069 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009070 return NULL;
9071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009072 int _end_lineno = _token->end_lineno;
9073 UNUSED(_end_lineno); // Only used by EXTRA macro
9074 int _end_col_offset = _token->end_col_offset;
9075 UNUSED(_end_col_offset); // Only used by EXTRA macro
9076 _res = _Py_Starred ( a , Load , EXTRA );
9077 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009078 p->error_indicator = 1;
9079 return NULL;
9080 }
9081 goto done;
9082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009083 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009084 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009085 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009086 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009087 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009088}
9089
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009090// kwarg_or_starred: NAME '=' expression | starred_expression | invalid_kwarg
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009091static KeywordOrStarred*
9092kwarg_or_starred_rule(Parser *p)
9093{
9094 if (p->error_indicator) {
9095 return NULL;
9096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009097 KeywordOrStarred* _res = NULL;
9098 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009099 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9100 p->error_indicator = 1;
9101 return NULL;
9102 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009103 int _start_lineno = p->tokens[_mark]->lineno;
9104 UNUSED(_start_lineno); // Only used by EXTRA macro
9105 int _start_col_offset = p->tokens[_mark]->col_offset;
9106 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009107 { // NAME '=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009108 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009109 expr_ty a;
9110 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009111 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009112 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009113 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009114 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009115 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009116 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009117 )
9118 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009119 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9120 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009121 return NULL;
9122 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009123 int _end_lineno = _token->end_lineno;
9124 UNUSED(_end_lineno); // Only used by EXTRA macro
9125 int _end_col_offset = _token->end_col_offset;
9126 UNUSED(_end_col_offset); // Only used by EXTRA macro
9127 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
9128 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009129 p->error_indicator = 1;
9130 return NULL;
9131 }
9132 goto done;
9133 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009134 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009135 }
9136 { // starred_expression
9137 expr_ty a;
9138 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009139 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009140 )
9141 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009142 _res = _PyPegen_keyword_or_starred ( p , a , 0 );
9143 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009144 p->error_indicator = 1;
9145 return NULL;
9146 }
9147 goto done;
9148 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009149 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009150 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009151 { // invalid_kwarg
9152 void *invalid_kwarg_var;
9153 if (
9154 (invalid_kwarg_var = invalid_kwarg_rule(p)) // invalid_kwarg
9155 )
9156 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009157 _res = invalid_kwarg_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009158 goto done;
9159 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009160 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009161 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009162 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009163 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009164 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009165}
9166
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009167// kwarg_or_double_starred: NAME '=' expression | '**' expression | invalid_kwarg
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009168static KeywordOrStarred*
9169kwarg_or_double_starred_rule(Parser *p)
9170{
9171 if (p->error_indicator) {
9172 return NULL;
9173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009174 KeywordOrStarred* _res = NULL;
9175 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009176 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9177 p->error_indicator = 1;
9178 return NULL;
9179 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009180 int _start_lineno = p->tokens[_mark]->lineno;
9181 UNUSED(_start_lineno); // Only used by EXTRA macro
9182 int _start_col_offset = p->tokens[_mark]->col_offset;
9183 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009184 { // NAME '=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009185 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009186 expr_ty a;
9187 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009188 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009189 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009190 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009191 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009192 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009193 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009194 )
9195 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009196 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9197 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009198 return NULL;
9199 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009200 int _end_lineno = _token->end_lineno;
9201 UNUSED(_end_lineno); // Only used by EXTRA macro
9202 int _end_col_offset = _token->end_col_offset;
9203 UNUSED(_end_col_offset); // Only used by EXTRA macro
9204 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
9205 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009206 p->error_indicator = 1;
9207 return NULL;
9208 }
9209 goto done;
9210 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009211 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009212 }
9213 { // '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009214 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009215 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009216 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009217 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009218 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009219 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009220 )
9221 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009222 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9223 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009224 return NULL;
9225 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009226 int _end_lineno = _token->end_lineno;
9227 UNUSED(_end_lineno); // Only used by EXTRA macro
9228 int _end_col_offset = _token->end_col_offset;
9229 UNUSED(_end_col_offset); // Only used by EXTRA macro
9230 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( NULL , a , EXTRA ) ) , 1 );
9231 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009232 p->error_indicator = 1;
9233 return NULL;
9234 }
9235 goto done;
9236 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009237 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009238 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009239 { // invalid_kwarg
9240 void *invalid_kwarg_var;
9241 if (
9242 (invalid_kwarg_var = invalid_kwarg_rule(p)) // invalid_kwarg
9243 )
9244 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009245 _res = invalid_kwarg_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009246 goto done;
9247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009248 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009249 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009250 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009251 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009252 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009253}
9254
9255// star_targets: star_target !',' | star_target ((',' star_target))* ','?
9256static expr_ty
9257star_targets_rule(Parser *p)
9258{
9259 if (p->error_indicator) {
9260 return NULL;
9261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009262 expr_ty _res = NULL;
9263 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009264 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9265 p->error_indicator = 1;
9266 return NULL;
9267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009268 int _start_lineno = p->tokens[_mark]->lineno;
9269 UNUSED(_start_lineno); // Only used by EXTRA macro
9270 int _start_col_offset = p->tokens[_mark]->col_offset;
9271 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009272 { // star_target !','
9273 expr_ty a;
9274 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009275 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009276 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009277 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009278 )
9279 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009280 _res = a;
9281 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009282 p->error_indicator = 1;
9283 return NULL;
9284 }
9285 goto done;
9286 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009287 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009288 }
9289 { // star_target ((',' star_target))* ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009290 void *_opt_var;
9291 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009292 expr_ty a;
9293 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009294 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009295 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009296 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009297 (b = _loop0_117_rule(p)) // ((',' star_target))*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009298 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009299 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009300 )
9301 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009302 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9303 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009304 return NULL;
9305 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009306 int _end_lineno = _token->end_lineno;
9307 UNUSED(_end_lineno); // Only used by EXTRA macro
9308 int _end_col_offset = _token->end_col_offset;
9309 UNUSED(_end_col_offset); // Only used by EXTRA macro
9310 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Store , EXTRA );
9311 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009312 p->error_indicator = 1;
9313 return NULL;
9314 }
9315 goto done;
9316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009317 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009318 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009319 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009320 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009321 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009322}
9323
9324// star_targets_seq: ','.star_target+ ','?
9325static asdl_seq*
9326star_targets_seq_rule(Parser *p)
9327{
9328 if (p->error_indicator) {
9329 return NULL;
9330 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009331 asdl_seq* _res = NULL;
9332 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009333 { // ','.star_target+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009334 void *_opt_var;
9335 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009336 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009337 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009338 (a = _gather_118_rule(p)) // ','.star_target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009339 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009340 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009341 )
9342 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009343 _res = a;
9344 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009345 p->error_indicator = 1;
9346 return NULL;
9347 }
9348 goto done;
9349 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009350 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009351 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009352 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009353 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009354 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009355}
9356
9357// star_target:
9358// | '*' (!'*' star_target)
9359// | t_primary '.' NAME !t_lookahead
9360// | t_primary '[' slices ']' !t_lookahead
9361// | star_atom
9362static expr_ty
9363star_target_rule(Parser *p)
9364{
9365 if (p->error_indicator) {
9366 return NULL;
9367 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009368 expr_ty _res = NULL;
9369 if (_PyPegen_is_memoized(p, star_target_type, &_res))
9370 return _res;
9371 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009372 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9373 p->error_indicator = 1;
9374 return NULL;
9375 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009376 int _start_lineno = p->tokens[_mark]->lineno;
9377 UNUSED(_start_lineno); // Only used by EXTRA macro
9378 int _start_col_offset = p->tokens[_mark]->col_offset;
9379 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009380 { // '*' (!'*' star_target)
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009381 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009382 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009383 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009384 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009385 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009386 (a = _tmp_120_rule(p)) // !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009387 )
9388 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009389 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9390 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009391 return NULL;
9392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009393 int _end_lineno = _token->end_lineno;
9394 UNUSED(_end_lineno); // Only used by EXTRA macro
9395 int _end_col_offset = _token->end_col_offset;
9396 UNUSED(_end_col_offset); // Only used by EXTRA macro
9397 _res = _Py_Starred ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , Store , EXTRA );
9398 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009399 p->error_indicator = 1;
9400 return NULL;
9401 }
9402 goto done;
9403 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009404 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009405 }
9406 { // t_primary '.' NAME !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009407 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009408 expr_ty a;
9409 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009410 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009411 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009412 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009413 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009414 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009415 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009416 &&
9417 _PyPegen_lookahead(0, t_lookahead_rule, p)
9418 )
9419 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009420 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9421 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009422 return NULL;
9423 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009424 int _end_lineno = _token->end_lineno;
9425 UNUSED(_end_lineno); // Only used by EXTRA macro
9426 int _end_col_offset = _token->end_col_offset;
9427 UNUSED(_end_col_offset); // Only used by EXTRA macro
9428 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
9429 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009430 p->error_indicator = 1;
9431 return NULL;
9432 }
9433 goto done;
9434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009435 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009436 }
9437 { // t_primary '[' slices ']' !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009438 Token * _literal;
9439 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009440 expr_ty a;
9441 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009442 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009443 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009444 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009445 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009446 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009447 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009448 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009449 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009450 &&
9451 _PyPegen_lookahead(0, t_lookahead_rule, p)
9452 )
9453 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009454 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9455 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009456 return NULL;
9457 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009458 int _end_lineno = _token->end_lineno;
9459 UNUSED(_end_lineno); // Only used by EXTRA macro
9460 int _end_col_offset = _token->end_col_offset;
9461 UNUSED(_end_col_offset); // Only used by EXTRA macro
9462 _res = _Py_Subscript ( a , b , Store , EXTRA );
9463 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009464 p->error_indicator = 1;
9465 return NULL;
9466 }
9467 goto done;
9468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009469 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009470 }
9471 { // star_atom
9472 expr_ty star_atom_var;
9473 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009474 (star_atom_var = star_atom_rule(p)) // star_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009475 )
9476 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009477 _res = star_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009478 goto done;
9479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009480 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009481 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009482 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009483 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009484 _PyPegen_insert_memo(p, _mark, star_target_type, _res);
9485 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009486}
9487
9488// star_atom:
9489// | NAME
9490// | '(' star_target ')'
9491// | '(' star_targets_seq? ')'
9492// | '[' star_targets_seq? ']'
9493static expr_ty
9494star_atom_rule(Parser *p)
9495{
9496 if (p->error_indicator) {
9497 return NULL;
9498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009499 expr_ty _res = NULL;
9500 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009501 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9502 p->error_indicator = 1;
9503 return NULL;
9504 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009505 int _start_lineno = p->tokens[_mark]->lineno;
9506 UNUSED(_start_lineno); // Only used by EXTRA macro
9507 int _start_col_offset = p->tokens[_mark]->col_offset;
9508 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009509 { // NAME
9510 expr_ty a;
9511 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009512 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009513 )
9514 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009515 _res = _PyPegen_set_expr_context ( p , a , Store );
9516 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009517 p->error_indicator = 1;
9518 return NULL;
9519 }
9520 goto done;
9521 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009522 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009523 }
9524 { // '(' star_target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009525 Token * _literal;
9526 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009527 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009528 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009529 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009530 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009531 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009532 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009533 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009534 )
9535 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009536 _res = _PyPegen_set_expr_context ( p , a , Store );
9537 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009538 p->error_indicator = 1;
9539 return NULL;
9540 }
9541 goto done;
9542 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009543 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009544 }
9545 { // '(' star_targets_seq? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009546 Token * _literal;
9547 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009548 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009549 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009550 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009551 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009552 (a = star_targets_seq_rule(p), 1) // star_targets_seq?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009553 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009554 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009555 )
9556 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009557 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9558 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009559 return NULL;
9560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009561 int _end_lineno = _token->end_lineno;
9562 UNUSED(_end_lineno); // Only used by EXTRA macro
9563 int _end_col_offset = _token->end_col_offset;
9564 UNUSED(_end_col_offset); // Only used by EXTRA macro
9565 _res = _Py_Tuple ( a , Store , EXTRA );
9566 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009567 p->error_indicator = 1;
9568 return NULL;
9569 }
9570 goto done;
9571 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009572 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009573 }
9574 { // '[' star_targets_seq? ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009575 Token * _literal;
9576 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009577 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009578 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009579 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009580 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009581 (a = star_targets_seq_rule(p), 1) // star_targets_seq?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009582 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009583 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009584 )
9585 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009586 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9587 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009588 return NULL;
9589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009590 int _end_lineno = _token->end_lineno;
9591 UNUSED(_end_lineno); // Only used by EXTRA macro
9592 int _end_col_offset = _token->end_col_offset;
9593 UNUSED(_end_col_offset); // Only used by EXTRA macro
9594 _res = _Py_List ( a , Store , EXTRA );
9595 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009596 p->error_indicator = 1;
9597 return NULL;
9598 }
9599 goto done;
9600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009601 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009603 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009604 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009605 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009606}
9607
9608// inside_paren_ann_assign_target:
9609// | ann_assign_subscript_attribute_target
9610// | NAME
9611// | '(' inside_paren_ann_assign_target ')'
9612static expr_ty
9613inside_paren_ann_assign_target_rule(Parser *p)
9614{
9615 if (p->error_indicator) {
9616 return NULL;
9617 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009618 expr_ty _res = NULL;
9619 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009620 { // ann_assign_subscript_attribute_target
9621 expr_ty ann_assign_subscript_attribute_target_var;
9622 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009623 (ann_assign_subscript_attribute_target_var = ann_assign_subscript_attribute_target_rule(p)) // ann_assign_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009624 )
9625 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009626 _res = ann_assign_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009627 goto done;
9628 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009629 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009630 }
9631 { // NAME
9632 expr_ty a;
9633 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009634 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009635 )
9636 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009637 _res = _PyPegen_set_expr_context ( p , a , Store );
9638 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009639 p->error_indicator = 1;
9640 return NULL;
9641 }
9642 goto done;
9643 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009644 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009645 }
9646 { // '(' inside_paren_ann_assign_target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009647 Token * _literal;
9648 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009649 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009650 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009651 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009652 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009653 (a = inside_paren_ann_assign_target_rule(p)) // inside_paren_ann_assign_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009654 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009655 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009656 )
9657 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009658 _res = a;
9659 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009660 p->error_indicator = 1;
9661 return NULL;
9662 }
9663 goto done;
9664 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009665 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009666 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009667 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009668 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009669 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009670}
9671
9672// ann_assign_subscript_attribute_target:
9673// | t_primary '.' NAME !t_lookahead
9674// | t_primary '[' slices ']' !t_lookahead
9675static expr_ty
9676ann_assign_subscript_attribute_target_rule(Parser *p)
9677{
9678 if (p->error_indicator) {
9679 return NULL;
9680 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009681 expr_ty _res = NULL;
9682 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009683 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9684 p->error_indicator = 1;
9685 return NULL;
9686 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009687 int _start_lineno = p->tokens[_mark]->lineno;
9688 UNUSED(_start_lineno); // Only used by EXTRA macro
9689 int _start_col_offset = p->tokens[_mark]->col_offset;
9690 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009691 { // t_primary '.' NAME !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009692 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009693 expr_ty a;
9694 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009695 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009696 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009697 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009698 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009699 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009700 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009701 &&
9702 _PyPegen_lookahead(0, t_lookahead_rule, p)
9703 )
9704 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009705 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9706 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009707 return NULL;
9708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009709 int _end_lineno = _token->end_lineno;
9710 UNUSED(_end_lineno); // Only used by EXTRA macro
9711 int _end_col_offset = _token->end_col_offset;
9712 UNUSED(_end_col_offset); // Only used by EXTRA macro
9713 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
9714 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009715 p->error_indicator = 1;
9716 return NULL;
9717 }
9718 goto done;
9719 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009720 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009721 }
9722 { // t_primary '[' slices ']' !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009723 Token * _literal;
9724 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009725 expr_ty a;
9726 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009727 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009728 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009729 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009730 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009731 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009732 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009733 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009734 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009735 &&
9736 _PyPegen_lookahead(0, t_lookahead_rule, p)
9737 )
9738 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009739 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9740 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009741 return NULL;
9742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009743 int _end_lineno = _token->end_lineno;
9744 UNUSED(_end_lineno); // Only used by EXTRA macro
9745 int _end_col_offset = _token->end_col_offset;
9746 UNUSED(_end_col_offset); // Only used by EXTRA macro
9747 _res = _Py_Subscript ( a , b , Store , EXTRA );
9748 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009749 p->error_indicator = 1;
9750 return NULL;
9751 }
9752 goto done;
9753 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009754 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009755 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009756 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009757 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009758 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009759}
9760
9761// del_targets: ','.del_target+ ','?
9762static asdl_seq*
9763del_targets_rule(Parser *p)
9764{
9765 if (p->error_indicator) {
9766 return NULL;
9767 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009768 asdl_seq* _res = NULL;
9769 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009770 { // ','.del_target+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009771 void *_opt_var;
9772 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009773 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009774 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009775 (a = _gather_121_rule(p)) // ','.del_target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009776 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009777 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009778 )
9779 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009780 _res = a;
9781 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009782 p->error_indicator = 1;
9783 return NULL;
9784 }
9785 goto done;
9786 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009787 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009788 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009789 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009790 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009791 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009792}
9793
9794// del_target:
Shantanu27c0d9b2020-05-11 14:53:58 -07009795// | t_primary '.' NAME &del_target_end
9796// | t_primary '[' slices ']' &del_target_end
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009797// | del_t_atom
9798static expr_ty
9799del_target_rule(Parser *p)
9800{
9801 if (p->error_indicator) {
9802 return NULL;
9803 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009804 expr_ty _res = NULL;
9805 if (_PyPegen_is_memoized(p, del_target_type, &_res))
9806 return _res;
9807 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009808 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9809 p->error_indicator = 1;
9810 return NULL;
9811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009812 int _start_lineno = p->tokens[_mark]->lineno;
9813 UNUSED(_start_lineno); // Only used by EXTRA macro
9814 int _start_col_offset = p->tokens[_mark]->col_offset;
9815 UNUSED(_start_col_offset); // Only used by EXTRA macro
Shantanu27c0d9b2020-05-11 14:53:58 -07009816 { // t_primary '.' NAME &del_target_end
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009817 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009818 expr_ty a;
9819 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009820 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009821 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009822 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009823 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009824 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009825 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009826 &&
Shantanu27c0d9b2020-05-11 14:53:58 -07009827 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009828 )
9829 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009830 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9831 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009832 return NULL;
9833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009834 int _end_lineno = _token->end_lineno;
9835 UNUSED(_end_lineno); // Only used by EXTRA macro
9836 int _end_col_offset = _token->end_col_offset;
9837 UNUSED(_end_col_offset); // Only used by EXTRA macro
9838 _res = _Py_Attribute ( a , b -> v . Name . id , Del , EXTRA );
9839 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009840 p->error_indicator = 1;
9841 return NULL;
9842 }
9843 goto done;
9844 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009845 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009846 }
Shantanu27c0d9b2020-05-11 14:53:58 -07009847 { // t_primary '[' slices ']' &del_target_end
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009848 Token * _literal;
9849 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009850 expr_ty a;
9851 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009852 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009853 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009854 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009855 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009856 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009857 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009858 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009859 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009860 &&
Shantanu27c0d9b2020-05-11 14:53:58 -07009861 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009862 )
9863 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009864 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9865 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009866 return NULL;
9867 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009868 int _end_lineno = _token->end_lineno;
9869 UNUSED(_end_lineno); // Only used by EXTRA macro
9870 int _end_col_offset = _token->end_col_offset;
9871 UNUSED(_end_col_offset); // Only used by EXTRA macro
9872 _res = _Py_Subscript ( a , b , Del , EXTRA );
9873 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009874 p->error_indicator = 1;
9875 return NULL;
9876 }
9877 goto done;
9878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009879 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009880 }
9881 { // del_t_atom
9882 expr_ty del_t_atom_var;
9883 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009884 (del_t_atom_var = del_t_atom_rule(p)) // del_t_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009885 )
9886 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009887 _res = del_t_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009888 goto done;
9889 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009890 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009892 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009893 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009894 _PyPegen_insert_memo(p, _mark, del_target_type, _res);
9895 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009896}
9897
Shantanu27c0d9b2020-05-11 14:53:58 -07009898// del_t_atom:
9899// | NAME &del_target_end
9900// | '(' del_target ')'
9901// | '(' del_targets? ')'
9902// | '[' del_targets? ']'
9903// | invalid_del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009904static expr_ty
9905del_t_atom_rule(Parser *p)
9906{
9907 if (p->error_indicator) {
9908 return NULL;
9909 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009910 expr_ty _res = NULL;
9911 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009912 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9913 p->error_indicator = 1;
9914 return NULL;
9915 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009916 int _start_lineno = p->tokens[_mark]->lineno;
9917 UNUSED(_start_lineno); // Only used by EXTRA macro
9918 int _start_col_offset = p->tokens[_mark]->col_offset;
9919 UNUSED(_start_col_offset); // Only used by EXTRA macro
Shantanu27c0d9b2020-05-11 14:53:58 -07009920 { // NAME &del_target_end
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009921 expr_ty a;
9922 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009923 (a = _PyPegen_name_token(p)) // NAME
Shantanu27c0d9b2020-05-11 14:53:58 -07009924 &&
9925 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009926 )
9927 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009928 _res = _PyPegen_set_expr_context ( p , a , Del );
9929 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009930 p->error_indicator = 1;
9931 return NULL;
9932 }
9933 goto done;
9934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009935 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009936 }
9937 { // '(' del_target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009938 Token * _literal;
9939 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009940 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009941 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009942 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009943 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009944 (a = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009945 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009946 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009947 )
9948 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009949 _res = _PyPegen_set_expr_context ( p , a , Del );
9950 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009951 p->error_indicator = 1;
9952 return NULL;
9953 }
9954 goto done;
9955 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009956 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009957 }
9958 { // '(' del_targets? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009959 Token * _literal;
9960 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009961 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009962 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009963 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009964 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009965 (a = del_targets_rule(p), 1) // del_targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009966 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009967 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009968 )
9969 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009970 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9971 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009972 return NULL;
9973 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009974 int _end_lineno = _token->end_lineno;
9975 UNUSED(_end_lineno); // Only used by EXTRA macro
9976 int _end_col_offset = _token->end_col_offset;
9977 UNUSED(_end_col_offset); // Only used by EXTRA macro
9978 _res = _Py_Tuple ( a , Del , EXTRA );
9979 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009980 p->error_indicator = 1;
9981 return NULL;
9982 }
9983 goto done;
9984 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009985 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009986 }
9987 { // '[' del_targets? ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009988 Token * _literal;
9989 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009990 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009991 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009992 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009993 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009994 (a = del_targets_rule(p), 1) // del_targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009995 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009996 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009997 )
9998 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009999 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10000 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010001 return NULL;
10002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010003 int _end_lineno = _token->end_lineno;
10004 UNUSED(_end_lineno); // Only used by EXTRA macro
10005 int _end_col_offset = _token->end_col_offset;
10006 UNUSED(_end_col_offset); // Only used by EXTRA macro
10007 _res = _Py_List ( a , Del , EXTRA );
10008 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010009 p->error_indicator = 1;
10010 return NULL;
10011 }
10012 goto done;
10013 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010014 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010015 }
Shantanu27c0d9b2020-05-11 14:53:58 -070010016 { // invalid_del_target
10017 void *invalid_del_target_var;
10018 if (
10019 (invalid_del_target_var = invalid_del_target_rule(p)) // invalid_del_target
10020 )
10021 {
10022 _res = invalid_del_target_var;
10023 goto done;
10024 }
10025 p->mark = _mark;
10026 }
10027 _res = NULL;
10028 done:
10029 return _res;
10030}
10031
10032// del_target_end: ')' | ']' | ',' | ';' | NEWLINE
10033static void *
10034del_target_end_rule(Parser *p)
10035{
10036 if (p->error_indicator) {
10037 return NULL;
10038 }
10039 void * _res = NULL;
10040 int _mark = p->mark;
10041 { // ')'
10042 Token * _literal;
10043 if (
10044 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
10045 )
10046 {
10047 _res = _literal;
10048 goto done;
10049 }
10050 p->mark = _mark;
10051 }
10052 { // ']'
10053 Token * _literal;
10054 if (
10055 (_literal = _PyPegen_expect_token(p, 10)) // token=']'
10056 )
10057 {
10058 _res = _literal;
10059 goto done;
10060 }
10061 p->mark = _mark;
10062 }
10063 { // ','
10064 Token * _literal;
10065 if (
10066 (_literal = _PyPegen_expect_token(p, 12)) // token=','
10067 )
10068 {
10069 _res = _literal;
10070 goto done;
10071 }
10072 p->mark = _mark;
10073 }
10074 { // ';'
10075 Token * _literal;
10076 if (
10077 (_literal = _PyPegen_expect_token(p, 13)) // token=';'
10078 )
10079 {
10080 _res = _literal;
10081 goto done;
10082 }
10083 p->mark = _mark;
10084 }
10085 { // NEWLINE
10086 Token * newline_var;
10087 if (
10088 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
10089 )
10090 {
10091 _res = newline_var;
10092 goto done;
10093 }
10094 p->mark = _mark;
10095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010096 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010097 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010098 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010099}
10100
10101// targets: ','.target+ ','?
10102static asdl_seq*
10103targets_rule(Parser *p)
10104{
10105 if (p->error_indicator) {
10106 return NULL;
10107 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010108 asdl_seq* _res = NULL;
10109 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010110 { // ','.target+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010111 void *_opt_var;
10112 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010113 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010114 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010115 (a = _gather_123_rule(p)) // ','.target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010116 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010117 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010118 )
10119 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010120 _res = a;
10121 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010122 p->error_indicator = 1;
10123 return NULL;
10124 }
10125 goto done;
10126 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010127 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010128 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010129 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010130 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010131 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010132}
10133
10134// target:
10135// | t_primary '.' NAME !t_lookahead
10136// | t_primary '[' slices ']' !t_lookahead
10137// | t_atom
10138static expr_ty
10139target_rule(Parser *p)
10140{
10141 if (p->error_indicator) {
10142 return NULL;
10143 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010144 expr_ty _res = NULL;
10145 if (_PyPegen_is_memoized(p, target_type, &_res))
10146 return _res;
10147 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010148 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10149 p->error_indicator = 1;
10150 return NULL;
10151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010152 int _start_lineno = p->tokens[_mark]->lineno;
10153 UNUSED(_start_lineno); // Only used by EXTRA macro
10154 int _start_col_offset = p->tokens[_mark]->col_offset;
10155 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010156 { // t_primary '.' NAME !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010157 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010158 expr_ty a;
10159 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010160 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010161 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010162 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010163 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010164 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010165 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010166 &&
10167 _PyPegen_lookahead(0, t_lookahead_rule, p)
10168 )
10169 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010170 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10171 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010172 return NULL;
10173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010174 int _end_lineno = _token->end_lineno;
10175 UNUSED(_end_lineno); // Only used by EXTRA macro
10176 int _end_col_offset = _token->end_col_offset;
10177 UNUSED(_end_col_offset); // Only used by EXTRA macro
10178 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
10179 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010180 p->error_indicator = 1;
10181 return NULL;
10182 }
10183 goto done;
10184 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010185 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010186 }
10187 { // t_primary '[' slices ']' !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010188 Token * _literal;
10189 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010190 expr_ty a;
10191 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010192 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010193 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010194 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010195 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010196 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010197 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010198 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010199 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010200 &&
10201 _PyPegen_lookahead(0, t_lookahead_rule, p)
10202 )
10203 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010204 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10205 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010206 return NULL;
10207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010208 int _end_lineno = _token->end_lineno;
10209 UNUSED(_end_lineno); // Only used by EXTRA macro
10210 int _end_col_offset = _token->end_col_offset;
10211 UNUSED(_end_col_offset); // Only used by EXTRA macro
10212 _res = _Py_Subscript ( a , b , Store , EXTRA );
10213 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010214 p->error_indicator = 1;
10215 return NULL;
10216 }
10217 goto done;
10218 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010219 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010220 }
10221 { // t_atom
10222 expr_ty t_atom_var;
10223 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010224 (t_atom_var = t_atom_rule(p)) // t_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010225 )
10226 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010227 _res = t_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010228 goto done;
10229 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010230 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010231 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010232 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010233 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010234 _PyPegen_insert_memo(p, _mark, target_type, _res);
10235 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010236}
10237
10238// Left-recursive
10239// t_primary:
10240// | t_primary '.' NAME &t_lookahead
10241// | t_primary '[' slices ']' &t_lookahead
10242// | t_primary genexp &t_lookahead
10243// | t_primary '(' arguments? ')' &t_lookahead
10244// | atom &t_lookahead
10245static expr_ty t_primary_raw(Parser *);
10246static expr_ty
10247t_primary_rule(Parser *p)
10248{
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010249 expr_ty _res = NULL;
10250 if (_PyPegen_is_memoized(p, t_primary_type, &_res))
10251 return _res;
10252 int _mark = p->mark;
10253 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010254 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010255 int tmpvar_8 = _PyPegen_update_memo(p, _mark, t_primary_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010256 if (tmpvar_8) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010257 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010258 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010259 p->mark = _mark;
10260 void *_raw = t_primary_raw(p);
10261 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010262 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010263 _resmark = p->mark;
10264 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010266 p->mark = _resmark;
10267 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010268}
10269static expr_ty
10270t_primary_raw(Parser *p)
10271{
10272 if (p->error_indicator) {
10273 return NULL;
10274 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010275 expr_ty _res = NULL;
10276 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010277 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10278 p->error_indicator = 1;
10279 return NULL;
10280 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010281 int _start_lineno = p->tokens[_mark]->lineno;
10282 UNUSED(_start_lineno); // Only used by EXTRA macro
10283 int _start_col_offset = p->tokens[_mark]->col_offset;
10284 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010285 { // t_primary '.' NAME &t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010286 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010287 expr_ty a;
10288 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010289 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010290 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010291 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010292 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010293 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010294 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010295 &&
10296 _PyPegen_lookahead(1, t_lookahead_rule, p)
10297 )
10298 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010299 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10300 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010301 return NULL;
10302 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010303 int _end_lineno = _token->end_lineno;
10304 UNUSED(_end_lineno); // Only used by EXTRA macro
10305 int _end_col_offset = _token->end_col_offset;
10306 UNUSED(_end_col_offset); // Only used by EXTRA macro
10307 _res = _Py_Attribute ( a , b -> v . Name . id , Load , EXTRA );
10308 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010309 p->error_indicator = 1;
10310 return NULL;
10311 }
10312 goto done;
10313 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010314 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010315 }
10316 { // t_primary '[' slices ']' &t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010317 Token * _literal;
10318 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010319 expr_ty a;
10320 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010321 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010322 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010323 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010324 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010325 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010326 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010327 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010328 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010329 &&
10330 _PyPegen_lookahead(1, t_lookahead_rule, p)
10331 )
10332 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010333 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10334 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010335 return NULL;
10336 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010337 int _end_lineno = _token->end_lineno;
10338 UNUSED(_end_lineno); // Only used by EXTRA macro
10339 int _end_col_offset = _token->end_col_offset;
10340 UNUSED(_end_col_offset); // Only used by EXTRA macro
10341 _res = _Py_Subscript ( a , b , Load , EXTRA );
10342 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010343 p->error_indicator = 1;
10344 return NULL;
10345 }
10346 goto done;
10347 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010348 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010349 }
10350 { // t_primary genexp &t_lookahead
10351 expr_ty a;
10352 expr_ty b;
10353 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010354 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010355 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010356 (b = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010357 &&
10358 _PyPegen_lookahead(1, t_lookahead_rule, p)
10359 )
10360 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010361 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10362 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010363 return NULL;
10364 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010365 int _end_lineno = _token->end_lineno;
10366 UNUSED(_end_lineno); // Only used by EXTRA macro
10367 int _end_col_offset = _token->end_col_offset;
10368 UNUSED(_end_col_offset); // Only used by EXTRA macro
10369 _res = _Py_Call ( a , CHECK ( _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
10370 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010371 p->error_indicator = 1;
10372 return NULL;
10373 }
10374 goto done;
10375 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010376 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010377 }
10378 { // t_primary '(' arguments? ')' &t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010379 Token * _literal;
10380 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010381 expr_ty a;
10382 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010383 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010384 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010385 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010386 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010387 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010388 (b = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010389 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010390 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010391 &&
10392 _PyPegen_lookahead(1, t_lookahead_rule, p)
10393 )
10394 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010395 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10396 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010397 return NULL;
10398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010399 int _end_lineno = _token->end_lineno;
10400 UNUSED(_end_lineno); // Only used by EXTRA macro
10401 int _end_col_offset = _token->end_col_offset;
10402 UNUSED(_end_col_offset); // Only used by EXTRA macro
10403 _res = _Py_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
10404 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010405 p->error_indicator = 1;
10406 return NULL;
10407 }
10408 goto done;
10409 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010410 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010411 }
10412 { // atom &t_lookahead
10413 expr_ty a;
10414 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010415 (a = atom_rule(p)) // atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010416 &&
10417 _PyPegen_lookahead(1, t_lookahead_rule, p)
10418 )
10419 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010420 _res = a;
10421 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010422 p->error_indicator = 1;
10423 return NULL;
10424 }
10425 goto done;
10426 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010427 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010428 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010429 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010430 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010431 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010432}
10433
10434// t_lookahead: '(' | '[' | '.'
10435static void *
10436t_lookahead_rule(Parser *p)
10437{
10438 if (p->error_indicator) {
10439 return NULL;
10440 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010441 void * _res = NULL;
10442 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010443 { // '('
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010444 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010445 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010446 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010447 )
10448 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010449 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010450 goto done;
10451 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010452 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010453 }
10454 { // '['
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010455 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010456 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010457 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010458 )
10459 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010460 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010461 goto done;
10462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010463 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010464 }
10465 { // '.'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010466 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010467 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010468 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010469 )
10470 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010471 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010472 goto done;
10473 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010474 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010475 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010476 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010477 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010478 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010479}
10480
10481// t_atom: NAME | '(' target ')' | '(' targets? ')' | '[' targets? ']'
10482static expr_ty
10483t_atom_rule(Parser *p)
10484{
10485 if (p->error_indicator) {
10486 return NULL;
10487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010488 expr_ty _res = NULL;
10489 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010490 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10491 p->error_indicator = 1;
10492 return NULL;
10493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010494 int _start_lineno = p->tokens[_mark]->lineno;
10495 UNUSED(_start_lineno); // Only used by EXTRA macro
10496 int _start_col_offset = p->tokens[_mark]->col_offset;
10497 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010498 { // NAME
10499 expr_ty a;
10500 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010501 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010502 )
10503 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010504 _res = _PyPegen_set_expr_context ( p , a , Store );
10505 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010506 p->error_indicator = 1;
10507 return NULL;
10508 }
10509 goto done;
10510 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010511 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010512 }
10513 { // '(' target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010514 Token * _literal;
10515 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010516 expr_ty 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 = target_rule(p)) // target
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 _res = _PyPegen_set_expr_context ( p , a , Store );
10526 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010527 p->error_indicator = 1;
10528 return NULL;
10529 }
10530 goto done;
10531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010532 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010533 }
10534 { // '(' targets? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010535 Token * _literal;
10536 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010537 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010538 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010539 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010540 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010541 (b = targets_rule(p), 1) // targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010542 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010543 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010544 )
10545 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010546 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10547 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010548 return NULL;
10549 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010550 int _end_lineno = _token->end_lineno;
10551 UNUSED(_end_lineno); // Only used by EXTRA macro
10552 int _end_col_offset = _token->end_col_offset;
10553 UNUSED(_end_col_offset); // Only used by EXTRA macro
10554 _res = _Py_Tuple ( b , Store , EXTRA );
10555 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010556 p->error_indicator = 1;
10557 return NULL;
10558 }
10559 goto done;
10560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010561 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010562 }
10563 { // '[' targets? ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010564 Token * _literal;
10565 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010566 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010567 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010568 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010569 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010570 (b = targets_rule(p), 1) // targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010571 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010572 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010573 )
10574 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010575 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10576 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010577 return NULL;
10578 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010579 int _end_lineno = _token->end_lineno;
10580 UNUSED(_end_lineno); // Only used by EXTRA macro
10581 int _end_col_offset = _token->end_col_offset;
10582 UNUSED(_end_col_offset); // Only used by EXTRA macro
10583 _res = _Py_List ( b , Store , EXTRA );
10584 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010585 p->error_indicator = 1;
10586 return NULL;
10587 }
10588 goto done;
10589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010590 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010591 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010592 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010593 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010594 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010595}
10596
10597// incorrect_arguments:
10598// | args ',' '*'
10599// | expression for_if_clauses ',' [args | expression for_if_clauses]
10600// | args ',' args
10601static void *
10602incorrect_arguments_rule(Parser *p)
10603{
10604 if (p->error_indicator) {
10605 return NULL;
10606 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010607 void * _res = NULL;
10608 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010609 { // args ',' '*'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010610 Token * _literal;
10611 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010612 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010613 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010614 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010615 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010616 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010617 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010618 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010619 )
10620 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010621 _res = RAISE_SYNTAX_ERROR ( "iterable argument unpacking follows keyword argument unpacking" );
10622 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010623 p->error_indicator = 1;
10624 return NULL;
10625 }
10626 goto done;
10627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010628 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010629 }
10630 { // expression for_if_clauses ',' [args | expression for_if_clauses]
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010631 Token * _literal;
10632 void *_opt_var;
10633 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010634 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010635 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010636 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010637 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010638 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010639 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010640 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010641 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010642 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010643 (_opt_var = _tmp_125_rule(p), 1) // [args | expression for_if_clauses]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010644 )
10645 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010646 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "Generator expression must be parenthesized" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010647 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010648 p->error_indicator = 1;
10649 return NULL;
10650 }
10651 goto done;
10652 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010653 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010654 }
10655 { // args ',' args
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010656 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010657 expr_ty a;
10658 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010659 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010660 (a = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010661 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010662 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010663 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010664 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010665 )
10666 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010667 _res = _PyPegen_arguments_parsing_error ( p , a );
10668 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010669 p->error_indicator = 1;
10670 return NULL;
10671 }
10672 goto done;
10673 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010674 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010675 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010676 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010677 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010678 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010679}
10680
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010681// invalid_kwarg: expression '='
10682static void *
10683invalid_kwarg_rule(Parser *p)
10684{
10685 if (p->error_indicator) {
10686 return NULL;
10687 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010688 void * _res = NULL;
10689 int _mark = p->mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010690 { // expression '='
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010691 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010692 expr_ty a;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010693 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010694 (a = expression_rule(p)) // expression
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010695 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010696 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010697 )
10698 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010699 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression cannot contain assignment, perhaps you meant \"==\"?" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010700 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010701 p->error_indicator = 1;
10702 return NULL;
10703 }
10704 goto done;
10705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010706 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010707 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010708 _res = NULL;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010709 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010710 return _res;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010711}
10712
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010713// invalid_named_expression: expression ':=' expression
10714static void *
10715invalid_named_expression_rule(Parser *p)
10716{
10717 if (p->error_indicator) {
10718 return NULL;
10719 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010720 void * _res = NULL;
10721 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010722 { // expression ':=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010723 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010724 expr_ty a;
10725 expr_ty expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010726 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010727 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010728 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010729 (_literal = _PyPegen_expect_token(p, 53)) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010730 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010731 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010732 )
10733 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010734 _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 +010010735 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010736 p->error_indicator = 1;
10737 return NULL;
10738 }
10739 goto done;
10740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010741 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010743 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010744 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010745 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010746}
10747
10748// invalid_assignment:
10749// | list ':'
10750// | tuple ':'
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010751// | star_named_expression ',' star_named_expressions* ':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010752// | expression ':' expression ['=' annotated_rhs]
10753// | expression ('=' | augassign) (yield_expr | star_expressions)
10754static void *
10755invalid_assignment_rule(Parser *p)
10756{
10757 if (p->error_indicator) {
10758 return NULL;
10759 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010760 void * _res = NULL;
10761 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010762 { // list ':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010763 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010764 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010765 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010766 (a = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010767 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010768 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010769 )
10770 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010771 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not list) can be annotated" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010772 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010773 p->error_indicator = 1;
10774 return NULL;
10775 }
10776 goto done;
10777 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010778 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010779 }
10780 { // tuple ':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010781 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010782 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010783 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010784 (a = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010785 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010786 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010787 )
10788 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010789 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
10790 if (_res == NULL && PyErr_Occurred()) {
10791 p->error_indicator = 1;
10792 return NULL;
10793 }
10794 goto done;
10795 }
10796 p->mark = _mark;
10797 }
10798 { // star_named_expression ',' star_named_expressions* ':'
10799 Token * _literal;
10800 Token * _literal_1;
10801 asdl_seq * _loop0_126_var;
10802 expr_ty a;
10803 if (
10804 (a = star_named_expression_rule(p)) // star_named_expression
10805 &&
10806 (_literal = _PyPegen_expect_token(p, 12)) // token=','
10807 &&
10808 (_loop0_126_var = _loop0_126_rule(p)) // star_named_expressions*
10809 &&
10810 (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':'
10811 )
10812 {
10813 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010814 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010815 p->error_indicator = 1;
10816 return NULL;
10817 }
10818 goto done;
10819 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010820 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010821 }
10822 { // expression ':' expression ['=' annotated_rhs]
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010823 Token * _literal;
10824 void *_opt_var;
10825 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010826 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010827 expr_ty expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010828 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010829 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010830 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010831 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010832 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010833 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010834 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010835 (_opt_var = _tmp_127_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010836 )
10837 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010838 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "illegal target for annotation" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010839 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010840 p->error_indicator = 1;
10841 return NULL;
10842 }
10843 goto done;
10844 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010845 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010846 }
10847 { // expression ('=' | augassign) (yield_expr | star_expressions)
Guido van Rossum3941d972020-05-01 09:42:03 -070010848 void *_tmp_128_var;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010849 void *_tmp_129_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010850 expr_ty a;
10851 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010852 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010853 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010854 (_tmp_128_var = _tmp_128_rule(p)) // '=' | augassign
Pablo Galindo2b74c832020-04-27 18:02:07 +010010855 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010856 (_tmp_129_var = _tmp_129_rule(p)) // yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010857 )
10858 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010859 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot assign to %s" , _PyPegen_get_expr_name ( a ) );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010860 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010861 p->error_indicator = 1;
10862 return NULL;
10863 }
10864 goto done;
10865 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010866 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010867 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010868 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010869 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010870 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010871}
10872
10873// invalid_block: NEWLINE !INDENT
10874static void *
10875invalid_block_rule(Parser *p)
10876{
10877 if (p->error_indicator) {
10878 return NULL;
10879 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010880 void * _res = NULL;
10881 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010882 { // NEWLINE !INDENT
Pablo Galindob796b3f2020-05-01 12:32:26 +010010883 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010884 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010885 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010886 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010887 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT) // token=INDENT
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010888 )
10889 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010890 _res = RAISE_INDENTATION_ERROR ( "expected an indented block" );
10891 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010892 p->error_indicator = 1;
10893 return NULL;
10894 }
10895 goto done;
10896 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010897 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010898 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010899 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010900 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010901 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010902}
10903
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010904// invalid_comprehension: ('[' | '(' | '{') starred_expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010905static void *
10906invalid_comprehension_rule(Parser *p)
10907{
10908 if (p->error_indicator) {
10909 return NULL;
10910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010911 void * _res = NULL;
10912 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010913 { // ('[' | '(' | '{') starred_expression for_if_clauses
10914 void *_tmp_130_var;
10915 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010916 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010917 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010918 (_tmp_130_var = _tmp_130_rule(p)) // '[' | '(' | '{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010919 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010920 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010921 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010922 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010923 )
10924 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010925 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "iterable unpacking cannot be used in comprehension" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010926 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010927 p->error_indicator = 1;
10928 return NULL;
10929 }
10930 goto done;
10931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010932 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010933 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010934 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010935 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010936 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010937}
10938
10939// invalid_parameters:
Guido van Rossumc001c092020-04-30 12:12:19 -070010940// | param_no_default* (slash_with_default | param_with_default+) param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010941static void *
10942invalid_parameters_rule(Parser *p)
10943{
10944 if (p->error_indicator) {
10945 return NULL;
10946 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010947 void * _res = NULL;
10948 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070010949 { // param_no_default* (slash_with_default | param_with_default+) param_no_default
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010950 asdl_seq * _loop0_131_var;
10951 void *_tmp_132_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070010952 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010953 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010954 (_loop0_131_var = _loop0_131_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010955 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010956 (_tmp_132_var = _tmp_132_rule(p)) // slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010957 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010958 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010959 )
10960 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010961 _res = RAISE_SYNTAX_ERROR ( "non-default argument follows default argument" );
10962 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010963 p->error_indicator = 1;
10964 return NULL;
10965 }
10966 goto done;
10967 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010968 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010969 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010970 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010971 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010972 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010973}
10974
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010975// invalid_star_etc: '*' (')' | ',' (')' | '**'))
10976static void *
10977invalid_star_etc_rule(Parser *p)
10978{
10979 if (p->error_indicator) {
10980 return NULL;
10981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010982 void * _res = NULL;
10983 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010984 { // '*' (')' | ',' (')' | '**'))
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010985 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010986 void *_tmp_133_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010987 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010988 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010989 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010990 (_tmp_133_var = _tmp_133_rule(p)) // ')' | ',' (')' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010991 )
10992 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010993 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
10994 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010995 p->error_indicator = 1;
10996 return NULL;
10997 }
10998 goto done;
10999 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011000 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011001 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011002 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011003 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011004 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011005}
11006
11007// invalid_lambda_star_etc: '*' (':' | ',' (':' | '**'))
11008static void *
11009invalid_lambda_star_etc_rule(Parser *p)
11010{
11011 if (p->error_indicator) {
11012 return NULL;
11013 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011014 void * _res = NULL;
11015 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011016 { // '*' (':' | ',' (':' | '**'))
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011017 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011018 void *_tmp_134_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011019 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011020 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011021 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011022 (_tmp_134_var = _tmp_134_rule(p)) // ':' | ',' (':' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011023 )
11024 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011025 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
11026 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011027 p->error_indicator = 1;
11028 return NULL;
11029 }
11030 goto done;
11031 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011032 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011034 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011035 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011036 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011037}
11038
Guido van Rossumc001c092020-04-30 12:12:19 -070011039// invalid_double_type_comments: TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
11040static void *
11041invalid_double_type_comments_rule(Parser *p)
11042{
11043 if (p->error_indicator) {
11044 return NULL;
11045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011046 void * _res = NULL;
11047 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011048 { // TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
Pablo Galindob796b3f2020-05-01 12:32:26 +010011049 Token * indent_var;
11050 Token * newline_var;
11051 Token * newline_var_1;
11052 Token * type_comment_var;
11053 Token * type_comment_var_1;
Guido van Rossumc001c092020-04-30 12:12:19 -070011054 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011055 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070011056 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011057 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070011058 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011059 (type_comment_var_1 = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070011060 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011061 (newline_var_1 = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070011062 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011063 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070011064 )
11065 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011066 _res = RAISE_SYNTAX_ERROR ( "Cannot have two type comments on def" );
11067 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011068 p->error_indicator = 1;
11069 return NULL;
11070 }
11071 goto done;
11072 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011073 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011074 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011075 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011076 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011077 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011078}
11079
Shantanu27c0d9b2020-05-11 14:53:58 -070011080// invalid_del_target: star_expression &del_target_end
11081static void *
11082invalid_del_target_rule(Parser *p)
11083{
11084 if (p->error_indicator) {
11085 return NULL;
11086 }
11087 void * _res = NULL;
11088 int _mark = p->mark;
11089 { // star_expression &del_target_end
11090 expr_ty a;
11091 if (
11092 (a = star_expression_rule(p)) // star_expression
11093 &&
11094 _PyPegen_lookahead(1, del_target_end_rule, p)
11095 )
11096 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011097 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot delete %s" , _PyPegen_get_expr_name ( a ) );
Shantanu27c0d9b2020-05-11 14:53:58 -070011098 if (_res == NULL && PyErr_Occurred()) {
11099 p->error_indicator = 1;
11100 return NULL;
11101 }
11102 goto done;
11103 }
11104 p->mark = _mark;
11105 }
11106 _res = NULL;
11107 done:
11108 return _res;
11109}
11110
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011111// _loop0_1: NEWLINE
11112static asdl_seq *
11113_loop0_1_rule(Parser *p)
11114{
11115 if (p->error_indicator) {
11116 return NULL;
11117 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011118 void *_res = NULL;
11119 int _mark = p->mark;
11120 int _start_mark = p->mark;
11121 void **_children = PyMem_Malloc(sizeof(void *));
11122 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011123 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11124 return NULL;
11125 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011126 ssize_t _children_capacity = 1;
11127 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011128 { // NEWLINE
Pablo Galindob796b3f2020-05-01 12:32:26 +010011129 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011130 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010011131 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011132 )
11133 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011134 _res = newline_var;
11135 if (_n == _children_capacity) {
11136 _children_capacity *= 2;
11137 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11138 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011139 PyErr_Format(PyExc_MemoryError, "realloc None");
11140 return NULL;
11141 }
11142 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011143 _children[_n++] = _res;
11144 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011145 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011146 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011147 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011148 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11149 if (!_seq) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011150 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_1");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011151 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011152 return NULL;
11153 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011154 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11155 PyMem_Free(_children);
11156 _PyPegen_insert_memo(p, _start_mark, _loop0_1_type, _seq);
11157 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011158}
11159
Guido van Rossumc001c092020-04-30 12:12:19 -070011160// _loop0_2: NEWLINE
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011161static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070011162_loop0_2_rule(Parser *p)
11163{
11164 if (p->error_indicator) {
11165 return NULL;
11166 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011167 void *_res = NULL;
11168 int _mark = p->mark;
11169 int _start_mark = p->mark;
11170 void **_children = PyMem_Malloc(sizeof(void *));
11171 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011172 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11173 return NULL;
11174 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011175 ssize_t _children_capacity = 1;
11176 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011177 { // NEWLINE
Pablo Galindob796b3f2020-05-01 12:32:26 +010011178 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070011179 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010011180 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070011181 )
11182 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011183 _res = newline_var;
11184 if (_n == _children_capacity) {
11185 _children_capacity *= 2;
11186 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11187 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011188 PyErr_Format(PyExc_MemoryError, "realloc None");
11189 return NULL;
11190 }
11191 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011192 _children[_n++] = _res;
11193 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011194 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011195 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011196 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011197 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11198 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011199 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_2");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011200 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011201 return NULL;
11202 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011203 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11204 PyMem_Free(_children);
11205 _PyPegen_insert_memo(p, _start_mark, _loop0_2_type, _seq);
11206 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011207}
11208
11209// _loop0_4: ',' expression
11210static asdl_seq *
11211_loop0_4_rule(Parser *p)
11212{
11213 if (p->error_indicator) {
11214 return NULL;
11215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011216 void *_res = NULL;
11217 int _mark = p->mark;
11218 int _start_mark = p->mark;
11219 void **_children = PyMem_Malloc(sizeof(void *));
11220 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011221 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11222 return NULL;
11223 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011224 ssize_t _children_capacity = 1;
11225 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011226 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011227 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011228 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011229 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011230 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011231 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011232 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011233 )
11234 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011235 _res = elem;
11236 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011237 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011238 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011239 return NULL;
11240 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011241 if (_n == _children_capacity) {
11242 _children_capacity *= 2;
11243 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11244 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011245 PyErr_Format(PyExc_MemoryError, "realloc None");
11246 return NULL;
11247 }
11248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011249 _children[_n++] = _res;
11250 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011252 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011254 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11255 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011256 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_4");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011257 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011258 return NULL;
11259 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011260 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11261 PyMem_Free(_children);
11262 _PyPegen_insert_memo(p, _start_mark, _loop0_4_type, _seq);
11263 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011264}
11265
11266// _gather_3: expression _loop0_4
11267static asdl_seq *
11268_gather_3_rule(Parser *p)
11269{
11270 if (p->error_indicator) {
11271 return NULL;
11272 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011273 asdl_seq * _res = NULL;
11274 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011275 { // expression _loop0_4
11276 expr_ty elem;
11277 asdl_seq * seq;
11278 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011279 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011280 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011281 (seq = _loop0_4_rule(p)) // _loop0_4
Guido van Rossumc001c092020-04-30 12:12:19 -070011282 )
11283 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011284 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011285 goto done;
11286 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011287 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011288 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011289 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011290 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011291 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011292}
11293
11294// _loop0_6: ',' expression
11295static asdl_seq *
11296_loop0_6_rule(Parser *p)
11297{
11298 if (p->error_indicator) {
11299 return NULL;
11300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011301 void *_res = NULL;
11302 int _mark = p->mark;
11303 int _start_mark = p->mark;
11304 void **_children = PyMem_Malloc(sizeof(void *));
11305 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011306 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11307 return NULL;
11308 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011309 ssize_t _children_capacity = 1;
11310 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011311 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011312 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011313 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011314 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011315 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011316 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011317 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011318 )
11319 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011320 _res = elem;
11321 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011322 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011323 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011324 return NULL;
11325 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011326 if (_n == _children_capacity) {
11327 _children_capacity *= 2;
11328 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11329 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011330 PyErr_Format(PyExc_MemoryError, "realloc None");
11331 return NULL;
11332 }
11333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011334 _children[_n++] = _res;
11335 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011336 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011337 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011338 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011339 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11340 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011341 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_6");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011342 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011343 return NULL;
11344 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011345 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11346 PyMem_Free(_children);
11347 _PyPegen_insert_memo(p, _start_mark, _loop0_6_type, _seq);
11348 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011349}
11350
11351// _gather_5: expression _loop0_6
11352static asdl_seq *
11353_gather_5_rule(Parser *p)
11354{
11355 if (p->error_indicator) {
11356 return NULL;
11357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011358 asdl_seq * _res = NULL;
11359 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011360 { // expression _loop0_6
11361 expr_ty elem;
11362 asdl_seq * seq;
11363 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011364 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011365 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011366 (seq = _loop0_6_rule(p)) // _loop0_6
Guido van Rossumc001c092020-04-30 12:12:19 -070011367 )
11368 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011369 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011370 goto done;
11371 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011372 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011373 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011374 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011375 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011376 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011377}
11378
11379// _loop0_8: ',' expression
11380static asdl_seq *
11381_loop0_8_rule(Parser *p)
11382{
11383 if (p->error_indicator) {
11384 return NULL;
11385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011386 void *_res = NULL;
11387 int _mark = p->mark;
11388 int _start_mark = p->mark;
11389 void **_children = PyMem_Malloc(sizeof(void *));
11390 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011391 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11392 return NULL;
11393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011394 ssize_t _children_capacity = 1;
11395 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011396 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011397 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011398 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011399 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011400 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011401 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011402 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011403 )
11404 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011405 _res = elem;
11406 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011407 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011408 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011409 return NULL;
11410 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011411 if (_n == _children_capacity) {
11412 _children_capacity *= 2;
11413 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11414 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011415 PyErr_Format(PyExc_MemoryError, "realloc None");
11416 return NULL;
11417 }
11418 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011419 _children[_n++] = _res;
11420 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011421 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011422 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011423 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011424 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11425 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011426 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_8");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011427 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011428 return NULL;
11429 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011430 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11431 PyMem_Free(_children);
11432 _PyPegen_insert_memo(p, _start_mark, _loop0_8_type, _seq);
11433 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011434}
11435
11436// _gather_7: expression _loop0_8
11437static asdl_seq *
11438_gather_7_rule(Parser *p)
11439{
11440 if (p->error_indicator) {
11441 return NULL;
11442 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011443 asdl_seq * _res = NULL;
11444 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011445 { // expression _loop0_8
11446 expr_ty elem;
11447 asdl_seq * seq;
11448 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011449 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011450 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011451 (seq = _loop0_8_rule(p)) // _loop0_8
Guido van Rossumc001c092020-04-30 12:12:19 -070011452 )
11453 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011454 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011455 goto done;
11456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011457 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011458 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011459 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011460 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011461 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011462}
11463
11464// _loop0_10: ',' expression
11465static asdl_seq *
11466_loop0_10_rule(Parser *p)
11467{
11468 if (p->error_indicator) {
11469 return NULL;
11470 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011471 void *_res = NULL;
11472 int _mark = p->mark;
11473 int _start_mark = p->mark;
11474 void **_children = PyMem_Malloc(sizeof(void *));
11475 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011476 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11477 return NULL;
11478 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011479 ssize_t _children_capacity = 1;
11480 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011481 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011482 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011483 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011484 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011485 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011486 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011487 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011488 )
11489 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011490 _res = elem;
11491 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011492 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011493 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011494 return NULL;
11495 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011496 if (_n == _children_capacity) {
11497 _children_capacity *= 2;
11498 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11499 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011500 PyErr_Format(PyExc_MemoryError, "realloc None");
11501 return NULL;
11502 }
11503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011504 _children[_n++] = _res;
11505 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011507 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011508 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011509 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11510 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011511 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_10");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011512 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011513 return NULL;
11514 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011515 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11516 PyMem_Free(_children);
11517 _PyPegen_insert_memo(p, _start_mark, _loop0_10_type, _seq);
11518 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011519}
11520
11521// _gather_9: expression _loop0_10
11522static asdl_seq *
11523_gather_9_rule(Parser *p)
11524{
11525 if (p->error_indicator) {
11526 return NULL;
11527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011528 asdl_seq * _res = NULL;
11529 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011530 { // expression _loop0_10
11531 expr_ty elem;
11532 asdl_seq * seq;
11533 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011534 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011535 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011536 (seq = _loop0_10_rule(p)) // _loop0_10
Guido van Rossumc001c092020-04-30 12:12:19 -070011537 )
11538 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011539 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011540 goto done;
11541 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011542 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011543 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011544 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011545 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011546 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011547}
11548
11549// _loop1_11: statement
11550static asdl_seq *
11551_loop1_11_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011552{
11553 if (p->error_indicator) {
11554 return NULL;
11555 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011556 void *_res = NULL;
11557 int _mark = p->mark;
11558 int _start_mark = p->mark;
11559 void **_children = PyMem_Malloc(sizeof(void *));
11560 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011561 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11562 return NULL;
11563 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011564 ssize_t _children_capacity = 1;
11565 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011566 { // statement
11567 asdl_seq* statement_var;
11568 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010011569 (statement_var = statement_rule(p)) // statement
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011570 )
11571 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011572 _res = statement_var;
11573 if (_n == _children_capacity) {
11574 _children_capacity *= 2;
11575 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11576 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011577 PyErr_Format(PyExc_MemoryError, "realloc None");
11578 return NULL;
11579 }
11580 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011581 _children[_n++] = _res;
11582 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011584 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011586 if (_n == 0 || p->error_indicator) {
11587 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011588 return NULL;
11589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011590 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11591 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011592 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_11");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011593 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011594 return NULL;
11595 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011596 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11597 PyMem_Free(_children);
11598 _PyPegen_insert_memo(p, _start_mark, _loop1_11_type, _seq);
11599 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011600}
11601
Guido van Rossumc001c092020-04-30 12:12:19 -070011602// _loop0_13: ';' small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011603static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070011604_loop0_13_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011605{
11606 if (p->error_indicator) {
11607 return NULL;
11608 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011609 void *_res = NULL;
11610 int _mark = p->mark;
11611 int _start_mark = p->mark;
11612 void **_children = PyMem_Malloc(sizeof(void *));
11613 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011614 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11615 return NULL;
11616 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011617 ssize_t _children_capacity = 1;
11618 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011619 { // ';' small_stmt
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011620 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011621 stmt_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011622 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011623 (_literal = _PyPegen_expect_token(p, 13)) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011624 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011625 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011626 )
11627 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011628 _res = elem;
11629 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011630 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011631 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011632 return NULL;
11633 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011634 if (_n == _children_capacity) {
11635 _children_capacity *= 2;
11636 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11637 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011638 PyErr_Format(PyExc_MemoryError, "realloc None");
11639 return NULL;
11640 }
11641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011642 _children[_n++] = _res;
11643 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011644 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011645 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011646 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011647 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11648 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011649 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_13");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011650 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011651 return NULL;
11652 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011653 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11654 PyMem_Free(_children);
11655 _PyPegen_insert_memo(p, _start_mark, _loop0_13_type, _seq);
11656 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011657}
11658
Guido van Rossumc001c092020-04-30 12:12:19 -070011659// _gather_12: small_stmt _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011660static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070011661_gather_12_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011662{
11663 if (p->error_indicator) {
11664 return NULL;
11665 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011666 asdl_seq * _res = NULL;
11667 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011668 { // small_stmt _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011669 stmt_ty elem;
11670 asdl_seq * seq;
11671 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011672 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011673 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011674 (seq = _loop0_13_rule(p)) // _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011675 )
11676 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011677 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011678 goto done;
11679 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011680 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011681 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011682 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011683 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011684 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011685}
11686
Guido van Rossumc001c092020-04-30 12:12:19 -070011687// _tmp_14: 'import' | 'from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011688static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011689_tmp_14_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011690{
11691 if (p->error_indicator) {
11692 return NULL;
11693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011694 void * _res = NULL;
11695 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011696 { // 'import'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011697 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011698 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011699 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011700 )
11701 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011702 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011703 goto done;
11704 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011705 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011706 }
11707 { // 'from'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011708 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011709 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011710 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011711 )
11712 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011713 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011714 goto done;
11715 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011716 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011717 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011718 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011719 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011720 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011721}
11722
Guido van Rossumc001c092020-04-30 12:12:19 -070011723// _tmp_15: 'def' | '@' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011724static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011725_tmp_15_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011726{
11727 if (p->error_indicator) {
11728 return NULL;
11729 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011730 void * _res = NULL;
11731 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011732 { // 'def'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011733 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011734 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011735 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011736 )
11737 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011738 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011739 goto done;
11740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011741 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011742 }
11743 { // '@'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011744 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011745 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011746 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011747 )
11748 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011749 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011750 goto done;
11751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011752 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011753 }
11754 { // ASYNC
Pablo Galindob796b3f2020-05-01 12:32:26 +010011755 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011756 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011757 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011758 )
11759 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011760 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011761 goto done;
11762 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011763 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011765 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011766 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011767 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011768}
11769
Guido van Rossumc001c092020-04-30 12:12:19 -070011770// _tmp_16: 'class' | '@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011771static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011772_tmp_16_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011773{
11774 if (p->error_indicator) {
11775 return NULL;
11776 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011777 void * _res = NULL;
11778 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011779 { // 'class'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011780 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011781 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011782 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011783 )
11784 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011785 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011786 goto done;
11787 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011788 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011789 }
11790 { // '@'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011791 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011792 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011793 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011794 )
11795 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011796 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011797 goto done;
11798 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011799 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011800 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011801 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011802 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011803 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011804}
11805
Guido van Rossumc001c092020-04-30 12:12:19 -070011806// _tmp_17: 'with' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011807static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011808_tmp_17_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011809{
11810 if (p->error_indicator) {
11811 return NULL;
11812 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011813 void * _res = NULL;
11814 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011815 { // 'with'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011816 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011817 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011818 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011819 )
11820 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011821 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011822 goto done;
11823 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011824 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011825 }
11826 { // ASYNC
Pablo Galindob796b3f2020-05-01 12:32:26 +010011827 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011828 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011829 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011830 )
11831 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011832 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011833 goto done;
11834 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011835 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011837 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011838 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011839 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011840}
11841
Guido van Rossumc001c092020-04-30 12:12:19 -070011842// _tmp_18: 'for' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011843static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011844_tmp_18_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011845{
11846 if (p->error_indicator) {
11847 return NULL;
11848 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011849 void * _res = NULL;
11850 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011851 { // 'for'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011852 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011853 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011854 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011855 )
11856 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011857 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011858 goto done;
11859 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011860 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011861 }
11862 { // ASYNC
Pablo Galindob796b3f2020-05-01 12:32:26 +010011863 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011864 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011865 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011866 )
11867 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011868 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011869 goto done;
11870 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011871 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011872 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011873 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011874 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011875 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011876}
11877
Guido van Rossumc001c092020-04-30 12:12:19 -070011878// _tmp_19: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011879static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011880_tmp_19_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011881{
11882 if (p->error_indicator) {
11883 return NULL;
11884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011885 void * _res = NULL;
11886 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011887 { // '=' annotated_rhs
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011888 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011889 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011890 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011891 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011892 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011893 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011894 )
11895 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011896 _res = d;
11897 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011898 p->error_indicator = 1;
11899 return NULL;
11900 }
11901 goto done;
11902 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011903 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011904 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011905 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011906 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011907 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011908}
11909
Guido van Rossumc001c092020-04-30 12:12:19 -070011910// _tmp_20: '(' inside_paren_ann_assign_target ')' | ann_assign_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011911static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011912_tmp_20_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011913{
11914 if (p->error_indicator) {
11915 return NULL;
11916 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011917 void * _res = NULL;
11918 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011919 { // '(' inside_paren_ann_assign_target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011920 Token * _literal;
11921 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011922 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011923 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011924 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011925 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011926 (b = inside_paren_ann_assign_target_rule(p)) // inside_paren_ann_assign_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011927 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011928 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011929 )
11930 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011931 _res = b;
11932 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011933 p->error_indicator = 1;
11934 return NULL;
11935 }
11936 goto done;
11937 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011938 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011939 }
11940 { // ann_assign_subscript_attribute_target
11941 expr_ty ann_assign_subscript_attribute_target_var;
11942 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011943 (ann_assign_subscript_attribute_target_var = ann_assign_subscript_attribute_target_rule(p)) // ann_assign_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011944 )
11945 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011946 _res = ann_assign_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011947 goto done;
11948 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011949 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011951 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011952 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011953 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011954}
11955
Guido van Rossumc001c092020-04-30 12:12:19 -070011956// _tmp_21: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011957static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011958_tmp_21_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011959{
11960 if (p->error_indicator) {
11961 return NULL;
11962 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011963 void * _res = NULL;
11964 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011965 { // '=' annotated_rhs
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011966 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011967 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011968 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011969 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011970 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011971 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011972 )
11973 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011974 _res = d;
11975 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011976 p->error_indicator = 1;
11977 return NULL;
11978 }
11979 goto done;
11980 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011981 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011982 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011983 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011984 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011985 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011986}
11987
Guido van Rossumc001c092020-04-30 12:12:19 -070011988// _loop1_22: (star_targets '=')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011989static asdl_seq *
11990_loop1_22_rule(Parser *p)
11991{
11992 if (p->error_indicator) {
11993 return NULL;
11994 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011995 void *_res = NULL;
11996 int _mark = p->mark;
11997 int _start_mark = p->mark;
11998 void **_children = PyMem_Malloc(sizeof(void *));
11999 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012000 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12001 return NULL;
12002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012003 ssize_t _children_capacity = 1;
12004 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012005 { // (star_targets '=')
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012006 void *_tmp_135_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012007 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012008 (_tmp_135_var = _tmp_135_rule(p)) // star_targets '='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012009 )
12010 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012011 _res = _tmp_135_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012012 if (_n == _children_capacity) {
12013 _children_capacity *= 2;
12014 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12015 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012016 PyErr_Format(PyExc_MemoryError, "realloc None");
12017 return NULL;
12018 }
12019 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012020 _children[_n++] = _res;
12021 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012022 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012023 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012024 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012025 if (_n == 0 || p->error_indicator) {
12026 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012027 return NULL;
12028 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012029 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12030 if (!_seq) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012031 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_22");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012032 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012033 return NULL;
12034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012035 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12036 PyMem_Free(_children);
12037 _PyPegen_insert_memo(p, _start_mark, _loop1_22_type, _seq);
12038 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012039}
12040
Guido van Rossumc001c092020-04-30 12:12:19 -070012041// _tmp_23: yield_expr | star_expressions
12042static void *
12043_tmp_23_rule(Parser *p)
12044{
12045 if (p->error_indicator) {
12046 return NULL;
12047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012048 void * _res = NULL;
12049 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012050 { // yield_expr
12051 expr_ty yield_expr_var;
12052 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012053 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070012054 )
12055 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012056 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012057 goto done;
12058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012059 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012060 }
12061 { // star_expressions
12062 expr_ty star_expressions_var;
12063 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012064 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070012065 )
12066 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012067 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012068 goto done;
12069 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012070 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012072 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012073 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012074 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012075}
12076
12077// _tmp_24: yield_expr | star_expressions
12078static void *
12079_tmp_24_rule(Parser *p)
12080{
12081 if (p->error_indicator) {
12082 return NULL;
12083 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012084 void * _res = NULL;
12085 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012086 { // yield_expr
12087 expr_ty yield_expr_var;
12088 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012089 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070012090 )
12091 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012092 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012093 goto done;
12094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012095 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012096 }
12097 { // star_expressions
12098 expr_ty star_expressions_var;
12099 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012100 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070012101 )
12102 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012103 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012104 goto done;
12105 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012106 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012107 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012108 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012109 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012110 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012111}
12112
12113// _loop0_26: ',' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012114static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012115_loop0_26_rule(Parser *p)
12116{
12117 if (p->error_indicator) {
12118 return NULL;
12119 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012120 void *_res = NULL;
12121 int _mark = p->mark;
12122 int _start_mark = p->mark;
12123 void **_children = PyMem_Malloc(sizeof(void *));
12124 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012125 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12126 return NULL;
12127 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012128 ssize_t _children_capacity = 1;
12129 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012130 { // ',' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012131 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012132 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012133 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012134 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012135 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012136 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070012137 )
12138 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012139 _res = elem;
12140 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012141 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012142 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012143 return NULL;
12144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012145 if (_n == _children_capacity) {
12146 _children_capacity *= 2;
12147 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12148 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012149 PyErr_Format(PyExc_MemoryError, "realloc None");
12150 return NULL;
12151 }
12152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012153 _children[_n++] = _res;
12154 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012155 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012156 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012158 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12159 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012160 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_26");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012161 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012162 return NULL;
12163 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012164 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12165 PyMem_Free(_children);
12166 _PyPegen_insert_memo(p, _start_mark, _loop0_26_type, _seq);
12167 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012168}
12169
12170// _gather_25: NAME _loop0_26
12171static asdl_seq *
12172_gather_25_rule(Parser *p)
12173{
12174 if (p->error_indicator) {
12175 return NULL;
12176 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012177 asdl_seq * _res = NULL;
12178 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012179 { // NAME _loop0_26
12180 expr_ty elem;
12181 asdl_seq * seq;
12182 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012183 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070012184 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012185 (seq = _loop0_26_rule(p)) // _loop0_26
Guido van Rossumc001c092020-04-30 12:12:19 -070012186 )
12187 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012188 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012189 goto done;
12190 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012191 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012192 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012193 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012194 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012195 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012196}
12197
12198// _loop0_28: ',' NAME
12199static asdl_seq *
12200_loop0_28_rule(Parser *p)
12201{
12202 if (p->error_indicator) {
12203 return NULL;
12204 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012205 void *_res = NULL;
12206 int _mark = p->mark;
12207 int _start_mark = p->mark;
12208 void **_children = PyMem_Malloc(sizeof(void *));
12209 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012210 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12211 return NULL;
12212 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012213 ssize_t _children_capacity = 1;
12214 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012215 { // ',' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012216 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012217 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012218 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012219 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012220 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012221 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070012222 )
12223 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012224 _res = elem;
12225 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012226 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012227 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012228 return NULL;
12229 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012230 if (_n == _children_capacity) {
12231 _children_capacity *= 2;
12232 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12233 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012234 PyErr_Format(PyExc_MemoryError, "realloc None");
12235 return NULL;
12236 }
12237 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012238 _children[_n++] = _res;
12239 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012240 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012241 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012242 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012243 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12244 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012245 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_28");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012246 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012247 return NULL;
12248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012249 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12250 PyMem_Free(_children);
12251 _PyPegen_insert_memo(p, _start_mark, _loop0_28_type, _seq);
12252 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012253}
12254
12255// _gather_27: NAME _loop0_28
12256static asdl_seq *
12257_gather_27_rule(Parser *p)
12258{
12259 if (p->error_indicator) {
12260 return NULL;
12261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012262 asdl_seq * _res = NULL;
12263 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012264 { // NAME _loop0_28
12265 expr_ty elem;
12266 asdl_seq * seq;
12267 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012268 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070012269 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012270 (seq = _loop0_28_rule(p)) // _loop0_28
Guido van Rossumc001c092020-04-30 12:12:19 -070012271 )
12272 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012273 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012274 goto done;
12275 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012276 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012277 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012278 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012279 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012280 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012281}
12282
12283// _tmp_29: ',' expression
12284static void *
12285_tmp_29_rule(Parser *p)
12286{
12287 if (p->error_indicator) {
12288 return NULL;
12289 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012290 void * _res = NULL;
12291 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012292 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012293 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012294 expr_ty z;
12295 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012296 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012297 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012298 (z = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012299 )
12300 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012301 _res = z;
12302 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012303 p->error_indicator = 1;
12304 return NULL;
12305 }
12306 goto done;
12307 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012308 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012309 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012310 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012311 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012312 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012313}
12314
12315// _loop0_30: ('.' | '...')
12316static asdl_seq *
12317_loop0_30_rule(Parser *p)
12318{
12319 if (p->error_indicator) {
12320 return NULL;
12321 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012322 void *_res = NULL;
12323 int _mark = p->mark;
12324 int _start_mark = p->mark;
12325 void **_children = PyMem_Malloc(sizeof(void *));
12326 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012327 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12328 return NULL;
12329 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012330 ssize_t _children_capacity = 1;
12331 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012332 { // ('.' | '...')
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012333 void *_tmp_136_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012334 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012335 (_tmp_136_var = _tmp_136_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070012336 )
12337 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012338 _res = _tmp_136_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012339 if (_n == _children_capacity) {
12340 _children_capacity *= 2;
12341 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12342 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012343 PyErr_Format(PyExc_MemoryError, "realloc None");
12344 return NULL;
12345 }
12346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012347 _children[_n++] = _res;
12348 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012349 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012350 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012351 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012352 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12353 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012354 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_30");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012355 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012356 return NULL;
12357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012358 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12359 PyMem_Free(_children);
12360 _PyPegen_insert_memo(p, _start_mark, _loop0_30_type, _seq);
12361 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012362}
12363
12364// _loop1_31: ('.' | '...')
12365static asdl_seq *
12366_loop1_31_rule(Parser *p)
12367{
12368 if (p->error_indicator) {
12369 return NULL;
12370 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012371 void *_res = NULL;
12372 int _mark = p->mark;
12373 int _start_mark = p->mark;
12374 void **_children = PyMem_Malloc(sizeof(void *));
12375 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012376 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12377 return NULL;
12378 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012379 ssize_t _children_capacity = 1;
12380 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012381 { // ('.' | '...')
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012382 void *_tmp_137_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012383 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012384 (_tmp_137_var = _tmp_137_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070012385 )
12386 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012387 _res = _tmp_137_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012388 if (_n == _children_capacity) {
12389 _children_capacity *= 2;
12390 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12391 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012392 PyErr_Format(PyExc_MemoryError, "realloc None");
12393 return NULL;
12394 }
12395 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012396 _children[_n++] = _res;
12397 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012399 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012400 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012401 if (_n == 0 || p->error_indicator) {
12402 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012403 return NULL;
12404 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012405 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12406 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012407 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_31");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012408 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012409 return NULL;
12410 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012411 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12412 PyMem_Free(_children);
12413 _PyPegen_insert_memo(p, _start_mark, _loop1_31_type, _seq);
12414 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012415}
12416
12417// _loop0_33: ',' import_from_as_name
12418static asdl_seq *
12419_loop0_33_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012420{
12421 if (p->error_indicator) {
12422 return NULL;
12423 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012424 void *_res = NULL;
12425 int _mark = p->mark;
12426 int _start_mark = p->mark;
12427 void **_children = PyMem_Malloc(sizeof(void *));
12428 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012429 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12430 return NULL;
12431 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012432 ssize_t _children_capacity = 1;
12433 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012434 { // ',' import_from_as_name
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012435 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012436 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012437 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012438 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012439 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012440 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012441 )
12442 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012443 _res = elem;
12444 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012445 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012446 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012447 return NULL;
12448 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012449 if (_n == _children_capacity) {
12450 _children_capacity *= 2;
12451 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12452 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012453 PyErr_Format(PyExc_MemoryError, "realloc None");
12454 return NULL;
12455 }
12456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012457 _children[_n++] = _res;
12458 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012460 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012461 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012462 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12463 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012464 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_33");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012465 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012466 return NULL;
12467 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012468 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12469 PyMem_Free(_children);
12470 _PyPegen_insert_memo(p, _start_mark, _loop0_33_type, _seq);
12471 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012472}
12473
Guido van Rossumc001c092020-04-30 12:12:19 -070012474// _gather_32: import_from_as_name _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012475static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012476_gather_32_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012477{
12478 if (p->error_indicator) {
12479 return NULL;
12480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012481 asdl_seq * _res = NULL;
12482 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012483 { // import_from_as_name _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012484 alias_ty elem;
12485 asdl_seq * seq;
12486 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012487 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012488 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012489 (seq = _loop0_33_rule(p)) // _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012490 )
12491 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012492 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012493 goto done;
12494 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012495 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012496 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012497 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012498 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012499 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012500}
12501
Guido van Rossumc001c092020-04-30 12:12:19 -070012502// _tmp_34: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012503static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070012504_tmp_34_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012505{
12506 if (p->error_indicator) {
12507 return NULL;
12508 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012509 void * _res = NULL;
12510 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012511 { // 'as' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012512 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012513 expr_ty z;
12514 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012515 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012516 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012517 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012518 )
12519 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012520 _res = z;
12521 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012522 p->error_indicator = 1;
12523 return NULL;
12524 }
12525 goto done;
12526 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012527 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012529 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012530 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012531 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012532}
12533
Guido van Rossumc001c092020-04-30 12:12:19 -070012534// _loop0_36: ',' dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012535static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012536_loop0_36_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012537{
12538 if (p->error_indicator) {
12539 return NULL;
12540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012541 void *_res = NULL;
12542 int _mark = p->mark;
12543 int _start_mark = p->mark;
12544 void **_children = PyMem_Malloc(sizeof(void *));
12545 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012546 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12547 return NULL;
12548 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012549 ssize_t _children_capacity = 1;
12550 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012551 { // ',' dotted_as_name
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012552 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012553 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012554 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012555 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012556 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012557 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012558 )
12559 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012560 _res = elem;
12561 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012562 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012563 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012564 return NULL;
12565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012566 if (_n == _children_capacity) {
12567 _children_capacity *= 2;
12568 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12569 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012570 PyErr_Format(PyExc_MemoryError, "realloc None");
12571 return NULL;
12572 }
12573 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012574 _children[_n++] = _res;
12575 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012576 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012577 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012578 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012579 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12580 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012581 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_36");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012582 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012583 return NULL;
12584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012585 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12586 PyMem_Free(_children);
12587 _PyPegen_insert_memo(p, _start_mark, _loop0_36_type, _seq);
12588 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012589}
12590
Guido van Rossumc001c092020-04-30 12:12:19 -070012591// _gather_35: dotted_as_name _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012592static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012593_gather_35_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012594{
12595 if (p->error_indicator) {
12596 return NULL;
12597 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012598 asdl_seq * _res = NULL;
12599 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012600 { // dotted_as_name _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012601 alias_ty elem;
12602 asdl_seq * seq;
12603 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012604 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012605 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012606 (seq = _loop0_36_rule(p)) // _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012607 )
12608 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012609 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012610 goto done;
12611 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012612 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012613 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012614 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012615 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012616 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012617}
12618
Guido van Rossumc001c092020-04-30 12:12:19 -070012619// _tmp_37: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012620static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070012621_tmp_37_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012622{
12623 if (p->error_indicator) {
12624 return NULL;
12625 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012626 void * _res = NULL;
12627 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012628 { // 'as' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012629 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012630 expr_ty z;
12631 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012632 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012633 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012634 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012635 )
12636 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012637 _res = z;
12638 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012639 p->error_indicator = 1;
12640 return NULL;
12641 }
12642 goto done;
12643 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012644 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012645 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012646 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012647 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012648 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012649}
12650
Guido van Rossumc001c092020-04-30 12:12:19 -070012651// _loop0_39: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012652static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012653_loop0_39_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012654{
12655 if (p->error_indicator) {
12656 return NULL;
12657 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012658 void *_res = NULL;
12659 int _mark = p->mark;
12660 int _start_mark = p->mark;
12661 void **_children = PyMem_Malloc(sizeof(void *));
12662 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012663 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12664 return NULL;
12665 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012666 ssize_t _children_capacity = 1;
12667 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012668 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012669 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012670 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012671 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012672 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012673 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012674 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012675 )
12676 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012677 _res = elem;
12678 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012679 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012680 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012681 return NULL;
12682 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012683 if (_n == _children_capacity) {
12684 _children_capacity *= 2;
12685 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12686 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012687 PyErr_Format(PyExc_MemoryError, "realloc None");
12688 return NULL;
12689 }
12690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012691 _children[_n++] = _res;
12692 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012694 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012695 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012696 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12697 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012698 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_39");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012699 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012700 return NULL;
12701 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012702 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12703 PyMem_Free(_children);
12704 _PyPegen_insert_memo(p, _start_mark, _loop0_39_type, _seq);
12705 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012706}
12707
Guido van Rossumc001c092020-04-30 12:12:19 -070012708// _gather_38: with_item _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012709static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012710_gather_38_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012711{
12712 if (p->error_indicator) {
12713 return NULL;
12714 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012715 asdl_seq * _res = NULL;
12716 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012717 { // with_item _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012718 withitem_ty elem;
12719 asdl_seq * seq;
12720 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012721 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012722 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012723 (seq = _loop0_39_rule(p)) // _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012724 )
12725 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012726 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012727 goto done;
12728 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012729 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012731 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012732 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012733 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012734}
12735
Guido van Rossumc001c092020-04-30 12:12:19 -070012736// _loop0_41: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012737static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012738_loop0_41_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012739{
12740 if (p->error_indicator) {
12741 return NULL;
12742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012743 void *_res = NULL;
12744 int _mark = p->mark;
12745 int _start_mark = p->mark;
12746 void **_children = PyMem_Malloc(sizeof(void *));
12747 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012748 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12749 return NULL;
12750 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012751 ssize_t _children_capacity = 1;
12752 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012753 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012754 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012755 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012756 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012757 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012758 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012759 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012760 )
12761 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012762 _res = elem;
12763 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012764 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012765 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012766 return NULL;
12767 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012768 if (_n == _children_capacity) {
12769 _children_capacity *= 2;
12770 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12771 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012772 PyErr_Format(PyExc_MemoryError, "realloc None");
12773 return NULL;
12774 }
12775 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012776 _children[_n++] = _res;
12777 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012779 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012781 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12782 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012783 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_41");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012784 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012785 return NULL;
12786 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012787 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12788 PyMem_Free(_children);
12789 _PyPegen_insert_memo(p, _start_mark, _loop0_41_type, _seq);
12790 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012791}
12792
Guido van Rossumc001c092020-04-30 12:12:19 -070012793// _gather_40: with_item _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012794static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012795_gather_40_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012796{
12797 if (p->error_indicator) {
12798 return NULL;
12799 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012800 asdl_seq * _res = NULL;
12801 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012802 { // with_item _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012803 withitem_ty elem;
12804 asdl_seq * seq;
12805 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012806 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012807 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012808 (seq = _loop0_41_rule(p)) // _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012809 )
12810 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012811 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012812 goto done;
12813 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012814 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012816 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012817 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012818 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012819}
12820
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012821// _loop0_43: ',' with_item
12822static asdl_seq *
12823_loop0_43_rule(Parser *p)
12824{
12825 if (p->error_indicator) {
12826 return NULL;
12827 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012828 void *_res = NULL;
12829 int _mark = p->mark;
12830 int _start_mark = p->mark;
12831 void **_children = PyMem_Malloc(sizeof(void *));
12832 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012833 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12834 return NULL;
12835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012836 ssize_t _children_capacity = 1;
12837 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012838 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012839 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012840 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012841 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012842 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012843 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012844 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012845 )
12846 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012847 _res = elem;
12848 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012849 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012850 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012851 return NULL;
12852 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012853 if (_n == _children_capacity) {
12854 _children_capacity *= 2;
12855 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12856 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012857 PyErr_Format(PyExc_MemoryError, "realloc None");
12858 return NULL;
12859 }
12860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012861 _children[_n++] = _res;
12862 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012863 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012864 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012865 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012866 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12867 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012868 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_43");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012869 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012870 return NULL;
12871 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012872 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12873 PyMem_Free(_children);
12874 _PyPegen_insert_memo(p, _start_mark, _loop0_43_type, _seq);
12875 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012876}
12877
12878// _gather_42: with_item _loop0_43
12879static asdl_seq *
12880_gather_42_rule(Parser *p)
12881{
12882 if (p->error_indicator) {
12883 return NULL;
12884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012885 asdl_seq * _res = NULL;
12886 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012887 { // with_item _loop0_43
12888 withitem_ty elem;
12889 asdl_seq * seq;
12890 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012891 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012892 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012893 (seq = _loop0_43_rule(p)) // _loop0_43
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012894 )
12895 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012896 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012897 goto done;
12898 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012899 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012900 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012901 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012902 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012903 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012904}
12905
12906// _loop0_45: ',' with_item
12907static asdl_seq *
12908_loop0_45_rule(Parser *p)
12909{
12910 if (p->error_indicator) {
12911 return NULL;
12912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012913 void *_res = NULL;
12914 int _mark = p->mark;
12915 int _start_mark = p->mark;
12916 void **_children = PyMem_Malloc(sizeof(void *));
12917 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012918 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12919 return NULL;
12920 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012921 ssize_t _children_capacity = 1;
12922 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012923 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012924 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012925 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012926 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012927 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012928 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012929 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012930 )
12931 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012932 _res = elem;
12933 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012934 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012935 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012936 return NULL;
12937 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012938 if (_n == _children_capacity) {
12939 _children_capacity *= 2;
12940 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12941 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012942 PyErr_Format(PyExc_MemoryError, "realloc None");
12943 return NULL;
12944 }
12945 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012946 _children[_n++] = _res;
12947 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012948 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012949 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012951 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12952 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012953 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_45");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012954 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012955 return NULL;
12956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012957 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12958 PyMem_Free(_children);
12959 _PyPegen_insert_memo(p, _start_mark, _loop0_45_type, _seq);
12960 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012961}
12962
12963// _gather_44: with_item _loop0_45
12964static asdl_seq *
12965_gather_44_rule(Parser *p)
12966{
12967 if (p->error_indicator) {
12968 return NULL;
12969 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012970 asdl_seq * _res = NULL;
12971 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012972 { // with_item _loop0_45
12973 withitem_ty elem;
12974 asdl_seq * seq;
12975 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012976 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012977 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012978 (seq = _loop0_45_rule(p)) // _loop0_45
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012979 )
12980 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012981 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012982 goto done;
12983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012984 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012985 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012986 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012987 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012988 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012989}
12990
12991// _tmp_46: 'as' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012992static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012993_tmp_46_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012994{
12995 if (p->error_indicator) {
12996 return NULL;
12997 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012998 void * _res = NULL;
12999 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013000 { // 'as' target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013001 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013002 expr_ty t;
13003 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013004 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013005 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013006 (t = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013007 )
13008 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013009 _res = t;
13010 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013011 p->error_indicator = 1;
13012 return NULL;
13013 }
13014 goto done;
13015 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013016 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013017 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013018 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013019 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013020 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013021}
13022
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013023// _loop1_47: except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013024static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013025_loop1_47_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013026{
13027 if (p->error_indicator) {
13028 return NULL;
13029 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013030 void *_res = NULL;
13031 int _mark = p->mark;
13032 int _start_mark = p->mark;
13033 void **_children = PyMem_Malloc(sizeof(void *));
13034 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013035 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13036 return NULL;
13037 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013038 ssize_t _children_capacity = 1;
13039 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013040 { // except_block
13041 excepthandler_ty except_block_var;
13042 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013043 (except_block_var = except_block_rule(p)) // except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013044 )
13045 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013046 _res = except_block_var;
13047 if (_n == _children_capacity) {
13048 _children_capacity *= 2;
13049 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13050 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013051 PyErr_Format(PyExc_MemoryError, "realloc None");
13052 return NULL;
13053 }
13054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013055 _children[_n++] = _res;
13056 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013057 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013058 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013059 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013060 if (_n == 0 || p->error_indicator) {
13061 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013062 return NULL;
13063 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013064 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13065 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013066 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_47");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013067 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013068 return NULL;
13069 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013070 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13071 PyMem_Free(_children);
13072 _PyPegen_insert_memo(p, _start_mark, _loop1_47_type, _seq);
13073 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013074}
13075
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013076// _tmp_48: 'as' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013077static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013078_tmp_48_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013079{
13080 if (p->error_indicator) {
13081 return NULL;
13082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013083 void * _res = NULL;
13084 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013085 { // 'as' target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013086 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013087 expr_ty z;
13088 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013089 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013090 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013091 (z = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013092 )
13093 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013094 _res = z;
13095 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013096 p->error_indicator = 1;
13097 return NULL;
13098 }
13099 goto done;
13100 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013101 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013102 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013103 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013104 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013105 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013106}
13107
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013108// _tmp_49: 'from' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013109static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013110_tmp_49_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013111{
13112 if (p->error_indicator) {
13113 return NULL;
13114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013115 void * _res = NULL;
13116 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013117 { // 'from' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013118 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013119 expr_ty z;
13120 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013121 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013122 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013123 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013124 )
13125 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013126 _res = z;
13127 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013128 p->error_indicator = 1;
13129 return NULL;
13130 }
13131 goto done;
13132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013133 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013134 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013135 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013136 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013137 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013138}
13139
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013140// _tmp_50: '->' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013141static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013142_tmp_50_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013143{
13144 if (p->error_indicator) {
13145 return NULL;
13146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013147 void * _res = NULL;
13148 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013149 { // '->' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013150 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070013151 expr_ty z;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013152 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013153 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013154 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013155 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013156 )
13157 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013158 _res = z;
13159 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013160 p->error_indicator = 1;
13161 return NULL;
13162 }
13163 goto done;
13164 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013165 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013166 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013167 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013168 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013169 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013170}
13171
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013172// _tmp_51: '->' expression
Guido van Rossumc001c092020-04-30 12:12:19 -070013173static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013174_tmp_51_rule(Parser *p)
13175{
13176 if (p->error_indicator) {
13177 return NULL;
13178 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013179 void * _res = NULL;
13180 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013181 { // '->' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013182 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013183 expr_ty z;
13184 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013185 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013186 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013187 (z = expression_rule(p)) // expression
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013188 )
13189 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013190 _res = z;
13191 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013192 p->error_indicator = 1;
13193 return NULL;
13194 }
13195 goto done;
13196 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013197 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013199 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013200 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013201 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013202}
13203
13204// _tmp_52: NEWLINE INDENT
13205static void *
13206_tmp_52_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013207{
13208 if (p->error_indicator) {
13209 return NULL;
13210 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013211 void * _res = NULL;
13212 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013213 { // NEWLINE INDENT
Pablo Galindob796b3f2020-05-01 12:32:26 +010013214 Token * indent_var;
13215 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013216 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013217 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070013218 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013219 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070013220 )
13221 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013222 _res = _PyPegen_dummy_name(p, newline_var, indent_var);
Guido van Rossumc001c092020-04-30 12:12:19 -070013223 goto done;
13224 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013225 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013227 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013228 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013229 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013230}
13231
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013232// _loop0_53: param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013233static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013234_loop0_53_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013235{
13236 if (p->error_indicator) {
13237 return NULL;
13238 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013239 void *_res = NULL;
13240 int _mark = p->mark;
13241 int _start_mark = p->mark;
13242 void **_children = PyMem_Malloc(sizeof(void *));
13243 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013244 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13245 return NULL;
13246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013247 ssize_t _children_capacity = 1;
13248 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013249 { // param_no_default
13250 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013251 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013252 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013253 )
13254 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013255 _res = param_no_default_var;
13256 if (_n == _children_capacity) {
13257 _children_capacity *= 2;
13258 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13259 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013260 PyErr_Format(PyExc_MemoryError, "realloc None");
13261 return NULL;
13262 }
13263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013264 _children[_n++] = _res;
13265 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013266 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013267 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013268 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013269 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13270 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013271 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_53");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013272 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013273 return NULL;
13274 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013275 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13276 PyMem_Free(_children);
13277 _PyPegen_insert_memo(p, _start_mark, _loop0_53_type, _seq);
13278 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013279}
13280
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013281// _loop0_54: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013282static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013283_loop0_54_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013284{
13285 if (p->error_indicator) {
13286 return NULL;
13287 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013288 void *_res = NULL;
13289 int _mark = p->mark;
13290 int _start_mark = p->mark;
13291 void **_children = PyMem_Malloc(sizeof(void *));
13292 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013293 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13294 return NULL;
13295 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013296 ssize_t _children_capacity = 1;
13297 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013298 { // param_with_default
13299 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013300 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013301 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013302 )
13303 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013304 _res = param_with_default_var;
13305 if (_n == _children_capacity) {
13306 _children_capacity *= 2;
13307 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13308 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013309 PyErr_Format(PyExc_MemoryError, "realloc None");
13310 return NULL;
13311 }
13312 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013313 _children[_n++] = _res;
13314 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013315 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013316 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013318 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13319 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013320 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_54");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013321 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013322 return NULL;
13323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013324 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13325 PyMem_Free(_children);
13326 _PyPegen_insert_memo(p, _start_mark, _loop0_54_type, _seq);
13327 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013328}
13329
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013330// _loop0_55: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013331static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013332_loop0_55_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013333{
13334 if (p->error_indicator) {
13335 return NULL;
13336 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013337 void *_res = NULL;
13338 int _mark = p->mark;
13339 int _start_mark = p->mark;
13340 void **_children = PyMem_Malloc(sizeof(void *));
13341 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013342 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13343 return NULL;
13344 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013345 ssize_t _children_capacity = 1;
13346 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013347 { // param_with_default
13348 NameDefaultPair* param_with_default_var;
13349 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013350 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013351 )
13352 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013353 _res = param_with_default_var;
13354 if (_n == _children_capacity) {
13355 _children_capacity *= 2;
13356 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13357 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013358 PyErr_Format(PyExc_MemoryError, "realloc None");
13359 return NULL;
13360 }
13361 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013362 _children[_n++] = _res;
13363 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013364 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013365 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013367 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13368 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013369 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_55");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013370 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013371 return NULL;
13372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013373 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13374 PyMem_Free(_children);
13375 _PyPegen_insert_memo(p, _start_mark, _loop0_55_type, _seq);
13376 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013377}
13378
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013379// _loop1_56: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013380static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013381_loop1_56_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013382{
13383 if (p->error_indicator) {
13384 return NULL;
13385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013386 void *_res = NULL;
13387 int _mark = p->mark;
13388 int _start_mark = p->mark;
13389 void **_children = PyMem_Malloc(sizeof(void *));
13390 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013391 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13392 return NULL;
13393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013394 ssize_t _children_capacity = 1;
13395 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013396 { // param_no_default
13397 arg_ty param_no_default_var;
13398 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013399 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013400 )
13401 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013402 _res = param_no_default_var;
13403 if (_n == _children_capacity) {
13404 _children_capacity *= 2;
13405 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13406 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013407 PyErr_Format(PyExc_MemoryError, "realloc None");
13408 return NULL;
13409 }
13410 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013411 _children[_n++] = _res;
13412 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013413 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013414 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013415 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013416 if (_n == 0 || p->error_indicator) {
13417 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013418 return NULL;
13419 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013420 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13421 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013422 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_56");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013423 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013424 return NULL;
13425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013426 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13427 PyMem_Free(_children);
13428 _PyPegen_insert_memo(p, _start_mark, _loop1_56_type, _seq);
13429 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013430}
13431
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013432// _loop0_57: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013433static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013434_loop0_57_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013435{
13436 if (p->error_indicator) {
13437 return NULL;
13438 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013439 void *_res = NULL;
13440 int _mark = p->mark;
13441 int _start_mark = p->mark;
13442 void **_children = PyMem_Malloc(sizeof(void *));
13443 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013444 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13445 return NULL;
13446 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013447 ssize_t _children_capacity = 1;
13448 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013449 { // param_with_default
13450 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013451 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013452 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013453 )
13454 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013455 _res = param_with_default_var;
13456 if (_n == _children_capacity) {
13457 _children_capacity *= 2;
13458 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13459 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013460 PyErr_Format(PyExc_MemoryError, "realloc None");
13461 return NULL;
13462 }
13463 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013464 _children[_n++] = _res;
13465 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013467 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013469 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13470 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013471 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_57");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013472 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013473 return NULL;
13474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013475 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13476 PyMem_Free(_children);
13477 _PyPegen_insert_memo(p, _start_mark, _loop0_57_type, _seq);
13478 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013479}
13480
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013481// _loop1_58: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013482static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013483_loop1_58_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013484{
13485 if (p->error_indicator) {
13486 return NULL;
13487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013488 void *_res = NULL;
13489 int _mark = p->mark;
13490 int _start_mark = p->mark;
13491 void **_children = PyMem_Malloc(sizeof(void *));
13492 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013493 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13494 return NULL;
13495 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013496 ssize_t _children_capacity = 1;
13497 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013498 { // param_with_default
13499 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013500 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013501 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013502 )
13503 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013504 _res = param_with_default_var;
13505 if (_n == _children_capacity) {
13506 _children_capacity *= 2;
13507 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13508 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013509 PyErr_Format(PyExc_MemoryError, "realloc None");
13510 return NULL;
13511 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013512 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013513 _children[_n++] = _res;
13514 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013516 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013517 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013518 if (_n == 0 || p->error_indicator) {
13519 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013520 return NULL;
13521 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013522 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13523 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013524 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_58");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013525 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013526 return NULL;
13527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013528 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13529 PyMem_Free(_children);
13530 _PyPegen_insert_memo(p, _start_mark, _loop1_58_type, _seq);
13531 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013532}
13533
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013534// _loop1_59: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013535static asdl_seq *
13536_loop1_59_rule(Parser *p)
13537{
13538 if (p->error_indicator) {
13539 return NULL;
13540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013541 void *_res = NULL;
13542 int _mark = p->mark;
13543 int _start_mark = p->mark;
13544 void **_children = PyMem_Malloc(sizeof(void *));
13545 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013546 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13547 return NULL;
13548 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013549 ssize_t _children_capacity = 1;
13550 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013551 { // param_no_default
13552 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013553 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013554 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013555 )
13556 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013557 _res = param_no_default_var;
13558 if (_n == _children_capacity) {
13559 _children_capacity *= 2;
13560 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13561 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013562 PyErr_Format(PyExc_MemoryError, "realloc None");
13563 return NULL;
13564 }
13565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013566 _children[_n++] = _res;
13567 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013568 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013569 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013571 if (_n == 0 || p->error_indicator) {
13572 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013573 return NULL;
13574 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013575 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13576 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013577 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_59");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013578 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013579 return NULL;
13580 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013581 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13582 PyMem_Free(_children);
13583 _PyPegen_insert_memo(p, _start_mark, _loop1_59_type, _seq);
13584 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013585}
13586
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013587// _loop1_60: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013588static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013589_loop1_60_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013590{
13591 if (p->error_indicator) {
13592 return NULL;
13593 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013594 void *_res = NULL;
13595 int _mark = p->mark;
13596 int _start_mark = p->mark;
13597 void **_children = PyMem_Malloc(sizeof(void *));
13598 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013599 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13600 return NULL;
13601 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013602 ssize_t _children_capacity = 1;
13603 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013604 { // param_no_default
13605 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013606 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013607 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013608 )
13609 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013610 _res = param_no_default_var;
13611 if (_n == _children_capacity) {
13612 _children_capacity *= 2;
13613 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13614 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013615 PyErr_Format(PyExc_MemoryError, "realloc None");
13616 return NULL;
13617 }
13618 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013619 _children[_n++] = _res;
13620 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013621 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013622 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013623 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013624 if (_n == 0 || p->error_indicator) {
13625 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013626 return NULL;
13627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013628 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13629 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013630 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_60");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013631 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013632 return NULL;
13633 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013634 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13635 PyMem_Free(_children);
13636 _PyPegen_insert_memo(p, _start_mark, _loop1_60_type, _seq);
13637 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013638}
13639
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013640// _loop0_61: param_no_default
13641static asdl_seq *
13642_loop0_61_rule(Parser *p)
13643{
13644 if (p->error_indicator) {
13645 return NULL;
13646 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013647 void *_res = NULL;
13648 int _mark = p->mark;
13649 int _start_mark = p->mark;
13650 void **_children = PyMem_Malloc(sizeof(void *));
13651 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013652 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13653 return NULL;
13654 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013655 ssize_t _children_capacity = 1;
13656 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013657 { // param_no_default
13658 arg_ty param_no_default_var;
13659 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013660 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013661 )
13662 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013663 _res = param_no_default_var;
13664 if (_n == _children_capacity) {
13665 _children_capacity *= 2;
13666 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13667 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013668 PyErr_Format(PyExc_MemoryError, "realloc None");
13669 return NULL;
13670 }
13671 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013672 _children[_n++] = _res;
13673 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013674 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013675 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013677 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13678 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013679 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_61");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013680 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013681 return NULL;
13682 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013683 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13684 PyMem_Free(_children);
13685 _PyPegen_insert_memo(p, _start_mark, _loop0_61_type, _seq);
13686 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013687}
13688
13689// _loop1_62: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013690static asdl_seq *
13691_loop1_62_rule(Parser *p)
13692{
13693 if (p->error_indicator) {
13694 return NULL;
13695 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013696 void *_res = NULL;
13697 int _mark = p->mark;
13698 int _start_mark = p->mark;
13699 void **_children = PyMem_Malloc(sizeof(void *));
13700 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013701 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13702 return NULL;
13703 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013704 ssize_t _children_capacity = 1;
13705 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013706 { // param_with_default
13707 NameDefaultPair* param_with_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013708 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013709 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013710 )
13711 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013712 _res = param_with_default_var;
13713 if (_n == _children_capacity) {
13714 _children_capacity *= 2;
13715 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13716 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013717 PyErr_Format(PyExc_MemoryError, "realloc None");
13718 return NULL;
13719 }
13720 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013721 _children[_n++] = _res;
13722 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013723 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013724 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013725 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013726 if (_n == 0 || p->error_indicator) {
13727 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013728 return NULL;
13729 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013730 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13731 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013732 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_62");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013733 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013734 return NULL;
13735 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013736 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13737 PyMem_Free(_children);
13738 _PyPegen_insert_memo(p, _start_mark, _loop1_62_type, _seq);
13739 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013740}
13741
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013742// _loop0_63: param_no_default
13743static asdl_seq *
13744_loop0_63_rule(Parser *p)
13745{
13746 if (p->error_indicator) {
13747 return NULL;
13748 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013749 void *_res = NULL;
13750 int _mark = p->mark;
13751 int _start_mark = p->mark;
13752 void **_children = PyMem_Malloc(sizeof(void *));
13753 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013754 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13755 return NULL;
13756 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013757 ssize_t _children_capacity = 1;
13758 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013759 { // param_no_default
13760 arg_ty param_no_default_var;
13761 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013762 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013763 )
13764 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013765 _res = param_no_default_var;
13766 if (_n == _children_capacity) {
13767 _children_capacity *= 2;
13768 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13769 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013770 PyErr_Format(PyExc_MemoryError, "realloc None");
13771 return NULL;
13772 }
13773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013774 _children[_n++] = _res;
13775 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013776 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013777 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013779 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13780 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013781 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_63");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013782 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013783 return NULL;
13784 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013785 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13786 PyMem_Free(_children);
13787 _PyPegen_insert_memo(p, _start_mark, _loop0_63_type, _seq);
13788 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013789}
13790
13791// _loop1_64: param_with_default
13792static asdl_seq *
13793_loop1_64_rule(Parser *p)
13794{
13795 if (p->error_indicator) {
13796 return NULL;
13797 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013798 void *_res = NULL;
13799 int _mark = p->mark;
13800 int _start_mark = p->mark;
13801 void **_children = PyMem_Malloc(sizeof(void *));
13802 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013803 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13804 return NULL;
13805 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013806 ssize_t _children_capacity = 1;
13807 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013808 { // param_with_default
13809 NameDefaultPair* param_with_default_var;
13810 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013811 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013812 )
13813 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013814 _res = param_with_default_var;
13815 if (_n == _children_capacity) {
13816 _children_capacity *= 2;
13817 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13818 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013819 PyErr_Format(PyExc_MemoryError, "realloc None");
13820 return NULL;
13821 }
13822 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013823 _children[_n++] = _res;
13824 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013826 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013827 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013828 if (_n == 0 || p->error_indicator) {
13829 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013830 return NULL;
13831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013832 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13833 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013834 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_64");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013835 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013836 return NULL;
13837 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013838 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13839 PyMem_Free(_children);
13840 _PyPegen_insert_memo(p, _start_mark, _loop1_64_type, _seq);
13841 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013842}
13843
13844// _loop0_65: param_maybe_default
13845static asdl_seq *
13846_loop0_65_rule(Parser *p)
13847{
13848 if (p->error_indicator) {
13849 return NULL;
13850 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013851 void *_res = NULL;
13852 int _mark = p->mark;
13853 int _start_mark = p->mark;
13854 void **_children = PyMem_Malloc(sizeof(void *));
13855 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013856 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13857 return NULL;
13858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013859 ssize_t _children_capacity = 1;
13860 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013861 { // param_maybe_default
13862 NameDefaultPair* param_maybe_default_var;
13863 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013864 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013865 )
13866 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013867 _res = param_maybe_default_var;
13868 if (_n == _children_capacity) {
13869 _children_capacity *= 2;
13870 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13871 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013872 PyErr_Format(PyExc_MemoryError, "realloc None");
13873 return NULL;
13874 }
13875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013876 _children[_n++] = _res;
13877 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013879 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013880 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013881 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13882 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013883 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_65");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013884 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013885 return NULL;
13886 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013887 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13888 PyMem_Free(_children);
13889 _PyPegen_insert_memo(p, _start_mark, _loop0_65_type, _seq);
13890 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013891}
13892
13893// _loop1_66: param_maybe_default
13894static asdl_seq *
13895_loop1_66_rule(Parser *p)
13896{
13897 if (p->error_indicator) {
13898 return NULL;
13899 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013900 void *_res = NULL;
13901 int _mark = p->mark;
13902 int _start_mark = p->mark;
13903 void **_children = PyMem_Malloc(sizeof(void *));
13904 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013905 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13906 return NULL;
13907 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013908 ssize_t _children_capacity = 1;
13909 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013910 { // param_maybe_default
13911 NameDefaultPair* param_maybe_default_var;
13912 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013913 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013914 )
13915 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013916 _res = param_maybe_default_var;
13917 if (_n == _children_capacity) {
13918 _children_capacity *= 2;
13919 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13920 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013921 PyErr_Format(PyExc_MemoryError, "realloc None");
13922 return NULL;
13923 }
13924 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013925 _children[_n++] = _res;
13926 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013927 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013928 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013929 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013930 if (_n == 0 || p->error_indicator) {
13931 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013932 return NULL;
13933 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013934 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13935 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013936 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_66");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013937 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013938 return NULL;
13939 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013940 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13941 PyMem_Free(_children);
13942 _PyPegen_insert_memo(p, _start_mark, _loop1_66_type, _seq);
13943 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013944}
13945
13946// _loop1_67: ('@' named_expression NEWLINE)
13947static asdl_seq *
13948_loop1_67_rule(Parser *p)
13949{
13950 if (p->error_indicator) {
13951 return NULL;
13952 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013953 void *_res = NULL;
13954 int _mark = p->mark;
13955 int _start_mark = p->mark;
13956 void **_children = PyMem_Malloc(sizeof(void *));
13957 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013958 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13959 return NULL;
13960 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013961 ssize_t _children_capacity = 1;
13962 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013963 { // ('@' named_expression NEWLINE)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013964 void *_tmp_138_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013965 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013966 (_tmp_138_var = _tmp_138_rule(p)) // '@' named_expression NEWLINE
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013967 )
13968 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013969 _res = _tmp_138_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013970 if (_n == _children_capacity) {
13971 _children_capacity *= 2;
13972 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13973 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013974 PyErr_Format(PyExc_MemoryError, "realloc None");
13975 return NULL;
13976 }
13977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013978 _children[_n++] = _res;
13979 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013980 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013981 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013982 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013983 if (_n == 0 || p->error_indicator) {
13984 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013985 return NULL;
13986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013987 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13988 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013989 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_67");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013990 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013991 return NULL;
13992 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013993 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13994 PyMem_Free(_children);
13995 _PyPegen_insert_memo(p, _start_mark, _loop1_67_type, _seq);
13996 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013997}
13998
13999// _tmp_68: '(' arguments? ')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014000static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014001_tmp_68_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014002{
14003 if (p->error_indicator) {
14004 return NULL;
14005 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014006 void * _res = NULL;
14007 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014008 { // '(' arguments? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014009 Token * _literal;
14010 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014011 void *z;
14012 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014013 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014014 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014015 (z = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014016 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014017 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014018 )
14019 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014020 _res = z;
14021 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014022 p->error_indicator = 1;
14023 return NULL;
14024 }
14025 goto done;
14026 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014027 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014028 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014029 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014030 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014031 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014032}
14033
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014034// _loop0_70: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014035static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014036_loop0_70_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014037{
14038 if (p->error_indicator) {
14039 return NULL;
14040 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014041 void *_res = NULL;
14042 int _mark = p->mark;
14043 int _start_mark = p->mark;
14044 void **_children = PyMem_Malloc(sizeof(void *));
14045 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014046 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14047 return NULL;
14048 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014049 ssize_t _children_capacity = 1;
14050 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014051 { // ',' star_expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014052 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014053 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014054 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014055 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014056 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014057 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014058 )
14059 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014060 _res = elem;
14061 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014062 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014063 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014064 return NULL;
14065 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014066 if (_n == _children_capacity) {
14067 _children_capacity *= 2;
14068 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14069 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014070 PyErr_Format(PyExc_MemoryError, "realloc None");
14071 return NULL;
14072 }
14073 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014074 _children[_n++] = _res;
14075 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014076 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014077 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014079 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14080 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014081 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_70");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014082 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014083 return NULL;
14084 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014085 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14086 PyMem_Free(_children);
14087 _PyPegen_insert_memo(p, _start_mark, _loop0_70_type, _seq);
14088 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014089}
14090
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014091// _gather_69: star_expression _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014092static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014093_gather_69_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014094{
14095 if (p->error_indicator) {
14096 return NULL;
14097 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014098 asdl_seq * _res = NULL;
14099 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014100 { // star_expression _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014101 expr_ty elem;
14102 asdl_seq * seq;
14103 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014104 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014105 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014106 (seq = _loop0_70_rule(p)) // _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014107 )
14108 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014109 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014110 goto done;
14111 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014112 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014113 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014114 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014115 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014116 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014117}
14118
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014119// _loop1_71: (',' star_expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014120static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014121_loop1_71_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014122{
14123 if (p->error_indicator) {
14124 return NULL;
14125 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014126 void *_res = NULL;
14127 int _mark = p->mark;
14128 int _start_mark = p->mark;
14129 void **_children = PyMem_Malloc(sizeof(void *));
14130 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014131 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14132 return NULL;
14133 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014134 ssize_t _children_capacity = 1;
14135 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014136 { // (',' star_expression)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014137 void *_tmp_139_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014138 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014139 (_tmp_139_var = _tmp_139_rule(p)) // ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014140 )
14141 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014142 _res = _tmp_139_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014143 if (_n == _children_capacity) {
14144 _children_capacity *= 2;
14145 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14146 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014147 PyErr_Format(PyExc_MemoryError, "realloc None");
14148 return NULL;
14149 }
14150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014151 _children[_n++] = _res;
14152 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014153 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014154 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014155 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014156 if (_n == 0 || p->error_indicator) {
14157 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014158 return NULL;
14159 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014160 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14161 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014162 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_71");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014163 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014164 return NULL;
14165 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014166 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14167 PyMem_Free(_children);
14168 _PyPegen_insert_memo(p, _start_mark, _loop1_71_type, _seq);
14169 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014170}
14171
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014172// _loop0_73: ',' star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014173static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014174_loop0_73_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014175{
14176 if (p->error_indicator) {
14177 return NULL;
14178 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014179 void *_res = NULL;
14180 int _mark = p->mark;
14181 int _start_mark = p->mark;
14182 void **_children = PyMem_Malloc(sizeof(void *));
14183 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014184 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14185 return NULL;
14186 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014187 ssize_t _children_capacity = 1;
14188 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014189 { // ',' star_named_expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014190 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014191 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014192 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014193 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014194 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014195 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014196 )
14197 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014198 _res = elem;
14199 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014200 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014201 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014202 return NULL;
14203 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014204 if (_n == _children_capacity) {
14205 _children_capacity *= 2;
14206 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14207 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014208 PyErr_Format(PyExc_MemoryError, "realloc None");
14209 return NULL;
14210 }
14211 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014212 _children[_n++] = _res;
14213 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014214 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014215 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014216 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014217 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14218 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014219 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_73");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014220 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014221 return NULL;
14222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014223 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14224 PyMem_Free(_children);
14225 _PyPegen_insert_memo(p, _start_mark, _loop0_73_type, _seq);
14226 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014227}
14228
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014229// _gather_72: star_named_expression _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014230static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014231_gather_72_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014232{
14233 if (p->error_indicator) {
14234 return NULL;
14235 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014236 asdl_seq * _res = NULL;
14237 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014238 { // star_named_expression _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014239 expr_ty elem;
14240 asdl_seq * seq;
14241 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014242 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014243 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014244 (seq = _loop0_73_rule(p)) // _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014245 )
14246 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014247 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014248 goto done;
14249 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014250 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014252 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014253 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014254 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014255}
14256
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014257// _loop1_74: (',' expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014258static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014259_loop1_74_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014260{
14261 if (p->error_indicator) {
14262 return NULL;
14263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014264 void *_res = NULL;
14265 int _mark = p->mark;
14266 int _start_mark = p->mark;
14267 void **_children = PyMem_Malloc(sizeof(void *));
14268 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014269 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14270 return NULL;
14271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014272 ssize_t _children_capacity = 1;
14273 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014274 { // (',' expression)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014275 void *_tmp_140_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014276 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014277 (_tmp_140_var = _tmp_140_rule(p)) // ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014278 )
14279 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014280 _res = _tmp_140_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014281 if (_n == _children_capacity) {
14282 _children_capacity *= 2;
14283 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14284 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014285 PyErr_Format(PyExc_MemoryError, "realloc None");
14286 return NULL;
14287 }
14288 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014289 _children[_n++] = _res;
14290 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014292 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014293 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014294 if (_n == 0 || p->error_indicator) {
14295 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014296 return NULL;
14297 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014298 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14299 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014300 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_74");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014301 PyMem_Free(_children);
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, _loop1_74_type, _seq);
14307 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014308}
14309
Guido van Rossum3941d972020-05-01 09:42:03 -070014310// _loop0_75: lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014311static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070014312_loop0_75_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 void *_res = NULL;
14318 int _mark = p->mark;
14319 int _start_mark = p->mark;
14320 void **_children = PyMem_Malloc(sizeof(void *));
14321 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014322 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14323 return NULL;
14324 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014325 ssize_t _children_capacity = 1;
14326 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014327 { // lambda_param_no_default
14328 arg_ty lambda_param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014329 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014330 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014331 )
14332 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014333 _res = lambda_param_no_default_var;
14334 if (_n == _children_capacity) {
14335 _children_capacity *= 2;
14336 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14337 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014338 PyErr_Format(PyExc_MemoryError, "realloc None");
14339 return NULL;
14340 }
14341 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014342 _children[_n++] = _res;
14343 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014344 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014345 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014347 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14348 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014349 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_75");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014350 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014351 return NULL;
14352 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014353 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14354 PyMem_Free(_children);
14355 _PyPegen_insert_memo(p, _start_mark, _loop0_75_type, _seq);
14356 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014357}
14358
Guido van Rossum3941d972020-05-01 09:42:03 -070014359// _loop0_76: lambda_param_with_default
14360static asdl_seq *
14361_loop0_76_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014362{
14363 if (p->error_indicator) {
14364 return NULL;
14365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014366 void *_res = NULL;
14367 int _mark = p->mark;
14368 int _start_mark = p->mark;
14369 void **_children = PyMem_Malloc(sizeof(void *));
14370 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014371 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14372 return NULL;
14373 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014374 ssize_t _children_capacity = 1;
14375 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014376 { // lambda_param_with_default
14377 NameDefaultPair* lambda_param_with_default_var;
14378 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014379 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014380 )
14381 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014382 _res = lambda_param_with_default_var;
14383 if (_n == _children_capacity) {
14384 _children_capacity *= 2;
14385 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14386 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014387 PyErr_Format(PyExc_MemoryError, "realloc None");
14388 return NULL;
14389 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014391 _children[_n++] = _res;
14392 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014394 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014395 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014396 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14397 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014398 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_76");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014399 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014400 return NULL;
14401 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014402 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14403 PyMem_Free(_children);
14404 _PyPegen_insert_memo(p, _start_mark, _loop0_76_type, _seq);
14405 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014406}
14407
Guido van Rossum3941d972020-05-01 09:42:03 -070014408// _loop0_77: lambda_param_with_default
14409static asdl_seq *
14410_loop0_77_rule(Parser *p)
14411{
14412 if (p->error_indicator) {
14413 return NULL;
14414 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014415 void *_res = NULL;
14416 int _mark = p->mark;
14417 int _start_mark = p->mark;
14418 void **_children = PyMem_Malloc(sizeof(void *));
14419 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014420 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14421 return NULL;
14422 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014423 ssize_t _children_capacity = 1;
14424 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014425 { // lambda_param_with_default
14426 NameDefaultPair* lambda_param_with_default_var;
14427 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014428 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014429 )
14430 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014431 _res = lambda_param_with_default_var;
14432 if (_n == _children_capacity) {
14433 _children_capacity *= 2;
14434 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14435 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014436 PyErr_Format(PyExc_MemoryError, "realloc None");
14437 return NULL;
14438 }
14439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014440 _children[_n++] = _res;
14441 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014442 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014443 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014444 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014445 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14446 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014447 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_77");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014448 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014449 return NULL;
14450 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014451 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14452 PyMem_Free(_children);
14453 _PyPegen_insert_memo(p, _start_mark, _loop0_77_type, _seq);
14454 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014455}
14456
14457// _loop1_78: lambda_param_no_default
14458static asdl_seq *
14459_loop1_78_rule(Parser *p)
14460{
14461 if (p->error_indicator) {
14462 return NULL;
14463 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014464 void *_res = NULL;
14465 int _mark = p->mark;
14466 int _start_mark = p->mark;
14467 void **_children = PyMem_Malloc(sizeof(void *));
14468 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014469 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14470 return NULL;
14471 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014472 ssize_t _children_capacity = 1;
14473 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014474 { // lambda_param_no_default
14475 arg_ty lambda_param_no_default_var;
14476 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014477 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014478 )
14479 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014480 _res = lambda_param_no_default_var;
14481 if (_n == _children_capacity) {
14482 _children_capacity *= 2;
14483 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14484 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014485 PyErr_Format(PyExc_MemoryError, "realloc None");
14486 return NULL;
14487 }
14488 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014489 _children[_n++] = _res;
14490 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014491 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014492 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014494 if (_n == 0 || p->error_indicator) {
14495 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014496 return NULL;
14497 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014498 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14499 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014500 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_78");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014501 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014502 return NULL;
14503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014504 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14505 PyMem_Free(_children);
14506 _PyPegen_insert_memo(p, _start_mark, _loop1_78_type, _seq);
14507 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014508}
14509
14510// _loop0_79: lambda_param_with_default
14511static asdl_seq *
14512_loop0_79_rule(Parser *p)
14513{
14514 if (p->error_indicator) {
14515 return NULL;
14516 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014517 void *_res = NULL;
14518 int _mark = p->mark;
14519 int _start_mark = p->mark;
14520 void **_children = PyMem_Malloc(sizeof(void *));
14521 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014522 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14523 return NULL;
14524 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014525 ssize_t _children_capacity = 1;
14526 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014527 { // lambda_param_with_default
14528 NameDefaultPair* lambda_param_with_default_var;
14529 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014530 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014531 )
14532 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014533 _res = lambda_param_with_default_var;
14534 if (_n == _children_capacity) {
14535 _children_capacity *= 2;
14536 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14537 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014538 PyErr_Format(PyExc_MemoryError, "realloc None");
14539 return NULL;
14540 }
14541 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014542 _children[_n++] = _res;
14543 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014544 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014545 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014547 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14548 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014549 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_79");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014550 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014551 return NULL;
14552 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014553 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14554 PyMem_Free(_children);
14555 _PyPegen_insert_memo(p, _start_mark, _loop0_79_type, _seq);
14556 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014557}
14558
14559// _loop1_80: lambda_param_with_default
14560static asdl_seq *
14561_loop1_80_rule(Parser *p)
14562{
14563 if (p->error_indicator) {
14564 return NULL;
14565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014566 void *_res = NULL;
14567 int _mark = p->mark;
14568 int _start_mark = p->mark;
14569 void **_children = PyMem_Malloc(sizeof(void *));
14570 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014571 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14572 return NULL;
14573 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014574 ssize_t _children_capacity = 1;
14575 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014576 { // lambda_param_with_default
14577 NameDefaultPair* lambda_param_with_default_var;
14578 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014579 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014580 )
14581 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014582 _res = lambda_param_with_default_var;
14583 if (_n == _children_capacity) {
14584 _children_capacity *= 2;
14585 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14586 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014587 PyErr_Format(PyExc_MemoryError, "realloc None");
14588 return NULL;
14589 }
14590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014591 _children[_n++] = _res;
14592 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014593 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014594 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014595 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014596 if (_n == 0 || p->error_indicator) {
14597 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014598 return NULL;
14599 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014600 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14601 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014602 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_80");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014603 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014604 return NULL;
14605 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014606 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14607 PyMem_Free(_children);
14608 _PyPegen_insert_memo(p, _start_mark, _loop1_80_type, _seq);
14609 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014610}
14611
14612// _loop1_81: lambda_param_no_default
14613static asdl_seq *
14614_loop1_81_rule(Parser *p)
14615{
14616 if (p->error_indicator) {
14617 return NULL;
14618 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014619 void *_res = NULL;
14620 int _mark = p->mark;
14621 int _start_mark = p->mark;
14622 void **_children = PyMem_Malloc(sizeof(void *));
14623 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014624 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14625 return NULL;
14626 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014627 ssize_t _children_capacity = 1;
14628 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014629 { // lambda_param_no_default
14630 arg_ty lambda_param_no_default_var;
14631 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014632 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014633 )
14634 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014635 _res = lambda_param_no_default_var;
14636 if (_n == _children_capacity) {
14637 _children_capacity *= 2;
14638 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14639 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014640 PyErr_Format(PyExc_MemoryError, "realloc None");
14641 return NULL;
14642 }
14643 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014644 _children[_n++] = _res;
14645 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014646 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014647 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014648 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014649 if (_n == 0 || p->error_indicator) {
14650 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014651 return NULL;
14652 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014653 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14654 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014655 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_81");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014656 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014657 return NULL;
14658 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014659 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14660 PyMem_Free(_children);
14661 _PyPegen_insert_memo(p, _start_mark, _loop1_81_type, _seq);
14662 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014663}
14664
14665// _loop1_82: lambda_param_no_default
14666static asdl_seq *
14667_loop1_82_rule(Parser *p)
14668{
14669 if (p->error_indicator) {
14670 return NULL;
14671 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014672 void *_res = NULL;
14673 int _mark = p->mark;
14674 int _start_mark = p->mark;
14675 void **_children = PyMem_Malloc(sizeof(void *));
14676 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014677 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14678 return NULL;
14679 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014680 ssize_t _children_capacity = 1;
14681 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014682 { // lambda_param_no_default
14683 arg_ty lambda_param_no_default_var;
14684 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014685 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014686 )
14687 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014688 _res = lambda_param_no_default_var;
14689 if (_n == _children_capacity) {
14690 _children_capacity *= 2;
14691 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14692 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014693 PyErr_Format(PyExc_MemoryError, "realloc None");
14694 return NULL;
14695 }
14696 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014697 _children[_n++] = _res;
14698 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014699 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014700 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014701 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014702 if (_n == 0 || p->error_indicator) {
14703 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014704 return NULL;
14705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014706 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14707 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014708 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_82");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014709 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014710 return NULL;
14711 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014712 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14713 PyMem_Free(_children);
14714 _PyPegen_insert_memo(p, _start_mark, _loop1_82_type, _seq);
14715 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014716}
14717
14718// _loop0_83: lambda_param_no_default
14719static asdl_seq *
14720_loop0_83_rule(Parser *p)
14721{
14722 if (p->error_indicator) {
14723 return NULL;
14724 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014725 void *_res = NULL;
14726 int _mark = p->mark;
14727 int _start_mark = p->mark;
14728 void **_children = PyMem_Malloc(sizeof(void *));
14729 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014730 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14731 return NULL;
14732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014733 ssize_t _children_capacity = 1;
14734 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014735 { // lambda_param_no_default
14736 arg_ty lambda_param_no_default_var;
14737 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014738 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014739 )
14740 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014741 _res = lambda_param_no_default_var;
14742 if (_n == _children_capacity) {
14743 _children_capacity *= 2;
14744 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14745 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014746 PyErr_Format(PyExc_MemoryError, "realloc None");
14747 return NULL;
14748 }
14749 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014750 _children[_n++] = _res;
14751 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014752 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014753 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014754 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014755 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14756 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014757 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_83");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014758 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014759 return NULL;
14760 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014761 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14762 PyMem_Free(_children);
14763 _PyPegen_insert_memo(p, _start_mark, _loop0_83_type, _seq);
14764 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014765}
14766
14767// _loop1_84: lambda_param_with_default
14768static asdl_seq *
14769_loop1_84_rule(Parser *p)
14770{
14771 if (p->error_indicator) {
14772 return NULL;
14773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014774 void *_res = NULL;
14775 int _mark = p->mark;
14776 int _start_mark = p->mark;
14777 void **_children = PyMem_Malloc(sizeof(void *));
14778 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014779 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14780 return NULL;
14781 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014782 ssize_t _children_capacity = 1;
14783 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014784 { // lambda_param_with_default
14785 NameDefaultPair* lambda_param_with_default_var;
14786 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014787 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014788 )
14789 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014790 _res = lambda_param_with_default_var;
14791 if (_n == _children_capacity) {
14792 _children_capacity *= 2;
14793 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14794 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014795 PyErr_Format(PyExc_MemoryError, "realloc None");
14796 return NULL;
14797 }
14798 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014799 _children[_n++] = _res;
14800 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014801 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014802 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014803 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014804 if (_n == 0 || p->error_indicator) {
14805 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014806 return NULL;
14807 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014808 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14809 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014810 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_84");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014811 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014812 return NULL;
14813 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014814 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14815 PyMem_Free(_children);
14816 _PyPegen_insert_memo(p, _start_mark, _loop1_84_type, _seq);
14817 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014818}
14819
14820// _loop0_85: lambda_param_no_default
14821static asdl_seq *
14822_loop0_85_rule(Parser *p)
14823{
14824 if (p->error_indicator) {
14825 return NULL;
14826 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014827 void *_res = NULL;
14828 int _mark = p->mark;
14829 int _start_mark = p->mark;
14830 void **_children = PyMem_Malloc(sizeof(void *));
14831 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014832 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14833 return NULL;
14834 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014835 ssize_t _children_capacity = 1;
14836 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014837 { // lambda_param_no_default
14838 arg_ty lambda_param_no_default_var;
14839 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014840 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014841 )
14842 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014843 _res = lambda_param_no_default_var;
14844 if (_n == _children_capacity) {
14845 _children_capacity *= 2;
14846 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14847 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014848 PyErr_Format(PyExc_MemoryError, "realloc None");
14849 return NULL;
14850 }
14851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014852 _children[_n++] = _res;
14853 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014854 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014855 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014856 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014857 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14858 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014859 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_85");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014860 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014861 return NULL;
14862 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014863 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14864 PyMem_Free(_children);
14865 _PyPegen_insert_memo(p, _start_mark, _loop0_85_type, _seq);
14866 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014867}
14868
14869// _loop1_86: lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014870static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014871_loop1_86_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014872{
14873 if (p->error_indicator) {
14874 return NULL;
14875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014876 void *_res = NULL;
14877 int _mark = p->mark;
14878 int _start_mark = p->mark;
14879 void **_children = PyMem_Malloc(sizeof(void *));
14880 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014881 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14882 return NULL;
14883 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014884 ssize_t _children_capacity = 1;
14885 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014886 { // lambda_param_with_default
14887 NameDefaultPair* lambda_param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014888 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014889 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014890 )
14891 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014892 _res = lambda_param_with_default_var;
14893 if (_n == _children_capacity) {
14894 _children_capacity *= 2;
14895 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14896 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014897 PyErr_Format(PyExc_MemoryError, "realloc None");
14898 return NULL;
14899 }
14900 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014901 _children[_n++] = _res;
14902 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014903 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014904 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014905 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014906 if (_n == 0 || p->error_indicator) {
14907 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014908 return NULL;
14909 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014910 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14911 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014912 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_86");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014913 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014914 return NULL;
14915 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014916 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14917 PyMem_Free(_children);
14918 _PyPegen_insert_memo(p, _start_mark, _loop1_86_type, _seq);
14919 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014920}
14921
Guido van Rossum3941d972020-05-01 09:42:03 -070014922// _loop0_87: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014923static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070014924_loop0_87_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014925{
14926 if (p->error_indicator) {
14927 return NULL;
14928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014929 void *_res = NULL;
14930 int _mark = p->mark;
14931 int _start_mark = p->mark;
14932 void **_children = PyMem_Malloc(sizeof(void *));
14933 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014934 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14935 return NULL;
14936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014937 ssize_t _children_capacity = 1;
14938 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014939 { // lambda_param_maybe_default
14940 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014941 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014942 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014943 )
14944 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014945 _res = lambda_param_maybe_default_var;
14946 if (_n == _children_capacity) {
14947 _children_capacity *= 2;
14948 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14949 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014950 PyErr_Format(PyExc_MemoryError, "realloc None");
14951 return NULL;
14952 }
14953 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014954 _children[_n++] = _res;
14955 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014957 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014958 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014959 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14960 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014961 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_87");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014962 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014963 return NULL;
14964 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014965 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14966 PyMem_Free(_children);
14967 _PyPegen_insert_memo(p, _start_mark, _loop0_87_type, _seq);
14968 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014969}
14970
Guido van Rossum3941d972020-05-01 09:42:03 -070014971// _loop1_88: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014972static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070014973_loop1_88_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014974{
14975 if (p->error_indicator) {
14976 return NULL;
14977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014978 void *_res = NULL;
14979 int _mark = p->mark;
14980 int _start_mark = p->mark;
14981 void **_children = PyMem_Malloc(sizeof(void *));
14982 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014983 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14984 return NULL;
14985 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014986 ssize_t _children_capacity = 1;
14987 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014988 { // lambda_param_maybe_default
14989 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014990 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014991 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014992 )
14993 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014994 _res = lambda_param_maybe_default_var;
14995 if (_n == _children_capacity) {
14996 _children_capacity *= 2;
14997 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14998 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014999 PyErr_Format(PyExc_MemoryError, "realloc None");
15000 return NULL;
15001 }
15002 }
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);
Guido van Rossum3941d972020-05-01 09:42:03 -070015010 return NULL;
15011 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015012 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15013 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015014 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_88");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015015 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015016 return NULL;
15017 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015018 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15019 PyMem_Free(_children);
15020 _PyPegen_insert_memo(p, _start_mark, _loop1_88_type, _seq);
15021 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015022}
15023
Guido van Rossum3941d972020-05-01 09:42:03 -070015024// _loop1_89: ('or' conjunction)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015025static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015026_loop1_89_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015027{
15028 if (p->error_indicator) {
15029 return NULL;
15030 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015031 void *_res = NULL;
15032 int _mark = p->mark;
15033 int _start_mark = p->mark;
15034 void **_children = PyMem_Malloc(sizeof(void *));
15035 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015036 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15037 return NULL;
15038 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015039 ssize_t _children_capacity = 1;
15040 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015041 { // ('or' conjunction)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015042 void *_tmp_141_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015043 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015044 (_tmp_141_var = _tmp_141_rule(p)) // 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015045 )
15046 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015047 _res = _tmp_141_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015048 if (_n == _children_capacity) {
15049 _children_capacity *= 2;
15050 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15051 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015052 PyErr_Format(PyExc_MemoryError, "realloc None");
15053 return NULL;
15054 }
15055 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015056 _children[_n++] = _res;
15057 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015059 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015060 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015061 if (_n == 0 || p->error_indicator) {
15062 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015063 return NULL;
15064 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015065 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15066 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015067 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_89");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015068 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015069 return NULL;
15070 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015071 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15072 PyMem_Free(_children);
15073 _PyPegen_insert_memo(p, _start_mark, _loop1_89_type, _seq);
15074 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015075}
15076
Guido van Rossum3941d972020-05-01 09:42:03 -070015077// _loop1_90: ('and' inversion)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015078static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015079_loop1_90_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015080{
15081 if (p->error_indicator) {
15082 return NULL;
15083 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015084 void *_res = NULL;
15085 int _mark = p->mark;
15086 int _start_mark = p->mark;
15087 void **_children = PyMem_Malloc(sizeof(void *));
15088 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015089 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15090 return NULL;
15091 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015092 ssize_t _children_capacity = 1;
15093 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015094 { // ('and' inversion)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015095 void *_tmp_142_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015096 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015097 (_tmp_142_var = _tmp_142_rule(p)) // 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015098 )
15099 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015100 _res = _tmp_142_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015101 if (_n == _children_capacity) {
15102 _children_capacity *= 2;
15103 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15104 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015105 PyErr_Format(PyExc_MemoryError, "realloc None");
15106 return NULL;
15107 }
15108 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015109 _children[_n++] = _res;
15110 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015111 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015112 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015113 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015114 if (_n == 0 || p->error_indicator) {
15115 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015116 return NULL;
15117 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015118 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15119 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015120 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_90");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015121 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015122 return NULL;
15123 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015124 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15125 PyMem_Free(_children);
15126 _PyPegen_insert_memo(p, _start_mark, _loop1_90_type, _seq);
15127 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015128}
15129
Guido van Rossum3941d972020-05-01 09:42:03 -070015130// _loop1_91: compare_op_bitwise_or_pair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015131static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015132_loop1_91_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015133{
15134 if (p->error_indicator) {
15135 return NULL;
15136 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015137 void *_res = NULL;
15138 int _mark = p->mark;
15139 int _start_mark = p->mark;
15140 void **_children = PyMem_Malloc(sizeof(void *));
15141 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015142 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15143 return NULL;
15144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015145 ssize_t _children_capacity = 1;
15146 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015147 { // compare_op_bitwise_or_pair
15148 CmpopExprPair* compare_op_bitwise_or_pair_var;
15149 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015150 (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 +010015151 )
15152 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015153 _res = compare_op_bitwise_or_pair_var;
15154 if (_n == _children_capacity) {
15155 _children_capacity *= 2;
15156 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15157 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015158 PyErr_Format(PyExc_MemoryError, "realloc None");
15159 return NULL;
15160 }
15161 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015162 _children[_n++] = _res;
15163 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015164 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015165 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015166 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015167 if (_n == 0 || p->error_indicator) {
15168 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015169 return NULL;
15170 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015171 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15172 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015173 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_91");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015174 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015175 return NULL;
15176 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015177 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15178 PyMem_Free(_children);
15179 _PyPegen_insert_memo(p, _start_mark, _loop1_91_type, _seq);
15180 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015181}
15182
Guido van Rossum3941d972020-05-01 09:42:03 -070015183// _tmp_92: '!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010015184static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015185_tmp_92_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010015186{
15187 if (p->error_indicator) {
15188 return NULL;
15189 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015190 void * _res = NULL;
15191 int _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015192 { // '!='
Pablo Galindob796b3f2020-05-01 12:32:26 +010015193 Token * tok;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015194 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015195 (tok = _PyPegen_expect_token(p, 28)) // token='!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010015196 )
15197 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015198 _res = _PyPegen_check_barry_as_flufl ( p ) ? NULL : tok;
15199 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindo2b74c832020-04-27 18:02:07 +010015200 p->error_indicator = 1;
15201 return NULL;
15202 }
15203 goto done;
15204 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015205 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015206 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015207 _res = NULL;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015208 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015209 return _res;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015210}
15211
Guido van Rossum3941d972020-05-01 09:42:03 -070015212// _loop0_94: ',' slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015213static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015214_loop0_94_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015215{
15216 if (p->error_indicator) {
15217 return NULL;
15218 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015219 void *_res = NULL;
15220 int _mark = p->mark;
15221 int _start_mark = p->mark;
15222 void **_children = PyMem_Malloc(sizeof(void *));
15223 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015224 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15225 return NULL;
15226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015227 ssize_t _children_capacity = 1;
15228 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015229 { // ',' slice
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015230 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015231 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015232 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015233 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015234 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015235 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015236 )
15237 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015238 _res = elem;
15239 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015240 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015241 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015242 return NULL;
15243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015244 if (_n == _children_capacity) {
15245 _children_capacity *= 2;
15246 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15247 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015248 PyErr_Format(PyExc_MemoryError, "realloc None");
15249 return NULL;
15250 }
15251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015252 _children[_n++] = _res;
15253 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015254 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015255 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015256 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015257 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15258 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015259 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_94");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015260 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015261 return NULL;
15262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015263 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15264 PyMem_Free(_children);
15265 _PyPegen_insert_memo(p, _start_mark, _loop0_94_type, _seq);
15266 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015267}
15268
Guido van Rossum3941d972020-05-01 09:42:03 -070015269// _gather_93: slice _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015270static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015271_gather_93_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015272{
15273 if (p->error_indicator) {
15274 return NULL;
15275 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015276 asdl_seq * _res = NULL;
15277 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015278 { // slice _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015279 expr_ty elem;
15280 asdl_seq * seq;
15281 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015282 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015283 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015284 (seq = _loop0_94_rule(p)) // _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015285 )
15286 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015287 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015288 goto done;
15289 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015290 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015292 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015293 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015294 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015295}
15296
Guido van Rossum3941d972020-05-01 09:42:03 -070015297// _tmp_95: ':' expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015298static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015299_tmp_95_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015300{
15301 if (p->error_indicator) {
15302 return NULL;
15303 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015304 void * _res = NULL;
15305 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015306 { // ':' expression?
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015307 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015308 void *d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015309 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015310 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015311 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015312 (d = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015313 )
15314 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015315 _res = d;
15316 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015317 p->error_indicator = 1;
15318 return NULL;
15319 }
15320 goto done;
15321 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015322 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015324 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015325 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015326 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015327}
15328
Guido van Rossum3941d972020-05-01 09:42:03 -070015329// _tmp_96: tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015330static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015331_tmp_96_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015332{
15333 if (p->error_indicator) {
15334 return NULL;
15335 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015336 void * _res = NULL;
15337 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015338 { // tuple
15339 expr_ty tuple_var;
15340 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015341 (tuple_var = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015342 )
15343 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015344 _res = tuple_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015345 goto done;
15346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015347 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015348 }
15349 { // group
15350 expr_ty group_var;
15351 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015352 (group_var = group_rule(p)) // group
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015353 )
15354 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015355 _res = group_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015356 goto done;
15357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015358 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015359 }
15360 { // genexp
15361 expr_ty genexp_var;
15362 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015363 (genexp_var = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015364 )
15365 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015366 _res = genexp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015367 goto done;
15368 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015369 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015370 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015371 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015372 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015373 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015374}
15375
Guido van Rossum3941d972020-05-01 09:42:03 -070015376// _tmp_97: list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015377static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015378_tmp_97_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015379{
15380 if (p->error_indicator) {
15381 return NULL;
15382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015383 void * _res = NULL;
15384 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015385 { // list
15386 expr_ty list_var;
15387 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015388 (list_var = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015389 )
15390 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015391 _res = list_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015392 goto done;
15393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015394 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015395 }
15396 { // listcomp
15397 expr_ty listcomp_var;
15398 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015399 (listcomp_var = listcomp_rule(p)) // listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015400 )
15401 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015402 _res = listcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015403 goto done;
15404 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015405 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015407 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015408 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015409 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015410}
15411
Guido van Rossum3941d972020-05-01 09:42:03 -070015412// _tmp_98: dict | set | dictcomp | setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015413static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015414_tmp_98_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015415{
15416 if (p->error_indicator) {
15417 return NULL;
15418 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015419 void * _res = NULL;
15420 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015421 { // dict
15422 expr_ty dict_var;
15423 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015424 (dict_var = dict_rule(p)) // dict
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015425 )
15426 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015427 _res = dict_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015428 goto done;
15429 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015430 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015431 }
15432 { // set
15433 expr_ty set_var;
15434 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015435 (set_var = set_rule(p)) // set
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015436 )
15437 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015438 _res = set_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015439 goto done;
15440 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015441 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015442 }
15443 { // dictcomp
15444 expr_ty dictcomp_var;
15445 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015446 (dictcomp_var = dictcomp_rule(p)) // dictcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015447 )
15448 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015449 _res = dictcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015450 goto done;
15451 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015452 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015453 }
15454 { // setcomp
15455 expr_ty setcomp_var;
15456 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015457 (setcomp_var = setcomp_rule(p)) // setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015458 )
15459 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015460 _res = setcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015461 goto done;
15462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015463 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015465 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015466 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015467 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015468}
15469
Guido van Rossum3941d972020-05-01 09:42:03 -070015470// _loop1_99: STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015471static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015472_loop1_99_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015473{
15474 if (p->error_indicator) {
15475 return NULL;
15476 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015477 void *_res = NULL;
15478 int _mark = p->mark;
15479 int _start_mark = p->mark;
15480 void **_children = PyMem_Malloc(sizeof(void *));
15481 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015482 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15483 return NULL;
15484 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015485 ssize_t _children_capacity = 1;
15486 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015487 { // STRING
15488 expr_ty string_var;
15489 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015490 (string_var = _PyPegen_string_token(p)) // STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015491 )
15492 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015493 _res = string_var;
15494 if (_n == _children_capacity) {
15495 _children_capacity *= 2;
15496 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15497 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015498 PyErr_Format(PyExc_MemoryError, "realloc None");
15499 return NULL;
15500 }
15501 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015502 _children[_n++] = _res;
15503 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015504 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015505 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015507 if (_n == 0 || p->error_indicator) {
15508 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015509 return NULL;
15510 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015511 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15512 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015513 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_99");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015514 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015515 return NULL;
15516 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015517 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15518 PyMem_Free(_children);
15519 _PyPegen_insert_memo(p, _start_mark, _loop1_99_type, _seq);
15520 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015521}
15522
Guido van Rossum3941d972020-05-01 09:42:03 -070015523// _tmp_100: star_named_expression ',' star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015524static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015525_tmp_100_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015526{
15527 if (p->error_indicator) {
15528 return NULL;
15529 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015530 void * _res = NULL;
15531 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015532 { // star_named_expression ',' star_named_expressions?
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015533 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015534 expr_ty y;
15535 void *z;
15536 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015537 (y = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015538 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015539 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015540 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015541 (z = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015542 )
15543 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015544 _res = _PyPegen_seq_insert_in_front ( p , y , z );
15545 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015546 p->error_indicator = 1;
15547 return NULL;
15548 }
15549 goto done;
15550 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015551 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015552 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015553 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015554 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015555 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015556}
15557
Guido van Rossum3941d972020-05-01 09:42:03 -070015558// _tmp_101: yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015559static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015560_tmp_101_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015561{
15562 if (p->error_indicator) {
15563 return NULL;
15564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015565 void * _res = NULL;
15566 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015567 { // yield_expr
15568 expr_ty yield_expr_var;
15569 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015570 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015571 )
15572 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015573 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015574 goto done;
15575 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015576 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015577 }
15578 { // named_expression
15579 expr_ty named_expression_var;
15580 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015581 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015582 )
15583 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015584 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015585 goto done;
15586 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015587 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015588 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015589 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015590 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015591 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015592}
15593
Guido van Rossum3941d972020-05-01 09:42:03 -070015594// _loop0_103: ',' kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015595static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015596_loop0_103_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015597{
15598 if (p->error_indicator) {
15599 return NULL;
15600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015601 void *_res = NULL;
15602 int _mark = p->mark;
15603 int _start_mark = p->mark;
15604 void **_children = PyMem_Malloc(sizeof(void *));
15605 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015606 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15607 return NULL;
15608 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015609 ssize_t _children_capacity = 1;
15610 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015611 { // ',' kvpair
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015612 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015613 KeyValuePair* elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015614 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015615 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015616 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015617 (elem = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015618 )
15619 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015620 _res = elem;
15621 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015622 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015623 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015624 return NULL;
15625 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015626 if (_n == _children_capacity) {
15627 _children_capacity *= 2;
15628 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15629 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015630 PyErr_Format(PyExc_MemoryError, "realloc None");
15631 return NULL;
15632 }
15633 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015634 _children[_n++] = _res;
15635 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015636 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015637 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015638 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015639 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15640 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015641 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_103");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015642 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015643 return NULL;
15644 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015645 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15646 PyMem_Free(_children);
15647 _PyPegen_insert_memo(p, _start_mark, _loop0_103_type, _seq);
15648 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015649}
15650
Guido van Rossum3941d972020-05-01 09:42:03 -070015651// _gather_102: kvpair _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015652static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015653_gather_102_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015654{
15655 if (p->error_indicator) {
15656 return NULL;
15657 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015658 asdl_seq * _res = NULL;
15659 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015660 { // kvpair _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015661 KeyValuePair* elem;
15662 asdl_seq * seq;
15663 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015664 (elem = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015665 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015666 (seq = _loop0_103_rule(p)) // _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015667 )
15668 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015669 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015670 goto done;
15671 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015672 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015673 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015674 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015675 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015676 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015677}
15678
Guido van Rossum3941d972020-05-01 09:42:03 -070015679// _loop1_104: for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015680static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015681_loop1_104_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015682{
15683 if (p->error_indicator) {
15684 return NULL;
15685 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015686 void *_res = NULL;
15687 int _mark = p->mark;
15688 int _start_mark = p->mark;
15689 void **_children = PyMem_Malloc(sizeof(void *));
15690 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015691 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15692 return NULL;
15693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015694 ssize_t _children_capacity = 1;
15695 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015696 { // for_if_clause
15697 comprehension_ty for_if_clause_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015698 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015699 (for_if_clause_var = for_if_clause_rule(p)) // for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015700 )
15701 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015702 _res = for_if_clause_var;
15703 if (_n == _children_capacity) {
15704 _children_capacity *= 2;
15705 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15706 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015707 PyErr_Format(PyExc_MemoryError, "realloc None");
15708 return NULL;
15709 }
15710 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015711 _children[_n++] = _res;
15712 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015713 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015714 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015715 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015716 if (_n == 0 || p->error_indicator) {
15717 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015718 return NULL;
15719 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015720 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15721 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015722 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_104");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015723 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015724 return NULL;
15725 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015726 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15727 PyMem_Free(_children);
15728 _PyPegen_insert_memo(p, _start_mark, _loop1_104_type, _seq);
15729 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015730}
15731
Guido van Rossum3941d972020-05-01 09:42:03 -070015732// _loop0_105: ('if' disjunction)
Pablo Galindo2b74c832020-04-27 18:02:07 +010015733static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015734_loop0_105_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010015735{
15736 if (p->error_indicator) {
15737 return NULL;
15738 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015739 void *_res = NULL;
15740 int _mark = p->mark;
15741 int _start_mark = p->mark;
15742 void **_children = PyMem_Malloc(sizeof(void *));
15743 if (!_children) {
Pablo Galindo2b74c832020-04-27 18:02:07 +010015744 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15745 return NULL;
15746 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015747 ssize_t _children_capacity = 1;
15748 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015749 { // ('if' disjunction)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015750 void *_tmp_143_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015751 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015752 (_tmp_143_var = _tmp_143_rule(p)) // 'if' disjunction
Pablo Galindo2b74c832020-04-27 18:02:07 +010015753 )
15754 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015755 _res = _tmp_143_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015756 if (_n == _children_capacity) {
15757 _children_capacity *= 2;
15758 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15759 if (!_children) {
Pablo Galindo2b74c832020-04-27 18:02:07 +010015760 PyErr_Format(PyExc_MemoryError, "realloc None");
15761 return NULL;
15762 }
15763 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015764 _children[_n++] = _res;
15765 _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015766 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015767 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015768 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015769 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15770 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015771 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_105");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015772 PyMem_Free(_children);
Pablo Galindo2b74c832020-04-27 18:02:07 +010015773 return NULL;
15774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015775 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15776 PyMem_Free(_children);
15777 _PyPegen_insert_memo(p, _start_mark, _loop0_105_type, _seq);
15778 return _seq;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015779}
15780
Guido van Rossum3941d972020-05-01 09:42:03 -070015781// _loop0_106: ('if' disjunction)
Guido van Rossumc001c092020-04-30 12:12:19 -070015782static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015783_loop0_106_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070015784{
15785 if (p->error_indicator) {
15786 return NULL;
15787 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015788 void *_res = NULL;
15789 int _mark = p->mark;
15790 int _start_mark = p->mark;
15791 void **_children = PyMem_Malloc(sizeof(void *));
15792 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015793 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15794 return NULL;
15795 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015796 ssize_t _children_capacity = 1;
15797 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015798 { // ('if' disjunction)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015799 void *_tmp_144_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015800 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015801 (_tmp_144_var = _tmp_144_rule(p)) // 'if' disjunction
Guido van Rossumc001c092020-04-30 12:12:19 -070015802 )
15803 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015804 _res = _tmp_144_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015805 if (_n == _children_capacity) {
15806 _children_capacity *= 2;
15807 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15808 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015809 PyErr_Format(PyExc_MemoryError, "realloc None");
15810 return NULL;
15811 }
15812 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015813 _children[_n++] = _res;
15814 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015816 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015818 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15819 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015820 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_106");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015821 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015822 return NULL;
15823 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015824 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15825 PyMem_Free(_children);
15826 _PyPegen_insert_memo(p, _start_mark, _loop0_106_type, _seq);
15827 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015828}
15829
Guido van Rossum3941d972020-05-01 09:42:03 -070015830// _tmp_107: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015831static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015832_tmp_107_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015833{
15834 if (p->error_indicator) {
15835 return NULL;
15836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015837 void * _res = NULL;
15838 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015839 { // ',' args
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015840 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015841 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015842 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015843 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015844 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015845 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015846 )
15847 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015848 _res = c;
15849 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015850 p->error_indicator = 1;
15851 return NULL;
15852 }
Guido van Rossumc001c092020-04-30 12:12:19 -070015853 goto done;
15854 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015855 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015856 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015857 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070015858 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015859 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070015860}
15861
Guido van Rossum3941d972020-05-01 09:42:03 -070015862// _tmp_108: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015863static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015864_tmp_108_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015865{
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;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015871 { // ',' args
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015872 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015873 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015874 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015875 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015876 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015877 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015878 )
15879 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015880 _res = c;
15881 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015882 p->error_indicator = 1;
15883 return NULL;
15884 }
15885 goto done;
15886 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015887 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015888 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015889 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015890 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015891 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015892}
15893
Guido van Rossum3941d972020-05-01 09:42:03 -070015894// _loop0_110: ',' kwarg_or_starred
15895static asdl_seq *
15896_loop0_110_rule(Parser *p)
15897{
15898 if (p->error_indicator) {
15899 return NULL;
15900 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015901 void *_res = NULL;
15902 int _mark = p->mark;
15903 int _start_mark = p->mark;
15904 void **_children = PyMem_Malloc(sizeof(void *));
15905 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015906 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15907 return NULL;
15908 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015909 ssize_t _children_capacity = 1;
15910 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070015911 { // ',' kwarg_or_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015912 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070015913 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070015914 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015915 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070015916 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015917 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070015918 )
15919 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015920 _res = elem;
15921 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015922 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015923 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070015924 return NULL;
15925 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015926 if (_n == _children_capacity) {
15927 _children_capacity *= 2;
15928 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15929 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015930 PyErr_Format(PyExc_MemoryError, "realloc None");
15931 return NULL;
15932 }
15933 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015934 _children[_n++] = _res;
15935 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015937 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015938 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015939 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15940 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015941 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_110");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015942 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070015943 return NULL;
15944 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015945 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15946 PyMem_Free(_children);
15947 _PyPegen_insert_memo(p, _start_mark, _loop0_110_type, _seq);
15948 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070015949}
15950
15951// _gather_109: kwarg_or_starred _loop0_110
15952static asdl_seq *
15953_gather_109_rule(Parser *p)
15954{
15955 if (p->error_indicator) {
15956 return NULL;
15957 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015958 asdl_seq * _res = NULL;
15959 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015960 { // kwarg_or_starred _loop0_110
15961 KeywordOrStarred* elem;
15962 asdl_seq * seq;
15963 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015964 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070015965 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015966 (seq = _loop0_110_rule(p)) // _loop0_110
Guido van Rossum3941d972020-05-01 09:42:03 -070015967 )
15968 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015969 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070015970 goto done;
15971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015972 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015973 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015974 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070015975 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015976 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070015977}
15978
15979// _loop0_112: ',' kwarg_or_double_starred
15980static asdl_seq *
15981_loop0_112_rule(Parser *p)
15982{
15983 if (p->error_indicator) {
15984 return NULL;
15985 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015986 void *_res = NULL;
15987 int _mark = p->mark;
15988 int _start_mark = p->mark;
15989 void **_children = PyMem_Malloc(sizeof(void *));
15990 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015991 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15992 return NULL;
15993 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015994 ssize_t _children_capacity = 1;
15995 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070015996 { // ',' kwarg_or_double_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015997 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070015998 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070015999 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016000 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070016001 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016002 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070016003 )
16004 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016005 _res = elem;
16006 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016007 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016008 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016009 return NULL;
16010 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016011 if (_n == _children_capacity) {
16012 _children_capacity *= 2;
16013 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16014 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016015 PyErr_Format(PyExc_MemoryError, "realloc None");
16016 return NULL;
16017 }
16018 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016019 _children[_n++] = _res;
16020 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016022 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016023 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016024 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16025 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016026 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_112");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016027 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016028 return NULL;
16029 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016030 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16031 PyMem_Free(_children);
16032 _PyPegen_insert_memo(p, _start_mark, _loop0_112_type, _seq);
16033 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016034}
16035
16036// _gather_111: kwarg_or_double_starred _loop0_112
16037static asdl_seq *
16038_gather_111_rule(Parser *p)
16039{
16040 if (p->error_indicator) {
16041 return NULL;
16042 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016043 asdl_seq * _res = NULL;
16044 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016045 { // kwarg_or_double_starred _loop0_112
16046 KeywordOrStarred* elem;
16047 asdl_seq * seq;
16048 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016049 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070016050 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016051 (seq = _loop0_112_rule(p)) // _loop0_112
Guido van Rossum3941d972020-05-01 09:42:03 -070016052 )
16053 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016054 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070016055 goto done;
16056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016057 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016059 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070016060 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016061 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070016062}
16063
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016064// _loop0_114: ',' kwarg_or_starred
Pablo Galindo2b74c832020-04-27 18:02:07 +010016065static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016066_loop0_114_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016067{
16068 if (p->error_indicator) {
16069 return NULL;
16070 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016071 void *_res = NULL;
16072 int _mark = p->mark;
16073 int _start_mark = p->mark;
16074 void **_children = PyMem_Malloc(sizeof(void *));
16075 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016076 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16077 return NULL;
16078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016079 ssize_t _children_capacity = 1;
16080 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070016081 { // ',' kwarg_or_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016082 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070016083 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070016084 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016085 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070016086 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016087 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016088 )
16089 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016090 _res = elem;
16091 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016092 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016093 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016094 return NULL;
16095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016096 if (_n == _children_capacity) {
16097 _children_capacity *= 2;
16098 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16099 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016100 PyErr_Format(PyExc_MemoryError, "realloc None");
16101 return NULL;
16102 }
16103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016104 _children[_n++] = _res;
16105 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016106 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016107 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016108 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016109 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16110 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016111 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_114");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016112 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016113 return NULL;
16114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016115 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16116 PyMem_Free(_children);
16117 _PyPegen_insert_memo(p, _start_mark, _loop0_114_type, _seq);
16118 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070016119}
16120
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016121// _gather_113: kwarg_or_starred _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070016122static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016123_gather_113_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016124{
16125 if (p->error_indicator) {
16126 return NULL;
16127 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016128 asdl_seq * _res = NULL;
16129 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016130 { // kwarg_or_starred _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070016131 KeywordOrStarred* elem;
16132 asdl_seq * seq;
16133 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016134 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016135 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016136 (seq = _loop0_114_rule(p)) // _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070016137 )
16138 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016139 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070016140 goto done;
16141 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016142 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016143 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016144 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070016145 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016146 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070016147}
16148
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016149// _loop0_116: ',' kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016150static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016151_loop0_116_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016152{
16153 if (p->error_indicator) {
16154 return NULL;
16155 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016156 void *_res = NULL;
16157 int _mark = p->mark;
16158 int _start_mark = p->mark;
16159 void **_children = PyMem_Malloc(sizeof(void *));
16160 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016161 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16162 return NULL;
16163 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016164 ssize_t _children_capacity = 1;
16165 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070016166 { // ',' kwarg_or_double_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016167 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070016168 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070016169 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016170 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070016171 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016172 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016173 )
16174 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016175 _res = elem;
16176 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016177 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016178 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016179 return NULL;
16180 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016181 if (_n == _children_capacity) {
16182 _children_capacity *= 2;
16183 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16184 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016185 PyErr_Format(PyExc_MemoryError, "realloc None");
16186 return NULL;
16187 }
16188 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016189 _children[_n++] = _res;
16190 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016191 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016192 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016193 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016194 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16195 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016196 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_116");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016197 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016198 return NULL;
16199 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016200 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16201 PyMem_Free(_children);
16202 _PyPegen_insert_memo(p, _start_mark, _loop0_116_type, _seq);
16203 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070016204}
16205
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016206// _gather_115: kwarg_or_double_starred _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070016207static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016208_gather_115_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016209{
16210 if (p->error_indicator) {
16211 return NULL;
16212 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016213 asdl_seq * _res = NULL;
16214 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016215 { // kwarg_or_double_starred _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070016216 KeywordOrStarred* elem;
16217 asdl_seq * seq;
16218 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016219 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016220 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016221 (seq = _loop0_116_rule(p)) // _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070016222 )
16223 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016224 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070016225 goto done;
16226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016227 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016229 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070016230 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016231 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070016232}
16233
Guido van Rossum3941d972020-05-01 09:42:03 -070016234// _loop0_117: (',' star_target)
Guido van Rossumc001c092020-04-30 12:12:19 -070016235static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016236_loop0_117_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016237{
16238 if (p->error_indicator) {
16239 return NULL;
16240 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016241 void *_res = NULL;
16242 int _mark = p->mark;
16243 int _start_mark = p->mark;
16244 void **_children = PyMem_Malloc(sizeof(void *));
16245 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016246 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16247 return NULL;
16248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016249 ssize_t _children_capacity = 1;
16250 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016251 { // (',' star_target)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016252 void *_tmp_145_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016253 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016254 (_tmp_145_var = _tmp_145_rule(p)) // ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016255 )
16256 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016257 _res = _tmp_145_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016258 if (_n == _children_capacity) {
16259 _children_capacity *= 2;
16260 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16261 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016262 PyErr_Format(PyExc_MemoryError, "realloc None");
16263 return NULL;
16264 }
16265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016266 _children[_n++] = _res;
16267 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016268 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016269 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016270 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016271 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16272 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016273 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_117");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016274 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016275 return NULL;
16276 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016277 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16278 PyMem_Free(_children);
16279 _PyPegen_insert_memo(p, _start_mark, _loop0_117_type, _seq);
16280 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016281}
16282
Guido van Rossum3941d972020-05-01 09:42:03 -070016283// _loop0_119: ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016284static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016285_loop0_119_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016286{
16287 if (p->error_indicator) {
16288 return NULL;
16289 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016290 void *_res = NULL;
16291 int _mark = p->mark;
16292 int _start_mark = p->mark;
16293 void **_children = PyMem_Malloc(sizeof(void *));
16294 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016295 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16296 return NULL;
16297 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016298 ssize_t _children_capacity = 1;
16299 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016300 { // ',' star_target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016301 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016302 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016303 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016304 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016305 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016306 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016307 )
16308 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016309 _res = elem;
16310 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016311 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016312 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016313 return NULL;
16314 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016315 if (_n == _children_capacity) {
16316 _children_capacity *= 2;
16317 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16318 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016319 PyErr_Format(PyExc_MemoryError, "realloc None");
16320 return NULL;
16321 }
16322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016323 _children[_n++] = _res;
16324 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016325 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016326 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016327 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016328 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16329 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016330 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_119");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016331 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016332 return NULL;
16333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016334 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16335 PyMem_Free(_children);
16336 _PyPegen_insert_memo(p, _start_mark, _loop0_119_type, _seq);
16337 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016338}
16339
Guido van Rossum3941d972020-05-01 09:42:03 -070016340// _gather_118: star_target _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016341static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016342_gather_118_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016343{
16344 if (p->error_indicator) {
16345 return NULL;
16346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016347 asdl_seq * _res = NULL;
16348 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016349 { // star_target _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016350 expr_ty elem;
16351 asdl_seq * seq;
16352 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016353 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016354 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016355 (seq = _loop0_119_rule(p)) // _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016356 )
16357 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016358 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016359 goto done;
16360 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016361 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016362 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016363 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016364 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016365 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016366}
16367
Guido van Rossum3941d972020-05-01 09:42:03 -070016368// _tmp_120: !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016369static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016370_tmp_120_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016371{
16372 if (p->error_indicator) {
16373 return NULL;
16374 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016375 void * _res = NULL;
16376 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016377 { // !'*' star_target
16378 expr_ty star_target_var;
16379 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016380 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016381 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016382 (star_target_var = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016383 )
16384 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016385 _res = star_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016386 goto done;
16387 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016388 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016389 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016390 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016391 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016392 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016393}
16394
Guido van Rossum3941d972020-05-01 09:42:03 -070016395// _loop0_122: ',' del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016396static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016397_loop0_122_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016398{
16399 if (p->error_indicator) {
16400 return NULL;
16401 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016402 void *_res = NULL;
16403 int _mark = p->mark;
16404 int _start_mark = p->mark;
16405 void **_children = PyMem_Malloc(sizeof(void *));
16406 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016407 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16408 return NULL;
16409 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016410 ssize_t _children_capacity = 1;
16411 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016412 { // ',' del_target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016413 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016414 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016415 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016416 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016417 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016418 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016419 )
16420 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016421 _res = elem;
16422 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016423 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016424 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016425 return NULL;
16426 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016427 if (_n == _children_capacity) {
16428 _children_capacity *= 2;
16429 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16430 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016431 PyErr_Format(PyExc_MemoryError, "realloc None");
16432 return NULL;
16433 }
16434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016435 _children[_n++] = _res;
16436 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016437 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016438 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016440 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16441 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016442 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_122");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016443 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016444 return NULL;
16445 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016446 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16447 PyMem_Free(_children);
16448 _PyPegen_insert_memo(p, _start_mark, _loop0_122_type, _seq);
16449 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016450}
16451
Guido van Rossum3941d972020-05-01 09:42:03 -070016452// _gather_121: del_target _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016453static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016454_gather_121_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016455{
16456 if (p->error_indicator) {
16457 return NULL;
16458 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016459 asdl_seq * _res = NULL;
16460 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016461 { // del_target _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016462 expr_ty elem;
16463 asdl_seq * seq;
16464 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016465 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016466 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016467 (seq = _loop0_122_rule(p)) // _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016468 )
16469 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016470 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016471 goto done;
16472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016473 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016475 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016476 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016477 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016478}
16479
Guido van Rossum3941d972020-05-01 09:42:03 -070016480// _loop0_124: ',' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016481static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016482_loop0_124_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016483{
16484 if (p->error_indicator) {
16485 return NULL;
16486 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016487 void *_res = NULL;
16488 int _mark = p->mark;
16489 int _start_mark = p->mark;
16490 void **_children = PyMem_Malloc(sizeof(void *));
16491 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016492 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16493 return NULL;
16494 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016495 ssize_t _children_capacity = 1;
16496 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016497 { // ',' target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016498 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016499 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016500 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016501 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016502 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016503 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016504 )
16505 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016506 _res = elem;
16507 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016508 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016509 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016510 return NULL;
16511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016512 if (_n == _children_capacity) {
16513 _children_capacity *= 2;
16514 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16515 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016516 PyErr_Format(PyExc_MemoryError, "realloc None");
16517 return NULL;
16518 }
16519 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016520 _children[_n++] = _res;
16521 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016522 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016523 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016524 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016525 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16526 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016527 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_124");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016528 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016529 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_124_type, _seq);
16534 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016535}
16536
Guido van Rossum3941d972020-05-01 09:42:03 -070016537// _gather_123: target _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016538static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016539_gather_123_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016540{
16541 if (p->error_indicator) {
16542 return NULL;
16543 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016544 asdl_seq * _res = NULL;
16545 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016546 { // target _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016547 expr_ty elem;
16548 asdl_seq * seq;
16549 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016550 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016551 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016552 (seq = _loop0_124_rule(p)) // _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016553 )
16554 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016555 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016556 goto done;
16557 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016558 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016559 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016560 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016561 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016562 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016563}
16564
Guido van Rossum3941d972020-05-01 09:42:03 -070016565// _tmp_125: args | expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016566static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016567_tmp_125_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016568{
16569 if (p->error_indicator) {
16570 return NULL;
16571 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016572 void * _res = NULL;
16573 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016574 { // args
16575 expr_ty args_var;
16576 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016577 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016578 )
16579 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016580 _res = args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016581 goto done;
16582 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016583 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016584 }
16585 { // expression for_if_clauses
16586 expr_ty expression_var;
16587 asdl_seq* for_if_clauses_var;
16588 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016589 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016590 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016591 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016592 )
16593 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016594 _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016595 goto done;
16596 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016597 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016598 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016599 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016600 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016601 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016602}
16603
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016604// _loop0_126: star_named_expressions
16605static asdl_seq *
16606_loop0_126_rule(Parser *p)
16607{
16608 if (p->error_indicator) {
16609 return NULL;
16610 }
16611 void *_res = NULL;
16612 int _mark = p->mark;
16613 int _start_mark = p->mark;
16614 void **_children = PyMem_Malloc(sizeof(void *));
16615 if (!_children) {
16616 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16617 return NULL;
16618 }
16619 ssize_t _children_capacity = 1;
16620 ssize_t _n = 0;
16621 { // star_named_expressions
16622 asdl_seq* star_named_expressions_var;
16623 while (
16624 (star_named_expressions_var = star_named_expressions_rule(p)) // star_named_expressions
16625 )
16626 {
16627 _res = star_named_expressions_var;
16628 if (_n == _children_capacity) {
16629 _children_capacity *= 2;
16630 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16631 if (!_children) {
16632 PyErr_Format(PyExc_MemoryError, "realloc None");
16633 return NULL;
16634 }
16635 }
16636 _children[_n++] = _res;
16637 _mark = p->mark;
16638 }
16639 p->mark = _mark;
16640 }
16641 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16642 if (!_seq) {
16643 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_126");
16644 PyMem_Free(_children);
16645 return NULL;
16646 }
16647 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_126_type, _seq);
16650 return _seq;
16651}
16652
16653// _tmp_127: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016654static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016655_tmp_127_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;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016662 { // '=' annotated_rhs
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016663 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016664 expr_ty annotated_rhs_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016665 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016666 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016667 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016668 (annotated_rhs_var = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016669 )
16670 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016671 _res = _PyPegen_dummy_name(p, _literal, annotated_rhs_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016672 goto done;
16673 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016674 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016675 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016676 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016677 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016678 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016679}
16680
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016681// _tmp_128: '=' | augassign
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016682static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016683_tmp_128_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016684{
16685 if (p->error_indicator) {
16686 return NULL;
16687 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016688 void * _res = NULL;
16689 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016690 { // '='
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016691 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016692 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016693 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016694 )
16695 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016696 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016697 goto done;
16698 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016699 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016700 }
16701 { // augassign
16702 AugOperator* augassign_var;
16703 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016704 (augassign_var = augassign_rule(p)) // augassign
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016705 )
16706 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016707 _res = augassign_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016708 goto done;
16709 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016710 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016711 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016712 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016713 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016714 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016715}
16716
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016717// _tmp_129: yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016718static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016719_tmp_129_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016720{
16721 if (p->error_indicator) {
16722 return NULL;
16723 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016724 void * _res = NULL;
16725 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016726 { // yield_expr
16727 expr_ty yield_expr_var;
16728 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016729 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016730 )
16731 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016732 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016733 goto done;
16734 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016735 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016736 }
16737 { // star_expressions
16738 expr_ty star_expressions_var;
16739 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016740 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016741 )
16742 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016743 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016744 goto done;
16745 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016746 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016747 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016748 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016749 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016750 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016751}
16752
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016753// _tmp_130: '[' | '(' | '{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016754static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016755_tmp_130_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016756{
16757 if (p->error_indicator) {
16758 return NULL;
16759 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016760 void * _res = NULL;
16761 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016762 { // '['
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016763 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016764 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016765 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016766 )
16767 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016768 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016769 goto done;
16770 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016771 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016772 }
16773 { // '('
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016774 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016775 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016776 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016777 )
16778 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016779 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016780 goto done;
16781 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016782 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016783 }
16784 { // '{'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016785 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016786 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016787 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016788 )
16789 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016790 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016791 goto done;
16792 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016793 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016794 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016795 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016796 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016797 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016798}
16799
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016800// _loop0_131: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070016801static asdl_seq *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016802_loop0_131_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016803{
16804 if (p->error_indicator) {
16805 return NULL;
16806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016807 void *_res = NULL;
16808 int _mark = p->mark;
16809 int _start_mark = p->mark;
16810 void **_children = PyMem_Malloc(sizeof(void *));
16811 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016812 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16813 return NULL;
16814 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016815 ssize_t _children_capacity = 1;
16816 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070016817 { // param_no_default
16818 arg_ty param_no_default_var;
16819 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016820 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016821 )
16822 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016823 _res = param_no_default_var;
16824 if (_n == _children_capacity) {
16825 _children_capacity *= 2;
16826 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16827 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016828 PyErr_Format(PyExc_MemoryError, "realloc None");
16829 return NULL;
16830 }
16831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016832 _children[_n++] = _res;
16833 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016834 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016835 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016837 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16838 if (!_seq) {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016839 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_131");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016840 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016841 return NULL;
16842 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016843 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16844 PyMem_Free(_children);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016845 _PyPegen_insert_memo(p, _start_mark, _loop0_131_type, _seq);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016846 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016847}
16848
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016849// _tmp_132: slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016850static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016851_tmp_132_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016852{
16853 if (p->error_indicator) {
16854 return NULL;
16855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016856 void * _res = NULL;
16857 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016858 { // slash_with_default
16859 SlashWithDefault* slash_with_default_var;
16860 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016861 (slash_with_default_var = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016862 )
16863 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016864 _res = slash_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016865 goto done;
16866 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016867 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016868 }
Guido van Rossumc001c092020-04-30 12:12:19 -070016869 { // param_with_default+
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016870 asdl_seq * _loop1_146_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016871 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016872 (_loop1_146_var = _loop1_146_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016873 )
16874 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016875 _res = _loop1_146_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016876 goto done;
16877 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016878 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016879 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016880 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016881 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016882 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016883}
16884
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016885// _tmp_133: ')' | ',' (')' | '**')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016886static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016887_tmp_133_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016888{
16889 if (p->error_indicator) {
16890 return NULL;
16891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016892 void * _res = NULL;
16893 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016894 { // ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016895 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016896 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016897 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016898 )
16899 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016900 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016901 goto done;
16902 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016903 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016904 }
16905 { // ',' (')' | '**')
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016906 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016907 void *_tmp_147_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016908 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016909 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016910 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016911 (_tmp_147_var = _tmp_147_rule(p)) // ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016912 )
16913 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016914 _res = _PyPegen_dummy_name(p, _literal, _tmp_147_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016915 goto done;
16916 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016917 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016918 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016919 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016920 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016921 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016922}
16923
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016924// _tmp_134: ':' | ',' (':' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016925static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016926_tmp_134_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016927{
16928 if (p->error_indicator) {
16929 return NULL;
16930 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016931 void * _res = NULL;
16932 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016933 { // ':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016934 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016935 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016936 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016937 )
16938 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016939 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016940 goto done;
16941 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016942 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016943 }
16944 { // ',' (':' | '**')
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016945 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016946 void *_tmp_148_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016947 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016948 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016949 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016950 (_tmp_148_var = _tmp_148_rule(p)) // ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016951 )
16952 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016953 _res = _PyPegen_dummy_name(p, _literal, _tmp_148_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016954 goto done;
16955 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016956 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016957 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016958 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016959 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016960 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016961}
16962
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016963// _tmp_135: star_targets '='
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016964static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016965_tmp_135_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016966{
16967 if (p->error_indicator) {
16968 return NULL;
16969 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016970 void * _res = NULL;
16971 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016972 { // star_targets '='
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016973 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016974 expr_ty z;
16975 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016976 (z = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016977 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016978 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016979 )
16980 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016981 _res = z;
16982 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016983 p->error_indicator = 1;
16984 return NULL;
16985 }
16986 goto done;
16987 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016988 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016989 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016990 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016991 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016992 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016993}
16994
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016995// _tmp_136: '.' | '...'
16996static void *
16997_tmp_136_rule(Parser *p)
16998{
16999 if (p->error_indicator) {
17000 return NULL;
17001 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017002 void * _res = NULL;
17003 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017004 { // '.'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017005 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017006 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017007 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017008 )
17009 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017010 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017011 goto done;
17012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017013 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017014 }
17015 { // '...'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017016 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017017 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017018 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017019 )
17020 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017021 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017022 goto done;
17023 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017024 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017025 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017026 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017027 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017028 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017029}
17030
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017031// _tmp_137: '.' | '...'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017032static void *
17033_tmp_137_rule(Parser *p)
17034{
17035 if (p->error_indicator) {
17036 return NULL;
17037 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017038 void * _res = NULL;
17039 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017040 { // '.'
17041 Token * _literal;
17042 if (
17043 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
17044 )
17045 {
17046 _res = _literal;
17047 goto done;
17048 }
17049 p->mark = _mark;
17050 }
17051 { // '...'
17052 Token * _literal;
17053 if (
17054 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
17055 )
17056 {
17057 _res = _literal;
17058 goto done;
17059 }
17060 p->mark = _mark;
17061 }
17062 _res = NULL;
17063 done:
17064 return _res;
17065}
17066
17067// _tmp_138: '@' named_expression NEWLINE
17068static void *
17069_tmp_138_rule(Parser *p)
17070{
17071 if (p->error_indicator) {
17072 return NULL;
17073 }
17074 void * _res = NULL;
17075 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017076 { // '@' named_expression NEWLINE
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017077 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017078 expr_ty f;
Pablo Galindob796b3f2020-05-01 12:32:26 +010017079 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017080 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017081 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017082 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017083 (f = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017084 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017085 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017086 )
17087 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017088 _res = f;
17089 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017090 p->error_indicator = 1;
17091 return NULL;
17092 }
17093 goto done;
17094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017095 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017097 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017098 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017099 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017100}
17101
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017102// _tmp_139: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017103static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017104_tmp_139_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017105{
17106 if (p->error_indicator) {
17107 return NULL;
17108 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017109 void * _res = NULL;
17110 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017111 { // ',' star_expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017112 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017113 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017114 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017115 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017116 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017117 (c = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017118 )
17119 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017120 _res = c;
17121 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017122 p->error_indicator = 1;
17123 return NULL;
17124 }
17125 goto done;
17126 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017127 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017128 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017129 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017130 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017131 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017132}
17133
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017134// _tmp_140: ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017135static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017136_tmp_140_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017137{
17138 if (p->error_indicator) {
17139 return NULL;
17140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017141 void * _res = NULL;
17142 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017143 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017144 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017145 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017146 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017147 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017148 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017149 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017150 )
17151 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017152 _res = c;
17153 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017154 p->error_indicator = 1;
17155 return NULL;
17156 }
17157 goto done;
17158 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017159 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017160 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017161 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017162 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017163 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017164}
17165
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017166// _tmp_141: 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017167static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017168_tmp_141_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017169{
17170 if (p->error_indicator) {
17171 return NULL;
17172 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017173 void * _res = NULL;
17174 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017175 { // 'or' conjunction
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017176 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017177 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017178 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017179 (_keyword = _PyPegen_expect_token(p, 532)) // token='or'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017180 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017181 (c = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017182 )
17183 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017184 _res = c;
17185 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017186 p->error_indicator = 1;
17187 return NULL;
17188 }
17189 goto done;
17190 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017191 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017192 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017193 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017194 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017195 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017196}
17197
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017198// _tmp_142: 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017199static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017200_tmp_142_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017201{
17202 if (p->error_indicator) {
17203 return NULL;
17204 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017205 void * _res = NULL;
17206 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017207 { // 'and' inversion
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017208 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017209 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017210 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017211 (_keyword = _PyPegen_expect_token(p, 533)) // token='and'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017212 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017213 (c = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017214 )
17215 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017216 _res = c;
17217 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017218 p->error_indicator = 1;
17219 return NULL;
17220 }
17221 goto done;
17222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017223 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017224 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017225 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017226 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017227 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017228}
17229
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017230// _tmp_143: 'if' disjunction
17231static void *
17232_tmp_143_rule(Parser *p)
17233{
17234 if (p->error_indicator) {
17235 return NULL;
17236 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017237 void * _res = NULL;
17238 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017239 { // 'if' disjunction
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017240 Token * _keyword;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017241 expr_ty z;
17242 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017243 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017244 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017245 (z = disjunction_rule(p)) // disjunction
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017246 )
17247 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017248 _res = z;
17249 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017250 p->error_indicator = 1;
17251 return NULL;
17252 }
17253 goto done;
17254 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017255 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017256 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017257 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017258 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017259 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017260}
17261
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017262// _tmp_144: 'if' disjunction
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017263static void *
17264_tmp_144_rule(Parser *p)
17265{
17266 if (p->error_indicator) {
17267 return NULL;
17268 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017269 void * _res = NULL;
17270 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017271 { // 'if' disjunction
17272 Token * _keyword;
17273 expr_ty z;
17274 if (
17275 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
17276 &&
17277 (z = disjunction_rule(p)) // disjunction
17278 )
17279 {
17280 _res = z;
17281 if (_res == NULL && PyErr_Occurred()) {
17282 p->error_indicator = 1;
17283 return NULL;
17284 }
17285 goto done;
17286 }
17287 p->mark = _mark;
17288 }
17289 _res = NULL;
17290 done:
17291 return _res;
17292}
17293
17294// _tmp_145: ',' star_target
17295static void *
17296_tmp_145_rule(Parser *p)
17297{
17298 if (p->error_indicator) {
17299 return NULL;
17300 }
17301 void * _res = NULL;
17302 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017303 { // ',' star_target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017304 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017305 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017306 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017307 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017308 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017309 (c = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017310 )
17311 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017312 _res = c;
17313 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017314 p->error_indicator = 1;
17315 return NULL;
17316 }
17317 goto done;
17318 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017319 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017320 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017321 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017322 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017323 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017324}
17325
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017326// _loop1_146: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017327static asdl_seq *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017328_loop1_146_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070017329{
17330 if (p->error_indicator) {
17331 return NULL;
17332 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017333 void *_res = NULL;
17334 int _mark = p->mark;
17335 int _start_mark = p->mark;
17336 void **_children = PyMem_Malloc(sizeof(void *));
17337 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070017338 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
17339 return NULL;
17340 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017341 ssize_t _children_capacity = 1;
17342 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070017343 { // param_with_default
17344 NameDefaultPair* param_with_default_var;
17345 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010017346 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070017347 )
17348 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017349 _res = param_with_default_var;
17350 if (_n == _children_capacity) {
17351 _children_capacity *= 2;
17352 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17353 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070017354 PyErr_Format(PyExc_MemoryError, "realloc None");
17355 return NULL;
17356 }
17357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017358 _children[_n++] = _res;
17359 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017360 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017361 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017362 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017363 if (_n == 0 || p->error_indicator) {
17364 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070017365 return NULL;
17366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017367 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17368 if (!_seq) {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017369 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_146");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017370 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070017371 return NULL;
17372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017373 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17374 PyMem_Free(_children);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017375 _PyPegen_insert_memo(p, _start_mark, _loop1_146_type, _seq);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017376 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070017377}
17378
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017379// _tmp_147: ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017380static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017381_tmp_147_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017382{
17383 if (p->error_indicator) {
17384 return NULL;
17385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017386 void * _res = NULL;
17387 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017388 { // ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017389 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017390 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017391 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017392 )
17393 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017394 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017395 goto done;
17396 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017397 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017398 }
17399 { // '**'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017400 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017401 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017402 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017403 )
17404 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017405 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017406 goto done;
17407 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017408 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017409 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017410 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017411 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017412 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017413}
17414
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017415// _tmp_148: ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017416static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017417_tmp_148_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017418{
17419 if (p->error_indicator) {
17420 return NULL;
17421 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017422 void * _res = NULL;
17423 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017424 { // ':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017425 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017426 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017427 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017428 )
17429 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017430 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017431 goto done;
17432 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017433 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017434 }
17435 { // '**'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017436 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017437 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017438 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017439 )
17440 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017441 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017442 goto done;
17443 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017444 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017445 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017446 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017447 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017448 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017449}
17450
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017451void *
17452_PyPegen_parse(Parser *p)
17453{
17454 // Initialize keywords
17455 p->keywords = reserved_keywords;
17456 p->n_keyword_lists = n_keyword_lists;
17457
17458 // Run parser
17459 void *result = NULL;
17460 if (p->start_rule == Py_file_input) {
17461 result = file_rule(p);
17462 } else if (p->start_rule == Py_single_input) {
17463 result = interactive_rule(p);
17464 } else if (p->start_rule == Py_eval_input) {
17465 result = eval_rule(p);
Guido van Rossumc001c092020-04-30 12:12:19 -070017466 } else if (p->start_rule == Py_func_type_input) {
17467 result = func_type_rule(p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017468 } else if (p->start_rule == Py_fstring_input) {
17469 result = fstring_rule(p);
17470 }
17471
17472 return result;
17473}
17474
17475// The end