blob: a1a6f4c06bf63d1e35579a89b089e290b29018db [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
349#define _tmp_126_type 1278
350#define _tmp_127_type 1279
351#define _tmp_128_type 1280
352#define _tmp_129_type 1281
353#define _loop0_130_type 1282
354#define _tmp_131_type 1283
355#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
368#define _loop1_145_type 1297
369#define _tmp_146_type 1298
370#define _tmp_147_type 1299
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100371
372static mod_ty file_rule(Parser *p);
373static mod_ty interactive_rule(Parser *p);
374static mod_ty eval_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700375static mod_ty func_type_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100376static expr_ty fstring_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700377static asdl_seq* type_expressions_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100378static asdl_seq* statements_rule(Parser *p);
379static asdl_seq* statement_rule(Parser *p);
380static asdl_seq* statement_newline_rule(Parser *p);
381static asdl_seq* simple_stmt_rule(Parser *p);
382static stmt_ty small_stmt_rule(Parser *p);
383static stmt_ty compound_stmt_rule(Parser *p);
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +0300384static stmt_ty assignment_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100385static AugOperator* augassign_rule(Parser *p);
386static stmt_ty global_stmt_rule(Parser *p);
387static stmt_ty nonlocal_stmt_rule(Parser *p);
388static stmt_ty yield_stmt_rule(Parser *p);
389static stmt_ty assert_stmt_rule(Parser *p);
390static stmt_ty del_stmt_rule(Parser *p);
391static stmt_ty import_stmt_rule(Parser *p);
392static stmt_ty import_name_rule(Parser *p);
393static stmt_ty import_from_rule(Parser *p);
394static asdl_seq* import_from_targets_rule(Parser *p);
395static asdl_seq* import_from_as_names_rule(Parser *p);
396static alias_ty import_from_as_name_rule(Parser *p);
397static asdl_seq* dotted_as_names_rule(Parser *p);
398static alias_ty dotted_as_name_rule(Parser *p);
399static expr_ty dotted_name_rule(Parser *p);
400static stmt_ty if_stmt_rule(Parser *p);
401static stmt_ty elif_stmt_rule(Parser *p);
402static asdl_seq* else_block_rule(Parser *p);
403static stmt_ty while_stmt_rule(Parser *p);
404static stmt_ty for_stmt_rule(Parser *p);
405static stmt_ty with_stmt_rule(Parser *p);
406static withitem_ty with_item_rule(Parser *p);
407static stmt_ty try_stmt_rule(Parser *p);
408static excepthandler_ty except_block_rule(Parser *p);
409static asdl_seq* finally_block_rule(Parser *p);
410static stmt_ty return_stmt_rule(Parser *p);
411static stmt_ty raise_stmt_rule(Parser *p);
412static stmt_ty function_def_rule(Parser *p);
413static stmt_ty function_def_raw_rule(Parser *p);
Pablo Galindod9552412020-05-01 16:32:09 +0100414static Token* func_type_comment_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100415static arguments_ty params_rule(Parser *p);
416static arguments_ty parameters_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700417static asdl_seq* slash_no_default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100418static SlashWithDefault* slash_with_default_rule(Parser *p);
419static StarEtc* star_etc_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100420static arg_ty kwds_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700421static arg_ty param_no_default_rule(Parser *p);
422static NameDefaultPair* param_with_default_rule(Parser *p);
423static NameDefaultPair* param_maybe_default_rule(Parser *p);
424static arg_ty param_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100425static expr_ty annotation_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700426static expr_ty default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100427static asdl_seq* decorators_rule(Parser *p);
428static stmt_ty class_def_rule(Parser *p);
429static stmt_ty class_def_raw_rule(Parser *p);
430static asdl_seq* block_rule(Parser *p);
431static asdl_seq* expressions_list_rule(Parser *p);
432static expr_ty star_expressions_rule(Parser *p);
433static expr_ty star_expression_rule(Parser *p);
434static asdl_seq* star_named_expressions_rule(Parser *p);
435static expr_ty star_named_expression_rule(Parser *p);
436static expr_ty named_expression_rule(Parser *p);
437static expr_ty annotated_rhs_rule(Parser *p);
438static expr_ty expressions_rule(Parser *p);
439static expr_ty expression_rule(Parser *p);
440static expr_ty lambdef_rule(Parser *p);
441static arguments_ty lambda_parameters_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700442static asdl_seq* lambda_slash_no_default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100443static SlashWithDefault* lambda_slash_with_default_rule(Parser *p);
444static StarEtc* lambda_star_etc_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100445static arg_ty lambda_kwds_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700446static arg_ty lambda_param_no_default_rule(Parser *p);
447static NameDefaultPair* lambda_param_with_default_rule(Parser *p);
448static NameDefaultPair* lambda_param_maybe_default_rule(Parser *p);
449static arg_ty lambda_param_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100450static expr_ty disjunction_rule(Parser *p);
451static expr_ty conjunction_rule(Parser *p);
452static expr_ty inversion_rule(Parser *p);
453static expr_ty comparison_rule(Parser *p);
454static CmpopExprPair* compare_op_bitwise_or_pair_rule(Parser *p);
455static CmpopExprPair* eq_bitwise_or_rule(Parser *p);
456static CmpopExprPair* noteq_bitwise_or_rule(Parser *p);
457static CmpopExprPair* lte_bitwise_or_rule(Parser *p);
458static CmpopExprPair* lt_bitwise_or_rule(Parser *p);
459static CmpopExprPair* gte_bitwise_or_rule(Parser *p);
460static CmpopExprPair* gt_bitwise_or_rule(Parser *p);
461static CmpopExprPair* notin_bitwise_or_rule(Parser *p);
462static CmpopExprPair* in_bitwise_or_rule(Parser *p);
463static CmpopExprPair* isnot_bitwise_or_rule(Parser *p);
464static CmpopExprPair* is_bitwise_or_rule(Parser *p);
465static expr_ty bitwise_or_rule(Parser *p);
466static expr_ty bitwise_xor_rule(Parser *p);
467static expr_ty bitwise_and_rule(Parser *p);
468static expr_ty shift_expr_rule(Parser *p);
469static expr_ty sum_rule(Parser *p);
470static expr_ty term_rule(Parser *p);
471static expr_ty factor_rule(Parser *p);
472static expr_ty power_rule(Parser *p);
473static expr_ty await_primary_rule(Parser *p);
474static expr_ty primary_rule(Parser *p);
475static expr_ty slices_rule(Parser *p);
476static expr_ty slice_rule(Parser *p);
477static expr_ty atom_rule(Parser *p);
478static expr_ty strings_rule(Parser *p);
479static expr_ty list_rule(Parser *p);
480static expr_ty listcomp_rule(Parser *p);
481static expr_ty tuple_rule(Parser *p);
482static expr_ty group_rule(Parser *p);
483static expr_ty genexp_rule(Parser *p);
484static expr_ty set_rule(Parser *p);
485static expr_ty setcomp_rule(Parser *p);
486static expr_ty dict_rule(Parser *p);
487static expr_ty dictcomp_rule(Parser *p);
488static asdl_seq* kvpairs_rule(Parser *p);
489static KeyValuePair* kvpair_rule(Parser *p);
490static asdl_seq* for_if_clauses_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300491static comprehension_ty for_if_clause_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100492static expr_ty yield_expr_rule(Parser *p);
493static expr_ty arguments_rule(Parser *p);
494static expr_ty args_rule(Parser *p);
495static asdl_seq* kwargs_rule(Parser *p);
496static expr_ty starred_expression_rule(Parser *p);
497static KeywordOrStarred* kwarg_or_starred_rule(Parser *p);
498static KeywordOrStarred* kwarg_or_double_starred_rule(Parser *p);
499static expr_ty star_targets_rule(Parser *p);
500static asdl_seq* star_targets_seq_rule(Parser *p);
501static expr_ty star_target_rule(Parser *p);
502static expr_ty star_atom_rule(Parser *p);
503static expr_ty inside_paren_ann_assign_target_rule(Parser *p);
504static expr_ty ann_assign_subscript_attribute_target_rule(Parser *p);
505static asdl_seq* del_targets_rule(Parser *p);
506static expr_ty del_target_rule(Parser *p);
507static expr_ty del_t_atom_rule(Parser *p);
Shantanu27c0d9b2020-05-11 14:53:58 -0700508static void *del_target_end_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100509static asdl_seq* targets_rule(Parser *p);
510static expr_ty target_rule(Parser *p);
511static expr_ty t_primary_rule(Parser *p);
512static void *t_lookahead_rule(Parser *p);
513static expr_ty t_atom_rule(Parser *p);
514static void *incorrect_arguments_rule(Parser *p);
Lysandros Nikolaou4638c642020-05-07 13:44:06 +0300515static void *invalid_kwarg_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100516static void *invalid_named_expression_rule(Parser *p);
517static void *invalid_assignment_rule(Parser *p);
518static void *invalid_block_rule(Parser *p);
519static void *invalid_comprehension_rule(Parser *p);
520static void *invalid_parameters_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300521static void *invalid_star_etc_rule(Parser *p);
522static void *invalid_lambda_star_etc_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700523static void *invalid_double_type_comments_rule(Parser *p);
Shantanu27c0d9b2020-05-11 14:53:58 -0700524static void *invalid_del_target_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100525static asdl_seq *_loop0_1_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700526static asdl_seq *_loop0_2_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100527static asdl_seq *_loop0_4_rule(Parser *p);
528static asdl_seq *_gather_3_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700529static asdl_seq *_loop0_6_rule(Parser *p);
530static asdl_seq *_gather_5_rule(Parser *p);
531static asdl_seq *_loop0_8_rule(Parser *p);
532static asdl_seq *_gather_7_rule(Parser *p);
533static asdl_seq *_loop0_10_rule(Parser *p);
534static asdl_seq *_gather_9_rule(Parser *p);
535static asdl_seq *_loop1_11_rule(Parser *p);
536static asdl_seq *_loop0_13_rule(Parser *p);
537static asdl_seq *_gather_12_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100538static void *_tmp_14_rule(Parser *p);
539static void *_tmp_15_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700540static void *_tmp_16_rule(Parser *p);
541static void *_tmp_17_rule(Parser *p);
542static void *_tmp_18_rule(Parser *p);
543static void *_tmp_19_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100544static void *_tmp_20_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700545static void *_tmp_21_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100546static asdl_seq *_loop1_22_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700547static void *_tmp_23_rule(Parser *p);
548static void *_tmp_24_rule(Parser *p);
549static asdl_seq *_loop0_26_rule(Parser *p);
550static asdl_seq *_gather_25_rule(Parser *p);
551static asdl_seq *_loop0_28_rule(Parser *p);
552static asdl_seq *_gather_27_rule(Parser *p);
553static void *_tmp_29_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100554static asdl_seq *_loop0_30_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700555static asdl_seq *_loop1_31_rule(Parser *p);
556static asdl_seq *_loop0_33_rule(Parser *p);
557static asdl_seq *_gather_32_rule(Parser *p);
558static void *_tmp_34_rule(Parser *p);
559static asdl_seq *_loop0_36_rule(Parser *p);
560static asdl_seq *_gather_35_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100561static void *_tmp_37_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700562static asdl_seq *_loop0_39_rule(Parser *p);
563static asdl_seq *_gather_38_rule(Parser *p);
564static asdl_seq *_loop0_41_rule(Parser *p);
565static asdl_seq *_gather_40_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300566static asdl_seq *_loop0_43_rule(Parser *p);
567static asdl_seq *_gather_42_rule(Parser *p);
568static asdl_seq *_loop0_45_rule(Parser *p);
569static asdl_seq *_gather_44_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100570static void *_tmp_46_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300571static asdl_seq *_loop1_47_rule(Parser *p);
572static void *_tmp_48_rule(Parser *p);
573static void *_tmp_49_rule(Parser *p);
574static void *_tmp_50_rule(Parser *p);
575static void *_tmp_51_rule(Parser *p);
576static void *_tmp_52_rule(Parser *p);
577static asdl_seq *_loop0_53_rule(Parser *p);
578static asdl_seq *_loop0_54_rule(Parser *p);
579static asdl_seq *_loop0_55_rule(Parser *p);
580static asdl_seq *_loop1_56_rule(Parser *p);
581static asdl_seq *_loop0_57_rule(Parser *p);
582static asdl_seq *_loop1_58_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700583static asdl_seq *_loop1_59_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300584static asdl_seq *_loop1_60_rule(Parser *p);
585static asdl_seq *_loop0_61_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700586static asdl_seq *_loop1_62_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300587static asdl_seq *_loop0_63_rule(Parser *p);
588static asdl_seq *_loop1_64_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700589static asdl_seq *_loop0_65_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700590static asdl_seq *_loop1_66_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300591static asdl_seq *_loop1_67_rule(Parser *p);
592static void *_tmp_68_rule(Parser *p);
593static asdl_seq *_loop0_70_rule(Parser *p);
594static asdl_seq *_gather_69_rule(Parser *p);
595static asdl_seq *_loop1_71_rule(Parser *p);
596static asdl_seq *_loop0_73_rule(Parser *p);
597static asdl_seq *_gather_72_rule(Parser *p);
598static asdl_seq *_loop1_74_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700599static asdl_seq *_loop0_75_rule(Parser *p);
600static asdl_seq *_loop0_76_rule(Parser *p);
601static asdl_seq *_loop0_77_rule(Parser *p);
602static asdl_seq *_loop1_78_rule(Parser *p);
603static asdl_seq *_loop0_79_rule(Parser *p);
604static asdl_seq *_loop1_80_rule(Parser *p);
605static asdl_seq *_loop1_81_rule(Parser *p);
606static asdl_seq *_loop1_82_rule(Parser *p);
607static asdl_seq *_loop0_83_rule(Parser *p);
608static asdl_seq *_loop1_84_rule(Parser *p);
609static asdl_seq *_loop0_85_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300610static asdl_seq *_loop1_86_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700611static asdl_seq *_loop0_87_rule(Parser *p);
612static asdl_seq *_loop1_88_rule(Parser *p);
613static asdl_seq *_loop1_89_rule(Parser *p);
614static asdl_seq *_loop1_90_rule(Parser *p);
615static asdl_seq *_loop1_91_rule(Parser *p);
616static void *_tmp_92_rule(Parser *p);
617static asdl_seq *_loop0_94_rule(Parser *p);
618static asdl_seq *_gather_93_rule(Parser *p);
619static void *_tmp_95_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700620static void *_tmp_96_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700621static void *_tmp_97_rule(Parser *p);
622static void *_tmp_98_rule(Parser *p);
623static asdl_seq *_loop1_99_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100624static void *_tmp_100_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300625static void *_tmp_101_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700626static asdl_seq *_loop0_103_rule(Parser *p);
627static asdl_seq *_gather_102_rule(Parser *p);
628static asdl_seq *_loop1_104_rule(Parser *p);
629static asdl_seq *_loop0_105_rule(Parser *p);
630static asdl_seq *_loop0_106_rule(Parser *p);
631static void *_tmp_107_rule(Parser *p);
632static void *_tmp_108_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300633static asdl_seq *_loop0_110_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700634static asdl_seq *_gather_109_rule(Parser *p);
635static asdl_seq *_loop0_112_rule(Parser *p);
636static asdl_seq *_gather_111_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100637static asdl_seq *_loop0_114_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300638static asdl_seq *_gather_113_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100639static asdl_seq *_loop0_116_rule(Parser *p);
640static asdl_seq *_gather_115_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700641static asdl_seq *_loop0_117_rule(Parser *p);
642static asdl_seq *_loop0_119_rule(Parser *p);
643static asdl_seq *_gather_118_rule(Parser *p);
644static void *_tmp_120_rule(Parser *p);
645static asdl_seq *_loop0_122_rule(Parser *p);
646static asdl_seq *_gather_121_rule(Parser *p);
647static asdl_seq *_loop0_124_rule(Parser *p);
648static asdl_seq *_gather_123_rule(Parser *p);
649static void *_tmp_125_rule(Parser *p);
650static void *_tmp_126_rule(Parser *p);
651static void *_tmp_127_rule(Parser *p);
652static void *_tmp_128_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100653static void *_tmp_129_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700654static asdl_seq *_loop0_130_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100655static void *_tmp_131_rule(Parser *p);
656static void *_tmp_132_rule(Parser *p);
657static void *_tmp_133_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700658static void *_tmp_134_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100659static void *_tmp_135_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700660static void *_tmp_136_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100661static void *_tmp_137_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700662static void *_tmp_138_rule(Parser *p);
663static void *_tmp_139_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300664static void *_tmp_140_rule(Parser *p);
665static void *_tmp_141_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700666static void *_tmp_142_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300667static void *_tmp_143_rule(Parser *p);
668static void *_tmp_144_rule(Parser *p);
669static asdl_seq *_loop1_145_rule(Parser *p);
670static void *_tmp_146_rule(Parser *p);
671static void *_tmp_147_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100672
673
674// file: statements? $
675static mod_ty
676file_rule(Parser *p)
677{
678 if (p->error_indicator) {
679 return NULL;
680 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100681 mod_ty _res = NULL;
682 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100683 { // statements? $
684 void *a;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100685 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100686 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100687 (a = statements_rule(p), 1) // statements?
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100688 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100689 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100690 )
691 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100692 _res = _PyPegen_make_module ( p , a );
693 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100694 p->error_indicator = 1;
695 return NULL;
696 }
697 goto done;
698 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100699 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100700 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100701 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100702 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100703 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100704}
705
706// interactive: statement_newline
707static mod_ty
708interactive_rule(Parser *p)
709{
710 if (p->error_indicator) {
711 return NULL;
712 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100713 mod_ty _res = NULL;
714 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100715 { // statement_newline
716 asdl_seq* a;
717 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100718 (a = statement_newline_rule(p)) // statement_newline
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100719 )
720 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100721 _res = Interactive ( a , p -> arena );
722 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100723 p->error_indicator = 1;
724 return NULL;
725 }
726 goto done;
727 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100728 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100729 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100730 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100731 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100732 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100733}
734
735// eval: expressions NEWLINE* $
736static mod_ty
737eval_rule(Parser *p)
738{
739 if (p->error_indicator) {
740 return NULL;
741 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100742 mod_ty _res = NULL;
743 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100744 { // expressions NEWLINE* $
745 asdl_seq * _loop0_1_var;
746 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100747 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100748 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100749 (a = expressions_rule(p)) // expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100750 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100751 (_loop0_1_var = _loop0_1_rule(p)) // NEWLINE*
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100752 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100753 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100754 )
755 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100756 _res = Expression ( a , p -> arena );
757 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100758 p->error_indicator = 1;
759 return NULL;
760 }
761 goto done;
762 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100763 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100765 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100766 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100767 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100768}
769
Guido van Rossumc001c092020-04-30 12:12:19 -0700770// func_type: '(' type_expressions? ')' '->' expression NEWLINE* $
771static mod_ty
772func_type_rule(Parser *p)
773{
774 if (p->error_indicator) {
775 return NULL;
776 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100777 mod_ty _res = NULL;
778 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700779 { // '(' type_expressions? ')' '->' expression NEWLINE* $
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100780 Token * _literal;
781 Token * _literal_1;
782 Token * _literal_2;
Guido van Rossumc001c092020-04-30 12:12:19 -0700783 asdl_seq * _loop0_2_var;
784 void *a;
785 expr_ty b;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100786 Token * endmarker_var;
Guido van Rossumc001c092020-04-30 12:12:19 -0700787 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100788 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Guido van Rossumc001c092020-04-30 12:12:19 -0700789 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100790 (a = type_expressions_rule(p), 1) // type_expressions?
Guido van Rossumc001c092020-04-30 12:12:19 -0700791 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100792 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -0700793 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100794 (_literal_2 = _PyPegen_expect_token(p, 51)) // token='->'
Guido van Rossumc001c092020-04-30 12:12:19 -0700795 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100796 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700797 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100798 (_loop0_2_var = _loop0_2_rule(p)) // NEWLINE*
Guido van Rossumc001c092020-04-30 12:12:19 -0700799 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100800 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Guido van Rossumc001c092020-04-30 12:12:19 -0700801 )
802 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100803 _res = FunctionType ( a , b , p -> arena );
804 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700805 p->error_indicator = 1;
806 return NULL;
807 }
808 goto done;
809 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100810 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100812 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -0700813 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100814 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -0700815}
816
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100817// fstring: star_expressions
818static expr_ty
819fstring_rule(Parser *p)
820{
821 if (p->error_indicator) {
822 return NULL;
823 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100824 expr_ty _res = NULL;
825 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100826 { // star_expressions
827 expr_ty star_expressions_var;
828 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100829 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100830 )
831 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100832 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100833 goto done;
834 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100835 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100837 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100838 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100839 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100840}
841
Guido van Rossumc001c092020-04-30 12:12:19 -0700842// type_expressions:
843// | ','.expression+ ',' '*' expression ',' '**' expression
844// | ','.expression+ ',' '*' expression
845// | ','.expression+ ',' '**' expression
Shantanu603d3542020-05-03 22:08:14 -0700846// | '*' expression ',' '**' expression
847// | '*' expression
848// | '**' expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700849// | ','.expression+
850static asdl_seq*
851type_expressions_rule(Parser *p)
852{
853 if (p->error_indicator) {
854 return NULL;
855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100856 asdl_seq* _res = NULL;
857 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700858 { // ','.expression+ ',' '*' expression ',' '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100859 Token * _literal;
860 Token * _literal_1;
861 Token * _literal_2;
862 Token * _literal_3;
Guido van Rossumc001c092020-04-30 12:12:19 -0700863 asdl_seq * a;
864 expr_ty b;
865 expr_ty c;
Guido van Rossumc001c092020-04-30 12:12:19 -0700866 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100867 (a = _gather_3_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700868 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100869 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700870 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100871 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Guido van Rossumc001c092020-04-30 12:12:19 -0700872 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100873 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700874 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100875 (_literal_2 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700876 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100877 (_literal_3 = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -0700878 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100879 (c = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700880 )
881 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100882 _res = _PyPegen_seq_append_to_end ( p , CHECK ( _PyPegen_seq_append_to_end ( p , a , b ) ) , c );
883 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700884 p->error_indicator = 1;
885 return NULL;
886 }
887 goto done;
888 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100889 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700890 }
891 { // ','.expression+ ',' '*' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100892 Token * _literal;
893 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -0700894 asdl_seq * a;
895 expr_ty b;
Guido van Rossumc001c092020-04-30 12:12:19 -0700896 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100897 (a = _gather_5_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700898 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100899 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700900 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100901 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Guido van Rossumc001c092020-04-30 12:12:19 -0700902 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100903 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700904 )
905 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100906 _res = _PyPegen_seq_append_to_end ( p , a , b );
907 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700908 p->error_indicator = 1;
909 return NULL;
910 }
911 goto done;
912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100913 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700914 }
915 { // ','.expression+ ',' '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100916 Token * _literal;
917 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -0700918 asdl_seq * a;
919 expr_ty b;
Guido van Rossumc001c092020-04-30 12:12:19 -0700920 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100921 (a = _gather_7_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700922 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100923 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700924 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100925 (_literal_1 = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -0700926 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100927 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700928 )
929 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100930 _res = _PyPegen_seq_append_to_end ( p , a , b );
931 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700932 p->error_indicator = 1;
933 return NULL;
934 }
935 goto done;
936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100937 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700938 }
Shantanu603d3542020-05-03 22:08:14 -0700939 { // '*' expression ',' '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100940 Token * _literal;
941 Token * _literal_1;
942 Token * _literal_2;
Shantanu603d3542020-05-03 22:08:14 -0700943 expr_ty a;
944 expr_ty b;
Shantanu603d3542020-05-03 22:08:14 -0700945 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100946 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Shantanu603d3542020-05-03 22:08:14 -0700947 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100948 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700949 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100950 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Shantanu603d3542020-05-03 22:08:14 -0700951 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100952 (_literal_2 = _PyPegen_expect_token(p, 35)) // token='**'
Shantanu603d3542020-05-03 22:08:14 -0700953 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100954 (b = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700955 )
956 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100957 _res = _PyPegen_seq_append_to_end ( p , CHECK ( _PyPegen_singleton_seq ( p , a ) ) , b );
958 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -0700959 p->error_indicator = 1;
960 return NULL;
961 }
962 goto done;
963 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100964 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -0700965 }
966 { // '*' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100967 Token * _literal;
Shantanu603d3542020-05-03 22:08:14 -0700968 expr_ty a;
Shantanu603d3542020-05-03 22:08:14 -0700969 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100970 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Shantanu603d3542020-05-03 22:08:14 -0700971 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100972 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700973 )
974 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100975 _res = _PyPegen_singleton_seq ( p , a );
976 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -0700977 p->error_indicator = 1;
978 return NULL;
979 }
980 goto done;
981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100982 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -0700983 }
984 { // '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100985 Token * _literal;
Shantanu603d3542020-05-03 22:08:14 -0700986 expr_ty a;
Shantanu603d3542020-05-03 22:08:14 -0700987 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100988 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Shantanu603d3542020-05-03 22:08:14 -0700989 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100990 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700991 )
992 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100993 _res = _PyPegen_singleton_seq ( p , a );
994 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -0700995 p->error_indicator = 1;
996 return NULL;
997 }
998 goto done;
999 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001000 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -07001001 }
Guido van Rossumc001c092020-04-30 12:12:19 -07001002 { // ','.expression+
1003 asdl_seq * _gather_9_var;
1004 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001005 (_gather_9_var = _gather_9_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -07001006 )
1007 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001008 _res = _gather_9_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07001009 goto done;
1010 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001011 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07001012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001013 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07001014 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001015 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07001016}
1017
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001018// statements: statement+
1019static asdl_seq*
1020statements_rule(Parser *p)
1021{
1022 if (p->error_indicator) {
1023 return NULL;
1024 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001025 asdl_seq* _res = NULL;
1026 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001027 { // statement+
1028 asdl_seq * a;
1029 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001030 (a = _loop1_11_rule(p)) // statement+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001031 )
1032 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001033 _res = _PyPegen_seq_flatten ( p , a );
1034 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001035 p->error_indicator = 1;
1036 return NULL;
1037 }
1038 goto done;
1039 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001040 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001041 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001042 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001043 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001044 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001045}
1046
1047// statement: compound_stmt | simple_stmt
1048static asdl_seq*
1049statement_rule(Parser *p)
1050{
1051 if (p->error_indicator) {
1052 return NULL;
1053 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001054 asdl_seq* _res = NULL;
1055 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001056 { // compound_stmt
1057 stmt_ty a;
1058 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001059 (a = compound_stmt_rule(p)) // compound_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001060 )
1061 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001062 _res = _PyPegen_singleton_seq ( p , a );
1063 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001064 p->error_indicator = 1;
1065 return NULL;
1066 }
1067 goto done;
1068 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001069 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001070 }
1071 { // simple_stmt
1072 asdl_seq* simple_stmt_var;
1073 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001074 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001075 )
1076 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001077 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001078 goto done;
1079 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001080 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001081 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001082 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001083 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001084 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001085}
1086
1087// statement_newline: compound_stmt NEWLINE | simple_stmt | NEWLINE | $
1088static asdl_seq*
1089statement_newline_rule(Parser *p)
1090{
1091 if (p->error_indicator) {
1092 return NULL;
1093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001094 asdl_seq* _res = NULL;
1095 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001096 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1097 p->error_indicator = 1;
1098 return NULL;
1099 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001100 int _start_lineno = p->tokens[_mark]->lineno;
1101 UNUSED(_start_lineno); // Only used by EXTRA macro
1102 int _start_col_offset = p->tokens[_mark]->col_offset;
1103 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001104 { // compound_stmt NEWLINE
1105 stmt_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001106 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001107 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001108 (a = compound_stmt_rule(p)) // compound_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001109 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001110 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001111 )
1112 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001113 _res = _PyPegen_singleton_seq ( p , a );
1114 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001115 p->error_indicator = 1;
1116 return NULL;
1117 }
1118 goto done;
1119 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001120 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001121 }
1122 { // simple_stmt
1123 asdl_seq* simple_stmt_var;
1124 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001125 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001126 )
1127 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001128 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001129 goto done;
1130 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001131 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001132 }
1133 { // NEWLINE
Pablo Galindob796b3f2020-05-01 12:32:26 +01001134 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001135 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001136 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001137 )
1138 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001139 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1140 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001141 return NULL;
1142 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001143 int _end_lineno = _token->end_lineno;
1144 UNUSED(_end_lineno); // Only used by EXTRA macro
1145 int _end_col_offset = _token->end_col_offset;
1146 UNUSED(_end_col_offset); // Only used by EXTRA macro
1147 _res = _PyPegen_singleton_seq ( p , CHECK ( _Py_Pass ( EXTRA ) ) );
1148 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001149 p->error_indicator = 1;
1150 return NULL;
1151 }
1152 goto done;
1153 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001154 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001155 }
1156 { // $
Pablo Galindob796b3f2020-05-01 12:32:26 +01001157 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001158 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001159 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001160 )
1161 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001162 _res = _PyPegen_interactive_exit ( p );
1163 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001164 p->error_indicator = 1;
1165 return NULL;
1166 }
1167 goto done;
1168 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001169 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001170 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001171 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001172 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001173 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001174}
1175
1176// simple_stmt: small_stmt !';' NEWLINE | ';'.small_stmt+ ';'? NEWLINE
1177static asdl_seq*
1178simple_stmt_rule(Parser *p)
1179{
1180 if (p->error_indicator) {
1181 return NULL;
1182 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001183 asdl_seq* _res = NULL;
1184 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001185 { // small_stmt !';' NEWLINE
1186 stmt_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001187 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001188 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001189 (a = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001190 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001191 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 13) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001192 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001193 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001194 )
1195 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001196 _res = _PyPegen_singleton_seq ( p , a );
1197 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001198 p->error_indicator = 1;
1199 return NULL;
1200 }
1201 goto done;
1202 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001203 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001204 }
1205 { // ';'.small_stmt+ ';'? NEWLINE
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001206 void *_opt_var;
1207 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001208 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001209 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001210 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001211 (a = _gather_12_rule(p)) // ';'.small_stmt+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001212 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001213 (_opt_var = _PyPegen_expect_token(p, 13), 1) // ';'?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001214 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001215 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001216 )
1217 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001218 _res = a;
1219 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001220 p->error_indicator = 1;
1221 return NULL;
1222 }
1223 goto done;
1224 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001225 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001227 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001228 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001229 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001230}
1231
1232// small_stmt:
1233// | assignment
1234// | star_expressions
1235// | &'return' return_stmt
1236// | &('import' | 'from') import_stmt
1237// | &'raise' raise_stmt
1238// | 'pass'
1239// | &'del' del_stmt
1240// | &'yield' yield_stmt
1241// | &'assert' assert_stmt
1242// | 'break'
1243// | 'continue'
1244// | &'global' global_stmt
1245// | &'nonlocal' nonlocal_stmt
1246static stmt_ty
1247small_stmt_rule(Parser *p)
1248{
1249 if (p->error_indicator) {
1250 return NULL;
1251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001252 stmt_ty _res = NULL;
1253 if (_PyPegen_is_memoized(p, small_stmt_type, &_res))
1254 return _res;
1255 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001256 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1257 p->error_indicator = 1;
1258 return NULL;
1259 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001260 int _start_lineno = p->tokens[_mark]->lineno;
1261 UNUSED(_start_lineno); // Only used by EXTRA macro
1262 int _start_col_offset = p->tokens[_mark]->col_offset;
1263 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001264 { // assignment
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +03001265 stmt_ty assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001266 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001267 (assignment_var = assignment_rule(p)) // assignment
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001268 )
1269 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001270 _res = assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001271 goto done;
1272 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001273 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001274 }
1275 { // star_expressions
1276 expr_ty e;
1277 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001278 (e = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001279 )
1280 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001281 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1282 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001283 return NULL;
1284 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001285 int _end_lineno = _token->end_lineno;
1286 UNUSED(_end_lineno); // Only used by EXTRA macro
1287 int _end_col_offset = _token->end_col_offset;
1288 UNUSED(_end_col_offset); // Only used by EXTRA macro
1289 _res = _Py_Expr ( e , EXTRA );
1290 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001291 p->error_indicator = 1;
1292 return NULL;
1293 }
1294 goto done;
1295 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001296 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001297 }
1298 { // &'return' return_stmt
1299 stmt_ty return_stmt_var;
1300 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001301 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 500) // token='return'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001302 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001303 (return_stmt_var = return_stmt_rule(p)) // return_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001304 )
1305 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001306 _res = return_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001307 goto done;
1308 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001309 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001310 }
1311 { // &('import' | 'from') import_stmt
1312 stmt_ty import_stmt_var;
1313 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001314 _PyPegen_lookahead(1, _tmp_14_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001315 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001316 (import_stmt_var = import_stmt_rule(p)) // import_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001317 )
1318 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001319 _res = import_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001320 goto done;
1321 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001322 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001323 }
1324 { // &'raise' raise_stmt
1325 stmt_ty raise_stmt_var;
1326 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001327 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 501) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001328 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001329 (raise_stmt_var = raise_stmt_rule(p)) // raise_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001330 )
1331 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001332 _res = raise_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001333 goto done;
1334 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001335 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001336 }
1337 { // 'pass'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001338 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001339 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001340 (_keyword = _PyPegen_expect_token(p, 502)) // token='pass'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001341 )
1342 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001343 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1344 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001345 return NULL;
1346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001347 int _end_lineno = _token->end_lineno;
1348 UNUSED(_end_lineno); // Only used by EXTRA macro
1349 int _end_col_offset = _token->end_col_offset;
1350 UNUSED(_end_col_offset); // Only used by EXTRA macro
1351 _res = _Py_Pass ( EXTRA );
1352 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001353 p->error_indicator = 1;
1354 return NULL;
1355 }
1356 goto done;
1357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001358 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001359 }
1360 { // &'del' del_stmt
1361 stmt_ty del_stmt_var;
1362 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001363 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 503) // token='del'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001364 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001365 (del_stmt_var = del_stmt_rule(p)) // del_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001366 )
1367 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001368 _res = del_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001369 goto done;
1370 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001371 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001372 }
1373 { // &'yield' yield_stmt
1374 stmt_ty yield_stmt_var;
1375 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001376 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 504) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001377 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001378 (yield_stmt_var = yield_stmt_rule(p)) // yield_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001379 )
1380 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001381 _res = yield_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001382 goto done;
1383 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001384 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001385 }
1386 { // &'assert' assert_stmt
1387 stmt_ty assert_stmt_var;
1388 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001389 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 505) // token='assert'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001390 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001391 (assert_stmt_var = assert_stmt_rule(p)) // assert_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001392 )
1393 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001394 _res = assert_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001395 goto done;
1396 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001397 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001398 }
1399 { // 'break'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001400 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001401 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001402 (_keyword = _PyPegen_expect_token(p, 506)) // token='break'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001403 )
1404 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001405 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1406 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001407 return NULL;
1408 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001409 int _end_lineno = _token->end_lineno;
1410 UNUSED(_end_lineno); // Only used by EXTRA macro
1411 int _end_col_offset = _token->end_col_offset;
1412 UNUSED(_end_col_offset); // Only used by EXTRA macro
1413 _res = _Py_Break ( EXTRA );
1414 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001415 p->error_indicator = 1;
1416 return NULL;
1417 }
1418 goto done;
1419 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001420 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001421 }
1422 { // 'continue'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001423 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001424 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001425 (_keyword = _PyPegen_expect_token(p, 507)) // token='continue'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001426 )
1427 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001428 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1429 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001430 return NULL;
1431 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001432 int _end_lineno = _token->end_lineno;
1433 UNUSED(_end_lineno); // Only used by EXTRA macro
1434 int _end_col_offset = _token->end_col_offset;
1435 UNUSED(_end_col_offset); // Only used by EXTRA macro
1436 _res = _Py_Continue ( EXTRA );
1437 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001438 p->error_indicator = 1;
1439 return NULL;
1440 }
1441 goto done;
1442 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001443 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001444 }
1445 { // &'global' global_stmt
1446 stmt_ty global_stmt_var;
1447 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001448 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 508) // token='global'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001449 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001450 (global_stmt_var = global_stmt_rule(p)) // global_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001451 )
1452 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001453 _res = global_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001454 goto done;
1455 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001456 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001457 }
1458 { // &'nonlocal' nonlocal_stmt
1459 stmt_ty nonlocal_stmt_var;
1460 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001461 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 509) // token='nonlocal'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001462 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001463 (nonlocal_stmt_var = nonlocal_stmt_rule(p)) // nonlocal_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001464 )
1465 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001466 _res = nonlocal_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001467 goto done;
1468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001469 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001470 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001471 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001472 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001473 _PyPegen_insert_memo(p, _mark, small_stmt_type, _res);
1474 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001475}
1476
1477// compound_stmt:
1478// | &('def' | '@' | ASYNC) function_def
1479// | &'if' if_stmt
1480// | &('class' | '@') class_def
1481// | &('with' | ASYNC) with_stmt
1482// | &('for' | ASYNC) for_stmt
1483// | &'try' try_stmt
1484// | &'while' while_stmt
1485static stmt_ty
1486compound_stmt_rule(Parser *p)
1487{
1488 if (p->error_indicator) {
1489 return NULL;
1490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001491 stmt_ty _res = NULL;
1492 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001493 { // &('def' | '@' | ASYNC) function_def
1494 stmt_ty function_def_var;
1495 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001496 _PyPegen_lookahead(1, _tmp_15_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001497 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001498 (function_def_var = function_def_rule(p)) // function_def
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001499 )
1500 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001501 _res = function_def_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001502 goto done;
1503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001504 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001505 }
1506 { // &'if' if_stmt
1507 stmt_ty if_stmt_var;
1508 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001509 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 510) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001510 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001511 (if_stmt_var = if_stmt_rule(p)) // if_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001512 )
1513 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001514 _res = if_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001515 goto done;
1516 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001517 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001518 }
1519 { // &('class' | '@') class_def
1520 stmt_ty class_def_var;
1521 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001522 _PyPegen_lookahead(1, _tmp_16_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001523 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001524 (class_def_var = class_def_rule(p)) // class_def
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001525 )
1526 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001527 _res = class_def_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001528 goto done;
1529 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001530 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001531 }
1532 { // &('with' | ASYNC) with_stmt
1533 stmt_ty with_stmt_var;
1534 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001535 _PyPegen_lookahead(1, _tmp_17_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001536 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001537 (with_stmt_var = with_stmt_rule(p)) // with_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001538 )
1539 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001540 _res = with_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001541 goto done;
1542 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001543 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001544 }
1545 { // &('for' | ASYNC) for_stmt
1546 stmt_ty for_stmt_var;
1547 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001548 _PyPegen_lookahead(1, _tmp_18_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001549 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001550 (for_stmt_var = for_stmt_rule(p)) // for_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001551 )
1552 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001553 _res = for_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001554 goto done;
1555 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001556 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001557 }
1558 { // &'try' try_stmt
1559 stmt_ty try_stmt_var;
1560 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001561 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 511) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001562 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001563 (try_stmt_var = try_stmt_rule(p)) // try_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001564 )
1565 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001566 _res = try_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001567 goto done;
1568 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001569 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001570 }
1571 { // &'while' while_stmt
1572 stmt_ty while_stmt_var;
1573 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001574 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 512) // token='while'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001575 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001576 (while_stmt_var = while_stmt_rule(p)) // while_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001577 )
1578 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001579 _res = while_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001580 goto done;
1581 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001582 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001584 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001585 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001586 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001587}
1588
1589// assignment:
1590// | NAME ':' expression ['=' annotated_rhs]
1591// | ('(' inside_paren_ann_assign_target ')' | ann_assign_subscript_attribute_target) ':' expression ['=' annotated_rhs]
Guido van Rossumc001c092020-04-30 12:12:19 -07001592// | ((star_targets '='))+ (yield_expr | star_expressions) TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001593// | target augassign (yield_expr | star_expressions)
1594// | invalid_assignment
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +03001595static stmt_ty
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001596assignment_rule(Parser *p)
1597{
1598 if (p->error_indicator) {
1599 return NULL;
1600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001601 stmt_ty _res = NULL;
1602 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001603 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1604 p->error_indicator = 1;
1605 return NULL;
1606 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001607 int _start_lineno = p->tokens[_mark]->lineno;
1608 UNUSED(_start_lineno); // Only used by EXTRA macro
1609 int _start_col_offset = p->tokens[_mark]->col_offset;
1610 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001611 { // NAME ':' expression ['=' annotated_rhs]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001612 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001613 expr_ty a;
1614 expr_ty b;
1615 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001616 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001617 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001618 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001619 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001620 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001621 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001622 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001623 (c = _tmp_19_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001624 )
1625 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001626 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1627 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001628 return NULL;
1629 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001630 int _end_lineno = _token->end_lineno;
1631 UNUSED(_end_lineno); // Only used by EXTRA macro
1632 int _end_col_offset = _token->end_col_offset;
1633 UNUSED(_end_col_offset); // Only used by EXTRA macro
1634 _res = CHECK_VERSION ( 6 , "Variable annotation syntax is" , _Py_AnnAssign ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , b , c , 1 , EXTRA ) );
1635 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001636 p->error_indicator = 1;
1637 return NULL;
1638 }
1639 goto done;
1640 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001641 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001642 }
1643 { // ('(' inside_paren_ann_assign_target ')' | ann_assign_subscript_attribute_target) ':' expression ['=' annotated_rhs]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001644 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001645 void *a;
1646 expr_ty b;
1647 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001648 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001649 (a = _tmp_20_rule(p)) // '(' inside_paren_ann_assign_target ')' | ann_assign_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001650 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001651 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001652 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001653 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001654 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001655 (c = _tmp_21_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001656 )
1657 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001658 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1659 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001660 return NULL;
1661 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001662 int _end_lineno = _token->end_lineno;
1663 UNUSED(_end_lineno); // Only used by EXTRA macro
1664 int _end_col_offset = _token->end_col_offset;
1665 UNUSED(_end_col_offset); // Only used by EXTRA macro
1666 _res = CHECK_VERSION ( 6 , "Variable annotations syntax is" , _Py_AnnAssign ( a , b , c , 0 , EXTRA ) );
1667 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001668 p->error_indicator = 1;
1669 return NULL;
1670 }
1671 goto done;
1672 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001673 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001674 }
Guido van Rossumc001c092020-04-30 12:12:19 -07001675 { // ((star_targets '='))+ (yield_expr | star_expressions) TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001676 asdl_seq * a;
1677 void *b;
Guido van Rossumc001c092020-04-30 12:12:19 -07001678 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001679 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001680 (a = _loop1_22_rule(p)) // ((star_targets '='))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001681 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001682 (b = _tmp_23_rule(p)) // yield_expr | star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -07001683 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001684 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001685 )
1686 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001687 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1688 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001689 return NULL;
1690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001691 int _end_lineno = _token->end_lineno;
1692 UNUSED(_end_lineno); // Only used by EXTRA macro
1693 int _end_col_offset = _token->end_col_offset;
1694 UNUSED(_end_col_offset); // Only used by EXTRA macro
1695 _res = _Py_Assign ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
1696 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001697 p->error_indicator = 1;
1698 return NULL;
1699 }
1700 goto done;
1701 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001702 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001703 }
1704 { // target augassign (yield_expr | star_expressions)
1705 expr_ty a;
1706 AugOperator* b;
1707 void *c;
1708 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001709 (a = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001710 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001711 (b = augassign_rule(p)) // augassign
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001712 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001713 (c = _tmp_24_rule(p)) // yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001714 )
1715 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001716 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1717 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001718 return NULL;
1719 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001720 int _end_lineno = _token->end_lineno;
1721 UNUSED(_end_lineno); // Only used by EXTRA macro
1722 int _end_col_offset = _token->end_col_offset;
1723 UNUSED(_end_col_offset); // Only used by EXTRA macro
1724 _res = _Py_AugAssign ( a , b -> kind , c , EXTRA );
1725 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001726 p->error_indicator = 1;
1727 return NULL;
1728 }
1729 goto done;
1730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001731 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001732 }
1733 { // invalid_assignment
1734 void *invalid_assignment_var;
1735 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001736 (invalid_assignment_var = invalid_assignment_rule(p)) // invalid_assignment
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001737 )
1738 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001739 _res = invalid_assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001740 goto done;
1741 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001742 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001744 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001745 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001746 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001747}
1748
1749// augassign:
1750// | '+='
1751// | '-='
1752// | '*='
1753// | '@='
1754// | '/='
1755// | '%='
1756// | '&='
1757// | '|='
1758// | '^='
1759// | '<<='
1760// | '>>='
1761// | '**='
1762// | '//='
1763static AugOperator*
1764augassign_rule(Parser *p)
1765{
1766 if (p->error_indicator) {
1767 return NULL;
1768 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001769 AugOperator* _res = NULL;
1770 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001771 { // '+='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001772 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001773 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001774 (_literal = _PyPegen_expect_token(p, 36)) // token='+='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001775 )
1776 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001777 _res = _PyPegen_augoperator ( p , Add );
1778 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001779 p->error_indicator = 1;
1780 return NULL;
1781 }
1782 goto done;
1783 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001784 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001785 }
1786 { // '-='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001787 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001788 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001789 (_literal = _PyPegen_expect_token(p, 37)) // token='-='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001790 )
1791 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001792 _res = _PyPegen_augoperator ( p , Sub );
1793 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001794 p->error_indicator = 1;
1795 return NULL;
1796 }
1797 goto done;
1798 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001799 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001800 }
1801 { // '*='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001802 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001803 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001804 (_literal = _PyPegen_expect_token(p, 38)) // token='*='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001805 )
1806 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001807 _res = _PyPegen_augoperator ( p , Mult );
1808 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001809 p->error_indicator = 1;
1810 return NULL;
1811 }
1812 goto done;
1813 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001814 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001815 }
1816 { // '@='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001817 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001818 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001819 (_literal = _PyPegen_expect_token(p, 50)) // token='@='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001820 )
1821 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001822 _res = CHECK_VERSION ( 5 , "The '@' operator is" , _PyPegen_augoperator ( p , MatMult ) );
1823 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001824 p->error_indicator = 1;
1825 return NULL;
1826 }
1827 goto done;
1828 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001829 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001830 }
1831 { // '/='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001832 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001833 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001834 (_literal = _PyPegen_expect_token(p, 39)) // token='/='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001835 )
1836 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001837 _res = _PyPegen_augoperator ( p , Div );
1838 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001839 p->error_indicator = 1;
1840 return NULL;
1841 }
1842 goto done;
1843 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001844 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001845 }
1846 { // '%='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001847 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001848 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001849 (_literal = _PyPegen_expect_token(p, 40)) // token='%='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001850 )
1851 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001852 _res = _PyPegen_augoperator ( p , Mod );
1853 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001854 p->error_indicator = 1;
1855 return NULL;
1856 }
1857 goto done;
1858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001859 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001860 }
1861 { // '&='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001862 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001863 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001864 (_literal = _PyPegen_expect_token(p, 41)) // token='&='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001865 )
1866 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001867 _res = _PyPegen_augoperator ( p , BitAnd );
1868 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001869 p->error_indicator = 1;
1870 return NULL;
1871 }
1872 goto done;
1873 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001874 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001875 }
1876 { // '|='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001877 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001878 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001879 (_literal = _PyPegen_expect_token(p, 42)) // token='|='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001880 )
1881 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001882 _res = _PyPegen_augoperator ( p , BitOr );
1883 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001884 p->error_indicator = 1;
1885 return NULL;
1886 }
1887 goto done;
1888 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001889 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001890 }
1891 { // '^='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001892 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001893 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001894 (_literal = _PyPegen_expect_token(p, 43)) // token='^='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001895 )
1896 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001897 _res = _PyPegen_augoperator ( p , BitXor );
1898 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001899 p->error_indicator = 1;
1900 return NULL;
1901 }
1902 goto done;
1903 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001904 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001905 }
1906 { // '<<='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001907 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001908 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001909 (_literal = _PyPegen_expect_token(p, 44)) // token='<<='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001910 )
1911 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001912 _res = _PyPegen_augoperator ( p , LShift );
1913 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001914 p->error_indicator = 1;
1915 return NULL;
1916 }
1917 goto done;
1918 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001919 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001920 }
1921 { // '>>='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001922 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001923 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001924 (_literal = _PyPegen_expect_token(p, 45)) // token='>>='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001925 )
1926 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001927 _res = _PyPegen_augoperator ( p , RShift );
1928 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001929 p->error_indicator = 1;
1930 return NULL;
1931 }
1932 goto done;
1933 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001934 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001935 }
1936 { // '**='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001937 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001938 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001939 (_literal = _PyPegen_expect_token(p, 46)) // token='**='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001940 )
1941 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001942 _res = _PyPegen_augoperator ( p , Pow );
1943 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001944 p->error_indicator = 1;
1945 return NULL;
1946 }
1947 goto done;
1948 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001949 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001950 }
1951 { // '//='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001952 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001953 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001954 (_literal = _PyPegen_expect_token(p, 48)) // token='//='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001955 )
1956 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001957 _res = _PyPegen_augoperator ( p , FloorDiv );
1958 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001959 p->error_indicator = 1;
1960 return NULL;
1961 }
1962 goto done;
1963 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001964 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001966 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001967 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001968 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001969}
1970
1971// global_stmt: 'global' ','.NAME+
1972static stmt_ty
1973global_stmt_rule(Parser *p)
1974{
1975 if (p->error_indicator) {
1976 return NULL;
1977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001978 stmt_ty _res = NULL;
1979 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001980 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1981 p->error_indicator = 1;
1982 return NULL;
1983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001984 int _start_lineno = p->tokens[_mark]->lineno;
1985 UNUSED(_start_lineno); // Only used by EXTRA macro
1986 int _start_col_offset = p->tokens[_mark]->col_offset;
1987 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001988 { // 'global' ','.NAME+
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001989 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001990 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001991 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001992 (_keyword = _PyPegen_expect_token(p, 508)) // token='global'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001993 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001994 (a = _gather_25_rule(p)) // ','.NAME+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001995 )
1996 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001997 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1998 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001999 return NULL;
2000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002001 int _end_lineno = _token->end_lineno;
2002 UNUSED(_end_lineno); // Only used by EXTRA macro
2003 int _end_col_offset = _token->end_col_offset;
2004 UNUSED(_end_col_offset); // Only used by EXTRA macro
2005 _res = _Py_Global ( CHECK ( _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2006 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002007 p->error_indicator = 1;
2008 return NULL;
2009 }
2010 goto done;
2011 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002012 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002013 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002014 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002015 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002016 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002017}
2018
2019// nonlocal_stmt: 'nonlocal' ','.NAME+
2020static stmt_ty
2021nonlocal_stmt_rule(Parser *p)
2022{
2023 if (p->error_indicator) {
2024 return NULL;
2025 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002026 stmt_ty _res = NULL;
2027 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002028 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2029 p->error_indicator = 1;
2030 return NULL;
2031 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002032 int _start_lineno = p->tokens[_mark]->lineno;
2033 UNUSED(_start_lineno); // Only used by EXTRA macro
2034 int _start_col_offset = p->tokens[_mark]->col_offset;
2035 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002036 { // 'nonlocal' ','.NAME+
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002037 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002038 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002039 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002040 (_keyword = _PyPegen_expect_token(p, 509)) // token='nonlocal'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002041 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002042 (a = _gather_27_rule(p)) // ','.NAME+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002043 )
2044 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002045 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2046 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002047 return NULL;
2048 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002049 int _end_lineno = _token->end_lineno;
2050 UNUSED(_end_lineno); // Only used by EXTRA macro
2051 int _end_col_offset = _token->end_col_offset;
2052 UNUSED(_end_col_offset); // Only used by EXTRA macro
2053 _res = _Py_Nonlocal ( CHECK ( _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2054 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002055 p->error_indicator = 1;
2056 return NULL;
2057 }
2058 goto done;
2059 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002060 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002062 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002063 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002064 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002065}
2066
2067// yield_stmt: yield_expr
2068static stmt_ty
2069yield_stmt_rule(Parser *p)
2070{
2071 if (p->error_indicator) {
2072 return NULL;
2073 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002074 stmt_ty _res = NULL;
2075 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002076 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2077 p->error_indicator = 1;
2078 return NULL;
2079 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002080 int _start_lineno = p->tokens[_mark]->lineno;
2081 UNUSED(_start_lineno); // Only used by EXTRA macro
2082 int _start_col_offset = p->tokens[_mark]->col_offset;
2083 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002084 { // yield_expr
2085 expr_ty y;
2086 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002087 (y = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002088 )
2089 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002090 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2091 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002092 return NULL;
2093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002094 int _end_lineno = _token->end_lineno;
2095 UNUSED(_end_lineno); // Only used by EXTRA macro
2096 int _end_col_offset = _token->end_col_offset;
2097 UNUSED(_end_col_offset); // Only used by EXTRA macro
2098 _res = _Py_Expr ( y , EXTRA );
2099 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002100 p->error_indicator = 1;
2101 return NULL;
2102 }
2103 goto done;
2104 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002105 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002106 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002107 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002108 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002109 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002110}
2111
2112// assert_stmt: 'assert' expression [',' expression]
2113static stmt_ty
2114assert_stmt_rule(Parser *p)
2115{
2116 if (p->error_indicator) {
2117 return NULL;
2118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002119 stmt_ty _res = NULL;
2120 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002121 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2122 p->error_indicator = 1;
2123 return NULL;
2124 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002125 int _start_lineno = p->tokens[_mark]->lineno;
2126 UNUSED(_start_lineno); // Only used by EXTRA macro
2127 int _start_col_offset = p->tokens[_mark]->col_offset;
2128 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002129 { // 'assert' expression [',' expression]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002130 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002131 expr_ty a;
2132 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002133 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002134 (_keyword = _PyPegen_expect_token(p, 505)) // token='assert'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002135 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002136 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002137 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002138 (b = _tmp_29_rule(p), 1) // [',' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002139 )
2140 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002141 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2142 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002143 return NULL;
2144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002145 int _end_lineno = _token->end_lineno;
2146 UNUSED(_end_lineno); // Only used by EXTRA macro
2147 int _end_col_offset = _token->end_col_offset;
2148 UNUSED(_end_col_offset); // Only used by EXTRA macro
2149 _res = _Py_Assert ( a , b , EXTRA );
2150 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002151 p->error_indicator = 1;
2152 return NULL;
2153 }
2154 goto done;
2155 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002156 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002158 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002159 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002160 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002161}
2162
2163// del_stmt: 'del' del_targets
2164static stmt_ty
2165del_stmt_rule(Parser *p)
2166{
2167 if (p->error_indicator) {
2168 return NULL;
2169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002170 stmt_ty _res = NULL;
2171 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002172 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2173 p->error_indicator = 1;
2174 return NULL;
2175 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002176 int _start_lineno = p->tokens[_mark]->lineno;
2177 UNUSED(_start_lineno); // Only used by EXTRA macro
2178 int _start_col_offset = p->tokens[_mark]->col_offset;
2179 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002180 { // 'del' del_targets
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002181 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002182 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002183 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002184 (_keyword = _PyPegen_expect_token(p, 503)) // token='del'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002185 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002186 (a = del_targets_rule(p)) // del_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002187 )
2188 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002189 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2190 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002191 return NULL;
2192 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002193 int _end_lineno = _token->end_lineno;
2194 UNUSED(_end_lineno); // Only used by EXTRA macro
2195 int _end_col_offset = _token->end_col_offset;
2196 UNUSED(_end_col_offset); // Only used by EXTRA macro
2197 _res = _Py_Delete ( a , EXTRA );
2198 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002199 p->error_indicator = 1;
2200 return NULL;
2201 }
2202 goto done;
2203 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002204 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002205 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002206 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002207 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002208 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002209}
2210
2211// import_stmt: import_name | import_from
2212static stmt_ty
2213import_stmt_rule(Parser *p)
2214{
2215 if (p->error_indicator) {
2216 return NULL;
2217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002218 stmt_ty _res = NULL;
2219 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002220 { // import_name
2221 stmt_ty import_name_var;
2222 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002223 (import_name_var = import_name_rule(p)) // import_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002224 )
2225 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002226 _res = import_name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002227 goto done;
2228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002229 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002230 }
2231 { // import_from
2232 stmt_ty import_from_var;
2233 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002234 (import_from_var = import_from_rule(p)) // import_from
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002235 )
2236 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002237 _res = import_from_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002238 goto done;
2239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002240 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002242 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002243 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002244 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002245}
2246
2247// import_name: 'import' dotted_as_names
2248static stmt_ty
2249import_name_rule(Parser *p)
2250{
2251 if (p->error_indicator) {
2252 return NULL;
2253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002254 stmt_ty _res = NULL;
2255 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002256 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2257 p->error_indicator = 1;
2258 return NULL;
2259 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002260 int _start_lineno = p->tokens[_mark]->lineno;
2261 UNUSED(_start_lineno); // Only used by EXTRA macro
2262 int _start_col_offset = p->tokens[_mark]->col_offset;
2263 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002264 { // 'import' dotted_as_names
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002265 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002266 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002267 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002268 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002269 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002270 (a = dotted_as_names_rule(p)) // dotted_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002271 )
2272 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002273 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2274 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002275 return NULL;
2276 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002277 int _end_lineno = _token->end_lineno;
2278 UNUSED(_end_lineno); // Only used by EXTRA macro
2279 int _end_col_offset = _token->end_col_offset;
2280 UNUSED(_end_col_offset); // Only used by EXTRA macro
2281 _res = _Py_Import ( a , EXTRA );
2282 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002283 p->error_indicator = 1;
2284 return NULL;
2285 }
2286 goto done;
2287 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002288 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002289 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002290 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002291 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002292 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002293}
2294
2295// import_from:
2296// | 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
2297// | 'from' (('.' | '...'))+ 'import' import_from_targets
2298static stmt_ty
2299import_from_rule(Parser *p)
2300{
2301 if (p->error_indicator) {
2302 return NULL;
2303 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002304 stmt_ty _res = NULL;
2305 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002306 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2307 p->error_indicator = 1;
2308 return NULL;
2309 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002310 int _start_lineno = p->tokens[_mark]->lineno;
2311 UNUSED(_start_lineno); // Only used by EXTRA macro
2312 int _start_col_offset = p->tokens[_mark]->col_offset;
2313 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002314 { // 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002315 Token * _keyword;
2316 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002317 asdl_seq * a;
2318 expr_ty b;
2319 asdl_seq* c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002320 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002321 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002322 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002323 (a = _loop0_30_rule(p)) // (('.' | '...'))*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002324 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002325 (b = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002326 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002327 (_keyword_1 = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002328 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002329 (c = import_from_targets_rule(p)) // import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002330 )
2331 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002332 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2333 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002334 return NULL;
2335 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002336 int _end_lineno = _token->end_lineno;
2337 UNUSED(_end_lineno); // Only used by EXTRA macro
2338 int _end_col_offset = _token->end_col_offset;
2339 UNUSED(_end_col_offset); // Only used by EXTRA macro
2340 _res = _Py_ImportFrom ( b -> v . Name . id , c , _PyPegen_seq_count_dots ( a ) , EXTRA );
2341 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002342 p->error_indicator = 1;
2343 return NULL;
2344 }
2345 goto done;
2346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002347 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002348 }
2349 { // 'from' (('.' | '...'))+ 'import' import_from_targets
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002350 Token * _keyword;
2351 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002352 asdl_seq * a;
2353 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002354 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002355 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002356 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002357 (a = _loop1_31_rule(p)) // (('.' | '...'))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002358 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002359 (_keyword_1 = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002360 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002361 (b = import_from_targets_rule(p)) // import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002362 )
2363 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002364 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2365 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002366 return NULL;
2367 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002368 int _end_lineno = _token->end_lineno;
2369 UNUSED(_end_lineno); // Only used by EXTRA macro
2370 int _end_col_offset = _token->end_col_offset;
2371 UNUSED(_end_col_offset); // Only used by EXTRA macro
2372 _res = _Py_ImportFrom ( NULL , b , _PyPegen_seq_count_dots ( a ) , EXTRA );
2373 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002374 p->error_indicator = 1;
2375 return NULL;
2376 }
2377 goto done;
2378 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002379 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002380 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002381 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002382 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002383 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002384}
2385
2386// import_from_targets: '(' import_from_as_names ','? ')' | import_from_as_names | '*'
2387static asdl_seq*
2388import_from_targets_rule(Parser *p)
2389{
2390 if (p->error_indicator) {
2391 return NULL;
2392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002393 asdl_seq* _res = NULL;
2394 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002395 { // '(' import_from_as_names ','? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002396 Token * _literal;
2397 Token * _literal_1;
2398 void *_opt_var;
2399 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002400 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002401 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002402 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002403 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002404 (a = import_from_as_names_rule(p)) // import_from_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002405 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002406 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002407 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002408 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002409 )
2410 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002411 _res = a;
2412 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002413 p->error_indicator = 1;
2414 return NULL;
2415 }
2416 goto done;
2417 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002418 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002419 }
2420 { // import_from_as_names
2421 asdl_seq* import_from_as_names_var;
2422 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002423 (import_from_as_names_var = import_from_as_names_rule(p)) // import_from_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002424 )
2425 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002426 _res = import_from_as_names_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002427 goto done;
2428 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002429 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002430 }
2431 { // '*'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002432 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002433 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002434 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002435 )
2436 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002437 _res = _PyPegen_singleton_seq ( p , CHECK ( _PyPegen_alias_for_star ( p ) ) );
2438 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002439 p->error_indicator = 1;
2440 return NULL;
2441 }
2442 goto done;
2443 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002444 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002445 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002446 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002447 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002448 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002449}
2450
2451// import_from_as_names: ','.import_from_as_name+
2452static asdl_seq*
2453import_from_as_names_rule(Parser *p)
2454{
2455 if (p->error_indicator) {
2456 return NULL;
2457 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002458 asdl_seq* _res = NULL;
2459 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002460 { // ','.import_from_as_name+
2461 asdl_seq * a;
2462 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002463 (a = _gather_32_rule(p)) // ','.import_from_as_name+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002464 )
2465 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002466 _res = a;
2467 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002468 p->error_indicator = 1;
2469 return NULL;
2470 }
2471 goto done;
2472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002473 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002475 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002476 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002477 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002478}
2479
2480// import_from_as_name: NAME ['as' NAME]
2481static alias_ty
2482import_from_as_name_rule(Parser *p)
2483{
2484 if (p->error_indicator) {
2485 return NULL;
2486 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002487 alias_ty _res = NULL;
2488 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002489 { // NAME ['as' NAME]
2490 expr_ty a;
2491 void *b;
2492 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002493 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002494 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002495 (b = _tmp_34_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002496 )
2497 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002498 _res = _Py_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , p -> arena );
2499 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002500 p->error_indicator = 1;
2501 return NULL;
2502 }
2503 goto done;
2504 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002505 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002507 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002508 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002509 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002510}
2511
2512// dotted_as_names: ','.dotted_as_name+
2513static asdl_seq*
2514dotted_as_names_rule(Parser *p)
2515{
2516 if (p->error_indicator) {
2517 return NULL;
2518 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002519 asdl_seq* _res = NULL;
2520 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002521 { // ','.dotted_as_name+
2522 asdl_seq * a;
2523 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002524 (a = _gather_35_rule(p)) // ','.dotted_as_name+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002525 )
2526 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002527 _res = a;
2528 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002529 p->error_indicator = 1;
2530 return NULL;
2531 }
2532 goto done;
2533 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002534 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002535 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002536 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002537 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002538 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002539}
2540
2541// dotted_as_name: dotted_name ['as' NAME]
2542static alias_ty
2543dotted_as_name_rule(Parser *p)
2544{
2545 if (p->error_indicator) {
2546 return NULL;
2547 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002548 alias_ty _res = NULL;
2549 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002550 { // dotted_name ['as' NAME]
2551 expr_ty a;
2552 void *b;
2553 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002554 (a = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002555 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002556 (b = _tmp_37_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002557 )
2558 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002559 _res = _Py_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , p -> arena );
2560 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002561 p->error_indicator = 1;
2562 return NULL;
2563 }
2564 goto done;
2565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002566 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002567 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002568 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002569 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002570 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002571}
2572
2573// Left-recursive
2574// dotted_name: dotted_name '.' NAME | NAME
2575static expr_ty dotted_name_raw(Parser *);
2576static expr_ty
2577dotted_name_rule(Parser *p)
2578{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002579 expr_ty _res = NULL;
2580 if (_PyPegen_is_memoized(p, dotted_name_type, &_res))
2581 return _res;
2582 int _mark = p->mark;
2583 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002584 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002585 int tmpvar_0 = _PyPegen_update_memo(p, _mark, dotted_name_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002586 if (tmpvar_0) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002587 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002588 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002589 p->mark = _mark;
2590 void *_raw = dotted_name_raw(p);
2591 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002592 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002593 _resmark = p->mark;
2594 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002595 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002596 p->mark = _resmark;
2597 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002598}
2599static expr_ty
2600dotted_name_raw(Parser *p)
2601{
2602 if (p->error_indicator) {
2603 return NULL;
2604 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002605 expr_ty _res = NULL;
2606 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002607 { // dotted_name '.' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002608 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002609 expr_ty a;
2610 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002611 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002612 (a = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002613 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002614 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002615 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002616 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002617 )
2618 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002619 _res = _PyPegen_join_names_with_dot ( p , a , b );
2620 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002621 p->error_indicator = 1;
2622 return NULL;
2623 }
2624 goto done;
2625 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002626 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002627 }
2628 { // NAME
2629 expr_ty name_var;
2630 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002631 (name_var = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002632 )
2633 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002634 _res = name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002635 goto done;
2636 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002637 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002638 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002639 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002640 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002641 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002642}
2643
2644// if_stmt:
2645// | 'if' named_expression ':' block elif_stmt
2646// | 'if' named_expression ':' block else_block?
2647static stmt_ty
2648if_stmt_rule(Parser *p)
2649{
2650 if (p->error_indicator) {
2651 return NULL;
2652 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002653 stmt_ty _res = NULL;
2654 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002655 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2656 p->error_indicator = 1;
2657 return NULL;
2658 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002659 int _start_lineno = p->tokens[_mark]->lineno;
2660 UNUSED(_start_lineno); // Only used by EXTRA macro
2661 int _start_col_offset = p->tokens[_mark]->col_offset;
2662 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002663 { // 'if' named_expression ':' block elif_stmt
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002664 Token * _keyword;
2665 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002666 expr_ty a;
2667 asdl_seq* b;
2668 stmt_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002669 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002670 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002671 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002672 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002673 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002674 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002675 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002676 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002677 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002678 (c = elif_stmt_rule(p)) // elif_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002679 )
2680 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002681 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2682 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002683 return NULL;
2684 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002685 int _end_lineno = _token->end_lineno;
2686 UNUSED(_end_lineno); // Only used by EXTRA macro
2687 int _end_col_offset = _token->end_col_offset;
2688 UNUSED(_end_col_offset); // Only used by EXTRA macro
2689 _res = _Py_If ( a , b , CHECK ( _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
2690 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002691 p->error_indicator = 1;
2692 return NULL;
2693 }
2694 goto done;
2695 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002696 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002697 }
2698 { // 'if' named_expression ':' block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002699 Token * _keyword;
2700 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002701 expr_ty a;
2702 asdl_seq* b;
2703 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002704 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002705 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002706 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002707 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002708 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002709 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002710 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002711 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002712 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002713 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002714 )
2715 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002716 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2717 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002718 return NULL;
2719 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002720 int _end_lineno = _token->end_lineno;
2721 UNUSED(_end_lineno); // Only used by EXTRA macro
2722 int _end_col_offset = _token->end_col_offset;
2723 UNUSED(_end_col_offset); // Only used by EXTRA macro
2724 _res = _Py_If ( a , b , c , EXTRA );
2725 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002726 p->error_indicator = 1;
2727 return NULL;
2728 }
2729 goto done;
2730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002731 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002733 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002734 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002735 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002736}
2737
2738// elif_stmt:
2739// | 'elif' named_expression ':' block elif_stmt
2740// | 'elif' named_expression ':' block else_block?
2741static stmt_ty
2742elif_stmt_rule(Parser *p)
2743{
2744 if (p->error_indicator) {
2745 return NULL;
2746 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002747 stmt_ty _res = NULL;
2748 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002749 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2750 p->error_indicator = 1;
2751 return NULL;
2752 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002753 int _start_lineno = p->tokens[_mark]->lineno;
2754 UNUSED(_start_lineno); // Only used by EXTRA macro
2755 int _start_col_offset = p->tokens[_mark]->col_offset;
2756 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002757 { // 'elif' named_expression ':' block elif_stmt
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002758 Token * _keyword;
2759 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002760 expr_ty a;
2761 asdl_seq* b;
2762 stmt_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002763 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002764 (_keyword = _PyPegen_expect_token(p, 515)) // token='elif'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002765 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002766 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002767 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002768 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002769 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002770 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002771 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002772 (c = elif_stmt_rule(p)) // elif_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002773 )
2774 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002775 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2776 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002777 return NULL;
2778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002779 int _end_lineno = _token->end_lineno;
2780 UNUSED(_end_lineno); // Only used by EXTRA macro
2781 int _end_col_offset = _token->end_col_offset;
2782 UNUSED(_end_col_offset); // Only used by EXTRA macro
2783 _res = _Py_If ( a , b , CHECK ( _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
2784 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002785 p->error_indicator = 1;
2786 return NULL;
2787 }
2788 goto done;
2789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002790 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002791 }
2792 { // 'elif' named_expression ':' block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002793 Token * _keyword;
2794 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002795 expr_ty a;
2796 asdl_seq* b;
2797 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002798 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002799 (_keyword = _PyPegen_expect_token(p, 515)) // token='elif'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002800 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002801 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002802 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002803 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002804 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002805 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002806 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002807 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002808 )
2809 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002810 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2811 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002812 return NULL;
2813 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002814 int _end_lineno = _token->end_lineno;
2815 UNUSED(_end_lineno); // Only used by EXTRA macro
2816 int _end_col_offset = _token->end_col_offset;
2817 UNUSED(_end_col_offset); // Only used by EXTRA macro
2818 _res = _Py_If ( a , b , c , EXTRA );
2819 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002820 p->error_indicator = 1;
2821 return NULL;
2822 }
2823 goto done;
2824 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002825 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002826 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002827 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002828 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002829 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002830}
2831
2832// else_block: 'else' ':' block
2833static asdl_seq*
2834else_block_rule(Parser *p)
2835{
2836 if (p->error_indicator) {
2837 return NULL;
2838 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002839 asdl_seq* _res = NULL;
2840 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002841 { // 'else' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002842 Token * _keyword;
2843 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002844 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002845 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002846 (_keyword = _PyPegen_expect_token(p, 516)) // token='else'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002847 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002848 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002849 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002850 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002851 )
2852 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002853 _res = b;
2854 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002855 p->error_indicator = 1;
2856 return NULL;
2857 }
2858 goto done;
2859 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002860 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002861 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002862 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002863 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002864 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002865}
2866
2867// while_stmt: 'while' named_expression ':' block else_block?
2868static stmt_ty
2869while_stmt_rule(Parser *p)
2870{
2871 if (p->error_indicator) {
2872 return NULL;
2873 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002874 stmt_ty _res = NULL;
2875 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002876 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2877 p->error_indicator = 1;
2878 return NULL;
2879 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002880 int _start_lineno = p->tokens[_mark]->lineno;
2881 UNUSED(_start_lineno); // Only used by EXTRA macro
2882 int _start_col_offset = p->tokens[_mark]->col_offset;
2883 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002884 { // 'while' named_expression ':' block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002885 Token * _keyword;
2886 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002887 expr_ty a;
2888 asdl_seq* b;
2889 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002890 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002891 (_keyword = _PyPegen_expect_token(p, 512)) // token='while'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002892 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002893 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002894 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002895 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002896 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002897 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002898 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002899 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002900 )
2901 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002902 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2903 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002904 return NULL;
2905 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002906 int _end_lineno = _token->end_lineno;
2907 UNUSED(_end_lineno); // Only used by EXTRA macro
2908 int _end_col_offset = _token->end_col_offset;
2909 UNUSED(_end_col_offset); // Only used by EXTRA macro
2910 _res = _Py_While ( a , b , c , EXTRA );
2911 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002912 p->error_indicator = 1;
2913 return NULL;
2914 }
2915 goto done;
2916 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002917 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002918 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002919 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002920 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002921 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002922}
2923
Guido van Rossumc001c092020-04-30 12:12:19 -07002924// for_stmt:
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002925// | 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
2926// | ASYNC 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002927static stmt_ty
2928for_stmt_rule(Parser *p)
2929{
2930 if (p->error_indicator) {
2931 return NULL;
2932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002933 stmt_ty _res = NULL;
2934 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002935 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2936 p->error_indicator = 1;
2937 return NULL;
2938 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002939 int _start_lineno = p->tokens[_mark]->lineno;
2940 UNUSED(_start_lineno); // Only used by EXTRA macro
2941 int _start_col_offset = p->tokens[_mark]->col_offset;
2942 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002943 { // 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002944 Token * _keyword;
2945 Token * _keyword_1;
2946 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002947 asdl_seq* b;
2948 void *el;
2949 expr_ty ex;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002950 expr_ty t;
Guido van Rossumc001c092020-04-30 12:12:19 -07002951 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002952 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002953 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002954 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002955 (t = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002956 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002957 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002958 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002959 (ex = star_expressions_rule(p)) // star_expressions
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002960 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002961 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002962 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002963 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002964 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002965 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002966 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002967 (el = else_block_rule(p), 1) // else_block?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002968 )
2969 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002970 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2971 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002972 return NULL;
2973 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002974 int _end_lineno = _token->end_lineno;
2975 UNUSED(_end_lineno); // Only used by EXTRA macro
2976 int _end_col_offset = _token->end_col_offset;
2977 UNUSED(_end_col_offset); // Only used by EXTRA macro
2978 _res = _Py_For ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
2979 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002980 p->error_indicator = 1;
2981 return NULL;
2982 }
2983 goto done;
2984 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002985 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002986 }
2987 { // ASYNC 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002988 Token * _keyword;
2989 Token * _keyword_1;
2990 Token * _literal;
Pablo Galindob796b3f2020-05-01 12:32:26 +01002991 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002992 asdl_seq* b;
2993 void *el;
2994 expr_ty ex;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002995 expr_ty t;
2996 void *tc;
2997 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002998 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002999 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003000 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003001 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003002 (t = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003003 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003004 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003005 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003006 (ex = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003007 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003008 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003009 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003010 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07003011 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003012 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003013 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003014 (el = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003015 )
3016 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003017 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3018 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003019 return NULL;
3020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003021 int _end_lineno = _token->end_lineno;
3022 UNUSED(_end_lineno); // Only used by EXTRA macro
3023 int _end_col_offset = _token->end_col_offset;
3024 UNUSED(_end_col_offset); // Only used by EXTRA macro
3025 _res = CHECK_VERSION ( 5 , "Async for loops are" , _Py_AsyncFor ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
3026 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003027 p->error_indicator = 1;
3028 return NULL;
3029 }
3030 goto done;
3031 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003032 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003034 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003035 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003036 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003037}
3038
3039// with_stmt:
Pablo Galindo99db2a12020-05-06 22:54:34 +01003040// | 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003041// | 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindo99db2a12020-05-06 22:54:34 +01003042// | ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003043// | ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003044static stmt_ty
3045with_stmt_rule(Parser *p)
3046{
3047 if (p->error_indicator) {
3048 return NULL;
3049 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003050 stmt_ty _res = NULL;
3051 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003052 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3053 p->error_indicator = 1;
3054 return NULL;
3055 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003056 int _start_lineno = p->tokens[_mark]->lineno;
3057 UNUSED(_start_lineno); // Only used by EXTRA macro
3058 int _start_col_offset = p->tokens[_mark]->col_offset;
3059 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindo99db2a12020-05-06 22:54:34 +01003060 { // 'with' '(' ','.with_item+ ','? ')' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003061 Token * _keyword;
3062 Token * _literal;
3063 Token * _literal_1;
3064 Token * _literal_2;
3065 void *_opt_var;
3066 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003067 asdl_seq * a;
3068 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003069 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003070 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003071 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003072 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003073 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003074 (a = _gather_38_rule(p)) // ','.with_item+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003075 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003076 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindo99db2a12020-05-06 22:54:34 +01003077 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003078 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003079 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003080 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003081 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003082 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003083 )
3084 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003085 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3086 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003087 return NULL;
3088 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003089 int _end_lineno = _token->end_lineno;
3090 UNUSED(_end_lineno); // Only used by EXTRA macro
3091 int _end_col_offset = _token->end_col_offset;
3092 UNUSED(_end_col_offset); // Only used by EXTRA macro
3093 _res = _Py_With ( a , b , NULL , EXTRA );
3094 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003095 p->error_indicator = 1;
3096 return NULL;
3097 }
3098 goto done;
3099 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003100 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003101 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003102 { // 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003103 Token * _keyword;
3104 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003105 asdl_seq * a;
3106 asdl_seq* b;
Guido van Rossumc001c092020-04-30 12:12:19 -07003107 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003108 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003109 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003110 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003111 (a = _gather_40_rule(p)) // ','.with_item+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003112 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003113 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003114 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003115 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07003116 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003117 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003118 )
3119 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003120 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3121 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003122 return NULL;
3123 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003124 int _end_lineno = _token->end_lineno;
3125 UNUSED(_end_lineno); // Only used by EXTRA macro
3126 int _end_col_offset = _token->end_col_offset;
3127 UNUSED(_end_col_offset); // Only used by EXTRA macro
3128 _res = _Py_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
3129 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003130 p->error_indicator = 1;
3131 return NULL;
3132 }
3133 goto done;
3134 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003135 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003136 }
Pablo Galindo99db2a12020-05-06 22:54:34 +01003137 { // ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003138 Token * _keyword;
3139 Token * _literal;
3140 Token * _literal_1;
3141 Token * _literal_2;
3142 void *_opt_var;
3143 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003144 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003145 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003146 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003147 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003148 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003149 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003150 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003151 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003152 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003153 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003154 (a = _gather_42_rule(p)) // ','.with_item+
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003155 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003156 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindo99db2a12020-05-06 22:54:34 +01003157 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003158 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003159 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003160 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003161 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003162 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003163 )
3164 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003165 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3166 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003167 return NULL;
3168 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003169 int _end_lineno = _token->end_lineno;
3170 UNUSED(_end_lineno); // Only used by EXTRA macro
3171 int _end_col_offset = _token->end_col_offset;
3172 UNUSED(_end_col_offset); // Only used by EXTRA macro
3173 _res = CHECK_VERSION ( 5 , "Async with statements are" , _Py_AsyncWith ( a , b , NULL , EXTRA ) );
3174 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003175 p->error_indicator = 1;
3176 return NULL;
3177 }
3178 goto done;
3179 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003180 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003181 }
3182 { // ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003183 Token * _keyword;
3184 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003185 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003186 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003187 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003188 void *tc;
3189 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003190 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003191 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003192 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003193 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003194 (a = _gather_44_rule(p)) // ','.with_item+
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003195 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003196 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003197 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003198 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003199 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003200 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003201 )
3202 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003203 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3204 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003205 return NULL;
3206 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003207 int _end_lineno = _token->end_lineno;
3208 UNUSED(_end_lineno); // Only used by EXTRA macro
3209 int _end_col_offset = _token->end_col_offset;
3210 UNUSED(_end_col_offset); // Only used by EXTRA macro
3211 _res = CHECK_VERSION ( 5 , "Async with statements are" , _Py_AsyncWith ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
3212 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003213 p->error_indicator = 1;
3214 return NULL;
3215 }
3216 goto done;
3217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003218 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003220 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003221 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003222 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003223}
3224
3225// with_item: expression ['as' target]
3226static withitem_ty
3227with_item_rule(Parser *p)
3228{
3229 if (p->error_indicator) {
3230 return NULL;
3231 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003232 withitem_ty _res = NULL;
3233 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003234 { // expression ['as' target]
3235 expr_ty e;
3236 void *o;
3237 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003238 (e = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003239 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003240 (o = _tmp_46_rule(p), 1) // ['as' target]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003241 )
3242 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003243 _res = _Py_withitem ( e , o , p -> arena );
3244 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003245 p->error_indicator = 1;
3246 return NULL;
3247 }
3248 goto done;
3249 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003250 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003252 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003253 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003254 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003255}
3256
3257// try_stmt:
3258// | 'try' ':' block finally_block
3259// | 'try' ':' block except_block+ else_block? finally_block?
3260static stmt_ty
3261try_stmt_rule(Parser *p)
3262{
3263 if (p->error_indicator) {
3264 return NULL;
3265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003266 stmt_ty _res = NULL;
3267 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003268 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3269 p->error_indicator = 1;
3270 return NULL;
3271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003272 int _start_lineno = p->tokens[_mark]->lineno;
3273 UNUSED(_start_lineno); // Only used by EXTRA macro
3274 int _start_col_offset = p->tokens[_mark]->col_offset;
3275 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003276 { // 'try' ':' block finally_block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003277 Token * _keyword;
3278 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003279 asdl_seq* b;
3280 asdl_seq* f;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003281 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003282 (_keyword = _PyPegen_expect_token(p, 511)) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003283 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003284 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003285 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003286 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003287 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003288 (f = finally_block_rule(p)) // finally_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003289 )
3290 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003291 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3292 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003293 return NULL;
3294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003295 int _end_lineno = _token->end_lineno;
3296 UNUSED(_end_lineno); // Only used by EXTRA macro
3297 int _end_col_offset = _token->end_col_offset;
3298 UNUSED(_end_col_offset); // Only used by EXTRA macro
3299 _res = _Py_Try ( b , NULL , NULL , f , EXTRA );
3300 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003301 p->error_indicator = 1;
3302 return NULL;
3303 }
3304 goto done;
3305 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003306 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003307 }
3308 { // 'try' ':' block except_block+ else_block? finally_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003309 Token * _keyword;
3310 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003311 asdl_seq* b;
3312 void *el;
3313 asdl_seq * ex;
3314 void *f;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003315 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003316 (_keyword = _PyPegen_expect_token(p, 511)) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003317 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003318 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003319 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003320 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003321 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003322 (ex = _loop1_47_rule(p)) // except_block+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003323 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003324 (el = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003325 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003326 (f = finally_block_rule(p), 1) // finally_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003327 )
3328 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003329 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3330 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003331 return NULL;
3332 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003333 int _end_lineno = _token->end_lineno;
3334 UNUSED(_end_lineno); // Only used by EXTRA macro
3335 int _end_col_offset = _token->end_col_offset;
3336 UNUSED(_end_col_offset); // Only used by EXTRA macro
3337 _res = _Py_Try ( b , ex , el , f , EXTRA );
3338 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003339 p->error_indicator = 1;
3340 return NULL;
3341 }
3342 goto done;
3343 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003344 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003346 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003347 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003348 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003349}
3350
3351// except_block: 'except' expression ['as' target] ':' block | 'except' ':' block
3352static excepthandler_ty
3353except_block_rule(Parser *p)
3354{
3355 if (p->error_indicator) {
3356 return NULL;
3357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003358 excepthandler_ty _res = NULL;
3359 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003360 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3361 p->error_indicator = 1;
3362 return NULL;
3363 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003364 int _start_lineno = p->tokens[_mark]->lineno;
3365 UNUSED(_start_lineno); // Only used by EXTRA macro
3366 int _start_col_offset = p->tokens[_mark]->col_offset;
3367 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003368 { // 'except' expression ['as' target] ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003369 Token * _keyword;
3370 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003371 asdl_seq* b;
3372 expr_ty e;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003373 void *t;
3374 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003375 (_keyword = _PyPegen_expect_token(p, 520)) // token='except'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003376 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003377 (e = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003378 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003379 (t = _tmp_48_rule(p), 1) // ['as' target]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003380 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003381 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003382 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003383 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003384 )
3385 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003386 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3387 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003388 return NULL;
3389 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003390 int _end_lineno = _token->end_lineno;
3391 UNUSED(_end_lineno); // Only used by EXTRA macro
3392 int _end_col_offset = _token->end_col_offset;
3393 UNUSED(_end_col_offset); // Only used by EXTRA macro
3394 _res = _Py_ExceptHandler ( e , ( t ) ? ( ( expr_ty ) t ) -> v . Name . id : NULL , b , EXTRA );
3395 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003396 p->error_indicator = 1;
3397 return NULL;
3398 }
3399 goto done;
3400 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003401 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003402 }
3403 { // 'except' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003404 Token * _keyword;
3405 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003406 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003407 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003408 (_keyword = _PyPegen_expect_token(p, 520)) // token='except'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003409 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003410 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003411 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003412 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003413 )
3414 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003415 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3416 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003417 return NULL;
3418 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003419 int _end_lineno = _token->end_lineno;
3420 UNUSED(_end_lineno); // Only used by EXTRA macro
3421 int _end_col_offset = _token->end_col_offset;
3422 UNUSED(_end_col_offset); // Only used by EXTRA macro
3423 _res = _Py_ExceptHandler ( NULL , NULL , b , EXTRA );
3424 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003425 p->error_indicator = 1;
3426 return NULL;
3427 }
3428 goto done;
3429 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003430 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003431 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003432 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003433 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003434 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003435}
3436
3437// finally_block: 'finally' ':' block
3438static asdl_seq*
3439finally_block_rule(Parser *p)
3440{
3441 if (p->error_indicator) {
3442 return NULL;
3443 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003444 asdl_seq* _res = NULL;
3445 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003446 { // 'finally' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003447 Token * _keyword;
3448 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003449 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003450 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003451 (_keyword = _PyPegen_expect_token(p, 521)) // token='finally'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003452 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003453 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003454 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003455 (a = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003456 )
3457 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003458 _res = a;
3459 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003460 p->error_indicator = 1;
3461 return NULL;
3462 }
3463 goto done;
3464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003465 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003467 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003468 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003469 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003470}
3471
3472// return_stmt: 'return' star_expressions?
3473static stmt_ty
3474return_stmt_rule(Parser *p)
3475{
3476 if (p->error_indicator) {
3477 return NULL;
3478 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003479 stmt_ty _res = NULL;
3480 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003481 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3482 p->error_indicator = 1;
3483 return NULL;
3484 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003485 int _start_lineno = p->tokens[_mark]->lineno;
3486 UNUSED(_start_lineno); // Only used by EXTRA macro
3487 int _start_col_offset = p->tokens[_mark]->col_offset;
3488 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003489 { // 'return' star_expressions?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003490 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003491 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003492 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003493 (_keyword = _PyPegen_expect_token(p, 500)) // token='return'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003494 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003495 (a = star_expressions_rule(p), 1) // star_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003496 )
3497 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003498 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3499 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003500 return NULL;
3501 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003502 int _end_lineno = _token->end_lineno;
3503 UNUSED(_end_lineno); // Only used by EXTRA macro
3504 int _end_col_offset = _token->end_col_offset;
3505 UNUSED(_end_col_offset); // Only used by EXTRA macro
3506 _res = _Py_Return ( a , EXTRA );
3507 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003508 p->error_indicator = 1;
3509 return NULL;
3510 }
3511 goto done;
3512 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003513 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003514 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003515 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003516 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003517 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003518}
3519
3520// raise_stmt: 'raise' expression ['from' expression] | 'raise'
3521static stmt_ty
3522raise_stmt_rule(Parser *p)
3523{
3524 if (p->error_indicator) {
3525 return NULL;
3526 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003527 stmt_ty _res = NULL;
3528 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003529 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3530 p->error_indicator = 1;
3531 return NULL;
3532 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003533 int _start_lineno = p->tokens[_mark]->lineno;
3534 UNUSED(_start_lineno); // Only used by EXTRA macro
3535 int _start_col_offset = p->tokens[_mark]->col_offset;
3536 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003537 { // 'raise' expression ['from' expression]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003538 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003539 expr_ty a;
3540 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003541 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003542 (_keyword = _PyPegen_expect_token(p, 501)) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003543 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003544 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003545 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003546 (b = _tmp_49_rule(p), 1) // ['from' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003547 )
3548 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003549 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3550 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003551 return NULL;
3552 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003553 int _end_lineno = _token->end_lineno;
3554 UNUSED(_end_lineno); // Only used by EXTRA macro
3555 int _end_col_offset = _token->end_col_offset;
3556 UNUSED(_end_col_offset); // Only used by EXTRA macro
3557 _res = _Py_Raise ( a , b , EXTRA );
3558 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003559 p->error_indicator = 1;
3560 return NULL;
3561 }
3562 goto done;
3563 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003564 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003565 }
3566 { // 'raise'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003567 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003568 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003569 (_keyword = _PyPegen_expect_token(p, 501)) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003570 )
3571 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003572 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3573 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003574 return NULL;
3575 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003576 int _end_lineno = _token->end_lineno;
3577 UNUSED(_end_lineno); // Only used by EXTRA macro
3578 int _end_col_offset = _token->end_col_offset;
3579 UNUSED(_end_col_offset); // Only used by EXTRA macro
3580 _res = _Py_Raise ( NULL , NULL , EXTRA );
3581 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003582 p->error_indicator = 1;
3583 return NULL;
3584 }
3585 goto done;
3586 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003587 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003588 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003589 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003590 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003591 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003592}
3593
3594// function_def: decorators function_def_raw | function_def_raw
3595static stmt_ty
3596function_def_rule(Parser *p)
3597{
3598 if (p->error_indicator) {
3599 return NULL;
3600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003601 stmt_ty _res = NULL;
3602 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003603 { // decorators function_def_raw
3604 asdl_seq* d;
3605 stmt_ty f;
3606 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003607 (d = decorators_rule(p)) // decorators
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003608 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003609 (f = function_def_raw_rule(p)) // function_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003610 )
3611 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003612 _res = _PyPegen_function_def_decorators ( p , d , f );
3613 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003614 p->error_indicator = 1;
3615 return NULL;
3616 }
3617 goto done;
3618 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003619 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003620 }
3621 { // function_def_raw
3622 stmt_ty function_def_raw_var;
3623 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003624 (function_def_raw_var = function_def_raw_rule(p)) // function_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003625 )
3626 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003627 _res = function_def_raw_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003628 goto done;
3629 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003630 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003632 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003633 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003634 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003635}
3636
Guido van Rossumc001c092020-04-30 12:12:19 -07003637// function_def_raw:
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003638// | 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
3639// | ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003640static stmt_ty
3641function_def_raw_rule(Parser *p)
3642{
3643 if (p->error_indicator) {
3644 return NULL;
3645 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003646 stmt_ty _res = NULL;
3647 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003648 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3649 p->error_indicator = 1;
3650 return NULL;
3651 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003652 int _start_lineno = p->tokens[_mark]->lineno;
3653 UNUSED(_start_lineno); // Only used by EXTRA macro
3654 int _start_col_offset = p->tokens[_mark]->col_offset;
3655 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003656 { // 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003657 Token * _keyword;
3658 Token * _literal;
3659 Token * _literal_1;
3660 Token * _literal_2;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003661 void *a;
3662 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003663 expr_ty n;
3664 void *params;
Guido van Rossumc001c092020-04-30 12:12:19 -07003665 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003666 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003667 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003668 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003669 (n = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003670 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003671 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003672 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003673 (params = params_rule(p), 1) // params?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003674 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003675 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003676 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003677 (a = _tmp_50_rule(p), 1) // ['->' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003678 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003679 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003680 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003681 (tc = func_type_comment_rule(p), 1) // func_type_comment?
Guido van Rossumc001c092020-04-30 12:12:19 -07003682 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003683 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003684 )
3685 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003686 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3687 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003688 return NULL;
3689 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003690 int _end_lineno = _token->end_lineno;
3691 UNUSED(_end_lineno); // Only used by EXTRA macro
3692 int _end_col_offset = _token->end_col_offset;
3693 UNUSED(_end_col_offset); // Only used by EXTRA macro
3694 _res = _Py_FunctionDef ( n -> v . Name . id , ( params ) ? params : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
3695 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003696 p->error_indicator = 1;
3697 return NULL;
3698 }
3699 goto done;
3700 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003701 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003702 }
3703 { // ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003704 Token * _keyword;
3705 Token * _literal;
3706 Token * _literal_1;
3707 Token * _literal_2;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003708 void *a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003709 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003710 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003711 expr_ty n;
3712 void *params;
3713 void *tc;
3714 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003715 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003716 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003717 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003718 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003719 (n = _PyPegen_name_token(p)) // NAME
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003720 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003721 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003722 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003723 (params = params_rule(p), 1) // params?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003724 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003725 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003726 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003727 (a = _tmp_51_rule(p), 1) // ['->' expression]
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003728 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003729 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003730 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003731 (tc = func_type_comment_rule(p), 1) // func_type_comment?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003732 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003733 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003734 )
3735 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003736 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3737 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003738 return NULL;
3739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003740 int _end_lineno = _token->end_lineno;
3741 UNUSED(_end_lineno); // Only used by EXTRA macro
3742 int _end_col_offset = _token->end_col_offset;
3743 UNUSED(_end_col_offset); // Only used by EXTRA macro
3744 _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 ) );
3745 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003746 p->error_indicator = 1;
3747 return NULL;
3748 }
3749 goto done;
3750 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003751 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003752 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003753 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003754 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003755 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003756}
3757
Guido van Rossumc001c092020-04-30 12:12:19 -07003758// func_type_comment:
3759// | NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
3760// | invalid_double_type_comments
3761// | TYPE_COMMENT
Pablo Galindod9552412020-05-01 16:32:09 +01003762static Token*
Guido van Rossumc001c092020-04-30 12:12:19 -07003763func_type_comment_rule(Parser *p)
3764{
3765 if (p->error_indicator) {
3766 return NULL;
3767 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003768 Token* _res = NULL;
3769 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003770 { // NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
Pablo Galindob796b3f2020-05-01 12:32:26 +01003771 Token * newline_var;
3772 Token * t;
Guido van Rossumc001c092020-04-30 12:12:19 -07003773 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003774 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -07003775 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003776 (t = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -07003777 &&
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003778 _PyPegen_lookahead(1, _tmp_52_rule, p)
Guido van Rossumc001c092020-04-30 12:12:19 -07003779 )
3780 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003781 _res = t;
3782 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07003783 p->error_indicator = 1;
3784 return NULL;
3785 }
3786 goto done;
3787 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003788 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003789 }
3790 { // invalid_double_type_comments
3791 void *invalid_double_type_comments_var;
3792 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003793 (invalid_double_type_comments_var = invalid_double_type_comments_rule(p)) // invalid_double_type_comments
Guido van Rossumc001c092020-04-30 12:12:19 -07003794 )
3795 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003796 _res = invalid_double_type_comments_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07003797 goto done;
3798 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003799 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003800 }
3801 { // TYPE_COMMENT
Pablo Galindob796b3f2020-05-01 12:32:26 +01003802 Token * type_comment_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07003803 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003804 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -07003805 )
3806 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003807 _res = type_comment_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07003808 goto done;
3809 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003810 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003812 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07003813 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003814 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07003815}
3816
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003817// params: invalid_parameters | parameters
3818static arguments_ty
3819params_rule(Parser *p)
3820{
3821 if (p->error_indicator) {
3822 return NULL;
3823 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003824 arguments_ty _res = NULL;
3825 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003826 { // invalid_parameters
3827 void *invalid_parameters_var;
3828 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003829 (invalid_parameters_var = invalid_parameters_rule(p)) // invalid_parameters
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003830 )
3831 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003832 _res = invalid_parameters_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003833 goto done;
3834 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003835 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003836 }
3837 { // parameters
3838 arguments_ty parameters_var;
3839 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003840 (parameters_var = parameters_rule(p)) // parameters
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003841 )
3842 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003843 _res = parameters_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003844 goto done;
3845 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003846 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003847 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003848 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003849 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003850 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003851}
3852
3853// parameters:
Guido van Rossumc001c092020-04-30 12:12:19 -07003854// | slash_no_default param_no_default* param_with_default* star_etc?
3855// | slash_with_default param_with_default* star_etc?
3856// | param_no_default+ param_with_default* star_etc?
3857// | param_with_default+ star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003858// | star_etc
3859static arguments_ty
3860parameters_rule(Parser *p)
3861{
3862 if (p->error_indicator) {
3863 return NULL;
3864 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003865 arguments_ty _res = NULL;
3866 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003867 { // slash_no_default param_no_default* param_with_default* star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003868 asdl_seq* a;
Guido van Rossumc001c092020-04-30 12:12:19 -07003869 asdl_seq * b;
3870 asdl_seq * c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003871 void *d;
3872 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003873 (a = slash_no_default_rule(p)) // slash_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003874 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003875 (b = _loop0_53_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003876 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003877 (c = _loop0_54_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003878 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003879 (d = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003880 )
3881 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003882 _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
3883 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003884 p->error_indicator = 1;
3885 return NULL;
3886 }
3887 goto done;
3888 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003889 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003890 }
Guido van Rossumc001c092020-04-30 12:12:19 -07003891 { // slash_with_default param_with_default* star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003892 SlashWithDefault* a;
Guido van Rossumc001c092020-04-30 12:12:19 -07003893 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003894 void *c;
3895 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003896 (a = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003897 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003898 (b = _loop0_55_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003899 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003900 (c = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003901 )
3902 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003903 _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
3904 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003905 p->error_indicator = 1;
3906 return NULL;
3907 }
3908 goto done;
3909 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003910 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003911 }
Guido van Rossumc001c092020-04-30 12:12:19 -07003912 { // param_no_default+ param_with_default* star_etc?
3913 asdl_seq * a;
3914 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003915 void *c;
3916 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003917 (a = _loop1_56_rule(p)) // param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003918 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003919 (b = _loop0_57_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003920 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003921 (c = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003922 )
3923 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003924 _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
3925 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003926 p->error_indicator = 1;
3927 return NULL;
3928 }
3929 goto done;
3930 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003931 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003932 }
Guido van Rossumc001c092020-04-30 12:12:19 -07003933 { // param_with_default+ star_etc?
3934 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003935 void *b;
3936 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003937 (a = _loop1_58_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003938 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003939 (b = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003940 )
3941 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003942 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
3943 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003944 p->error_indicator = 1;
3945 return NULL;
3946 }
3947 goto done;
3948 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003949 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003950 }
3951 { // star_etc
3952 StarEtc* a;
3953 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003954 (a = star_etc_rule(p)) // star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003955 )
3956 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003957 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
3958 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003959 p->error_indicator = 1;
3960 return NULL;
3961 }
3962 goto done;
3963 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003964 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003966 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003967 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003968 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003969}
3970
Guido van Rossumc001c092020-04-30 12:12:19 -07003971// slash_no_default: param_no_default+ '/' ',' | param_no_default+ '/' &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003972static asdl_seq*
Guido van Rossumc001c092020-04-30 12:12:19 -07003973slash_no_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003974{
3975 if (p->error_indicator) {
3976 return NULL;
3977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003978 asdl_seq* _res = NULL;
3979 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003980 { // param_no_default+ '/' ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003981 Token * _literal;
3982 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07003983 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003984 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003985 (a = _loop1_59_rule(p)) // param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003986 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003987 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003988 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003989 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07003990 )
3991 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003992 _res = a;
3993 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07003994 p->error_indicator = 1;
3995 return NULL;
3996 }
3997 goto done;
3998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003999 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004000 }
4001 { // param_no_default+ '/' &')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004002 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004003 asdl_seq * a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004004 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004005 (a = _loop1_60_rule(p)) // param_no_default+
Guido van Rossumc001c092020-04-30 12:12:19 -07004006 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004007 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossumc001c092020-04-30 12:12:19 -07004008 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004009 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004010 )
4011 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004012 _res = a;
4013 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004014 p->error_indicator = 1;
4015 return NULL;
4016 }
4017 goto done;
4018 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004019 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004021 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004022 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004023 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004024}
4025
Guido van Rossumc001c092020-04-30 12:12:19 -07004026// slash_with_default:
4027// | param_no_default* param_with_default+ '/' ','
4028// | param_no_default* param_with_default+ '/' &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004029static SlashWithDefault*
4030slash_with_default_rule(Parser *p)
4031{
4032 if (p->error_indicator) {
4033 return NULL;
4034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004035 SlashWithDefault* _res = NULL;
4036 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004037 { // param_no_default* param_with_default+ '/' ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004038 Token * _literal;
4039 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07004040 asdl_seq * a;
4041 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004042 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004043 (a = _loop0_61_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004044 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004045 (b = _loop1_62_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004046 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004047 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004048 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004049 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004050 )
4051 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004052 _res = _PyPegen_slash_with_default ( p , a , b );
4053 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004054 p->error_indicator = 1;
4055 return NULL;
4056 }
4057 goto done;
4058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004059 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004060 }
4061 { // param_no_default* param_with_default+ '/' &')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004062 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004063 asdl_seq * a;
4064 asdl_seq * b;
Guido van Rossumc001c092020-04-30 12:12:19 -07004065 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004066 (a = _loop0_63_rule(p)) // param_no_default*
Guido van Rossumc001c092020-04-30 12:12:19 -07004067 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004068 (b = _loop1_64_rule(p)) // param_with_default+
Guido van Rossumc001c092020-04-30 12:12:19 -07004069 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004070 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossumc001c092020-04-30 12:12:19 -07004071 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004072 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004073 )
4074 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004075 _res = _PyPegen_slash_with_default ( p , a , b );
4076 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004077 p->error_indicator = 1;
4078 return NULL;
4079 }
4080 goto done;
4081 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004082 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004083 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004084 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004085 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004086 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004087}
4088
4089// star_etc:
Guido van Rossumc001c092020-04-30 12:12:19 -07004090// | '*' param_no_default param_maybe_default* kwds?
4091// | '*' ',' param_maybe_default+ kwds?
4092// | kwds
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004093// | invalid_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004094static StarEtc*
4095star_etc_rule(Parser *p)
4096{
4097 if (p->error_indicator) {
4098 return NULL;
4099 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004100 StarEtc* _res = NULL;
4101 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004102 { // '*' param_no_default param_maybe_default* kwds?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004103 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004104 arg_ty a;
4105 asdl_seq * b;
4106 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004107 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004108 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004109 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004110 (a = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004111 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004112 (b = _loop0_65_rule(p)) // param_maybe_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004113 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004114 (c = kwds_rule(p), 1) // kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004115 )
4116 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004117 _res = _PyPegen_star_etc ( p , a , b , c );
4118 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004119 p->error_indicator = 1;
4120 return NULL;
4121 }
4122 goto done;
4123 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004124 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004125 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004126 { // '*' ',' param_maybe_default+ kwds?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004127 Token * _literal;
4128 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004129 asdl_seq * b;
4130 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004131 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004132 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004133 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004134 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004135 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004136 (b = _loop1_66_rule(p)) // param_maybe_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004137 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004138 (c = kwds_rule(p), 1) // kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004139 )
4140 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004141 _res = _PyPegen_star_etc ( p , NULL , b , c );
4142 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004143 p->error_indicator = 1;
4144 return NULL;
4145 }
4146 goto done;
4147 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004148 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004149 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004150 { // kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004151 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004152 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004153 (a = kwds_rule(p)) // kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004154 )
4155 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004156 _res = _PyPegen_star_etc ( p , NULL , NULL , a );
4157 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004158 p->error_indicator = 1;
4159 return NULL;
4160 }
4161 goto done;
4162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004163 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004164 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004165 { // invalid_star_etc
4166 void *invalid_star_etc_var;
4167 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004168 (invalid_star_etc_var = invalid_star_etc_rule(p)) // invalid_star_etc
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004169 )
4170 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004171 _res = invalid_star_etc_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004172 goto done;
4173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004174 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004175 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004176 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004177 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004178 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004179}
4180
Guido van Rossumc001c092020-04-30 12:12:19 -07004181// kwds: '**' param_no_default
4182static arg_ty
4183kwds_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004184{
4185 if (p->error_indicator) {
4186 return NULL;
4187 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004188 arg_ty _res = NULL;
4189 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004190 { // '**' param_no_default
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004191 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004192 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004193 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004194 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -07004195 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004196 (a = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -07004197 )
4198 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004199 _res = a;
4200 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004201 p->error_indicator = 1;
4202 return NULL;
4203 }
4204 goto done;
4205 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004206 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004208 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07004209 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004210 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07004211}
4212
4213// param_no_default: param ',' TYPE_COMMENT? | param TYPE_COMMENT? &')'
4214static arg_ty
4215param_no_default_rule(Parser *p)
4216{
4217 if (p->error_indicator) {
4218 return NULL;
4219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004220 arg_ty _res = NULL;
4221 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004222 { // param ',' TYPE_COMMENT?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004223 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004224 arg_ty a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004225 void *tc;
4226 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004227 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004228 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004229 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004230 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004231 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004232 )
4233 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004234 _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
4235 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004236 p->error_indicator = 1;
4237 return NULL;
4238 }
4239 goto done;
4240 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004241 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004242 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004243 { // param TYPE_COMMENT? &')'
4244 arg_ty a;
4245 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004246 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004247 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004248 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004249 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004250 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004251 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004252 )
4253 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004254 _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
4255 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004256 p->error_indicator = 1;
4257 return NULL;
4258 }
4259 goto done;
4260 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004261 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004263 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004264 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004265 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004266}
4267
Guido van Rossumc001c092020-04-30 12:12:19 -07004268// param_with_default: param default ',' TYPE_COMMENT? | param default TYPE_COMMENT? &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004269static NameDefaultPair*
Guido van Rossumc001c092020-04-30 12:12:19 -07004270param_with_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004271{
4272 if (p->error_indicator) {
4273 return NULL;
4274 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004275 NameDefaultPair* _res = NULL;
4276 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004277 { // param default ',' TYPE_COMMENT?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004278 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004279 arg_ty a;
4280 expr_ty c;
Guido van Rossumc001c092020-04-30 12:12:19 -07004281 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004282 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004283 (a = param_rule(p)) // param
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004284 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004285 (c = default_rule(p)) // default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004286 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004287 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004288 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004289 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004290 )
4291 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004292 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4293 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004294 p->error_indicator = 1;
4295 return NULL;
4296 }
4297 goto done;
4298 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004299 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004300 }
4301 { // param default TYPE_COMMENT? &')'
4302 arg_ty a;
4303 expr_ty c;
4304 void *tc;
4305 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004306 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004307 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004308 (c = default_rule(p)) // default
Guido van Rossumc001c092020-04-30 12:12:19 -07004309 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004310 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004311 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004312 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -07004313 )
4314 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004315 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4316 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004317 p->error_indicator = 1;
4318 return NULL;
4319 }
4320 goto done;
4321 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004322 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004324 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004325 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004326 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004327}
4328
Guido van Rossumc001c092020-04-30 12:12:19 -07004329// param_maybe_default:
4330// | param default? ',' TYPE_COMMENT?
4331// | param default? TYPE_COMMENT? &')'
4332static NameDefaultPair*
4333param_maybe_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004334{
4335 if (p->error_indicator) {
4336 return NULL;
4337 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004338 NameDefaultPair* _res = NULL;
4339 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004340 { // param default? ',' TYPE_COMMENT?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004341 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004342 arg_ty a;
4343 void *c;
Guido van Rossumc001c092020-04-30 12:12:19 -07004344 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004345 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004346 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004347 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004348 (c = default_rule(p), 1) // default?
Guido van Rossumc001c092020-04-30 12:12:19 -07004349 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004350 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004351 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004352 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004353 )
4354 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004355 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4356 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004357 p->error_indicator = 1;
4358 return NULL;
4359 }
4360 goto done;
4361 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004362 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004363 }
4364 { // param default? TYPE_COMMENT? &')'
4365 arg_ty a;
4366 void *c;
4367 void *tc;
4368 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004369 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004370 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004371 (c = default_rule(p), 1) // default?
Guido van Rossumc001c092020-04-30 12:12:19 -07004372 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004373 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004374 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004375 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -07004376 )
4377 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004378 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4379 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004380 p->error_indicator = 1;
4381 return NULL;
4382 }
4383 goto done;
4384 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004385 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004387 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004388 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004389 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004390}
4391
Guido van Rossumc001c092020-04-30 12:12:19 -07004392// param: NAME annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004393static arg_ty
Guido van Rossumc001c092020-04-30 12:12:19 -07004394param_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004395{
4396 if (p->error_indicator) {
4397 return NULL;
4398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004399 arg_ty _res = NULL;
4400 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004401 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4402 p->error_indicator = 1;
4403 return NULL;
4404 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004405 int _start_lineno = p->tokens[_mark]->lineno;
4406 UNUSED(_start_lineno); // Only used by EXTRA macro
4407 int _start_col_offset = p->tokens[_mark]->col_offset;
4408 UNUSED(_start_col_offset); // Only used by EXTRA macro
Guido van Rossumc001c092020-04-30 12:12:19 -07004409 { // NAME annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004410 expr_ty a;
4411 void *b;
4412 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004413 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004414 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004415 (b = annotation_rule(p), 1) // annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004416 )
4417 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004418 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4419 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004420 return NULL;
4421 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004422 int _end_lineno = _token->end_lineno;
4423 UNUSED(_end_lineno); // Only used by EXTRA macro
4424 int _end_col_offset = _token->end_col_offset;
4425 UNUSED(_end_col_offset); // Only used by EXTRA macro
4426 _res = _Py_arg ( a -> v . Name . id , b , NULL , EXTRA );
4427 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004428 p->error_indicator = 1;
4429 return NULL;
4430 }
4431 goto done;
4432 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004433 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004435 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004436 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004437 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004438}
4439
Guido van Rossumc001c092020-04-30 12:12:19 -07004440// annotation: ':' expression
4441static expr_ty
4442annotation_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004443{
4444 if (p->error_indicator) {
4445 return NULL;
4446 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004447 expr_ty _res = NULL;
4448 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004449 { // ':' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004450 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004451 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004452 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004453 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004454 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004455 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004456 )
4457 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004458 _res = a;
4459 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004460 p->error_indicator = 1;
4461 return NULL;
4462 }
4463 goto done;
4464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004465 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004467 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004468 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004469 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004470}
4471
Guido van Rossumc001c092020-04-30 12:12:19 -07004472// default: '=' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004473static expr_ty
Guido van Rossumc001c092020-04-30 12:12:19 -07004474default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004475{
4476 if (p->error_indicator) {
4477 return NULL;
4478 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004479 expr_ty _res = NULL;
4480 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004481 { // '=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004482 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004483 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004484 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004485 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Guido van Rossumc001c092020-04-30 12:12:19 -07004486 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004487 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004488 )
4489 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004490 _res = a;
4491 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004492 p->error_indicator = 1;
4493 return NULL;
4494 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004495 goto done;
4496 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004497 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004499 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004500 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004501 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004502}
4503
4504// decorators: (('@' named_expression NEWLINE))+
4505static asdl_seq*
4506decorators_rule(Parser *p)
4507{
4508 if (p->error_indicator) {
4509 return NULL;
4510 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004511 asdl_seq* _res = NULL;
4512 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004513 { // (('@' named_expression NEWLINE))+
4514 asdl_seq * a;
4515 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004516 (a = _loop1_67_rule(p)) // (('@' named_expression NEWLINE))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004517 )
4518 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004519 _res = a;
4520 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004521 p->error_indicator = 1;
4522 return NULL;
4523 }
4524 goto done;
4525 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004526 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004528 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004529 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004530 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004531}
4532
4533// class_def: decorators class_def_raw | class_def_raw
4534static stmt_ty
4535class_def_rule(Parser *p)
4536{
4537 if (p->error_indicator) {
4538 return NULL;
4539 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004540 stmt_ty _res = NULL;
4541 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004542 { // decorators class_def_raw
4543 asdl_seq* a;
4544 stmt_ty b;
4545 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004546 (a = decorators_rule(p)) // decorators
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004547 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004548 (b = class_def_raw_rule(p)) // class_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004549 )
4550 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004551 _res = _PyPegen_class_def_decorators ( p , a , b );
4552 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004553 p->error_indicator = 1;
4554 return NULL;
4555 }
4556 goto done;
4557 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004558 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004559 }
4560 { // class_def_raw
4561 stmt_ty class_def_raw_var;
4562 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004563 (class_def_raw_var = class_def_raw_rule(p)) // class_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004564 )
4565 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004566 _res = class_def_raw_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004567 goto done;
4568 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004569 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004571 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004572 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004573 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004574}
4575
4576// class_def_raw: 'class' NAME ['(' arguments? ')'] ':' block
4577static stmt_ty
4578class_def_raw_rule(Parser *p)
4579{
4580 if (p->error_indicator) {
4581 return NULL;
4582 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004583 stmt_ty _res = NULL;
4584 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004585 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4586 p->error_indicator = 1;
4587 return NULL;
4588 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004589 int _start_lineno = p->tokens[_mark]->lineno;
4590 UNUSED(_start_lineno); // Only used by EXTRA macro
4591 int _start_col_offset = p->tokens[_mark]->col_offset;
4592 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004593 { // 'class' NAME ['(' arguments? ')'] ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004594 Token * _keyword;
4595 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004596 expr_ty a;
4597 void *b;
4598 asdl_seq* c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004599 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004600 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004601 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004602 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004603 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004604 (b = _tmp_68_rule(p), 1) // ['(' arguments? ')']
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004605 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004606 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004607 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004608 (c = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004609 )
4610 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004611 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4612 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004613 return NULL;
4614 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004615 int _end_lineno = _token->end_lineno;
4616 UNUSED(_end_lineno); // Only used by EXTRA macro
4617 int _end_col_offset = _token->end_col_offset;
4618 UNUSED(_end_col_offset); // Only used by EXTRA macro
4619 _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 );
4620 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004621 p->error_indicator = 1;
4622 return NULL;
4623 }
4624 goto done;
4625 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004626 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004628 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004629 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004630 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004631}
4632
4633// block: NEWLINE INDENT statements DEDENT | simple_stmt | invalid_block
4634static asdl_seq*
4635block_rule(Parser *p)
4636{
4637 if (p->error_indicator) {
4638 return NULL;
4639 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004640 asdl_seq* _res = NULL;
4641 if (_PyPegen_is_memoized(p, block_type, &_res))
4642 return _res;
4643 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004644 { // NEWLINE INDENT statements DEDENT
4645 asdl_seq* a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01004646 Token * dedent_var;
4647 Token * indent_var;
4648 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004649 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004650 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004651 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004652 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004653 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004654 (a = statements_rule(p)) // statements
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004655 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004656 (dedent_var = _PyPegen_expect_token(p, DEDENT)) // token='DEDENT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004657 )
4658 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004659 _res = a;
4660 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004661 p->error_indicator = 1;
4662 return NULL;
4663 }
4664 goto done;
4665 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004666 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004667 }
4668 { // simple_stmt
4669 asdl_seq* simple_stmt_var;
4670 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004671 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004672 )
4673 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004674 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004675 goto done;
4676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004677 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004678 }
4679 { // invalid_block
4680 void *invalid_block_var;
4681 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004682 (invalid_block_var = invalid_block_rule(p)) // invalid_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004683 )
4684 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004685 _res = invalid_block_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004686 goto done;
4687 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004688 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004689 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004690 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004691 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004692 _PyPegen_insert_memo(p, _mark, block_type, _res);
4693 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004694}
4695
4696// expressions_list: ','.star_expression+ ','?
4697static asdl_seq*
4698expressions_list_rule(Parser *p)
4699{
4700 if (p->error_indicator) {
4701 return NULL;
4702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004703 asdl_seq* _res = NULL;
4704 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004705 { // ','.star_expression+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004706 void *_opt_var;
4707 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004708 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004709 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004710 (a = _gather_69_rule(p)) // ','.star_expression+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004711 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004712 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004713 )
4714 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004715 _res = a;
4716 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004717 p->error_indicator = 1;
4718 return NULL;
4719 }
4720 goto done;
4721 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004722 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004723 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004724 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004725 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004726 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004727}
4728
4729// star_expressions:
4730// | star_expression ((',' star_expression))+ ','?
4731// | star_expression ','
4732// | star_expression
4733static expr_ty
4734star_expressions_rule(Parser *p)
4735{
4736 if (p->error_indicator) {
4737 return NULL;
4738 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004739 expr_ty _res = NULL;
4740 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004741 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4742 p->error_indicator = 1;
4743 return NULL;
4744 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004745 int _start_lineno = p->tokens[_mark]->lineno;
4746 UNUSED(_start_lineno); // Only used by EXTRA macro
4747 int _start_col_offset = p->tokens[_mark]->col_offset;
4748 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004749 { // star_expression ((',' star_expression))+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004750 void *_opt_var;
4751 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004752 expr_ty a;
4753 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004754 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004755 (a = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004756 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004757 (b = _loop1_71_rule(p)) // ((',' star_expression))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004758 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004759 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004760 )
4761 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004762 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4763 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004764 return NULL;
4765 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004766 int _end_lineno = _token->end_lineno;
4767 UNUSED(_end_lineno); // Only used by EXTRA macro
4768 int _end_col_offset = _token->end_col_offset;
4769 UNUSED(_end_col_offset); // Only used by EXTRA macro
4770 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
4771 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004772 p->error_indicator = 1;
4773 return NULL;
4774 }
4775 goto done;
4776 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004777 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004778 }
4779 { // star_expression ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004780 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004781 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004782 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004783 (a = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004784 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004785 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004786 )
4787 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004788 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4789 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004790 return NULL;
4791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004792 int _end_lineno = _token->end_lineno;
4793 UNUSED(_end_lineno); // Only used by EXTRA macro
4794 int _end_col_offset = _token->end_col_offset;
4795 UNUSED(_end_col_offset); // Only used by EXTRA macro
4796 _res = _Py_Tuple ( CHECK ( _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
4797 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004798 p->error_indicator = 1;
4799 return NULL;
4800 }
4801 goto done;
4802 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004803 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004804 }
4805 { // star_expression
4806 expr_ty star_expression_var;
4807 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004808 (star_expression_var = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004809 )
4810 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004811 _res = star_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004812 goto done;
4813 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004814 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004816 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004817 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004818 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004819}
4820
4821// star_expression: '*' bitwise_or | expression
4822static expr_ty
4823star_expression_rule(Parser *p)
4824{
4825 if (p->error_indicator) {
4826 return NULL;
4827 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004828 expr_ty _res = NULL;
4829 if (_PyPegen_is_memoized(p, star_expression_type, &_res))
4830 return _res;
4831 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004832 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4833 p->error_indicator = 1;
4834 return NULL;
4835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004836 int _start_lineno = p->tokens[_mark]->lineno;
4837 UNUSED(_start_lineno); // Only used by EXTRA macro
4838 int _start_col_offset = p->tokens[_mark]->col_offset;
4839 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004840 { // '*' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004841 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004842 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004843 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004844 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004845 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004846 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004847 )
4848 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004849 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4850 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004851 return NULL;
4852 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004853 int _end_lineno = _token->end_lineno;
4854 UNUSED(_end_lineno); // Only used by EXTRA macro
4855 int _end_col_offset = _token->end_col_offset;
4856 UNUSED(_end_col_offset); // Only used by EXTRA macro
4857 _res = _Py_Starred ( a , Load , EXTRA );
4858 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004859 p->error_indicator = 1;
4860 return NULL;
4861 }
4862 goto done;
4863 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004864 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004865 }
4866 { // expression
4867 expr_ty expression_var;
4868 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004869 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004870 )
4871 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004872 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004873 goto done;
4874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004875 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004877 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004878 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004879 _PyPegen_insert_memo(p, _mark, star_expression_type, _res);
4880 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004881}
4882
4883// star_named_expressions: ','.star_named_expression+ ','?
4884static asdl_seq*
4885star_named_expressions_rule(Parser *p)
4886{
4887 if (p->error_indicator) {
4888 return NULL;
4889 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004890 asdl_seq* _res = NULL;
4891 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004892 { // ','.star_named_expression+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004893 void *_opt_var;
4894 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004895 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004896 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004897 (a = _gather_72_rule(p)) // ','.star_named_expression+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004898 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004899 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004900 )
4901 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004902 _res = a;
4903 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004904 p->error_indicator = 1;
4905 return NULL;
4906 }
4907 goto done;
4908 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004909 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004911 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004912 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004913 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004914}
4915
4916// star_named_expression: '*' bitwise_or | named_expression
4917static expr_ty
4918star_named_expression_rule(Parser *p)
4919{
4920 if (p->error_indicator) {
4921 return NULL;
4922 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004923 expr_ty _res = NULL;
4924 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004925 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4926 p->error_indicator = 1;
4927 return NULL;
4928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004929 int _start_lineno = p->tokens[_mark]->lineno;
4930 UNUSED(_start_lineno); // Only used by EXTRA macro
4931 int _start_col_offset = p->tokens[_mark]->col_offset;
4932 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004933 { // '*' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004934 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004935 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004936 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004937 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004938 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004939 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004940 )
4941 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004942 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4943 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004944 return NULL;
4945 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004946 int _end_lineno = _token->end_lineno;
4947 UNUSED(_end_lineno); // Only used by EXTRA macro
4948 int _end_col_offset = _token->end_col_offset;
4949 UNUSED(_end_col_offset); // Only used by EXTRA macro
4950 _res = _Py_Starred ( a , Load , EXTRA );
4951 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004952 p->error_indicator = 1;
4953 return NULL;
4954 }
4955 goto done;
4956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004957 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004958 }
4959 { // named_expression
4960 expr_ty named_expression_var;
4961 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004962 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004963 )
4964 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004965 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004966 goto done;
4967 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004968 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004969 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004970 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004971 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004972 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004973}
4974
4975// named_expression: NAME ':=' expression | expression !':=' | invalid_named_expression
4976static expr_ty
4977named_expression_rule(Parser *p)
4978{
4979 if (p->error_indicator) {
4980 return NULL;
4981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004982 expr_ty _res = NULL;
4983 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004984 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4985 p->error_indicator = 1;
4986 return NULL;
4987 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004988 int _start_lineno = p->tokens[_mark]->lineno;
4989 UNUSED(_start_lineno); // Only used by EXTRA macro
4990 int _start_col_offset = p->tokens[_mark]->col_offset;
4991 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004992 { // NAME ':=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004993 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004994 expr_ty a;
4995 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004996 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004997 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004998 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004999 (_literal = _PyPegen_expect_token(p, 53)) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005000 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005001 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005002 )
5003 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005004 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5005 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005006 return NULL;
5007 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005008 int _end_lineno = _token->end_lineno;
5009 UNUSED(_end_lineno); // Only used by EXTRA macro
5010 int _end_col_offset = _token->end_col_offset;
5011 UNUSED(_end_col_offset); // Only used by EXTRA macro
5012 _res = _Py_NamedExpr ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , b , EXTRA );
5013 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005014 p->error_indicator = 1;
5015 return NULL;
5016 }
5017 goto done;
5018 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005019 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005020 }
5021 { // expression !':='
5022 expr_ty expression_var;
5023 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005024 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005025 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005026 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005027 )
5028 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005029 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005030 goto done;
5031 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005032 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005033 }
5034 { // invalid_named_expression
5035 void *invalid_named_expression_var;
5036 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005037 (invalid_named_expression_var = invalid_named_expression_rule(p)) // invalid_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005038 )
5039 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005040 _res = invalid_named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005041 goto done;
5042 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005043 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005044 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005045 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005046 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005047 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005048}
5049
5050// annotated_rhs: yield_expr | star_expressions
5051static expr_ty
5052annotated_rhs_rule(Parser *p)
5053{
5054 if (p->error_indicator) {
5055 return NULL;
5056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005057 expr_ty _res = NULL;
5058 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005059 { // yield_expr
5060 expr_ty yield_expr_var;
5061 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005062 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005063 )
5064 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005065 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005066 goto done;
5067 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005068 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005069 }
5070 { // star_expressions
5071 expr_ty star_expressions_var;
5072 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005073 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005074 )
5075 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005076 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005077 goto done;
5078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005079 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005081 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005082 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005083 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005084}
5085
5086// expressions: expression ((',' expression))+ ','? | expression ',' | expression
5087static expr_ty
5088expressions_rule(Parser *p)
5089{
5090 if (p->error_indicator) {
5091 return NULL;
5092 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005093 expr_ty _res = NULL;
5094 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005095 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5096 p->error_indicator = 1;
5097 return NULL;
5098 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005099 int _start_lineno = p->tokens[_mark]->lineno;
5100 UNUSED(_start_lineno); // Only used by EXTRA macro
5101 int _start_col_offset = p->tokens[_mark]->col_offset;
5102 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005103 { // expression ((',' expression))+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005104 void *_opt_var;
5105 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005106 expr_ty a;
5107 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005108 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005109 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005110 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005111 (b = _loop1_74_rule(p)) // ((',' expression))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005112 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005113 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005114 )
5115 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005116 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5117 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005118 return NULL;
5119 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005120 int _end_lineno = _token->end_lineno;
5121 UNUSED(_end_lineno); // Only used by EXTRA macro
5122 int _end_col_offset = _token->end_col_offset;
5123 UNUSED(_end_col_offset); // Only used by EXTRA macro
5124 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
5125 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005126 p->error_indicator = 1;
5127 return NULL;
5128 }
5129 goto done;
5130 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005131 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005132 }
5133 { // expression ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005134 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005135 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005136 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005137 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005138 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005139 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005140 )
5141 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005142 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5143 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005144 return NULL;
5145 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005146 int _end_lineno = _token->end_lineno;
5147 UNUSED(_end_lineno); // Only used by EXTRA macro
5148 int _end_col_offset = _token->end_col_offset;
5149 UNUSED(_end_col_offset); // Only used by EXTRA macro
5150 _res = _Py_Tuple ( CHECK ( _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
5151 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005152 p->error_indicator = 1;
5153 return NULL;
5154 }
5155 goto done;
5156 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005157 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005158 }
5159 { // expression
5160 expr_ty expression_var;
5161 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005162 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005163 )
5164 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005165 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005166 goto done;
5167 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005168 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005170 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005171 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005172 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005173}
5174
5175// expression: disjunction 'if' disjunction 'else' expression | disjunction | lambdef
5176static expr_ty
5177expression_rule(Parser *p)
5178{
5179 if (p->error_indicator) {
5180 return NULL;
5181 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005182 expr_ty _res = NULL;
5183 if (_PyPegen_is_memoized(p, expression_type, &_res))
5184 return _res;
5185 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005186 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5187 p->error_indicator = 1;
5188 return NULL;
5189 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005190 int _start_lineno = p->tokens[_mark]->lineno;
5191 UNUSED(_start_lineno); // Only used by EXTRA macro
5192 int _start_col_offset = p->tokens[_mark]->col_offset;
5193 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005194 { // disjunction 'if' disjunction 'else' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005195 Token * _keyword;
5196 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005197 expr_ty a;
5198 expr_ty b;
5199 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005200 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005201 (a = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005202 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005203 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005204 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005205 (b = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005206 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005207 (_keyword_1 = _PyPegen_expect_token(p, 516)) // token='else'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005208 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005209 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005210 )
5211 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005212 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5213 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005214 return NULL;
5215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005216 int _end_lineno = _token->end_lineno;
5217 UNUSED(_end_lineno); // Only used by EXTRA macro
5218 int _end_col_offset = _token->end_col_offset;
5219 UNUSED(_end_col_offset); // Only used by EXTRA macro
5220 _res = _Py_IfExp ( b , a , c , EXTRA );
5221 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005222 p->error_indicator = 1;
5223 return NULL;
5224 }
5225 goto done;
5226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005227 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005228 }
5229 { // disjunction
5230 expr_ty disjunction_var;
5231 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005232 (disjunction_var = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005233 )
5234 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005235 _res = disjunction_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005236 goto done;
5237 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005238 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005239 }
5240 { // lambdef
5241 expr_ty lambdef_var;
5242 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005243 (lambdef_var = lambdef_rule(p)) // lambdef
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005244 )
5245 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005246 _res = lambdef_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005247 goto done;
5248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005249 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005250 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005251 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005252 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005253 _PyPegen_insert_memo(p, _mark, expression_type, _res);
5254 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005255}
5256
5257// lambdef: 'lambda' lambda_parameters? ':' expression
5258static expr_ty
5259lambdef_rule(Parser *p)
5260{
5261 if (p->error_indicator) {
5262 return NULL;
5263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005264 expr_ty _res = NULL;
5265 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005266 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5267 p->error_indicator = 1;
5268 return NULL;
5269 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005270 int _start_lineno = p->tokens[_mark]->lineno;
5271 UNUSED(_start_lineno); // Only used by EXTRA macro
5272 int _start_col_offset = p->tokens[_mark]->col_offset;
5273 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005274 { // 'lambda' lambda_parameters? ':' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005275 Token * _keyword;
5276 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005277 void *a;
5278 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005279 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005280 (_keyword = _PyPegen_expect_token(p, 524)) // token='lambda'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005281 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005282 (a = lambda_parameters_rule(p), 1) // lambda_parameters?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005283 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005284 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005285 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005286 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005287 )
5288 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005289 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5290 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005291 return NULL;
5292 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005293 int _end_lineno = _token->end_lineno;
5294 UNUSED(_end_lineno); // Only used by EXTRA macro
5295 int _end_col_offset = _token->end_col_offset;
5296 UNUSED(_end_col_offset); // Only used by EXTRA macro
5297 _res = _Py_Lambda ( ( a ) ? a : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , EXTRA );
5298 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005299 p->error_indicator = 1;
5300 return NULL;
5301 }
5302 goto done;
5303 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005304 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005305 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005306 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005307 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005308 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005309}
5310
5311// lambda_parameters:
Guido van Rossum3941d972020-05-01 09:42:03 -07005312// | lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
5313// | lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
5314// | lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
5315// | lambda_param_with_default+ lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005316// | lambda_star_etc
5317static arguments_ty
5318lambda_parameters_rule(Parser *p)
5319{
5320 if (p->error_indicator) {
5321 return NULL;
5322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005323 arguments_ty _res = NULL;
5324 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005325 { // lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005326 asdl_seq* a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005327 asdl_seq * b;
5328 asdl_seq * c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005329 void *d;
5330 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005331 (a = lambda_slash_no_default_rule(p)) // lambda_slash_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005332 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005333 (b = _loop0_75_rule(p)) // lambda_param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005334 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005335 (c = _loop0_76_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005336 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005337 (d = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005338 )
5339 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005340 _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
5341 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005342 p->error_indicator = 1;
5343 return NULL;
5344 }
5345 goto done;
5346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005347 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005348 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005349 { // lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005350 SlashWithDefault* a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005351 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005352 void *c;
5353 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005354 (a = lambda_slash_with_default_rule(p)) // lambda_slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005355 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005356 (b = _loop0_77_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005357 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005358 (c = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005359 )
5360 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005361 _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
5362 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005363 p->error_indicator = 1;
5364 return NULL;
5365 }
5366 goto done;
5367 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005368 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005369 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005370 { // lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
5371 asdl_seq * a;
5372 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005373 void *c;
5374 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005375 (a = _loop1_78_rule(p)) // lambda_param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005376 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005377 (b = _loop0_79_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005378 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005379 (c = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005380 )
5381 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005382 _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
5383 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005384 p->error_indicator = 1;
5385 return NULL;
5386 }
5387 goto done;
5388 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005389 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005390 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005391 { // lambda_param_with_default+ lambda_star_etc?
5392 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005393 void *b;
5394 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005395 (a = _loop1_80_rule(p)) // lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005396 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005397 (b = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005398 )
5399 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005400 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
5401 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005402 p->error_indicator = 1;
5403 return NULL;
5404 }
5405 goto done;
5406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005407 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005408 }
5409 { // lambda_star_etc
5410 StarEtc* a;
5411 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005412 (a = lambda_star_etc_rule(p)) // lambda_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005413 )
5414 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005415 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
5416 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005417 p->error_indicator = 1;
5418 return NULL;
5419 }
5420 goto done;
5421 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005422 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005423 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005424 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005425 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005426 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005427}
5428
Guido van Rossum3941d972020-05-01 09:42:03 -07005429// lambda_slash_no_default:
5430// | lambda_param_no_default+ '/' ','
5431// | lambda_param_no_default+ '/' &':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005432static asdl_seq*
Guido van Rossum3941d972020-05-01 09:42:03 -07005433lambda_slash_no_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005434{
5435 if (p->error_indicator) {
5436 return NULL;
5437 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005438 asdl_seq* _res = NULL;
5439 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005440 { // lambda_param_no_default+ '/' ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005441 Token * _literal;
5442 Token * _literal_1;
Guido van Rossum3941d972020-05-01 09:42:03 -07005443 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005444 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005445 (a = _loop1_81_rule(p)) // lambda_param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005446 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005447 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005448 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005449 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005450 )
5451 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005452 _res = a;
5453 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005454 p->error_indicator = 1;
5455 return NULL;
5456 }
5457 goto done;
5458 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005459 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005460 }
5461 { // lambda_param_no_default+ '/' &':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005462 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005463 asdl_seq * a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005464 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005465 (a = _loop1_82_rule(p)) // lambda_param_no_default+
Guido van Rossum3941d972020-05-01 09:42:03 -07005466 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005467 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossum3941d972020-05-01 09:42:03 -07005468 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005469 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005470 )
5471 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005472 _res = a;
5473 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005474 p->error_indicator = 1;
5475 return NULL;
5476 }
5477 goto done;
5478 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005479 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005481 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005482 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005483 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005484}
5485
Guido van Rossum3941d972020-05-01 09:42:03 -07005486// lambda_slash_with_default:
5487// | lambda_param_no_default* lambda_param_with_default+ '/' ','
5488// | lambda_param_no_default* lambda_param_with_default+ '/' &':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005489static SlashWithDefault*
5490lambda_slash_with_default_rule(Parser *p)
5491{
5492 if (p->error_indicator) {
5493 return NULL;
5494 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005495 SlashWithDefault* _res = NULL;
5496 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005497 { // lambda_param_no_default* lambda_param_with_default+ '/' ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005498 Token * _literal;
5499 Token * _literal_1;
Guido van Rossum3941d972020-05-01 09:42:03 -07005500 asdl_seq * a;
5501 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005502 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005503 (a = _loop0_83_rule(p)) // lambda_param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005504 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005505 (b = _loop1_84_rule(p)) // lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005506 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005507 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005508 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005509 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005510 )
5511 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005512 _res = _PyPegen_slash_with_default ( p , a , b );
5513 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005514 p->error_indicator = 1;
5515 return NULL;
5516 }
5517 goto done;
5518 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005519 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005520 }
5521 { // lambda_param_no_default* lambda_param_with_default+ '/' &':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005522 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005523 asdl_seq * a;
5524 asdl_seq * b;
Guido van Rossum3941d972020-05-01 09:42:03 -07005525 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005526 (a = _loop0_85_rule(p)) // lambda_param_no_default*
Guido van Rossum3941d972020-05-01 09:42:03 -07005527 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005528 (b = _loop1_86_rule(p)) // lambda_param_with_default+
Guido van Rossum3941d972020-05-01 09:42:03 -07005529 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005530 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossum3941d972020-05-01 09:42:03 -07005531 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005532 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005533 )
5534 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005535 _res = _PyPegen_slash_with_default ( p , a , b );
5536 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005537 p->error_indicator = 1;
5538 return NULL;
5539 }
5540 goto done;
5541 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005542 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005543 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005544 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005545 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005546 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005547}
5548
5549// lambda_star_etc:
Guido van Rossum3941d972020-05-01 09:42:03 -07005550// | '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
5551// | '*' ',' lambda_param_maybe_default+ lambda_kwds?
5552// | lambda_kwds
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005553// | invalid_lambda_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005554static StarEtc*
5555lambda_star_etc_rule(Parser *p)
5556{
5557 if (p->error_indicator) {
5558 return NULL;
5559 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005560 StarEtc* _res = NULL;
5561 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005562 { // '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005563 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005564 arg_ty a;
5565 asdl_seq * b;
5566 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005567 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005568 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005569 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005570 (a = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005571 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005572 (b = _loop0_87_rule(p)) // lambda_param_maybe_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005573 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005574 (c = lambda_kwds_rule(p), 1) // lambda_kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005575 )
5576 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005577 _res = _PyPegen_star_etc ( p , a , b , c );
5578 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005579 p->error_indicator = 1;
5580 return NULL;
5581 }
5582 goto done;
5583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005584 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005585 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005586 { // '*' ',' lambda_param_maybe_default+ lambda_kwds?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005587 Token * _literal;
5588 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005589 asdl_seq * b;
5590 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005591 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005592 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005593 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005594 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005595 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005596 (b = _loop1_88_rule(p)) // lambda_param_maybe_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005597 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005598 (c = lambda_kwds_rule(p), 1) // lambda_kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005599 )
5600 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005601 _res = _PyPegen_star_etc ( p , NULL , b , c );
5602 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005603 p->error_indicator = 1;
5604 return NULL;
5605 }
5606 goto done;
5607 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005608 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005609 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005610 { // lambda_kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005611 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005612 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005613 (a = lambda_kwds_rule(p)) // lambda_kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005614 )
5615 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005616 _res = _PyPegen_star_etc ( p , NULL , NULL , a );
5617 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005618 p->error_indicator = 1;
5619 return NULL;
5620 }
5621 goto done;
5622 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005623 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005624 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005625 { // invalid_lambda_star_etc
5626 void *invalid_lambda_star_etc_var;
5627 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005628 (invalid_lambda_star_etc_var = invalid_lambda_star_etc_rule(p)) // invalid_lambda_star_etc
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005629 )
5630 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005631 _res = invalid_lambda_star_etc_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005632 goto done;
5633 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005634 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005636 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005637 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005638 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005639}
5640
Guido van Rossum3941d972020-05-01 09:42:03 -07005641// lambda_kwds: '**' lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005642static arg_ty
Guido van Rossum3941d972020-05-01 09:42:03 -07005643lambda_kwds_rule(Parser *p)
5644{
5645 if (p->error_indicator) {
5646 return NULL;
5647 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005648 arg_ty _res = NULL;
5649 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005650 { // '**' lambda_param_no_default
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005651 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005652 arg_ty a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005653 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005654 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossum3941d972020-05-01 09:42:03 -07005655 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005656 (a = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -07005657 )
5658 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005659 _res = a;
5660 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005661 p->error_indicator = 1;
5662 return NULL;
5663 }
5664 goto done;
5665 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005666 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005668 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07005669 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005670 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07005671}
5672
5673// lambda_param_no_default: lambda_param ',' | lambda_param &':'
5674static arg_ty
5675lambda_param_no_default_rule(Parser *p)
5676{
5677 if (p->error_indicator) {
5678 return NULL;
5679 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005680 arg_ty _res = NULL;
5681 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005682 { // lambda_param ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005683 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005684 arg_ty a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005685 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005686 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005687 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005688 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005689 )
5690 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005691 _res = a;
5692 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005693 p->error_indicator = 1;
5694 return NULL;
5695 }
5696 goto done;
5697 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005698 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005699 }
5700 { // lambda_param &':'
5701 arg_ty a;
5702 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005703 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005704 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005705 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07005706 )
5707 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005708 _res = a;
5709 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005710 p->error_indicator = 1;
5711 return NULL;
5712 }
5713 goto done;
5714 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005715 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005716 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005717 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07005718 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005719 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07005720}
5721
5722// lambda_param_with_default: lambda_param default ',' | lambda_param default &':'
5723static NameDefaultPair*
5724lambda_param_with_default_rule(Parser *p)
5725{
5726 if (p->error_indicator) {
5727 return NULL;
5728 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005729 NameDefaultPair* _res = NULL;
5730 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005731 { // lambda_param default ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005732 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005733 arg_ty a;
5734 expr_ty c;
Guido van Rossum3941d972020-05-01 09:42:03 -07005735 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005736 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005737 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005738 (c = default_rule(p)) // default
Guido van Rossum3941d972020-05-01 09:42:03 -07005739 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005740 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005741 )
5742 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005743 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
5744 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005745 p->error_indicator = 1;
5746 return NULL;
5747 }
5748 goto done;
5749 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005750 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005751 }
5752 { // lambda_param default &':'
5753 arg_ty a;
5754 expr_ty c;
5755 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005756 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005757 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005758 (c = default_rule(p)) // default
Guido van Rossum3941d972020-05-01 09:42:03 -07005759 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005760 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07005761 )
5762 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005763 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
5764 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005765 p->error_indicator = 1;
5766 return NULL;
5767 }
5768 goto done;
5769 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005770 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005771 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005772 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07005773 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005774 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07005775}
5776
5777// lambda_param_maybe_default: lambda_param default? ',' | lambda_param default? &':'
5778static NameDefaultPair*
5779lambda_param_maybe_default_rule(Parser *p)
5780{
5781 if (p->error_indicator) {
5782 return NULL;
5783 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005784 NameDefaultPair* _res = NULL;
5785 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005786 { // lambda_param default? ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005787 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005788 arg_ty a;
5789 void *c;
Guido van Rossum3941d972020-05-01 09:42:03 -07005790 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005791 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005792 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005793 (c = default_rule(p), 1) // default?
Guido van Rossum3941d972020-05-01 09:42:03 -07005794 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005795 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005796 )
5797 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005798 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
5799 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005800 p->error_indicator = 1;
5801 return NULL;
5802 }
5803 goto done;
5804 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005805 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005806 }
5807 { // lambda_param default? &':'
5808 arg_ty a;
5809 void *c;
5810 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005811 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005812 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005813 (c = default_rule(p), 1) // default?
Guido van Rossum3941d972020-05-01 09:42:03 -07005814 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005815 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07005816 )
5817 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005818 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
5819 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005820 p->error_indicator = 1;
5821 return NULL;
5822 }
5823 goto done;
5824 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005825 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005826 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005827 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07005828 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005829 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07005830}
5831
5832// lambda_param: NAME
5833static arg_ty
5834lambda_param_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005835{
5836 if (p->error_indicator) {
5837 return NULL;
5838 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005839 arg_ty _res = NULL;
5840 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005841 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5842 p->error_indicator = 1;
5843 return NULL;
5844 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005845 int _start_lineno = p->tokens[_mark]->lineno;
5846 UNUSED(_start_lineno); // Only used by EXTRA macro
5847 int _start_col_offset = p->tokens[_mark]->col_offset;
5848 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005849 { // NAME
5850 expr_ty a;
5851 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005852 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005853 )
5854 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005855 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5856 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005857 return NULL;
5858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005859 int _end_lineno = _token->end_lineno;
5860 UNUSED(_end_lineno); // Only used by EXTRA macro
5861 int _end_col_offset = _token->end_col_offset;
5862 UNUSED(_end_col_offset); // Only used by EXTRA macro
5863 _res = _Py_arg ( a -> v . Name . id , NULL , NULL , EXTRA );
5864 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005865 p->error_indicator = 1;
5866 return NULL;
5867 }
5868 goto done;
5869 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005870 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005871 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005872 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005873 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005874 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005875}
5876
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005877// disjunction: conjunction (('or' conjunction))+ | conjunction
5878static expr_ty
5879disjunction_rule(Parser *p)
5880{
5881 if (p->error_indicator) {
5882 return NULL;
5883 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005884 expr_ty _res = NULL;
5885 if (_PyPegen_is_memoized(p, disjunction_type, &_res))
5886 return _res;
5887 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005888 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5889 p->error_indicator = 1;
5890 return NULL;
5891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005892 int _start_lineno = p->tokens[_mark]->lineno;
5893 UNUSED(_start_lineno); // Only used by EXTRA macro
5894 int _start_col_offset = p->tokens[_mark]->col_offset;
5895 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005896 { // conjunction (('or' conjunction))+
5897 expr_ty a;
5898 asdl_seq * b;
5899 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005900 (a = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005901 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005902 (b = _loop1_89_rule(p)) // (('or' conjunction))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005903 )
5904 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005905 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5906 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005907 return NULL;
5908 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005909 int _end_lineno = _token->end_lineno;
5910 UNUSED(_end_lineno); // Only used by EXTRA macro
5911 int _end_col_offset = _token->end_col_offset;
5912 UNUSED(_end_col_offset); // Only used by EXTRA macro
5913 _res = _Py_BoolOp ( Or , CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
5914 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005915 p->error_indicator = 1;
5916 return NULL;
5917 }
5918 goto done;
5919 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005920 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005921 }
5922 { // conjunction
5923 expr_ty conjunction_var;
5924 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005925 (conjunction_var = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005926 )
5927 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005928 _res = conjunction_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005929 goto done;
5930 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005931 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005933 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005934 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005935 _PyPegen_insert_memo(p, _mark, disjunction_type, _res);
5936 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005937}
5938
5939// conjunction: inversion (('and' inversion))+ | inversion
5940static expr_ty
5941conjunction_rule(Parser *p)
5942{
5943 if (p->error_indicator) {
5944 return NULL;
5945 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005946 expr_ty _res = NULL;
5947 if (_PyPegen_is_memoized(p, conjunction_type, &_res))
5948 return _res;
5949 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005950 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5951 p->error_indicator = 1;
5952 return NULL;
5953 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005954 int _start_lineno = p->tokens[_mark]->lineno;
5955 UNUSED(_start_lineno); // Only used by EXTRA macro
5956 int _start_col_offset = p->tokens[_mark]->col_offset;
5957 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005958 { // inversion (('and' inversion))+
5959 expr_ty a;
5960 asdl_seq * b;
5961 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005962 (a = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005963 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005964 (b = _loop1_90_rule(p)) // (('and' inversion))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005965 )
5966 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005967 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5968 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005969 return NULL;
5970 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005971 int _end_lineno = _token->end_lineno;
5972 UNUSED(_end_lineno); // Only used by EXTRA macro
5973 int _end_col_offset = _token->end_col_offset;
5974 UNUSED(_end_col_offset); // Only used by EXTRA macro
5975 _res = _Py_BoolOp ( And , CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
5976 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005977 p->error_indicator = 1;
5978 return NULL;
5979 }
5980 goto done;
5981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005982 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005983 }
5984 { // inversion
5985 expr_ty inversion_var;
5986 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005987 (inversion_var = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005988 )
5989 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005990 _res = inversion_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005991 goto done;
5992 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005993 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005994 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005995 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005996 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005997 _PyPegen_insert_memo(p, _mark, conjunction_type, _res);
5998 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005999}
6000
6001// inversion: 'not' inversion | comparison
6002static expr_ty
6003inversion_rule(Parser *p)
6004{
6005 if (p->error_indicator) {
6006 return NULL;
6007 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006008 expr_ty _res = NULL;
6009 if (_PyPegen_is_memoized(p, inversion_type, &_res))
6010 return _res;
6011 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006012 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6013 p->error_indicator = 1;
6014 return NULL;
6015 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006016 int _start_lineno = p->tokens[_mark]->lineno;
6017 UNUSED(_start_lineno); // Only used by EXTRA macro
6018 int _start_col_offset = p->tokens[_mark]->col_offset;
6019 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006020 { // 'not' inversion
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006021 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006022 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006023 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006024 (_keyword = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006025 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006026 (a = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006027 )
6028 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006029 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6030 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006031 return NULL;
6032 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006033 int _end_lineno = _token->end_lineno;
6034 UNUSED(_end_lineno); // Only used by EXTRA macro
6035 int _end_col_offset = _token->end_col_offset;
6036 UNUSED(_end_col_offset); // Only used by EXTRA macro
6037 _res = _Py_UnaryOp ( Not , a , EXTRA );
6038 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006039 p->error_indicator = 1;
6040 return NULL;
6041 }
6042 goto done;
6043 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006044 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006045 }
6046 { // comparison
6047 expr_ty comparison_var;
6048 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006049 (comparison_var = comparison_rule(p)) // comparison
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006050 )
6051 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006052 _res = comparison_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006053 goto done;
6054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006055 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006057 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006058 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006059 _PyPegen_insert_memo(p, _mark, inversion_type, _res);
6060 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006061}
6062
6063// comparison: bitwise_or compare_op_bitwise_or_pair+ | bitwise_or
6064static expr_ty
6065comparison_rule(Parser *p)
6066{
6067 if (p->error_indicator) {
6068 return NULL;
6069 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006070 expr_ty _res = NULL;
6071 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006072 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6073 p->error_indicator = 1;
6074 return NULL;
6075 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006076 int _start_lineno = p->tokens[_mark]->lineno;
6077 UNUSED(_start_lineno); // Only used by EXTRA macro
6078 int _start_col_offset = p->tokens[_mark]->col_offset;
6079 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006080 { // bitwise_or compare_op_bitwise_or_pair+
6081 expr_ty a;
6082 asdl_seq * b;
6083 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006084 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006085 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006086 (b = _loop1_91_rule(p)) // compare_op_bitwise_or_pair+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006087 )
6088 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006089 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6090 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006091 return NULL;
6092 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006093 int _end_lineno = _token->end_lineno;
6094 UNUSED(_end_lineno); // Only used by EXTRA macro
6095 int _end_col_offset = _token->end_col_offset;
6096 UNUSED(_end_col_offset); // Only used by EXTRA macro
6097 _res = _Py_Compare ( a , CHECK ( _PyPegen_get_cmpops ( p , b ) ) , CHECK ( _PyPegen_get_exprs ( p , b ) ) , EXTRA );
6098 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006099 p->error_indicator = 1;
6100 return NULL;
6101 }
6102 goto done;
6103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006104 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006105 }
6106 { // bitwise_or
6107 expr_ty bitwise_or_var;
6108 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006109 (bitwise_or_var = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006110 )
6111 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006112 _res = bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006113 goto done;
6114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006115 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006116 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006117 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006118 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006119 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006120}
6121
6122// compare_op_bitwise_or_pair:
6123// | eq_bitwise_or
6124// | noteq_bitwise_or
6125// | lte_bitwise_or
6126// | lt_bitwise_or
6127// | gte_bitwise_or
6128// | gt_bitwise_or
6129// | notin_bitwise_or
6130// | in_bitwise_or
6131// | isnot_bitwise_or
6132// | is_bitwise_or
6133static CmpopExprPair*
6134compare_op_bitwise_or_pair_rule(Parser *p)
6135{
6136 if (p->error_indicator) {
6137 return NULL;
6138 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006139 CmpopExprPair* _res = NULL;
6140 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006141 { // eq_bitwise_or
6142 CmpopExprPair* eq_bitwise_or_var;
6143 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006144 (eq_bitwise_or_var = eq_bitwise_or_rule(p)) // eq_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006145 )
6146 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006147 _res = eq_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006148 goto done;
6149 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006150 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006151 }
6152 { // noteq_bitwise_or
6153 CmpopExprPair* noteq_bitwise_or_var;
6154 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006155 (noteq_bitwise_or_var = noteq_bitwise_or_rule(p)) // noteq_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006156 )
6157 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006158 _res = noteq_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006159 goto done;
6160 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006161 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006162 }
6163 { // lte_bitwise_or
6164 CmpopExprPair* lte_bitwise_or_var;
6165 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006166 (lte_bitwise_or_var = lte_bitwise_or_rule(p)) // lte_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006167 )
6168 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006169 _res = lte_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006170 goto done;
6171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006172 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006173 }
6174 { // lt_bitwise_or
6175 CmpopExprPair* lt_bitwise_or_var;
6176 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006177 (lt_bitwise_or_var = lt_bitwise_or_rule(p)) // lt_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006178 )
6179 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006180 _res = lt_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006181 goto done;
6182 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006183 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006184 }
6185 { // gte_bitwise_or
6186 CmpopExprPair* gte_bitwise_or_var;
6187 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006188 (gte_bitwise_or_var = gte_bitwise_or_rule(p)) // gte_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006189 )
6190 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006191 _res = gte_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006192 goto done;
6193 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006194 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006195 }
6196 { // gt_bitwise_or
6197 CmpopExprPair* gt_bitwise_or_var;
6198 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006199 (gt_bitwise_or_var = gt_bitwise_or_rule(p)) // gt_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006200 )
6201 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006202 _res = gt_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006203 goto done;
6204 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006205 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006206 }
6207 { // notin_bitwise_or
6208 CmpopExprPair* notin_bitwise_or_var;
6209 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006210 (notin_bitwise_or_var = notin_bitwise_or_rule(p)) // notin_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006211 )
6212 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006213 _res = notin_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006214 goto done;
6215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006216 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006217 }
6218 { // in_bitwise_or
6219 CmpopExprPair* in_bitwise_or_var;
6220 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006221 (in_bitwise_or_var = in_bitwise_or_rule(p)) // in_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006222 )
6223 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006224 _res = in_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006225 goto done;
6226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006227 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006228 }
6229 { // isnot_bitwise_or
6230 CmpopExprPair* isnot_bitwise_or_var;
6231 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006232 (isnot_bitwise_or_var = isnot_bitwise_or_rule(p)) // isnot_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006233 )
6234 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006235 _res = isnot_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006236 goto done;
6237 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006238 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006239 }
6240 { // is_bitwise_or
6241 CmpopExprPair* is_bitwise_or_var;
6242 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006243 (is_bitwise_or_var = is_bitwise_or_rule(p)) // is_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006244 )
6245 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006246 _res = is_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006247 goto done;
6248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006249 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006250 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006251 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006252 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006253 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006254}
6255
6256// eq_bitwise_or: '==' bitwise_or
6257static CmpopExprPair*
6258eq_bitwise_or_rule(Parser *p)
6259{
6260 if (p->error_indicator) {
6261 return NULL;
6262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006263 CmpopExprPair* _res = NULL;
6264 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006265 { // '==' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006266 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006267 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006268 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006269 (_literal = _PyPegen_expect_token(p, 27)) // token='=='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006270 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006271 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006272 )
6273 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006274 _res = _PyPegen_cmpop_expr_pair ( p , Eq , a );
6275 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006276 p->error_indicator = 1;
6277 return NULL;
6278 }
6279 goto done;
6280 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006281 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006282 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006283 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006284 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006285 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006286}
6287
Pablo Galindo2b74c832020-04-27 18:02:07 +01006288// noteq_bitwise_or: ('!=') bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006289static CmpopExprPair*
6290noteq_bitwise_or_rule(Parser *p)
6291{
6292 if (p->error_indicator) {
6293 return NULL;
6294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006295 CmpopExprPair* _res = NULL;
6296 int _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +01006297 { // ('!=') bitwise_or
Guido van Rossum3941d972020-05-01 09:42:03 -07006298 void *_tmp_92_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006299 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006300 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006301 (_tmp_92_var = _tmp_92_rule(p)) // '!='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006302 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006303 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006304 )
6305 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006306 _res = _PyPegen_cmpop_expr_pair ( p , NotEq , a );
6307 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006308 p->error_indicator = 1;
6309 return NULL;
6310 }
6311 goto done;
6312 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006313 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006314 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006315 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006316 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006317 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006318}
6319
6320// lte_bitwise_or: '<=' bitwise_or
6321static CmpopExprPair*
6322lte_bitwise_or_rule(Parser *p)
6323{
6324 if (p->error_indicator) {
6325 return NULL;
6326 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006327 CmpopExprPair* _res = NULL;
6328 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006329 { // '<=' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006330 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006331 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006332 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006333 (_literal = _PyPegen_expect_token(p, 29)) // token='<='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006334 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006335 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006336 )
6337 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006338 _res = _PyPegen_cmpop_expr_pair ( p , LtE , a );
6339 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006340 p->error_indicator = 1;
6341 return NULL;
6342 }
6343 goto done;
6344 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006345 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006347 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006348 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006349 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006350}
6351
6352// lt_bitwise_or: '<' bitwise_or
6353static CmpopExprPair*
6354lt_bitwise_or_rule(Parser *p)
6355{
6356 if (p->error_indicator) {
6357 return NULL;
6358 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006359 CmpopExprPair* _res = NULL;
6360 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006361 { // '<' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006362 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006363 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006364 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006365 (_literal = _PyPegen_expect_token(p, 20)) // token='<'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006366 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006367 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006368 )
6369 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006370 _res = _PyPegen_cmpop_expr_pair ( p , Lt , a );
6371 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006372 p->error_indicator = 1;
6373 return NULL;
6374 }
6375 goto done;
6376 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006377 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006378 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006379 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006380 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006381 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006382}
6383
6384// gte_bitwise_or: '>=' bitwise_or
6385static CmpopExprPair*
6386gte_bitwise_or_rule(Parser *p)
6387{
6388 if (p->error_indicator) {
6389 return NULL;
6390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006391 CmpopExprPair* _res = NULL;
6392 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006393 { // '>=' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006394 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006395 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006396 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006397 (_literal = _PyPegen_expect_token(p, 30)) // token='>='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006398 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006399 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006400 )
6401 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006402 _res = _PyPegen_cmpop_expr_pair ( p , GtE , a );
6403 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006404 p->error_indicator = 1;
6405 return NULL;
6406 }
6407 goto done;
6408 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006409 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006410 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006411 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006412 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006413 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006414}
6415
6416// gt_bitwise_or: '>' bitwise_or
6417static CmpopExprPair*
6418gt_bitwise_or_rule(Parser *p)
6419{
6420 if (p->error_indicator) {
6421 return NULL;
6422 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006423 CmpopExprPair* _res = NULL;
6424 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006425 { // '>' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006426 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006427 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006428 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006429 (_literal = _PyPegen_expect_token(p, 21)) // token='>'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006430 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006431 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006432 )
6433 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006434 _res = _PyPegen_cmpop_expr_pair ( p , Gt , a );
6435 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006436 p->error_indicator = 1;
6437 return NULL;
6438 }
6439 goto done;
6440 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006441 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006442 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006443 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006444 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006445 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006446}
6447
6448// notin_bitwise_or: 'not' 'in' bitwise_or
6449static CmpopExprPair*
6450notin_bitwise_or_rule(Parser *p)
6451{
6452 if (p->error_indicator) {
6453 return NULL;
6454 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006455 CmpopExprPair* _res = NULL;
6456 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006457 { // 'not' 'in' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006458 Token * _keyword;
6459 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006460 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006461 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006462 (_keyword = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006463 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006464 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006465 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006466 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006467 )
6468 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006469 _res = _PyPegen_cmpop_expr_pair ( p , NotIn , a );
6470 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006471 p->error_indicator = 1;
6472 return NULL;
6473 }
6474 goto done;
6475 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006476 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006477 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006478 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006479 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006480 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006481}
6482
6483// in_bitwise_or: 'in' bitwise_or
6484static CmpopExprPair*
6485in_bitwise_or_rule(Parser *p)
6486{
6487 if (p->error_indicator) {
6488 return NULL;
6489 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006490 CmpopExprPair* _res = NULL;
6491 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006492 { // 'in' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006493 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006494 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006495 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006496 (_keyword = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006497 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006498 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006499 )
6500 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006501 _res = _PyPegen_cmpop_expr_pair ( p , In , a );
6502 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006503 p->error_indicator = 1;
6504 return NULL;
6505 }
6506 goto done;
6507 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006508 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006510 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006511 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006512 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006513}
6514
6515// isnot_bitwise_or: 'is' 'not' bitwise_or
6516static CmpopExprPair*
6517isnot_bitwise_or_rule(Parser *p)
6518{
6519 if (p->error_indicator) {
6520 return NULL;
6521 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006522 CmpopExprPair* _res = NULL;
6523 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006524 { // 'is' 'not' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006525 Token * _keyword;
6526 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006527 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006528 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006529 (_keyword = _PyPegen_expect_token(p, 526)) // token='is'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006530 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006531 (_keyword_1 = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006532 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006533 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006534 )
6535 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006536 _res = _PyPegen_cmpop_expr_pair ( p , IsNot , a );
6537 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006538 p->error_indicator = 1;
6539 return NULL;
6540 }
6541 goto done;
6542 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006543 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006544 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006545 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006546 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006547 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006548}
6549
6550// is_bitwise_or: 'is' bitwise_or
6551static CmpopExprPair*
6552is_bitwise_or_rule(Parser *p)
6553{
6554 if (p->error_indicator) {
6555 return NULL;
6556 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006557 CmpopExprPair* _res = NULL;
6558 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006559 { // 'is' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006560 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006561 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006562 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006563 (_keyword = _PyPegen_expect_token(p, 526)) // token='is'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006564 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006565 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006566 )
6567 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006568 _res = _PyPegen_cmpop_expr_pair ( p , Is , a );
6569 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006570 p->error_indicator = 1;
6571 return NULL;
6572 }
6573 goto done;
6574 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006575 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006576 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006577 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006578 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006579 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006580}
6581
6582// Left-recursive
6583// bitwise_or: bitwise_or '|' bitwise_xor | bitwise_xor
6584static expr_ty bitwise_or_raw(Parser *);
6585static expr_ty
6586bitwise_or_rule(Parser *p)
6587{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006588 expr_ty _res = NULL;
6589 if (_PyPegen_is_memoized(p, bitwise_or_type, &_res))
6590 return _res;
6591 int _mark = p->mark;
6592 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006593 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006594 int tmpvar_1 = _PyPegen_update_memo(p, _mark, bitwise_or_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006595 if (tmpvar_1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006596 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006597 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006598 p->mark = _mark;
6599 void *_raw = bitwise_or_raw(p);
6600 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006601 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006602 _resmark = p->mark;
6603 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006604 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006605 p->mark = _resmark;
6606 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006607}
6608static expr_ty
6609bitwise_or_raw(Parser *p)
6610{
6611 if (p->error_indicator) {
6612 return NULL;
6613 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006614 expr_ty _res = NULL;
6615 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006616 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6617 p->error_indicator = 1;
6618 return NULL;
6619 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006620 int _start_lineno = p->tokens[_mark]->lineno;
6621 UNUSED(_start_lineno); // Only used by EXTRA macro
6622 int _start_col_offset = p->tokens[_mark]->col_offset;
6623 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006624 { // bitwise_or '|' bitwise_xor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006625 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006626 expr_ty a;
6627 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006628 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006629 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006630 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006631 (_literal = _PyPegen_expect_token(p, 18)) // token='|'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006632 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006633 (b = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006634 )
6635 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006636 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6637 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006638 return NULL;
6639 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006640 int _end_lineno = _token->end_lineno;
6641 UNUSED(_end_lineno); // Only used by EXTRA macro
6642 int _end_col_offset = _token->end_col_offset;
6643 UNUSED(_end_col_offset); // Only used by EXTRA macro
6644 _res = _Py_BinOp ( a , BitOr , b , EXTRA );
6645 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006646 p->error_indicator = 1;
6647 return NULL;
6648 }
6649 goto done;
6650 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006651 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006652 }
6653 { // bitwise_xor
6654 expr_ty bitwise_xor_var;
6655 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006656 (bitwise_xor_var = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006657 )
6658 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006659 _res = bitwise_xor_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006660 goto done;
6661 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006662 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006664 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006665 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006666 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006667}
6668
6669// Left-recursive
6670// bitwise_xor: bitwise_xor '^' bitwise_and | bitwise_and
6671static expr_ty bitwise_xor_raw(Parser *);
6672static expr_ty
6673bitwise_xor_rule(Parser *p)
6674{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006675 expr_ty _res = NULL;
6676 if (_PyPegen_is_memoized(p, bitwise_xor_type, &_res))
6677 return _res;
6678 int _mark = p->mark;
6679 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006680 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006681 int tmpvar_2 = _PyPegen_update_memo(p, _mark, bitwise_xor_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006682 if (tmpvar_2) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006683 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006684 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006685 p->mark = _mark;
6686 void *_raw = bitwise_xor_raw(p);
6687 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006688 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006689 _resmark = p->mark;
6690 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006692 p->mark = _resmark;
6693 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006694}
6695static expr_ty
6696bitwise_xor_raw(Parser *p)
6697{
6698 if (p->error_indicator) {
6699 return NULL;
6700 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006701 expr_ty _res = NULL;
6702 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006703 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6704 p->error_indicator = 1;
6705 return NULL;
6706 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006707 int _start_lineno = p->tokens[_mark]->lineno;
6708 UNUSED(_start_lineno); // Only used by EXTRA macro
6709 int _start_col_offset = p->tokens[_mark]->col_offset;
6710 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006711 { // bitwise_xor '^' bitwise_and
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006712 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006713 expr_ty a;
6714 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006715 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006716 (a = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006717 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006718 (_literal = _PyPegen_expect_token(p, 32)) // token='^'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006719 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006720 (b = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006721 )
6722 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006723 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6724 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006725 return NULL;
6726 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006727 int _end_lineno = _token->end_lineno;
6728 UNUSED(_end_lineno); // Only used by EXTRA macro
6729 int _end_col_offset = _token->end_col_offset;
6730 UNUSED(_end_col_offset); // Only used by EXTRA macro
6731 _res = _Py_BinOp ( a , BitXor , b , EXTRA );
6732 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006733 p->error_indicator = 1;
6734 return NULL;
6735 }
6736 goto done;
6737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006738 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006739 }
6740 { // bitwise_and
6741 expr_ty bitwise_and_var;
6742 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006743 (bitwise_and_var = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006744 )
6745 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006746 _res = bitwise_and_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006747 goto done;
6748 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006749 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006750 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006751 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006752 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006753 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006754}
6755
6756// Left-recursive
6757// bitwise_and: bitwise_and '&' shift_expr | shift_expr
6758static expr_ty bitwise_and_raw(Parser *);
6759static expr_ty
6760bitwise_and_rule(Parser *p)
6761{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006762 expr_ty _res = NULL;
6763 if (_PyPegen_is_memoized(p, bitwise_and_type, &_res))
6764 return _res;
6765 int _mark = p->mark;
6766 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006767 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006768 int tmpvar_3 = _PyPegen_update_memo(p, _mark, bitwise_and_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006769 if (tmpvar_3) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006770 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006771 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006772 p->mark = _mark;
6773 void *_raw = bitwise_and_raw(p);
6774 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006775 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006776 _resmark = p->mark;
6777 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006779 p->mark = _resmark;
6780 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006781}
6782static expr_ty
6783bitwise_and_raw(Parser *p)
6784{
6785 if (p->error_indicator) {
6786 return NULL;
6787 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006788 expr_ty _res = NULL;
6789 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006790 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6791 p->error_indicator = 1;
6792 return NULL;
6793 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006794 int _start_lineno = p->tokens[_mark]->lineno;
6795 UNUSED(_start_lineno); // Only used by EXTRA macro
6796 int _start_col_offset = p->tokens[_mark]->col_offset;
6797 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006798 { // bitwise_and '&' shift_expr
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006799 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006800 expr_ty a;
6801 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006802 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006803 (a = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006804 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006805 (_literal = _PyPegen_expect_token(p, 19)) // token='&'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006806 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006807 (b = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006808 )
6809 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006810 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6811 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006812 return NULL;
6813 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006814 int _end_lineno = _token->end_lineno;
6815 UNUSED(_end_lineno); // Only used by EXTRA macro
6816 int _end_col_offset = _token->end_col_offset;
6817 UNUSED(_end_col_offset); // Only used by EXTRA macro
6818 _res = _Py_BinOp ( a , BitAnd , b , EXTRA );
6819 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006820 p->error_indicator = 1;
6821 return NULL;
6822 }
6823 goto done;
6824 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006825 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006826 }
6827 { // shift_expr
6828 expr_ty shift_expr_var;
6829 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006830 (shift_expr_var = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006831 )
6832 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006833 _res = shift_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006834 goto done;
6835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006836 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006837 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006838 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006839 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006840 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006841}
6842
6843// Left-recursive
6844// shift_expr: shift_expr '<<' sum | shift_expr '>>' sum | sum
6845static expr_ty shift_expr_raw(Parser *);
6846static expr_ty
6847shift_expr_rule(Parser *p)
6848{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006849 expr_ty _res = NULL;
6850 if (_PyPegen_is_memoized(p, shift_expr_type, &_res))
6851 return _res;
6852 int _mark = p->mark;
6853 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006854 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006855 int tmpvar_4 = _PyPegen_update_memo(p, _mark, shift_expr_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006856 if (tmpvar_4) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006857 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006859 p->mark = _mark;
6860 void *_raw = shift_expr_raw(p);
6861 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006862 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006863 _resmark = p->mark;
6864 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006865 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006866 p->mark = _resmark;
6867 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006868}
6869static expr_ty
6870shift_expr_raw(Parser *p)
6871{
6872 if (p->error_indicator) {
6873 return NULL;
6874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006875 expr_ty _res = NULL;
6876 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006877 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6878 p->error_indicator = 1;
6879 return NULL;
6880 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006881 int _start_lineno = p->tokens[_mark]->lineno;
6882 UNUSED(_start_lineno); // Only used by EXTRA macro
6883 int _start_col_offset = p->tokens[_mark]->col_offset;
6884 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006885 { // shift_expr '<<' sum
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006886 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006887 expr_ty a;
6888 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006889 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006890 (a = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006891 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006892 (_literal = _PyPegen_expect_token(p, 33)) // token='<<'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006893 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006894 (b = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006895 )
6896 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006897 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6898 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006899 return NULL;
6900 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006901 int _end_lineno = _token->end_lineno;
6902 UNUSED(_end_lineno); // Only used by EXTRA macro
6903 int _end_col_offset = _token->end_col_offset;
6904 UNUSED(_end_col_offset); // Only used by EXTRA macro
6905 _res = _Py_BinOp ( a , LShift , b , EXTRA );
6906 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006907 p->error_indicator = 1;
6908 return NULL;
6909 }
6910 goto done;
6911 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006912 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006913 }
6914 { // shift_expr '>>' sum
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006915 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006916 expr_ty a;
6917 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006918 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006919 (a = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006920 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006921 (_literal = _PyPegen_expect_token(p, 34)) // token='>>'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006922 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006923 (b = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006924 )
6925 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006926 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6927 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006928 return NULL;
6929 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006930 int _end_lineno = _token->end_lineno;
6931 UNUSED(_end_lineno); // Only used by EXTRA macro
6932 int _end_col_offset = _token->end_col_offset;
6933 UNUSED(_end_col_offset); // Only used by EXTRA macro
6934 _res = _Py_BinOp ( a , RShift , b , EXTRA );
6935 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006936 p->error_indicator = 1;
6937 return NULL;
6938 }
6939 goto done;
6940 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006941 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006942 }
6943 { // sum
6944 expr_ty sum_var;
6945 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006946 (sum_var = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006947 )
6948 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006949 _res = sum_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006950 goto done;
6951 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006952 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006953 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006954 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006955 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006956 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006957}
6958
6959// Left-recursive
6960// sum: sum '+' term | sum '-' term | term
6961static expr_ty sum_raw(Parser *);
6962static expr_ty
6963sum_rule(Parser *p)
6964{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006965 expr_ty _res = NULL;
6966 if (_PyPegen_is_memoized(p, sum_type, &_res))
6967 return _res;
6968 int _mark = p->mark;
6969 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006970 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006971 int tmpvar_5 = _PyPegen_update_memo(p, _mark, sum_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006972 if (tmpvar_5) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006973 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006975 p->mark = _mark;
6976 void *_raw = sum_raw(p);
6977 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006978 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006979 _resmark = p->mark;
6980 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006982 p->mark = _resmark;
6983 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006984}
6985static expr_ty
6986sum_raw(Parser *p)
6987{
6988 if (p->error_indicator) {
6989 return NULL;
6990 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006991 expr_ty _res = NULL;
6992 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006993 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6994 p->error_indicator = 1;
6995 return NULL;
6996 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006997 int _start_lineno = p->tokens[_mark]->lineno;
6998 UNUSED(_start_lineno); // Only used by EXTRA macro
6999 int _start_col_offset = p->tokens[_mark]->col_offset;
7000 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007001 { // sum '+' term
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007002 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007003 expr_ty a;
7004 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007005 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007006 (a = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007007 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007008 (_literal = _PyPegen_expect_token(p, 14)) // token='+'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007009 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007010 (b = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007011 )
7012 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007013 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7014 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007015 return NULL;
7016 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007017 int _end_lineno = _token->end_lineno;
7018 UNUSED(_end_lineno); // Only used by EXTRA macro
7019 int _end_col_offset = _token->end_col_offset;
7020 UNUSED(_end_col_offset); // Only used by EXTRA macro
7021 _res = _Py_BinOp ( a , Add , b , EXTRA );
7022 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007023 p->error_indicator = 1;
7024 return NULL;
7025 }
7026 goto done;
7027 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007028 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007029 }
7030 { // sum '-' term
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007031 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007032 expr_ty a;
7033 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007034 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007035 (a = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007036 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007037 (_literal = _PyPegen_expect_token(p, 15)) // token='-'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007038 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007039 (b = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007040 )
7041 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007042 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7043 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007044 return NULL;
7045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007046 int _end_lineno = _token->end_lineno;
7047 UNUSED(_end_lineno); // Only used by EXTRA macro
7048 int _end_col_offset = _token->end_col_offset;
7049 UNUSED(_end_col_offset); // Only used by EXTRA macro
7050 _res = _Py_BinOp ( a , Sub , b , EXTRA );
7051 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007052 p->error_indicator = 1;
7053 return NULL;
7054 }
7055 goto done;
7056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007057 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007058 }
7059 { // term
7060 expr_ty term_var;
7061 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007062 (term_var = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007063 )
7064 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007065 _res = term_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007066 goto done;
7067 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007068 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007069 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007070 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007071 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007072 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007073}
7074
7075// Left-recursive
7076// term:
7077// | term '*' factor
7078// | term '/' factor
7079// | term '//' factor
7080// | term '%' factor
7081// | term '@' factor
7082// | factor
7083static expr_ty term_raw(Parser *);
7084static expr_ty
7085term_rule(Parser *p)
7086{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007087 expr_ty _res = NULL;
7088 if (_PyPegen_is_memoized(p, term_type, &_res))
7089 return _res;
7090 int _mark = p->mark;
7091 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007092 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007093 int tmpvar_6 = _PyPegen_update_memo(p, _mark, term_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007094 if (tmpvar_6) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007095 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007097 p->mark = _mark;
7098 void *_raw = term_raw(p);
7099 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007100 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007101 _resmark = p->mark;
7102 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007104 p->mark = _resmark;
7105 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007106}
7107static expr_ty
7108term_raw(Parser *p)
7109{
7110 if (p->error_indicator) {
7111 return NULL;
7112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007113 expr_ty _res = NULL;
7114 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007115 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7116 p->error_indicator = 1;
7117 return NULL;
7118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007119 int _start_lineno = p->tokens[_mark]->lineno;
7120 UNUSED(_start_lineno); // Only used by EXTRA macro
7121 int _start_col_offset = p->tokens[_mark]->col_offset;
7122 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007123 { // term '*' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007124 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007125 expr_ty a;
7126 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007127 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007128 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007129 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007130 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007131 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007132 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007133 )
7134 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007135 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7136 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007137 return NULL;
7138 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007139 int _end_lineno = _token->end_lineno;
7140 UNUSED(_end_lineno); // Only used by EXTRA macro
7141 int _end_col_offset = _token->end_col_offset;
7142 UNUSED(_end_col_offset); // Only used by EXTRA macro
7143 _res = _Py_BinOp ( a , Mult , b , EXTRA );
7144 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007145 p->error_indicator = 1;
7146 return NULL;
7147 }
7148 goto done;
7149 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007150 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007151 }
7152 { // term '/' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007153 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007154 expr_ty a;
7155 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007156 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007157 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007158 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007159 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007160 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007161 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007162 )
7163 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007164 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7165 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007166 return NULL;
7167 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007168 int _end_lineno = _token->end_lineno;
7169 UNUSED(_end_lineno); // Only used by EXTRA macro
7170 int _end_col_offset = _token->end_col_offset;
7171 UNUSED(_end_col_offset); // Only used by EXTRA macro
7172 _res = _Py_BinOp ( a , Div , b , EXTRA );
7173 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007174 p->error_indicator = 1;
7175 return NULL;
7176 }
7177 goto done;
7178 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007179 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007180 }
7181 { // term '//' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007182 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007183 expr_ty a;
7184 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007185 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007186 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007187 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007188 (_literal = _PyPegen_expect_token(p, 47)) // token='//'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007189 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007190 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007191 )
7192 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007193 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7194 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007195 return NULL;
7196 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007197 int _end_lineno = _token->end_lineno;
7198 UNUSED(_end_lineno); // Only used by EXTRA macro
7199 int _end_col_offset = _token->end_col_offset;
7200 UNUSED(_end_col_offset); // Only used by EXTRA macro
7201 _res = _Py_BinOp ( a , FloorDiv , b , EXTRA );
7202 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007203 p->error_indicator = 1;
7204 return NULL;
7205 }
7206 goto done;
7207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007208 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007209 }
7210 { // term '%' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007211 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007212 expr_ty a;
7213 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007214 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007215 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007216 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007217 (_literal = _PyPegen_expect_token(p, 24)) // token='%'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007218 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007219 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007220 )
7221 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007222 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7223 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007224 return NULL;
7225 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007226 int _end_lineno = _token->end_lineno;
7227 UNUSED(_end_lineno); // Only used by EXTRA macro
7228 int _end_col_offset = _token->end_col_offset;
7229 UNUSED(_end_col_offset); // Only used by EXTRA macro
7230 _res = _Py_BinOp ( a , Mod , b , EXTRA );
7231 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007232 p->error_indicator = 1;
7233 return NULL;
7234 }
7235 goto done;
7236 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007237 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007238 }
7239 { // term '@' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007240 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007241 expr_ty a;
7242 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007243 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007244 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007245 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007246 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007247 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007248 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007249 )
7250 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007251 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7252 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007253 return NULL;
7254 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007255 int _end_lineno = _token->end_lineno;
7256 UNUSED(_end_lineno); // Only used by EXTRA macro
7257 int _end_col_offset = _token->end_col_offset;
7258 UNUSED(_end_col_offset); // Only used by EXTRA macro
7259 _res = CHECK_VERSION ( 5 , "The '@' operator is" , _Py_BinOp ( a , MatMult , b , EXTRA ) );
7260 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007261 p->error_indicator = 1;
7262 return NULL;
7263 }
7264 goto done;
7265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007266 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007267 }
7268 { // factor
7269 expr_ty factor_var;
7270 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007271 (factor_var = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007272 )
7273 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007274 _res = factor_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007275 goto done;
7276 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007277 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007278 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007279 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007280 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007281 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007282}
7283
7284// factor: '+' factor | '-' factor | '~' factor | power
7285static expr_ty
7286factor_rule(Parser *p)
7287{
7288 if (p->error_indicator) {
7289 return NULL;
7290 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007291 expr_ty _res = NULL;
7292 if (_PyPegen_is_memoized(p, factor_type, &_res))
7293 return _res;
7294 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007295 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7296 p->error_indicator = 1;
7297 return NULL;
7298 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007299 int _start_lineno = p->tokens[_mark]->lineno;
7300 UNUSED(_start_lineno); // Only used by EXTRA macro
7301 int _start_col_offset = p->tokens[_mark]->col_offset;
7302 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007303 { // '+' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007304 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007305 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007306 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007307 (_literal = _PyPegen_expect_token(p, 14)) // token='+'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007308 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007309 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007310 )
7311 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007312 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7313 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007314 return NULL;
7315 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007316 int _end_lineno = _token->end_lineno;
7317 UNUSED(_end_lineno); // Only used by EXTRA macro
7318 int _end_col_offset = _token->end_col_offset;
7319 UNUSED(_end_col_offset); // Only used by EXTRA macro
7320 _res = _Py_UnaryOp ( UAdd , a , EXTRA );
7321 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007322 p->error_indicator = 1;
7323 return NULL;
7324 }
7325 goto done;
7326 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007327 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007328 }
7329 { // '-' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007330 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007331 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007332 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007333 (_literal = _PyPegen_expect_token(p, 15)) // token='-'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007334 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007335 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007336 )
7337 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007338 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7339 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007340 return NULL;
7341 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007342 int _end_lineno = _token->end_lineno;
7343 UNUSED(_end_lineno); // Only used by EXTRA macro
7344 int _end_col_offset = _token->end_col_offset;
7345 UNUSED(_end_col_offset); // Only used by EXTRA macro
7346 _res = _Py_UnaryOp ( USub , a , EXTRA );
7347 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007348 p->error_indicator = 1;
7349 return NULL;
7350 }
7351 goto done;
7352 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007353 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007354 }
7355 { // '~' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007356 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007357 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007358 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007359 (_literal = _PyPegen_expect_token(p, 31)) // token='~'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007360 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007361 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007362 )
7363 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007364 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7365 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007366 return NULL;
7367 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007368 int _end_lineno = _token->end_lineno;
7369 UNUSED(_end_lineno); // Only used by EXTRA macro
7370 int _end_col_offset = _token->end_col_offset;
7371 UNUSED(_end_col_offset); // Only used by EXTRA macro
7372 _res = _Py_UnaryOp ( Invert , a , EXTRA );
7373 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007374 p->error_indicator = 1;
7375 return NULL;
7376 }
7377 goto done;
7378 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007379 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007380 }
7381 { // power
7382 expr_ty power_var;
7383 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007384 (power_var = power_rule(p)) // power
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007385 )
7386 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007387 _res = power_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007388 goto done;
7389 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007390 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007392 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007393 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007394 _PyPegen_insert_memo(p, _mark, factor_type, _res);
7395 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007396}
7397
7398// power: await_primary '**' factor | await_primary
7399static expr_ty
7400power_rule(Parser *p)
7401{
7402 if (p->error_indicator) {
7403 return NULL;
7404 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007405 expr_ty _res = NULL;
7406 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007407 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7408 p->error_indicator = 1;
7409 return NULL;
7410 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007411 int _start_lineno = p->tokens[_mark]->lineno;
7412 UNUSED(_start_lineno); // Only used by EXTRA macro
7413 int _start_col_offset = p->tokens[_mark]->col_offset;
7414 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007415 { // await_primary '**' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007416 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007417 expr_ty a;
7418 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007419 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007420 (a = await_primary_rule(p)) // await_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007421 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007422 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007423 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007424 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007425 )
7426 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007427 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7428 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007429 return NULL;
7430 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007431 int _end_lineno = _token->end_lineno;
7432 UNUSED(_end_lineno); // Only used by EXTRA macro
7433 int _end_col_offset = _token->end_col_offset;
7434 UNUSED(_end_col_offset); // Only used by EXTRA macro
7435 _res = _Py_BinOp ( a , Pow , b , EXTRA );
7436 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007437 p->error_indicator = 1;
7438 return NULL;
7439 }
7440 goto done;
7441 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007442 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007443 }
7444 { // await_primary
7445 expr_ty await_primary_var;
7446 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007447 (await_primary_var = await_primary_rule(p)) // await_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007448 )
7449 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007450 _res = await_primary_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007451 goto done;
7452 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007453 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007454 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007455 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007456 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007457 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007458}
7459
7460// await_primary: AWAIT primary | primary
7461static expr_ty
7462await_primary_rule(Parser *p)
7463{
7464 if (p->error_indicator) {
7465 return NULL;
7466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007467 expr_ty _res = NULL;
7468 if (_PyPegen_is_memoized(p, await_primary_type, &_res))
7469 return _res;
7470 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007471 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7472 p->error_indicator = 1;
7473 return NULL;
7474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007475 int _start_lineno = p->tokens[_mark]->lineno;
7476 UNUSED(_start_lineno); // Only used by EXTRA macro
7477 int _start_col_offset = p->tokens[_mark]->col_offset;
7478 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007479 { // AWAIT primary
7480 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01007481 Token * await_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007482 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007483 (await_var = _PyPegen_expect_token(p, AWAIT)) // token='AWAIT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007484 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007485 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007486 )
7487 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007488 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7489 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007490 return NULL;
7491 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007492 int _end_lineno = _token->end_lineno;
7493 UNUSED(_end_lineno); // Only used by EXTRA macro
7494 int _end_col_offset = _token->end_col_offset;
7495 UNUSED(_end_col_offset); // Only used by EXTRA macro
7496 _res = CHECK_VERSION ( 5 , "Await expressions are" , _Py_Await ( a , EXTRA ) );
7497 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007498 p->error_indicator = 1;
7499 return NULL;
7500 }
7501 goto done;
7502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007503 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007504 }
7505 { // primary
7506 expr_ty primary_var;
7507 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007508 (primary_var = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007509 )
7510 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007511 _res = primary_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007512 goto done;
7513 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007514 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007516 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007517 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007518 _PyPegen_insert_memo(p, _mark, await_primary_type, _res);
7519 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007520}
7521
7522// Left-recursive
7523// primary:
7524// | primary '.' NAME
7525// | primary genexp
7526// | primary '(' arguments? ')'
7527// | primary '[' slices ']'
7528// | atom
7529static expr_ty primary_raw(Parser *);
7530static expr_ty
7531primary_rule(Parser *p)
7532{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007533 expr_ty _res = NULL;
7534 if (_PyPegen_is_memoized(p, primary_type, &_res))
7535 return _res;
7536 int _mark = p->mark;
7537 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007538 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007539 int tmpvar_7 = _PyPegen_update_memo(p, _mark, primary_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007540 if (tmpvar_7) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007541 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007542 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007543 p->mark = _mark;
7544 void *_raw = primary_raw(p);
7545 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007546 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007547 _resmark = p->mark;
7548 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007549 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007550 p->mark = _resmark;
7551 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007552}
7553static expr_ty
7554primary_raw(Parser *p)
7555{
7556 if (p->error_indicator) {
7557 return NULL;
7558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007559 expr_ty _res = NULL;
7560 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007561 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7562 p->error_indicator = 1;
7563 return NULL;
7564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007565 int _start_lineno = p->tokens[_mark]->lineno;
7566 UNUSED(_start_lineno); // Only used by EXTRA macro
7567 int _start_col_offset = p->tokens[_mark]->col_offset;
7568 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007569 { // primary '.' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007570 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007571 expr_ty a;
7572 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007573 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007574 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007575 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007576 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007577 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007578 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007579 )
7580 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007581 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7582 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007583 return NULL;
7584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007585 int _end_lineno = _token->end_lineno;
7586 UNUSED(_end_lineno); // Only used by EXTRA macro
7587 int _end_col_offset = _token->end_col_offset;
7588 UNUSED(_end_col_offset); // Only used by EXTRA macro
7589 _res = _Py_Attribute ( a , b -> v . Name . id , Load , EXTRA );
7590 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007591 p->error_indicator = 1;
7592 return NULL;
7593 }
7594 goto done;
7595 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007596 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007597 }
7598 { // primary genexp
7599 expr_ty a;
7600 expr_ty b;
7601 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007602 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007603 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007604 (b = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007605 )
7606 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007607 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7608 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007609 return NULL;
7610 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007611 int _end_lineno = _token->end_lineno;
7612 UNUSED(_end_lineno); // Only used by EXTRA macro
7613 int _end_col_offset = _token->end_col_offset;
7614 UNUSED(_end_col_offset); // Only used by EXTRA macro
7615 _res = _Py_Call ( a , CHECK ( _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
7616 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007617 p->error_indicator = 1;
7618 return NULL;
7619 }
7620 goto done;
7621 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007622 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007623 }
7624 { // primary '(' arguments? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007625 Token * _literal;
7626 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007627 expr_ty a;
7628 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007629 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007630 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007631 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007632 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007633 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007634 (b = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007635 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007636 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007637 )
7638 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007639 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7640 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007641 return NULL;
7642 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007643 int _end_lineno = _token->end_lineno;
7644 UNUSED(_end_lineno); // Only used by EXTRA macro
7645 int _end_col_offset = _token->end_col_offset;
7646 UNUSED(_end_col_offset); // Only used by EXTRA macro
7647 _res = _Py_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
7648 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007649 p->error_indicator = 1;
7650 return NULL;
7651 }
7652 goto done;
7653 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007654 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007655 }
7656 { // primary '[' slices ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007657 Token * _literal;
7658 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007659 expr_ty a;
7660 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007661 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007662 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007663 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007664 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007665 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007666 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007667 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007668 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007669 )
7670 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007671 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7672 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007673 return NULL;
7674 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007675 int _end_lineno = _token->end_lineno;
7676 UNUSED(_end_lineno); // Only used by EXTRA macro
7677 int _end_col_offset = _token->end_col_offset;
7678 UNUSED(_end_col_offset); // Only used by EXTRA macro
7679 _res = _Py_Subscript ( a , b , Load , EXTRA );
7680 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007681 p->error_indicator = 1;
7682 return NULL;
7683 }
7684 goto done;
7685 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007686 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007687 }
7688 { // atom
7689 expr_ty atom_var;
7690 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007691 (atom_var = atom_rule(p)) // atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007692 )
7693 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007694 _res = atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007695 goto done;
7696 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007697 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007698 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007699 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007700 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007701 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007702}
7703
7704// slices: slice !',' | ','.slice+ ','?
7705static expr_ty
7706slices_rule(Parser *p)
7707{
7708 if (p->error_indicator) {
7709 return NULL;
7710 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007711 expr_ty _res = NULL;
7712 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007713 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7714 p->error_indicator = 1;
7715 return NULL;
7716 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007717 int _start_lineno = p->tokens[_mark]->lineno;
7718 UNUSED(_start_lineno); // Only used by EXTRA macro
7719 int _start_col_offset = p->tokens[_mark]->col_offset;
7720 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007721 { // slice !','
7722 expr_ty a;
7723 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007724 (a = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007725 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007726 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007727 )
7728 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007729 _res = a;
7730 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007731 p->error_indicator = 1;
7732 return NULL;
7733 }
7734 goto done;
7735 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007736 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007737 }
7738 { // ','.slice+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007739 void *_opt_var;
7740 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007741 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007742 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007743 (a = _gather_93_rule(p)) // ','.slice+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007744 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007745 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007746 )
7747 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007748 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7749 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007750 return NULL;
7751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007752 int _end_lineno = _token->end_lineno;
7753 UNUSED(_end_lineno); // Only used by EXTRA macro
7754 int _end_col_offset = _token->end_col_offset;
7755 UNUSED(_end_col_offset); // Only used by EXTRA macro
7756 _res = _Py_Tuple ( a , Load , EXTRA );
7757 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007758 p->error_indicator = 1;
7759 return NULL;
7760 }
7761 goto done;
7762 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007763 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007765 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007766 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007767 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007768}
7769
7770// slice: expression? ':' expression? [':' expression?] | expression
7771static expr_ty
7772slice_rule(Parser *p)
7773{
7774 if (p->error_indicator) {
7775 return NULL;
7776 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007777 expr_ty _res = NULL;
7778 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007779 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7780 p->error_indicator = 1;
7781 return NULL;
7782 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007783 int _start_lineno = p->tokens[_mark]->lineno;
7784 UNUSED(_start_lineno); // Only used by EXTRA macro
7785 int _start_col_offset = p->tokens[_mark]->col_offset;
7786 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007787 { // expression? ':' expression? [':' expression?]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007788 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007789 void *a;
7790 void *b;
7791 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007792 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007793 (a = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007794 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007795 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007796 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007797 (b = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007798 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007799 (c = _tmp_95_rule(p), 1) // [':' expression?]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007800 )
7801 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007802 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7803 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007804 return NULL;
7805 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007806 int _end_lineno = _token->end_lineno;
7807 UNUSED(_end_lineno); // Only used by EXTRA macro
7808 int _end_col_offset = _token->end_col_offset;
7809 UNUSED(_end_col_offset); // Only used by EXTRA macro
7810 _res = _Py_Slice ( a , b , c , EXTRA );
7811 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007812 p->error_indicator = 1;
7813 return NULL;
7814 }
7815 goto done;
7816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007817 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007818 }
7819 { // expression
7820 expr_ty a;
7821 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007822 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007823 )
7824 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007825 _res = a;
7826 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007827 p->error_indicator = 1;
7828 return NULL;
7829 }
7830 goto done;
7831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007832 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007834 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007835 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007836 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007837}
7838
7839// atom:
7840// | NAME
7841// | 'True'
7842// | 'False'
7843// | 'None'
7844// | '__new_parser__'
7845// | &STRING strings
7846// | NUMBER
7847// | &'(' (tuple | group | genexp)
7848// | &'[' (list | listcomp)
7849// | &'{' (dict | set | dictcomp | setcomp)
7850// | '...'
7851static expr_ty
7852atom_rule(Parser *p)
7853{
7854 if (p->error_indicator) {
7855 return NULL;
7856 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007857 expr_ty _res = NULL;
7858 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007859 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7860 p->error_indicator = 1;
7861 return NULL;
7862 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007863 int _start_lineno = p->tokens[_mark]->lineno;
7864 UNUSED(_start_lineno); // Only used by EXTRA macro
7865 int _start_col_offset = p->tokens[_mark]->col_offset;
7866 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007867 { // NAME
7868 expr_ty name_var;
7869 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007870 (name_var = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007871 )
7872 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007873 _res = name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007874 goto done;
7875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007876 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007877 }
7878 { // 'True'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007879 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007880 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007881 (_keyword = _PyPegen_expect_token(p, 527)) // token='True'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007882 )
7883 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007884 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7885 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007886 return NULL;
7887 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007888 int _end_lineno = _token->end_lineno;
7889 UNUSED(_end_lineno); // Only used by EXTRA macro
7890 int _end_col_offset = _token->end_col_offset;
7891 UNUSED(_end_col_offset); // Only used by EXTRA macro
7892 _res = _Py_Constant ( Py_True , NULL , EXTRA );
7893 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007894 p->error_indicator = 1;
7895 return NULL;
7896 }
7897 goto done;
7898 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007899 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007900 }
7901 { // 'False'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007902 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007903 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007904 (_keyword = _PyPegen_expect_token(p, 528)) // token='False'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007905 )
7906 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007907 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7908 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007909 return NULL;
7910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007911 int _end_lineno = _token->end_lineno;
7912 UNUSED(_end_lineno); // Only used by EXTRA macro
7913 int _end_col_offset = _token->end_col_offset;
7914 UNUSED(_end_col_offset); // Only used by EXTRA macro
7915 _res = _Py_Constant ( Py_False , NULL , EXTRA );
7916 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007917 p->error_indicator = 1;
7918 return NULL;
7919 }
7920 goto done;
7921 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007922 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007923 }
7924 { // 'None'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007925 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007926 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007927 (_keyword = _PyPegen_expect_token(p, 529)) // token='None'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007928 )
7929 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007930 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7931 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007932 return NULL;
7933 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007934 int _end_lineno = _token->end_lineno;
7935 UNUSED(_end_lineno); // Only used by EXTRA macro
7936 int _end_col_offset = _token->end_col_offset;
7937 UNUSED(_end_col_offset); // Only used by EXTRA macro
7938 _res = _Py_Constant ( Py_None , NULL , EXTRA );
7939 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007940 p->error_indicator = 1;
7941 return NULL;
7942 }
7943 goto done;
7944 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007945 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007946 }
7947 { // '__new_parser__'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007948 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007949 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007950 (_keyword = _PyPegen_expect_token(p, 530)) // token='__new_parser__'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007951 )
7952 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007953 _res = RAISE_SYNTAX_ERROR ( "You found it!" );
7954 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007955 p->error_indicator = 1;
7956 return NULL;
7957 }
7958 goto done;
7959 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007960 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007961 }
7962 { // &STRING strings
7963 expr_ty strings_var;
7964 if (
7965 _PyPegen_lookahead(1, _PyPegen_string_token, p)
7966 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007967 (strings_var = strings_rule(p)) // strings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007968 )
7969 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007970 _res = strings_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007971 goto done;
7972 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007973 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007974 }
7975 { // NUMBER
7976 expr_ty number_var;
7977 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007978 (number_var = _PyPegen_number_token(p)) // NUMBER
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007979 )
7980 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007981 _res = number_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007982 goto done;
7983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007984 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007985 }
7986 { // &'(' (tuple | group | genexp)
Guido van Rossum3941d972020-05-01 09:42:03 -07007987 void *_tmp_96_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007988 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007989 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007990 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007991 (_tmp_96_var = _tmp_96_rule(p)) // tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007992 )
7993 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007994 _res = _tmp_96_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007995 goto done;
7996 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007997 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007998 }
Pablo Galindo2b74c832020-04-27 18:02:07 +01007999 { // &'[' (list | listcomp)
Guido van Rossum3941d972020-05-01 09:42:03 -07008000 void *_tmp_97_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008001 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008002 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008003 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008004 (_tmp_97_var = _tmp_97_rule(p)) // list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008005 )
8006 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008007 _res = _tmp_97_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008008 goto done;
8009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008010 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008011 }
Pablo Galindo2b74c832020-04-27 18:02:07 +01008012 { // &'{' (dict | set | dictcomp | setcomp)
Guido van Rossum3941d972020-05-01 09:42:03 -07008013 void *_tmp_98_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008014 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008015 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25) // token='{'
Pablo Galindo2b74c832020-04-27 18:02:07 +01008016 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008017 (_tmp_98_var = _tmp_98_rule(p)) // dict | set | dictcomp | setcomp
Pablo Galindo2b74c832020-04-27 18:02:07 +01008018 )
8019 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008020 _res = _tmp_98_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008021 goto done;
8022 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008023 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008024 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008025 { // '...'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008026 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008027 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008028 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008029 )
8030 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008031 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8032 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008033 return NULL;
8034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008035 int _end_lineno = _token->end_lineno;
8036 UNUSED(_end_lineno); // Only used by EXTRA macro
8037 int _end_col_offset = _token->end_col_offset;
8038 UNUSED(_end_col_offset); // Only used by EXTRA macro
8039 _res = _Py_Constant ( Py_Ellipsis , NULL , EXTRA );
8040 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008041 p->error_indicator = 1;
8042 return NULL;
8043 }
8044 goto done;
8045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008046 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008048 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008049 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008050 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008051}
8052
8053// strings: STRING+
8054static expr_ty
8055strings_rule(Parser *p)
8056{
8057 if (p->error_indicator) {
8058 return NULL;
8059 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008060 expr_ty _res = NULL;
8061 if (_PyPegen_is_memoized(p, strings_type, &_res))
8062 return _res;
8063 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008064 { // STRING+
8065 asdl_seq * a;
8066 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008067 (a = _loop1_99_rule(p)) // STRING+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008068 )
8069 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008070 _res = _PyPegen_concatenate_strings ( p , a );
8071 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008072 p->error_indicator = 1;
8073 return NULL;
8074 }
8075 goto done;
8076 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008077 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008079 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008080 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008081 _PyPegen_insert_memo(p, _mark, strings_type, _res);
8082 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008083}
8084
8085// list: '[' star_named_expressions? ']'
8086static expr_ty
8087list_rule(Parser *p)
8088{
8089 if (p->error_indicator) {
8090 return NULL;
8091 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008092 expr_ty _res = NULL;
8093 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008094 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8095 p->error_indicator = 1;
8096 return NULL;
8097 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008098 int _start_lineno = p->tokens[_mark]->lineno;
8099 UNUSED(_start_lineno); // Only used by EXTRA macro
8100 int _start_col_offset = p->tokens[_mark]->col_offset;
8101 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008102 { // '[' star_named_expressions? ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008103 Token * _literal;
8104 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008105 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008106 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008107 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008108 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008109 (a = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008110 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008111 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008112 )
8113 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008114 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8115 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008116 return NULL;
8117 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008118 int _end_lineno = _token->end_lineno;
8119 UNUSED(_end_lineno); // Only used by EXTRA macro
8120 int _end_col_offset = _token->end_col_offset;
8121 UNUSED(_end_col_offset); // Only used by EXTRA macro
8122 _res = _Py_List ( a , Load , EXTRA );
8123 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008124 p->error_indicator = 1;
8125 return NULL;
8126 }
8127 goto done;
8128 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008129 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008130 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008131 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008132 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008133 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008134}
8135
8136// listcomp: '[' named_expression for_if_clauses ']' | invalid_comprehension
8137static expr_ty
8138listcomp_rule(Parser *p)
8139{
8140 if (p->error_indicator) {
8141 return NULL;
8142 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008143 expr_ty _res = NULL;
8144 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008145 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8146 p->error_indicator = 1;
8147 return NULL;
8148 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008149 int _start_lineno = p->tokens[_mark]->lineno;
8150 UNUSED(_start_lineno); // Only used by EXTRA macro
8151 int _start_col_offset = p->tokens[_mark]->col_offset;
8152 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008153 { // '[' named_expression for_if_clauses ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008154 Token * _literal;
8155 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008156 expr_ty a;
8157 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008158 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008159 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008160 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008161 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008162 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008163 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008164 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008165 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008166 )
8167 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008168 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8169 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008170 return NULL;
8171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008172 int _end_lineno = _token->end_lineno;
8173 UNUSED(_end_lineno); // Only used by EXTRA macro
8174 int _end_col_offset = _token->end_col_offset;
8175 UNUSED(_end_col_offset); // Only used by EXTRA macro
8176 _res = _Py_ListComp ( a , b , EXTRA );
8177 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008178 p->error_indicator = 1;
8179 return NULL;
8180 }
8181 goto done;
8182 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008183 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008184 }
8185 { // invalid_comprehension
8186 void *invalid_comprehension_var;
8187 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008188 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008189 )
8190 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008191 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008192 goto done;
8193 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008194 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008195 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008196 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008197 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008198 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008199}
8200
8201// tuple: '(' [star_named_expression ',' star_named_expressions?] ')'
8202static expr_ty
8203tuple_rule(Parser *p)
8204{
8205 if (p->error_indicator) {
8206 return NULL;
8207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008208 expr_ty _res = NULL;
8209 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008210 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8211 p->error_indicator = 1;
8212 return NULL;
8213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008214 int _start_lineno = p->tokens[_mark]->lineno;
8215 UNUSED(_start_lineno); // Only used by EXTRA macro
8216 int _start_col_offset = p->tokens[_mark]->col_offset;
8217 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008218 { // '(' [star_named_expression ',' star_named_expressions?] ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008219 Token * _literal;
8220 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008221 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008222 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008223 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008224 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008225 (a = _tmp_100_rule(p), 1) // [star_named_expression ',' star_named_expressions?]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008226 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008227 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008228 )
8229 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008230 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8231 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008232 return NULL;
8233 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008234 int _end_lineno = _token->end_lineno;
8235 UNUSED(_end_lineno); // Only used by EXTRA macro
8236 int _end_col_offset = _token->end_col_offset;
8237 UNUSED(_end_col_offset); // Only used by EXTRA macro
8238 _res = _Py_Tuple ( a , Load , EXTRA );
8239 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008240 p->error_indicator = 1;
8241 return NULL;
8242 }
8243 goto done;
8244 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008245 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008247 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008248 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008249 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008250}
8251
8252// group: '(' (yield_expr | named_expression) ')'
8253static expr_ty
8254group_rule(Parser *p)
8255{
8256 if (p->error_indicator) {
8257 return NULL;
8258 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008259 expr_ty _res = NULL;
8260 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008261 { // '(' (yield_expr | named_expression) ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008262 Token * _literal;
8263 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008264 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008265 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008266 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008267 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008268 (a = _tmp_101_rule(p)) // yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008269 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008270 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008271 )
8272 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008273 _res = a;
8274 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008275 p->error_indicator = 1;
8276 return NULL;
8277 }
8278 goto done;
8279 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008280 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008281 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008282 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008283 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008284 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008285}
8286
8287// genexp: '(' expression for_if_clauses ')' | invalid_comprehension
8288static expr_ty
8289genexp_rule(Parser *p)
8290{
8291 if (p->error_indicator) {
8292 return NULL;
8293 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008294 expr_ty _res = NULL;
8295 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008296 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8297 p->error_indicator = 1;
8298 return NULL;
8299 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008300 int _start_lineno = p->tokens[_mark]->lineno;
8301 UNUSED(_start_lineno); // Only used by EXTRA macro
8302 int _start_col_offset = p->tokens[_mark]->col_offset;
8303 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008304 { // '(' expression for_if_clauses ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008305 Token * _literal;
8306 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008307 expr_ty a;
8308 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008309 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008310 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008311 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008312 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008313 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008314 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008315 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008316 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008317 )
8318 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008319 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8320 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008321 return NULL;
8322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008323 int _end_lineno = _token->end_lineno;
8324 UNUSED(_end_lineno); // Only used by EXTRA macro
8325 int _end_col_offset = _token->end_col_offset;
8326 UNUSED(_end_col_offset); // Only used by EXTRA macro
8327 _res = _Py_GeneratorExp ( a , b , EXTRA );
8328 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008329 p->error_indicator = 1;
8330 return NULL;
8331 }
8332 goto done;
8333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008334 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008335 }
8336 { // invalid_comprehension
8337 void *invalid_comprehension_var;
8338 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008339 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008340 )
8341 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008342 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008343 goto done;
8344 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008345 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008347 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008348 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008349 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008350}
8351
8352// set: '{' expressions_list '}'
8353static expr_ty
8354set_rule(Parser *p)
8355{
8356 if (p->error_indicator) {
8357 return NULL;
8358 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008359 expr_ty _res = NULL;
8360 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008361 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8362 p->error_indicator = 1;
8363 return NULL;
8364 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008365 int _start_lineno = p->tokens[_mark]->lineno;
8366 UNUSED(_start_lineno); // Only used by EXTRA macro
8367 int _start_col_offset = p->tokens[_mark]->col_offset;
8368 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008369 { // '{' expressions_list '}'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008370 Token * _literal;
8371 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008372 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008373 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008374 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008375 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008376 (a = expressions_list_rule(p)) // expressions_list
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008377 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008378 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008379 )
8380 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008381 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8382 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008383 return NULL;
8384 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008385 int _end_lineno = _token->end_lineno;
8386 UNUSED(_end_lineno); // Only used by EXTRA macro
8387 int _end_col_offset = _token->end_col_offset;
8388 UNUSED(_end_col_offset); // Only used by EXTRA macro
8389 _res = _Py_Set ( a , EXTRA );
8390 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008391 p->error_indicator = 1;
8392 return NULL;
8393 }
8394 goto done;
8395 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008396 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008397 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008398 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008399 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008400 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008401}
8402
8403// setcomp: '{' expression for_if_clauses '}' | invalid_comprehension
8404static expr_ty
8405setcomp_rule(Parser *p)
8406{
8407 if (p->error_indicator) {
8408 return NULL;
8409 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008410 expr_ty _res = NULL;
8411 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008412 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8413 p->error_indicator = 1;
8414 return NULL;
8415 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008416 int _start_lineno = p->tokens[_mark]->lineno;
8417 UNUSED(_start_lineno); // Only used by EXTRA macro
8418 int _start_col_offset = p->tokens[_mark]->col_offset;
8419 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008420 { // '{' expression for_if_clauses '}'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008421 Token * _literal;
8422 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008423 expr_ty a;
8424 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008425 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008426 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008427 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008428 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008429 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008430 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008431 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008432 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008433 )
8434 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008435 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8436 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008437 return NULL;
8438 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008439 int _end_lineno = _token->end_lineno;
8440 UNUSED(_end_lineno); // Only used by EXTRA macro
8441 int _end_col_offset = _token->end_col_offset;
8442 UNUSED(_end_col_offset); // Only used by EXTRA macro
8443 _res = _Py_SetComp ( a , b , EXTRA );
8444 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008445 p->error_indicator = 1;
8446 return NULL;
8447 }
8448 goto done;
8449 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008450 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008451 }
8452 { // invalid_comprehension
8453 void *invalid_comprehension_var;
8454 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008455 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008456 )
8457 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008458 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008459 goto done;
8460 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008461 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008463 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008464 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008465 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008466}
8467
8468// dict: '{' kvpairs? '}'
8469static expr_ty
8470dict_rule(Parser *p)
8471{
8472 if (p->error_indicator) {
8473 return NULL;
8474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008475 expr_ty _res = NULL;
8476 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008477 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8478 p->error_indicator = 1;
8479 return NULL;
8480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008481 int _start_lineno = p->tokens[_mark]->lineno;
8482 UNUSED(_start_lineno); // Only used by EXTRA macro
8483 int _start_col_offset = p->tokens[_mark]->col_offset;
8484 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008485 { // '{' kvpairs? '}'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008486 Token * _literal;
8487 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008488 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008489 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008490 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008491 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008492 (a = kvpairs_rule(p), 1) // kvpairs?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008493 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008494 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008495 )
8496 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008497 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8498 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008499 return NULL;
8500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008501 int _end_lineno = _token->end_lineno;
8502 UNUSED(_end_lineno); // Only used by EXTRA macro
8503 int _end_col_offset = _token->end_col_offset;
8504 UNUSED(_end_col_offset); // Only used by EXTRA macro
8505 _res = _Py_Dict ( CHECK ( _PyPegen_get_keys ( p , a ) ) , CHECK ( _PyPegen_get_values ( p , a ) ) , EXTRA );
8506 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008507 p->error_indicator = 1;
8508 return NULL;
8509 }
8510 goto done;
8511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008512 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008513 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008514 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008515 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008516 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008517}
8518
8519// dictcomp: '{' kvpair for_if_clauses '}'
8520static expr_ty
8521dictcomp_rule(Parser *p)
8522{
8523 if (p->error_indicator) {
8524 return NULL;
8525 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008526 expr_ty _res = NULL;
8527 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008528 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8529 p->error_indicator = 1;
8530 return NULL;
8531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008532 int _start_lineno = p->tokens[_mark]->lineno;
8533 UNUSED(_start_lineno); // Only used by EXTRA macro
8534 int _start_col_offset = p->tokens[_mark]->col_offset;
8535 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008536 { // '{' kvpair for_if_clauses '}'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008537 Token * _literal;
8538 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008539 KeyValuePair* a;
8540 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008541 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008542 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008543 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008544 (a = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008545 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008546 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008547 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008548 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008549 )
8550 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008551 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8552 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008553 return NULL;
8554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008555 int _end_lineno = _token->end_lineno;
8556 UNUSED(_end_lineno); // Only used by EXTRA macro
8557 int _end_col_offset = _token->end_col_offset;
8558 UNUSED(_end_col_offset); // Only used by EXTRA macro
8559 _res = _Py_DictComp ( a -> key , a -> value , b , EXTRA );
8560 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008561 p->error_indicator = 1;
8562 return NULL;
8563 }
8564 goto done;
8565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008566 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008567 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008568 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008569 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008570 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008571}
8572
8573// kvpairs: ','.kvpair+ ','?
8574static asdl_seq*
8575kvpairs_rule(Parser *p)
8576{
8577 if (p->error_indicator) {
8578 return NULL;
8579 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008580 asdl_seq* _res = NULL;
8581 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008582 { // ','.kvpair+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008583 void *_opt_var;
8584 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008585 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008586 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008587 (a = _gather_102_rule(p)) // ','.kvpair+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008588 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008589 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008590 )
8591 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008592 _res = a;
8593 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008594 p->error_indicator = 1;
8595 return NULL;
8596 }
8597 goto done;
8598 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008599 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008601 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008602 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008603 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008604}
8605
8606// kvpair: '**' bitwise_or | expression ':' expression
8607static KeyValuePair*
8608kvpair_rule(Parser *p)
8609{
8610 if (p->error_indicator) {
8611 return NULL;
8612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008613 KeyValuePair* _res = NULL;
8614 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008615 { // '**' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008616 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008617 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008618 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008619 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008620 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008621 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008622 )
8623 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008624 _res = _PyPegen_key_value_pair ( p , NULL , a );
8625 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008626 p->error_indicator = 1;
8627 return NULL;
8628 }
8629 goto done;
8630 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008631 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008632 }
8633 { // expression ':' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008634 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008635 expr_ty a;
8636 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008637 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008638 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008639 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008640 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008641 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008642 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008643 )
8644 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008645 _res = _PyPegen_key_value_pair ( p , a , b );
8646 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008647 p->error_indicator = 1;
8648 return NULL;
8649 }
8650 goto done;
8651 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008652 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008653 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008654 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008655 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008656 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008657}
8658
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008659// for_if_clauses: for_if_clause+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008660static asdl_seq*
8661for_if_clauses_rule(Parser *p)
8662{
8663 if (p->error_indicator) {
8664 return NULL;
8665 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008666 asdl_seq* _res = NULL;
8667 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008668 { // for_if_clause+
Guido van Rossum3941d972020-05-01 09:42:03 -07008669 asdl_seq * _loop1_104_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008670 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008671 (_loop1_104_var = _loop1_104_rule(p)) // for_if_clause+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008672 )
8673 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008674 _res = _loop1_104_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008675 goto done;
8676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008677 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008678 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008679 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008680 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008681 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008682}
8683
8684// for_if_clause:
8685// | ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*
8686// | 'for' star_targets 'in' disjunction (('if' disjunction))*
8687static comprehension_ty
8688for_if_clause_rule(Parser *p)
8689{
8690 if (p->error_indicator) {
8691 return NULL;
8692 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008693 comprehension_ty _res = NULL;
8694 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008695 { // ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008696 Token * _keyword;
8697 Token * _keyword_1;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008698 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01008699 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008700 expr_ty b;
8701 asdl_seq * c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008702 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008703 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008704 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008705 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008706 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008707 (a = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008708 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008709 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008710 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008711 (b = disjunction_rule(p)) // disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008712 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008713 (c = _loop0_105_rule(p)) // (('if' disjunction))*
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008714 )
8715 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008716 _res = CHECK_VERSION ( 6 , "Async comprehensions are" , _Py_comprehension ( a , b , c , 1 , p -> arena ) );
8717 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008718 p->error_indicator = 1;
8719 return NULL;
8720 }
8721 goto done;
8722 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008723 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008724 }
8725 { // 'for' star_targets 'in' disjunction (('if' disjunction))*
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008726 Token * _keyword;
8727 Token * _keyword_1;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008728 expr_ty a;
8729 expr_ty b;
8730 asdl_seq * c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008731 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008732 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008733 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008734 (a = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008735 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008736 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008737 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008738 (b = disjunction_rule(p)) // disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008739 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008740 (c = _loop0_106_rule(p)) // (('if' disjunction))*
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008741 )
8742 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008743 _res = _Py_comprehension ( a , b , c , 0 , p -> arena );
8744 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008745 p->error_indicator = 1;
8746 return NULL;
8747 }
8748 goto done;
8749 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008750 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008752 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008753 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008754 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008755}
8756
8757// yield_expr: 'yield' 'from' expression | 'yield' star_expressions?
8758static expr_ty
8759yield_expr_rule(Parser *p)
8760{
8761 if (p->error_indicator) {
8762 return NULL;
8763 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008764 expr_ty _res = NULL;
8765 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008766 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8767 p->error_indicator = 1;
8768 return NULL;
8769 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008770 int _start_lineno = p->tokens[_mark]->lineno;
8771 UNUSED(_start_lineno); // Only used by EXTRA macro
8772 int _start_col_offset = p->tokens[_mark]->col_offset;
8773 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008774 { // 'yield' 'from' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008775 Token * _keyword;
8776 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008777 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008778 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008779 (_keyword = _PyPegen_expect_token(p, 504)) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008780 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008781 (_keyword_1 = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008782 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008783 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008784 )
8785 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008786 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8787 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008788 return NULL;
8789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008790 int _end_lineno = _token->end_lineno;
8791 UNUSED(_end_lineno); // Only used by EXTRA macro
8792 int _end_col_offset = _token->end_col_offset;
8793 UNUSED(_end_col_offset); // Only used by EXTRA macro
8794 _res = _Py_YieldFrom ( a , EXTRA );
8795 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008796 p->error_indicator = 1;
8797 return NULL;
8798 }
8799 goto done;
8800 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008801 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008802 }
8803 { // 'yield' star_expressions?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008804 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008805 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008806 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008807 (_keyword = _PyPegen_expect_token(p, 504)) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008808 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008809 (a = star_expressions_rule(p), 1) // star_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008810 )
8811 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008812 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8813 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008814 return NULL;
8815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008816 int _end_lineno = _token->end_lineno;
8817 UNUSED(_end_lineno); // Only used by EXTRA macro
8818 int _end_col_offset = _token->end_col_offset;
8819 UNUSED(_end_col_offset); // Only used by EXTRA macro
8820 _res = _Py_Yield ( a , EXTRA );
8821 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008822 p->error_indicator = 1;
8823 return NULL;
8824 }
8825 goto done;
8826 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008827 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008828 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008829 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008830 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008831 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008832}
8833
8834// arguments: args ','? &')' | incorrect_arguments
8835static expr_ty
8836arguments_rule(Parser *p)
8837{
8838 if (p->error_indicator) {
8839 return NULL;
8840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008841 expr_ty _res = NULL;
8842 if (_PyPegen_is_memoized(p, arguments_type, &_res))
8843 return _res;
8844 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008845 { // args ','? &')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008846 void *_opt_var;
8847 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008848 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008849 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008850 (a = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008851 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008852 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008853 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008854 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008855 )
8856 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008857 _res = a;
8858 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008859 p->error_indicator = 1;
8860 return NULL;
8861 }
8862 goto done;
8863 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008864 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008865 }
8866 { // incorrect_arguments
8867 void *incorrect_arguments_var;
8868 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008869 (incorrect_arguments_var = incorrect_arguments_rule(p)) // incorrect_arguments
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008870 )
8871 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008872 _res = incorrect_arguments_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008873 goto done;
8874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008875 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008877 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008878 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008879 _PyPegen_insert_memo(p, _mark, arguments_type, _res);
8880 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008881}
8882
8883// args: starred_expression [',' args] | kwargs | named_expression [',' args]
8884static expr_ty
8885args_rule(Parser *p)
8886{
8887 if (p->error_indicator) {
8888 return NULL;
8889 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008890 expr_ty _res = NULL;
8891 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008892 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8893 p->error_indicator = 1;
8894 return NULL;
8895 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008896 int _start_lineno = p->tokens[_mark]->lineno;
8897 UNUSED(_start_lineno); // Only used by EXTRA macro
8898 int _start_col_offset = p->tokens[_mark]->col_offset;
8899 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008900 { // starred_expression [',' args]
8901 expr_ty a;
8902 void *b;
8903 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008904 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008905 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008906 (b = _tmp_107_rule(p), 1) // [',' args]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008907 )
8908 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008909 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8910 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008911 return NULL;
8912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008913 int _end_lineno = _token->end_lineno;
8914 UNUSED(_end_lineno); // Only used by EXTRA macro
8915 int _end_col_offset = _token->end_col_offset;
8916 UNUSED(_end_col_offset); // Only used by EXTRA macro
8917 _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 );
8918 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008919 p->error_indicator = 1;
8920 return NULL;
8921 }
8922 goto done;
8923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008924 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008925 }
8926 { // kwargs
8927 asdl_seq* a;
8928 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008929 (a = kwargs_rule(p)) // kwargs
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008930 )
8931 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008932 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8933 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008934 return NULL;
8935 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008936 int _end_lineno = _token->end_lineno;
8937 UNUSED(_end_lineno); // Only used by EXTRA macro
8938 int _end_col_offset = _token->end_col_offset;
8939 UNUSED(_end_col_offset); // Only used by EXTRA macro
8940 _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 );
8941 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008942 p->error_indicator = 1;
8943 return NULL;
8944 }
8945 goto done;
8946 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008947 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008948 }
8949 { // named_expression [',' args]
8950 expr_ty a;
8951 void *b;
8952 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008953 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008954 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008955 (b = _tmp_108_rule(p), 1) // [',' args]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008956 )
8957 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008958 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8959 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008960 return NULL;
8961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008962 int _end_lineno = _token->end_lineno;
8963 UNUSED(_end_lineno); // Only used by EXTRA macro
8964 int _end_col_offset = _token->end_col_offset;
8965 UNUSED(_end_col_offset); // Only used by EXTRA macro
8966 _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 );
8967 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008968 p->error_indicator = 1;
8969 return NULL;
8970 }
8971 goto done;
8972 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008973 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008975 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008976 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008977 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008978}
8979
8980// kwargs:
8981// | ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
8982// | ','.kwarg_or_starred+
8983// | ','.kwarg_or_double_starred+
8984static asdl_seq*
8985kwargs_rule(Parser *p)
8986{
8987 if (p->error_indicator) {
8988 return NULL;
8989 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008990 asdl_seq* _res = NULL;
8991 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008992 { // ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008993 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008994 asdl_seq * a;
8995 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008996 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008997 (a = _gather_109_rule(p)) // ','.kwarg_or_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008998 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008999 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009000 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009001 (b = _gather_111_rule(p)) // ','.kwarg_or_double_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009002 )
9003 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009004 _res = _PyPegen_join_sequences ( p , a , b );
9005 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009006 p->error_indicator = 1;
9007 return NULL;
9008 }
9009 goto done;
9010 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009011 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009012 }
9013 { // ','.kwarg_or_starred+
Guido van Rossum3941d972020-05-01 09:42:03 -07009014 asdl_seq * _gather_113_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009015 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009016 (_gather_113_var = _gather_113_rule(p)) // ','.kwarg_or_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009017 )
9018 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009019 _res = _gather_113_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009020 goto done;
9021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009022 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009023 }
9024 { // ','.kwarg_or_double_starred+
Guido van Rossum3941d972020-05-01 09:42:03 -07009025 asdl_seq * _gather_115_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009026 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009027 (_gather_115_var = _gather_115_rule(p)) // ','.kwarg_or_double_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009028 )
9029 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009030 _res = _gather_115_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009031 goto done;
9032 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009033 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009035 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009036 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009037 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009038}
9039
9040// starred_expression: '*' expression
9041static expr_ty
9042starred_expression_rule(Parser *p)
9043{
9044 if (p->error_indicator) {
9045 return NULL;
9046 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009047 expr_ty _res = NULL;
9048 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009049 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9050 p->error_indicator = 1;
9051 return NULL;
9052 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009053 int _start_lineno = p->tokens[_mark]->lineno;
9054 UNUSED(_start_lineno); // Only used by EXTRA macro
9055 int _start_col_offset = p->tokens[_mark]->col_offset;
9056 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009057 { // '*' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009058 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009059 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009060 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009061 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009062 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009063 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009064 )
9065 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009066 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9067 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009068 return NULL;
9069 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009070 int _end_lineno = _token->end_lineno;
9071 UNUSED(_end_lineno); // Only used by EXTRA macro
9072 int _end_col_offset = _token->end_col_offset;
9073 UNUSED(_end_col_offset); // Only used by EXTRA macro
9074 _res = _Py_Starred ( a , Load , EXTRA );
9075 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009076 p->error_indicator = 1;
9077 return NULL;
9078 }
9079 goto done;
9080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009081 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009083 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009084 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009085 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009086}
9087
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009088// kwarg_or_starred: NAME '=' expression | starred_expression | invalid_kwarg
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009089static KeywordOrStarred*
9090kwarg_or_starred_rule(Parser *p)
9091{
9092 if (p->error_indicator) {
9093 return NULL;
9094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009095 KeywordOrStarred* _res = NULL;
9096 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009097 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9098 p->error_indicator = 1;
9099 return NULL;
9100 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009101 int _start_lineno = p->tokens[_mark]->lineno;
9102 UNUSED(_start_lineno); // Only used by EXTRA macro
9103 int _start_col_offset = p->tokens[_mark]->col_offset;
9104 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009105 { // NAME '=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009106 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009107 expr_ty a;
9108 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009109 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009110 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009111 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009112 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009113 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009114 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009115 )
9116 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009117 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9118 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009119 return NULL;
9120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009121 int _end_lineno = _token->end_lineno;
9122 UNUSED(_end_lineno); // Only used by EXTRA macro
9123 int _end_col_offset = _token->end_col_offset;
9124 UNUSED(_end_col_offset); // Only used by EXTRA macro
9125 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
9126 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009127 p->error_indicator = 1;
9128 return NULL;
9129 }
9130 goto done;
9131 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009132 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009133 }
9134 { // starred_expression
9135 expr_ty a;
9136 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009137 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009138 )
9139 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009140 _res = _PyPegen_keyword_or_starred ( p , a , 0 );
9141 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009142 p->error_indicator = 1;
9143 return NULL;
9144 }
9145 goto done;
9146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009147 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009148 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009149 { // invalid_kwarg
9150 void *invalid_kwarg_var;
9151 if (
9152 (invalid_kwarg_var = invalid_kwarg_rule(p)) // invalid_kwarg
9153 )
9154 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009155 _res = invalid_kwarg_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009156 goto done;
9157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009158 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009159 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009160 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009161 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009162 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009163}
9164
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009165// kwarg_or_double_starred: NAME '=' expression | '**' expression | invalid_kwarg
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009166static KeywordOrStarred*
9167kwarg_or_double_starred_rule(Parser *p)
9168{
9169 if (p->error_indicator) {
9170 return NULL;
9171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009172 KeywordOrStarred* _res = NULL;
9173 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009174 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9175 p->error_indicator = 1;
9176 return NULL;
9177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009178 int _start_lineno = p->tokens[_mark]->lineno;
9179 UNUSED(_start_lineno); // Only used by EXTRA macro
9180 int _start_col_offset = p->tokens[_mark]->col_offset;
9181 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009182 { // NAME '=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009183 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009184 expr_ty a;
9185 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009186 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009187 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009188 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009189 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009190 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009191 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009192 )
9193 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009194 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9195 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009196 return NULL;
9197 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009198 int _end_lineno = _token->end_lineno;
9199 UNUSED(_end_lineno); // Only used by EXTRA macro
9200 int _end_col_offset = _token->end_col_offset;
9201 UNUSED(_end_col_offset); // Only used by EXTRA macro
9202 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
9203 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009204 p->error_indicator = 1;
9205 return NULL;
9206 }
9207 goto done;
9208 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009209 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009210 }
9211 { // '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009212 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009213 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009214 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009215 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009216 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009217 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009218 )
9219 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009220 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9221 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009222 return NULL;
9223 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009224 int _end_lineno = _token->end_lineno;
9225 UNUSED(_end_lineno); // Only used by EXTRA macro
9226 int _end_col_offset = _token->end_col_offset;
9227 UNUSED(_end_col_offset); // Only used by EXTRA macro
9228 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( NULL , a , EXTRA ) ) , 1 );
9229 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009230 p->error_indicator = 1;
9231 return NULL;
9232 }
9233 goto done;
9234 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009235 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009236 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009237 { // invalid_kwarg
9238 void *invalid_kwarg_var;
9239 if (
9240 (invalid_kwarg_var = invalid_kwarg_rule(p)) // invalid_kwarg
9241 )
9242 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009243 _res = invalid_kwarg_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009244 goto done;
9245 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009246 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009248 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009249 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009250 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009251}
9252
9253// star_targets: star_target !',' | star_target ((',' star_target))* ','?
9254static expr_ty
9255star_targets_rule(Parser *p)
9256{
9257 if (p->error_indicator) {
9258 return NULL;
9259 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009260 expr_ty _res = NULL;
9261 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009262 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9263 p->error_indicator = 1;
9264 return NULL;
9265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009266 int _start_lineno = p->tokens[_mark]->lineno;
9267 UNUSED(_start_lineno); // Only used by EXTRA macro
9268 int _start_col_offset = p->tokens[_mark]->col_offset;
9269 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009270 { // star_target !','
9271 expr_ty a;
9272 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009273 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009274 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009275 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009276 )
9277 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009278 _res = a;
9279 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009280 p->error_indicator = 1;
9281 return NULL;
9282 }
9283 goto done;
9284 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009285 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009286 }
9287 { // star_target ((',' star_target))* ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009288 void *_opt_var;
9289 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009290 expr_ty a;
9291 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009292 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009293 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009294 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009295 (b = _loop0_117_rule(p)) // ((',' star_target))*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009296 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009297 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009298 )
9299 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009300 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9301 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009302 return NULL;
9303 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009304 int _end_lineno = _token->end_lineno;
9305 UNUSED(_end_lineno); // Only used by EXTRA macro
9306 int _end_col_offset = _token->end_col_offset;
9307 UNUSED(_end_col_offset); // Only used by EXTRA macro
9308 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Store , EXTRA );
9309 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009310 p->error_indicator = 1;
9311 return NULL;
9312 }
9313 goto done;
9314 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009315 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009317 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009318 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009319 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009320}
9321
9322// star_targets_seq: ','.star_target+ ','?
9323static asdl_seq*
9324star_targets_seq_rule(Parser *p)
9325{
9326 if (p->error_indicator) {
9327 return NULL;
9328 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009329 asdl_seq* _res = NULL;
9330 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009331 { // ','.star_target+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009332 void *_opt_var;
9333 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009334 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009335 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009336 (a = _gather_118_rule(p)) // ','.star_target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009337 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009338 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009339 )
9340 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009341 _res = a;
9342 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009343 p->error_indicator = 1;
9344 return NULL;
9345 }
9346 goto done;
9347 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009348 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009349 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009350 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009351 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009352 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009353}
9354
9355// star_target:
9356// | '*' (!'*' star_target)
9357// | t_primary '.' NAME !t_lookahead
9358// | t_primary '[' slices ']' !t_lookahead
9359// | star_atom
9360static expr_ty
9361star_target_rule(Parser *p)
9362{
9363 if (p->error_indicator) {
9364 return NULL;
9365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009366 expr_ty _res = NULL;
9367 if (_PyPegen_is_memoized(p, star_target_type, &_res))
9368 return _res;
9369 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009370 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9371 p->error_indicator = 1;
9372 return NULL;
9373 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009374 int _start_lineno = p->tokens[_mark]->lineno;
9375 UNUSED(_start_lineno); // Only used by EXTRA macro
9376 int _start_col_offset = p->tokens[_mark]->col_offset;
9377 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009378 { // '*' (!'*' star_target)
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009379 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009380 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009381 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009382 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009383 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009384 (a = _tmp_120_rule(p)) // !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009385 )
9386 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009387 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9388 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009389 return NULL;
9390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009391 int _end_lineno = _token->end_lineno;
9392 UNUSED(_end_lineno); // Only used by EXTRA macro
9393 int _end_col_offset = _token->end_col_offset;
9394 UNUSED(_end_col_offset); // Only used by EXTRA macro
9395 _res = _Py_Starred ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , Store , EXTRA );
9396 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009397 p->error_indicator = 1;
9398 return NULL;
9399 }
9400 goto done;
9401 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009402 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009403 }
9404 { // t_primary '.' NAME !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009405 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009406 expr_ty a;
9407 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009408 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009409 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009410 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009411 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009412 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009413 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009414 &&
9415 _PyPegen_lookahead(0, t_lookahead_rule, p)
9416 )
9417 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009418 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9419 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009420 return NULL;
9421 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009422 int _end_lineno = _token->end_lineno;
9423 UNUSED(_end_lineno); // Only used by EXTRA macro
9424 int _end_col_offset = _token->end_col_offset;
9425 UNUSED(_end_col_offset); // Only used by EXTRA macro
9426 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
9427 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009428 p->error_indicator = 1;
9429 return NULL;
9430 }
9431 goto done;
9432 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009433 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009434 }
9435 { // t_primary '[' slices ']' !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009436 Token * _literal;
9437 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009438 expr_ty a;
9439 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009440 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009441 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009442 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009443 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009444 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009445 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009446 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009447 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009448 &&
9449 _PyPegen_lookahead(0, t_lookahead_rule, p)
9450 )
9451 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009452 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9453 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009454 return NULL;
9455 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009456 int _end_lineno = _token->end_lineno;
9457 UNUSED(_end_lineno); // Only used by EXTRA macro
9458 int _end_col_offset = _token->end_col_offset;
9459 UNUSED(_end_col_offset); // Only used by EXTRA macro
9460 _res = _Py_Subscript ( a , b , Store , EXTRA );
9461 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009462 p->error_indicator = 1;
9463 return NULL;
9464 }
9465 goto done;
9466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009467 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009468 }
9469 { // star_atom
9470 expr_ty star_atom_var;
9471 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009472 (star_atom_var = star_atom_rule(p)) // star_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009473 )
9474 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009475 _res = star_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009476 goto done;
9477 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009478 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009480 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009481 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009482 _PyPegen_insert_memo(p, _mark, star_target_type, _res);
9483 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009484}
9485
9486// star_atom:
9487// | NAME
9488// | '(' star_target ')'
9489// | '(' star_targets_seq? ')'
9490// | '[' star_targets_seq? ']'
9491static expr_ty
9492star_atom_rule(Parser *p)
9493{
9494 if (p->error_indicator) {
9495 return NULL;
9496 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009497 expr_ty _res = NULL;
9498 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009499 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9500 p->error_indicator = 1;
9501 return NULL;
9502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009503 int _start_lineno = p->tokens[_mark]->lineno;
9504 UNUSED(_start_lineno); // Only used by EXTRA macro
9505 int _start_col_offset = p->tokens[_mark]->col_offset;
9506 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009507 { // NAME
9508 expr_ty a;
9509 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009510 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009511 )
9512 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009513 _res = _PyPegen_set_expr_context ( p , a , Store );
9514 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009515 p->error_indicator = 1;
9516 return NULL;
9517 }
9518 goto done;
9519 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009520 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009521 }
9522 { // '(' star_target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009523 Token * _literal;
9524 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009525 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009526 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009527 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009528 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009529 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009530 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009531 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009532 )
9533 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009534 _res = _PyPegen_set_expr_context ( p , a , Store );
9535 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009536 p->error_indicator = 1;
9537 return NULL;
9538 }
9539 goto done;
9540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009541 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009542 }
9543 { // '(' star_targets_seq? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009544 Token * _literal;
9545 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009546 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009547 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009548 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009549 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009550 (a = star_targets_seq_rule(p), 1) // star_targets_seq?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009551 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009552 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009553 )
9554 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009555 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9556 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009557 return NULL;
9558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009559 int _end_lineno = _token->end_lineno;
9560 UNUSED(_end_lineno); // Only used by EXTRA macro
9561 int _end_col_offset = _token->end_col_offset;
9562 UNUSED(_end_col_offset); // Only used by EXTRA macro
9563 _res = _Py_Tuple ( a , Store , EXTRA );
9564 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009565 p->error_indicator = 1;
9566 return NULL;
9567 }
9568 goto done;
9569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009570 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009571 }
9572 { // '[' star_targets_seq? ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009573 Token * _literal;
9574 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009575 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009576 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009577 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009578 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009579 (a = star_targets_seq_rule(p), 1) // star_targets_seq?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009580 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009581 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009582 )
9583 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009584 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9585 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009586 return NULL;
9587 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009588 int _end_lineno = _token->end_lineno;
9589 UNUSED(_end_lineno); // Only used by EXTRA macro
9590 int _end_col_offset = _token->end_col_offset;
9591 UNUSED(_end_col_offset); // Only used by EXTRA macro
9592 _res = _Py_List ( a , Store , EXTRA );
9593 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009594 p->error_indicator = 1;
9595 return NULL;
9596 }
9597 goto done;
9598 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009599 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009601 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009602 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009603 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009604}
9605
9606// inside_paren_ann_assign_target:
9607// | ann_assign_subscript_attribute_target
9608// | NAME
9609// | '(' inside_paren_ann_assign_target ')'
9610static expr_ty
9611inside_paren_ann_assign_target_rule(Parser *p)
9612{
9613 if (p->error_indicator) {
9614 return NULL;
9615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009616 expr_ty _res = NULL;
9617 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009618 { // ann_assign_subscript_attribute_target
9619 expr_ty ann_assign_subscript_attribute_target_var;
9620 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009621 (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 +01009622 )
9623 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009624 _res = ann_assign_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009625 goto done;
9626 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009627 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009628 }
9629 { // NAME
9630 expr_ty a;
9631 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009632 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009633 )
9634 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009635 _res = _PyPegen_set_expr_context ( p , a , Store );
9636 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009637 p->error_indicator = 1;
9638 return NULL;
9639 }
9640 goto done;
9641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009642 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009643 }
9644 { // '(' inside_paren_ann_assign_target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009645 Token * _literal;
9646 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009647 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009648 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009649 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009650 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009651 (a = inside_paren_ann_assign_target_rule(p)) // inside_paren_ann_assign_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009652 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009653 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009654 )
9655 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009656 _res = a;
9657 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009658 p->error_indicator = 1;
9659 return NULL;
9660 }
9661 goto done;
9662 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009663 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009664 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009665 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009666 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009667 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009668}
9669
9670// ann_assign_subscript_attribute_target:
9671// | t_primary '.' NAME !t_lookahead
9672// | t_primary '[' slices ']' !t_lookahead
9673static expr_ty
9674ann_assign_subscript_attribute_target_rule(Parser *p)
9675{
9676 if (p->error_indicator) {
9677 return NULL;
9678 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009679 expr_ty _res = NULL;
9680 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009681 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9682 p->error_indicator = 1;
9683 return NULL;
9684 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009685 int _start_lineno = p->tokens[_mark]->lineno;
9686 UNUSED(_start_lineno); // Only used by EXTRA macro
9687 int _start_col_offset = p->tokens[_mark]->col_offset;
9688 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009689 { // t_primary '.' NAME !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009690 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009691 expr_ty a;
9692 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009693 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009694 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009695 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009696 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009697 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009698 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009699 &&
9700 _PyPegen_lookahead(0, t_lookahead_rule, p)
9701 )
9702 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009703 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9704 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009705 return NULL;
9706 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009707 int _end_lineno = _token->end_lineno;
9708 UNUSED(_end_lineno); // Only used by EXTRA macro
9709 int _end_col_offset = _token->end_col_offset;
9710 UNUSED(_end_col_offset); // Only used by EXTRA macro
9711 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
9712 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009713 p->error_indicator = 1;
9714 return NULL;
9715 }
9716 goto done;
9717 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009718 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009719 }
9720 { // t_primary '[' slices ']' !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009721 Token * _literal;
9722 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009723 expr_ty a;
9724 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009725 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009726 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009727 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009728 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009729 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009730 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009731 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009732 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009733 &&
9734 _PyPegen_lookahead(0, t_lookahead_rule, p)
9735 )
9736 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009737 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9738 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009739 return NULL;
9740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009741 int _end_lineno = _token->end_lineno;
9742 UNUSED(_end_lineno); // Only used by EXTRA macro
9743 int _end_col_offset = _token->end_col_offset;
9744 UNUSED(_end_col_offset); // Only used by EXTRA macro
9745 _res = _Py_Subscript ( a , b , Store , EXTRA );
9746 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009747 p->error_indicator = 1;
9748 return NULL;
9749 }
9750 goto done;
9751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009752 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009753 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009754 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009755 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009756 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009757}
9758
9759// del_targets: ','.del_target+ ','?
9760static asdl_seq*
9761del_targets_rule(Parser *p)
9762{
9763 if (p->error_indicator) {
9764 return NULL;
9765 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009766 asdl_seq* _res = NULL;
9767 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009768 { // ','.del_target+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009769 void *_opt_var;
9770 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009771 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009772 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009773 (a = _gather_121_rule(p)) // ','.del_target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009774 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009775 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009776 )
9777 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009778 _res = a;
9779 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009780 p->error_indicator = 1;
9781 return NULL;
9782 }
9783 goto done;
9784 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009785 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009786 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009787 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009788 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009789 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009790}
9791
9792// del_target:
Shantanu27c0d9b2020-05-11 14:53:58 -07009793// | t_primary '.' NAME &del_target_end
9794// | t_primary '[' slices ']' &del_target_end
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009795// | del_t_atom
9796static expr_ty
9797del_target_rule(Parser *p)
9798{
9799 if (p->error_indicator) {
9800 return NULL;
9801 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009802 expr_ty _res = NULL;
9803 if (_PyPegen_is_memoized(p, del_target_type, &_res))
9804 return _res;
9805 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009806 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9807 p->error_indicator = 1;
9808 return NULL;
9809 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009810 int _start_lineno = p->tokens[_mark]->lineno;
9811 UNUSED(_start_lineno); // Only used by EXTRA macro
9812 int _start_col_offset = p->tokens[_mark]->col_offset;
9813 UNUSED(_start_col_offset); // Only used by EXTRA macro
Shantanu27c0d9b2020-05-11 14:53:58 -07009814 { // t_primary '.' NAME &del_target_end
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009815 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009816 expr_ty a;
9817 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009818 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009819 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009820 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009821 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009822 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009823 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009824 &&
Shantanu27c0d9b2020-05-11 14:53:58 -07009825 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009826 )
9827 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009828 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9829 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009830 return NULL;
9831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009832 int _end_lineno = _token->end_lineno;
9833 UNUSED(_end_lineno); // Only used by EXTRA macro
9834 int _end_col_offset = _token->end_col_offset;
9835 UNUSED(_end_col_offset); // Only used by EXTRA macro
9836 _res = _Py_Attribute ( a , b -> v . Name . id , Del , EXTRA );
9837 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009838 p->error_indicator = 1;
9839 return NULL;
9840 }
9841 goto done;
9842 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009843 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009844 }
Shantanu27c0d9b2020-05-11 14:53:58 -07009845 { // t_primary '[' slices ']' &del_target_end
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009846 Token * _literal;
9847 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009848 expr_ty a;
9849 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009850 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009851 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009852 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009853 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009854 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009855 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009856 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009857 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009858 &&
Shantanu27c0d9b2020-05-11 14:53:58 -07009859 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009860 )
9861 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009862 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9863 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009864 return NULL;
9865 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009866 int _end_lineno = _token->end_lineno;
9867 UNUSED(_end_lineno); // Only used by EXTRA macro
9868 int _end_col_offset = _token->end_col_offset;
9869 UNUSED(_end_col_offset); // Only used by EXTRA macro
9870 _res = _Py_Subscript ( a , b , Del , EXTRA );
9871 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009872 p->error_indicator = 1;
9873 return NULL;
9874 }
9875 goto done;
9876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009877 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009878 }
9879 { // del_t_atom
9880 expr_ty del_t_atom_var;
9881 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009882 (del_t_atom_var = del_t_atom_rule(p)) // del_t_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009883 )
9884 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009885 _res = del_t_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009886 goto done;
9887 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009888 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009889 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009890 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009891 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009892 _PyPegen_insert_memo(p, _mark, del_target_type, _res);
9893 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009894}
9895
Shantanu27c0d9b2020-05-11 14:53:58 -07009896// del_t_atom:
9897// | NAME &del_target_end
9898// | '(' del_target ')'
9899// | '(' del_targets? ')'
9900// | '[' del_targets? ']'
9901// | invalid_del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009902static expr_ty
9903del_t_atom_rule(Parser *p)
9904{
9905 if (p->error_indicator) {
9906 return NULL;
9907 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009908 expr_ty _res = NULL;
9909 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009910 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9911 p->error_indicator = 1;
9912 return NULL;
9913 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009914 int _start_lineno = p->tokens[_mark]->lineno;
9915 UNUSED(_start_lineno); // Only used by EXTRA macro
9916 int _start_col_offset = p->tokens[_mark]->col_offset;
9917 UNUSED(_start_col_offset); // Only used by EXTRA macro
Shantanu27c0d9b2020-05-11 14:53:58 -07009918 { // NAME &del_target_end
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009919 expr_ty a;
9920 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009921 (a = _PyPegen_name_token(p)) // NAME
Shantanu27c0d9b2020-05-11 14:53:58 -07009922 &&
9923 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009924 )
9925 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009926 _res = _PyPegen_set_expr_context ( p , a , Del );
9927 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009928 p->error_indicator = 1;
9929 return NULL;
9930 }
9931 goto done;
9932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009933 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009934 }
9935 { // '(' del_target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009936 Token * _literal;
9937 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009938 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009939 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009940 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009941 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009942 (a = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009943 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009944 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009945 )
9946 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009947 _res = _PyPegen_set_expr_context ( p , a , Del );
9948 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009949 p->error_indicator = 1;
9950 return NULL;
9951 }
9952 goto done;
9953 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009954 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009955 }
9956 { // '(' del_targets? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009957 Token * _literal;
9958 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009959 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009960 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009961 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009962 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009963 (a = del_targets_rule(p), 1) // del_targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009964 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009965 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009966 )
9967 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009968 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9969 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009970 return NULL;
9971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009972 int _end_lineno = _token->end_lineno;
9973 UNUSED(_end_lineno); // Only used by EXTRA macro
9974 int _end_col_offset = _token->end_col_offset;
9975 UNUSED(_end_col_offset); // Only used by EXTRA macro
9976 _res = _Py_Tuple ( a , Del , EXTRA );
9977 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009978 p->error_indicator = 1;
9979 return NULL;
9980 }
9981 goto done;
9982 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009983 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009984 }
9985 { // '[' del_targets? ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009986 Token * _literal;
9987 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009988 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009989 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009990 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009991 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009992 (a = del_targets_rule(p), 1) // del_targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009993 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009994 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009995 )
9996 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009997 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9998 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009999 return NULL;
10000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010001 int _end_lineno = _token->end_lineno;
10002 UNUSED(_end_lineno); // Only used by EXTRA macro
10003 int _end_col_offset = _token->end_col_offset;
10004 UNUSED(_end_col_offset); // Only used by EXTRA macro
10005 _res = _Py_List ( a , Del , EXTRA );
10006 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010007 p->error_indicator = 1;
10008 return NULL;
10009 }
10010 goto done;
10011 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010012 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010013 }
Shantanu27c0d9b2020-05-11 14:53:58 -070010014 { // invalid_del_target
10015 void *invalid_del_target_var;
10016 if (
10017 (invalid_del_target_var = invalid_del_target_rule(p)) // invalid_del_target
10018 )
10019 {
10020 _res = invalid_del_target_var;
10021 goto done;
10022 }
10023 p->mark = _mark;
10024 }
10025 _res = NULL;
10026 done:
10027 return _res;
10028}
10029
10030// del_target_end: ')' | ']' | ',' | ';' | NEWLINE
10031static void *
10032del_target_end_rule(Parser *p)
10033{
10034 if (p->error_indicator) {
10035 return NULL;
10036 }
10037 void * _res = NULL;
10038 int _mark = p->mark;
10039 { // ')'
10040 Token * _literal;
10041 if (
10042 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
10043 )
10044 {
10045 _res = _literal;
10046 goto done;
10047 }
10048 p->mark = _mark;
10049 }
10050 { // ']'
10051 Token * _literal;
10052 if (
10053 (_literal = _PyPegen_expect_token(p, 10)) // token=']'
10054 )
10055 {
10056 _res = _literal;
10057 goto done;
10058 }
10059 p->mark = _mark;
10060 }
10061 { // ','
10062 Token * _literal;
10063 if (
10064 (_literal = _PyPegen_expect_token(p, 12)) // token=','
10065 )
10066 {
10067 _res = _literal;
10068 goto done;
10069 }
10070 p->mark = _mark;
10071 }
10072 { // ';'
10073 Token * _literal;
10074 if (
10075 (_literal = _PyPegen_expect_token(p, 13)) // token=';'
10076 )
10077 {
10078 _res = _literal;
10079 goto done;
10080 }
10081 p->mark = _mark;
10082 }
10083 { // NEWLINE
10084 Token * newline_var;
10085 if (
10086 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
10087 )
10088 {
10089 _res = newline_var;
10090 goto done;
10091 }
10092 p->mark = _mark;
10093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010094 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010095 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010096 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010097}
10098
10099// targets: ','.target+ ','?
10100static asdl_seq*
10101targets_rule(Parser *p)
10102{
10103 if (p->error_indicator) {
10104 return NULL;
10105 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010106 asdl_seq* _res = NULL;
10107 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010108 { // ','.target+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010109 void *_opt_var;
10110 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010111 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010112 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010113 (a = _gather_123_rule(p)) // ','.target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010114 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010115 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010116 )
10117 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010118 _res = a;
10119 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010120 p->error_indicator = 1;
10121 return NULL;
10122 }
10123 goto done;
10124 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010125 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010126 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010127 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010128 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010129 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010130}
10131
10132// target:
10133// | t_primary '.' NAME !t_lookahead
10134// | t_primary '[' slices ']' !t_lookahead
10135// | t_atom
10136static expr_ty
10137target_rule(Parser *p)
10138{
10139 if (p->error_indicator) {
10140 return NULL;
10141 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010142 expr_ty _res = NULL;
10143 if (_PyPegen_is_memoized(p, target_type, &_res))
10144 return _res;
10145 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010146 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10147 p->error_indicator = 1;
10148 return NULL;
10149 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010150 int _start_lineno = p->tokens[_mark]->lineno;
10151 UNUSED(_start_lineno); // Only used by EXTRA macro
10152 int _start_col_offset = p->tokens[_mark]->col_offset;
10153 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010154 { // t_primary '.' NAME !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010155 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010156 expr_ty a;
10157 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010158 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010159 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010160 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010161 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010162 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010163 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010164 &&
10165 _PyPegen_lookahead(0, t_lookahead_rule, p)
10166 )
10167 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010168 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10169 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010170 return NULL;
10171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010172 int _end_lineno = _token->end_lineno;
10173 UNUSED(_end_lineno); // Only used by EXTRA macro
10174 int _end_col_offset = _token->end_col_offset;
10175 UNUSED(_end_col_offset); // Only used by EXTRA macro
10176 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
10177 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010178 p->error_indicator = 1;
10179 return NULL;
10180 }
10181 goto done;
10182 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010183 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010184 }
10185 { // t_primary '[' slices ']' !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010186 Token * _literal;
10187 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010188 expr_ty a;
10189 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010190 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010191 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010192 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010193 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010194 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010195 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010196 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010197 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010198 &&
10199 _PyPegen_lookahead(0, t_lookahead_rule, p)
10200 )
10201 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010202 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10203 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010204 return NULL;
10205 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010206 int _end_lineno = _token->end_lineno;
10207 UNUSED(_end_lineno); // Only used by EXTRA macro
10208 int _end_col_offset = _token->end_col_offset;
10209 UNUSED(_end_col_offset); // Only used by EXTRA macro
10210 _res = _Py_Subscript ( a , b , Store , EXTRA );
10211 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010212 p->error_indicator = 1;
10213 return NULL;
10214 }
10215 goto done;
10216 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010217 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010218 }
10219 { // t_atom
10220 expr_ty t_atom_var;
10221 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010222 (t_atom_var = t_atom_rule(p)) // t_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010223 )
10224 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010225 _res = t_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010226 goto done;
10227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010228 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010229 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010230 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010231 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010232 _PyPegen_insert_memo(p, _mark, target_type, _res);
10233 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010234}
10235
10236// Left-recursive
10237// t_primary:
10238// | t_primary '.' NAME &t_lookahead
10239// | t_primary '[' slices ']' &t_lookahead
10240// | t_primary genexp &t_lookahead
10241// | t_primary '(' arguments? ')' &t_lookahead
10242// | atom &t_lookahead
10243static expr_ty t_primary_raw(Parser *);
10244static expr_ty
10245t_primary_rule(Parser *p)
10246{
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010247 expr_ty _res = NULL;
10248 if (_PyPegen_is_memoized(p, t_primary_type, &_res))
10249 return _res;
10250 int _mark = p->mark;
10251 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010252 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010253 int tmpvar_8 = _PyPegen_update_memo(p, _mark, t_primary_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010254 if (tmpvar_8) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010255 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010256 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010257 p->mark = _mark;
10258 void *_raw = t_primary_raw(p);
10259 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010260 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010261 _resmark = p->mark;
10262 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010264 p->mark = _resmark;
10265 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010266}
10267static expr_ty
10268t_primary_raw(Parser *p)
10269{
10270 if (p->error_indicator) {
10271 return NULL;
10272 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010273 expr_ty _res = NULL;
10274 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010275 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10276 p->error_indicator = 1;
10277 return NULL;
10278 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010279 int _start_lineno = p->tokens[_mark]->lineno;
10280 UNUSED(_start_lineno); // Only used by EXTRA macro
10281 int _start_col_offset = p->tokens[_mark]->col_offset;
10282 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010283 { // t_primary '.' NAME &t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010284 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010285 expr_ty a;
10286 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010287 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010288 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010289 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010290 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010291 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010292 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010293 &&
10294 _PyPegen_lookahead(1, t_lookahead_rule, p)
10295 )
10296 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010297 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10298 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010299 return NULL;
10300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010301 int _end_lineno = _token->end_lineno;
10302 UNUSED(_end_lineno); // Only used by EXTRA macro
10303 int _end_col_offset = _token->end_col_offset;
10304 UNUSED(_end_col_offset); // Only used by EXTRA macro
10305 _res = _Py_Attribute ( a , b -> v . Name . id , Load , EXTRA );
10306 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010307 p->error_indicator = 1;
10308 return NULL;
10309 }
10310 goto done;
10311 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010312 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010313 }
10314 { // t_primary '[' slices ']' &t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010315 Token * _literal;
10316 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010317 expr_ty a;
10318 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010319 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010320 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010321 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010322 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010323 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010324 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010325 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010326 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010327 &&
10328 _PyPegen_lookahead(1, t_lookahead_rule, p)
10329 )
10330 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010331 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10332 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010333 return NULL;
10334 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010335 int _end_lineno = _token->end_lineno;
10336 UNUSED(_end_lineno); // Only used by EXTRA macro
10337 int _end_col_offset = _token->end_col_offset;
10338 UNUSED(_end_col_offset); // Only used by EXTRA macro
10339 _res = _Py_Subscript ( a , b , Load , EXTRA );
10340 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010341 p->error_indicator = 1;
10342 return NULL;
10343 }
10344 goto done;
10345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010346 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010347 }
10348 { // t_primary genexp &t_lookahead
10349 expr_ty a;
10350 expr_ty b;
10351 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010352 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010353 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010354 (b = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010355 &&
10356 _PyPegen_lookahead(1, t_lookahead_rule, p)
10357 )
10358 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010359 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10360 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010361 return NULL;
10362 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010363 int _end_lineno = _token->end_lineno;
10364 UNUSED(_end_lineno); // Only used by EXTRA macro
10365 int _end_col_offset = _token->end_col_offset;
10366 UNUSED(_end_col_offset); // Only used by EXTRA macro
10367 _res = _Py_Call ( a , CHECK ( _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
10368 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010369 p->error_indicator = 1;
10370 return NULL;
10371 }
10372 goto done;
10373 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010374 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010375 }
10376 { // t_primary '(' arguments? ')' &t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010377 Token * _literal;
10378 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010379 expr_ty a;
10380 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010381 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010382 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010383 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010384 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010385 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010386 (b = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010387 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010388 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010389 &&
10390 _PyPegen_lookahead(1, t_lookahead_rule, p)
10391 )
10392 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010393 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10394 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010395 return NULL;
10396 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010397 int _end_lineno = _token->end_lineno;
10398 UNUSED(_end_lineno); // Only used by EXTRA macro
10399 int _end_col_offset = _token->end_col_offset;
10400 UNUSED(_end_col_offset); // Only used by EXTRA macro
10401 _res = _Py_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
10402 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010403 p->error_indicator = 1;
10404 return NULL;
10405 }
10406 goto done;
10407 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010408 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010409 }
10410 { // atom &t_lookahead
10411 expr_ty a;
10412 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010413 (a = atom_rule(p)) // atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010414 &&
10415 _PyPegen_lookahead(1, t_lookahead_rule, p)
10416 )
10417 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010418 _res = a;
10419 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010420 p->error_indicator = 1;
10421 return NULL;
10422 }
10423 goto done;
10424 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010425 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010426 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010427 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010428 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010429 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010430}
10431
10432// t_lookahead: '(' | '[' | '.'
10433static void *
10434t_lookahead_rule(Parser *p)
10435{
10436 if (p->error_indicator) {
10437 return NULL;
10438 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010439 void * _res = NULL;
10440 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010441 { // '('
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010442 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010443 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010444 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010445 )
10446 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010447 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010448 goto done;
10449 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010450 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010451 }
10452 { // '['
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010453 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010454 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010455 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010456 )
10457 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010458 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010459 goto done;
10460 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010461 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010462 }
10463 { // '.'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010464 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010465 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010466 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010467 )
10468 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010469 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010470 goto done;
10471 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010472 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010473 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010474 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010475 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010476 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010477}
10478
10479// t_atom: NAME | '(' target ')' | '(' targets? ')' | '[' targets? ']'
10480static expr_ty
10481t_atom_rule(Parser *p)
10482{
10483 if (p->error_indicator) {
10484 return NULL;
10485 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010486 expr_ty _res = NULL;
10487 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010488 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10489 p->error_indicator = 1;
10490 return NULL;
10491 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010492 int _start_lineno = p->tokens[_mark]->lineno;
10493 UNUSED(_start_lineno); // Only used by EXTRA macro
10494 int _start_col_offset = p->tokens[_mark]->col_offset;
10495 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010496 { // NAME
10497 expr_ty a;
10498 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010499 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010500 )
10501 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010502 _res = _PyPegen_set_expr_context ( p , a , Store );
10503 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010504 p->error_indicator = 1;
10505 return NULL;
10506 }
10507 goto done;
10508 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010509 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010510 }
10511 { // '(' target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010512 Token * _literal;
10513 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010514 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010515 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010516 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010517 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010518 (a = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010519 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010520 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010521 )
10522 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010523 _res = _PyPegen_set_expr_context ( p , a , Store );
10524 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010525 p->error_indicator = 1;
10526 return NULL;
10527 }
10528 goto done;
10529 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010530 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010531 }
10532 { // '(' targets? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010533 Token * _literal;
10534 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010535 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010536 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010537 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010538 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010539 (b = targets_rule(p), 1) // targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010540 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010541 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010542 )
10543 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010544 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10545 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010546 return NULL;
10547 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010548 int _end_lineno = _token->end_lineno;
10549 UNUSED(_end_lineno); // Only used by EXTRA macro
10550 int _end_col_offset = _token->end_col_offset;
10551 UNUSED(_end_col_offset); // Only used by EXTRA macro
10552 _res = _Py_Tuple ( b , Store , EXTRA );
10553 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010554 p->error_indicator = 1;
10555 return NULL;
10556 }
10557 goto done;
10558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010559 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010560 }
10561 { // '[' targets? ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010562 Token * _literal;
10563 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010564 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010565 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010566 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010567 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010568 (b = targets_rule(p), 1) // targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010569 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010570 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010571 )
10572 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010573 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10574 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010575 return NULL;
10576 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010577 int _end_lineno = _token->end_lineno;
10578 UNUSED(_end_lineno); // Only used by EXTRA macro
10579 int _end_col_offset = _token->end_col_offset;
10580 UNUSED(_end_col_offset); // Only used by EXTRA macro
10581 _res = _Py_List ( b , Store , EXTRA );
10582 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010583 p->error_indicator = 1;
10584 return NULL;
10585 }
10586 goto done;
10587 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010588 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010590 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010591 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010592 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010593}
10594
10595// incorrect_arguments:
10596// | args ',' '*'
10597// | expression for_if_clauses ',' [args | expression for_if_clauses]
10598// | args ',' args
10599static void *
10600incorrect_arguments_rule(Parser *p)
10601{
10602 if (p->error_indicator) {
10603 return NULL;
10604 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010605 void * _res = NULL;
10606 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010607 { // args ',' '*'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010608 Token * _literal;
10609 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010610 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010611 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010612 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010613 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010614 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010615 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010616 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010617 )
10618 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010619 _res = RAISE_SYNTAX_ERROR ( "iterable argument unpacking follows keyword argument unpacking" );
10620 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010621 p->error_indicator = 1;
10622 return NULL;
10623 }
10624 goto done;
10625 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010626 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010627 }
10628 { // expression for_if_clauses ',' [args | expression for_if_clauses]
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010629 Token * _literal;
10630 void *_opt_var;
10631 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010632 expr_ty expression_var;
10633 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010634 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010635 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010636 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010637 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010638 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010639 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010640 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010641 (_opt_var = _tmp_125_rule(p), 1) // [args | expression for_if_clauses]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010642 )
10643 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010644 _res = RAISE_SYNTAX_ERROR ( "Generator expression must be parenthesized" );
10645 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010646 p->error_indicator = 1;
10647 return NULL;
10648 }
10649 goto done;
10650 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010651 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010652 }
10653 { // args ',' args
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010654 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010655 expr_ty a;
10656 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010657 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010658 (a = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010659 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010660 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010661 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010662 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010663 )
10664 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010665 _res = _PyPegen_arguments_parsing_error ( p , a );
10666 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010667 p->error_indicator = 1;
10668 return NULL;
10669 }
10670 goto done;
10671 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010672 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010673 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010674 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010675 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010676 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010677}
10678
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010679// invalid_kwarg: expression '='
10680static void *
10681invalid_kwarg_rule(Parser *p)
10682{
10683 if (p->error_indicator) {
10684 return NULL;
10685 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010686 void * _res = NULL;
10687 int _mark = p->mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010688 { // expression '='
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010689 Token * _literal;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010690 expr_ty expression_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010691 if (
10692 (expression_var = expression_rule(p)) // expression
10693 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010694 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010695 )
10696 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010697 _res = RAISE_SYNTAX_ERROR ( "expression cannot contain assignment, perhaps you meant \"==\"?" );
10698 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010699 p->error_indicator = 1;
10700 return NULL;
10701 }
10702 goto done;
10703 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010704 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010706 _res = NULL;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010707 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010708 return _res;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010709}
10710
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010711// invalid_named_expression: expression ':=' expression
10712static void *
10713invalid_named_expression_rule(Parser *p)
10714{
10715 if (p->error_indicator) {
10716 return NULL;
10717 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010718 void * _res = NULL;
10719 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010720 { // expression ':=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010721 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010722 expr_ty a;
10723 expr_ty expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010724 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010725 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010726 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010727 (_literal = _PyPegen_expect_token(p, 53)) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010728 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010729 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010730 )
10731 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010732 _res = RAISE_SYNTAX_ERROR ( "cannot use assignment expressions with %s" , _PyPegen_get_expr_name ( a ) );
10733 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010734 p->error_indicator = 1;
10735 return NULL;
10736 }
10737 goto done;
10738 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010739 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010741 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010742 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010743 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010744}
10745
10746// invalid_assignment:
10747// | list ':'
10748// | tuple ':'
10749// | expression ':' expression ['=' annotated_rhs]
10750// | expression ('=' | augassign) (yield_expr | star_expressions)
10751static void *
10752invalid_assignment_rule(Parser *p)
10753{
10754 if (p->error_indicator) {
10755 return NULL;
10756 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010757 void * _res = NULL;
10758 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010759 { // list ':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010760 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010761 expr_ty list_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010762 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010763 (list_var = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010764 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010765 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010766 )
10767 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010768 _res = RAISE_SYNTAX_ERROR ( "only single target (not list) can be annotated" );
10769 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010770 p->error_indicator = 1;
10771 return NULL;
10772 }
10773 goto done;
10774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010775 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010776 }
10777 { // tuple ':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010778 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010779 expr_ty tuple_var;
10780 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010781 (tuple_var = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010782 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010783 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010784 )
10785 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010786 _res = RAISE_SYNTAX_ERROR ( "only single target (not tuple) can be annotated" );
10787 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010788 p->error_indicator = 1;
10789 return NULL;
10790 }
10791 goto done;
10792 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010793 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010794 }
10795 { // expression ':' expression ['=' annotated_rhs]
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010796 Token * _literal;
10797 void *_opt_var;
10798 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010799 expr_ty expression_var;
10800 expr_ty expression_var_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010801 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010802 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010803 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010804 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010805 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010806 (expression_var_1 = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010807 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010808 (_opt_var = _tmp_126_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010809 )
10810 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010811 _res = RAISE_SYNTAX_ERROR ( "illegal target for annotation" );
10812 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010813 p->error_indicator = 1;
10814 return NULL;
10815 }
10816 goto done;
10817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010818 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010819 }
10820 { // expression ('=' | augassign) (yield_expr | star_expressions)
Guido van Rossum3941d972020-05-01 09:42:03 -070010821 void *_tmp_127_var;
10822 void *_tmp_128_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010823 expr_ty a;
10824 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010825 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010826 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010827 (_tmp_127_var = _tmp_127_rule(p)) // '=' | augassign
Pablo Galindo2b74c832020-04-27 18:02:07 +010010828 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010829 (_tmp_128_var = _tmp_128_rule(p)) // yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010830 )
10831 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010832 _res = RAISE_SYNTAX_ERROR_NO_COL_OFFSET ( "cannot assign to %s" , _PyPegen_get_expr_name ( a ) );
10833 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010834 p->error_indicator = 1;
10835 return NULL;
10836 }
10837 goto done;
10838 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010839 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010841 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010842 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010843 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010844}
10845
10846// invalid_block: NEWLINE !INDENT
10847static void *
10848invalid_block_rule(Parser *p)
10849{
10850 if (p->error_indicator) {
10851 return NULL;
10852 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010853 void * _res = NULL;
10854 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010855 { // NEWLINE !INDENT
Pablo Galindob796b3f2020-05-01 12:32:26 +010010856 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010857 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010858 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010859 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010860 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT) // token=INDENT
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010861 )
10862 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010863 _res = RAISE_INDENTATION_ERROR ( "expected an indented block" );
10864 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010865 p->error_indicator = 1;
10866 return NULL;
10867 }
10868 goto done;
10869 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010870 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010871 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010872 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010873 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010874 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010875}
10876
10877// invalid_comprehension: ('[' | '(' | '{') '*' expression for_if_clauses
10878static void *
10879invalid_comprehension_rule(Parser *p)
10880{
10881 if (p->error_indicator) {
10882 return NULL;
10883 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010884 void * _res = NULL;
10885 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010886 { // ('[' | '(' | '{') '*' expression for_if_clauses
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010887 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070010888 void *_tmp_129_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010889 expr_ty expression_var;
10890 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010891 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010892 (_tmp_129_var = _tmp_129_rule(p)) // '[' | '(' | '{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010893 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010894 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010895 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010896 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010897 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010898 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010899 )
10900 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010901 _res = RAISE_SYNTAX_ERROR ( "iterable unpacking cannot be used in comprehension" );
10902 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010903 p->error_indicator = 1;
10904 return NULL;
10905 }
10906 goto done;
10907 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010908 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010909 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010910 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010911 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010912 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010913}
10914
10915// invalid_parameters:
Guido van Rossumc001c092020-04-30 12:12:19 -070010916// | param_no_default* (slash_with_default | param_with_default+) param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010917static void *
10918invalid_parameters_rule(Parser *p)
10919{
10920 if (p->error_indicator) {
10921 return NULL;
10922 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010923 void * _res = NULL;
10924 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070010925 { // param_no_default* (slash_with_default | param_with_default+) param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070010926 asdl_seq * _loop0_130_var;
10927 void *_tmp_131_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070010928 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010929 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010930 (_loop0_130_var = _loop0_130_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010931 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010932 (_tmp_131_var = _tmp_131_rule(p)) // slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010933 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010934 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010935 )
10936 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010937 _res = RAISE_SYNTAX_ERROR ( "non-default argument follows default argument" );
10938 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010939 p->error_indicator = 1;
10940 return NULL;
10941 }
10942 goto done;
10943 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010944 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010945 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010946 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010947 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010948 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010949}
10950
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010951// invalid_star_etc: '*' (')' | ',' (')' | '**'))
10952static void *
10953invalid_star_etc_rule(Parser *p)
10954{
10955 if (p->error_indicator) {
10956 return NULL;
10957 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010958 void * _res = NULL;
10959 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010960 { // '*' (')' | ',' (')' | '**'))
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010961 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010962 void *_tmp_132_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010963 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010964 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010965 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010966 (_tmp_132_var = _tmp_132_rule(p)) // ')' | ',' (')' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010967 )
10968 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010969 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
10970 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010971 p->error_indicator = 1;
10972 return NULL;
10973 }
10974 goto done;
10975 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010976 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010978 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010979 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010980 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010981}
10982
10983// invalid_lambda_star_etc: '*' (':' | ',' (':' | '**'))
10984static void *
10985invalid_lambda_star_etc_rule(Parser *p)
10986{
10987 if (p->error_indicator) {
10988 return NULL;
10989 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010990 void * _res = NULL;
10991 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010992 { // '*' (':' | ',' (':' | '**'))
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010993 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010994 void *_tmp_133_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010995 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010996 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010997 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010998 (_tmp_133_var = _tmp_133_rule(p)) // ':' | ',' (':' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010999 )
11000 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011001 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
11002 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011003 p->error_indicator = 1;
11004 return NULL;
11005 }
11006 goto done;
11007 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011008 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011010 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011011 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011012 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011013}
11014
Guido van Rossumc001c092020-04-30 12:12:19 -070011015// invalid_double_type_comments: TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
11016static void *
11017invalid_double_type_comments_rule(Parser *p)
11018{
11019 if (p->error_indicator) {
11020 return NULL;
11021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011022 void * _res = NULL;
11023 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011024 { // TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
Pablo Galindob796b3f2020-05-01 12:32:26 +010011025 Token * indent_var;
11026 Token * newline_var;
11027 Token * newline_var_1;
11028 Token * type_comment_var;
11029 Token * type_comment_var_1;
Guido van Rossumc001c092020-04-30 12:12:19 -070011030 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011031 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070011032 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011033 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070011034 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011035 (type_comment_var_1 = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070011036 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011037 (newline_var_1 = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070011038 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011039 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070011040 )
11041 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011042 _res = RAISE_SYNTAX_ERROR ( "Cannot have two type comments on def" );
11043 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011044 p->error_indicator = 1;
11045 return NULL;
11046 }
11047 goto done;
11048 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011049 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011051 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011052 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011053 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011054}
11055
Shantanu27c0d9b2020-05-11 14:53:58 -070011056// invalid_del_target: star_expression &del_target_end
11057static void *
11058invalid_del_target_rule(Parser *p)
11059{
11060 if (p->error_indicator) {
11061 return NULL;
11062 }
11063 void * _res = NULL;
11064 int _mark = p->mark;
11065 { // star_expression &del_target_end
11066 expr_ty a;
11067 if (
11068 (a = star_expression_rule(p)) // star_expression
11069 &&
11070 _PyPegen_lookahead(1, del_target_end_rule, p)
11071 )
11072 {
11073 _res = RAISE_SYNTAX_ERROR ( "cannot delete %s" , _PyPegen_get_expr_name ( a ) );
11074 if (_res == NULL && PyErr_Occurred()) {
11075 p->error_indicator = 1;
11076 return NULL;
11077 }
11078 goto done;
11079 }
11080 p->mark = _mark;
11081 }
11082 _res = NULL;
11083 done:
11084 return _res;
11085}
11086
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011087// _loop0_1: NEWLINE
11088static asdl_seq *
11089_loop0_1_rule(Parser *p)
11090{
11091 if (p->error_indicator) {
11092 return NULL;
11093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011094 void *_res = NULL;
11095 int _mark = p->mark;
11096 int _start_mark = p->mark;
11097 void **_children = PyMem_Malloc(sizeof(void *));
11098 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011099 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11100 return NULL;
11101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011102 ssize_t _children_capacity = 1;
11103 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011104 { // NEWLINE
Pablo Galindob796b3f2020-05-01 12:32:26 +010011105 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011106 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010011107 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011108 )
11109 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011110 _res = newline_var;
11111 if (_n == _children_capacity) {
11112 _children_capacity *= 2;
11113 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11114 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011115 PyErr_Format(PyExc_MemoryError, "realloc None");
11116 return NULL;
11117 }
11118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011119 _children[_n++] = _res;
11120 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011121 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011122 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011123 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011124 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11125 if (!_seq) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011126 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_1");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011127 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011128 return NULL;
11129 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011130 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11131 PyMem_Free(_children);
11132 _PyPegen_insert_memo(p, _start_mark, _loop0_1_type, _seq);
11133 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011134}
11135
Guido van Rossumc001c092020-04-30 12:12:19 -070011136// _loop0_2: NEWLINE
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011137static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070011138_loop0_2_rule(Parser *p)
11139{
11140 if (p->error_indicator) {
11141 return NULL;
11142 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011143 void *_res = NULL;
11144 int _mark = p->mark;
11145 int _start_mark = p->mark;
11146 void **_children = PyMem_Malloc(sizeof(void *));
11147 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011148 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11149 return NULL;
11150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011151 ssize_t _children_capacity = 1;
11152 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011153 { // NEWLINE
Pablo Galindob796b3f2020-05-01 12:32:26 +010011154 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070011155 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010011156 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070011157 )
11158 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011159 _res = newline_var;
11160 if (_n == _children_capacity) {
11161 _children_capacity *= 2;
11162 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11163 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011164 PyErr_Format(PyExc_MemoryError, "realloc None");
11165 return NULL;
11166 }
11167 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011168 _children[_n++] = _res;
11169 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011170 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011171 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011172 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011173 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11174 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011175 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_2");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011176 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011177 return NULL;
11178 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011179 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11180 PyMem_Free(_children);
11181 _PyPegen_insert_memo(p, _start_mark, _loop0_2_type, _seq);
11182 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011183}
11184
11185// _loop0_4: ',' expression
11186static asdl_seq *
11187_loop0_4_rule(Parser *p)
11188{
11189 if (p->error_indicator) {
11190 return NULL;
11191 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011192 void *_res = NULL;
11193 int _mark = p->mark;
11194 int _start_mark = p->mark;
11195 void **_children = PyMem_Malloc(sizeof(void *));
11196 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011197 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11198 return NULL;
11199 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011200 ssize_t _children_capacity = 1;
11201 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011202 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011203 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011204 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011205 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011206 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011207 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011208 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011209 )
11210 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011211 _res = elem;
11212 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011213 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011214 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011215 return NULL;
11216 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011217 if (_n == _children_capacity) {
11218 _children_capacity *= 2;
11219 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11220 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011221 PyErr_Format(PyExc_MemoryError, "realloc None");
11222 return NULL;
11223 }
11224 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011225 _children[_n++] = _res;
11226 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011228 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011229 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011230 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11231 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011232 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_4");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011233 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011234 return NULL;
11235 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011236 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11237 PyMem_Free(_children);
11238 _PyPegen_insert_memo(p, _start_mark, _loop0_4_type, _seq);
11239 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011240}
11241
11242// _gather_3: expression _loop0_4
11243static asdl_seq *
11244_gather_3_rule(Parser *p)
11245{
11246 if (p->error_indicator) {
11247 return NULL;
11248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011249 asdl_seq * _res = NULL;
11250 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011251 { // expression _loop0_4
11252 expr_ty elem;
11253 asdl_seq * seq;
11254 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011255 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011256 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011257 (seq = _loop0_4_rule(p)) // _loop0_4
Guido van Rossumc001c092020-04-30 12:12:19 -070011258 )
11259 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011260 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011261 goto done;
11262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011263 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011264 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011265 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011266 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011267 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011268}
11269
11270// _loop0_6: ',' expression
11271static asdl_seq *
11272_loop0_6_rule(Parser *p)
11273{
11274 if (p->error_indicator) {
11275 return NULL;
11276 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011277 void *_res = NULL;
11278 int _mark = p->mark;
11279 int _start_mark = p->mark;
11280 void **_children = PyMem_Malloc(sizeof(void *));
11281 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011282 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11283 return NULL;
11284 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011285 ssize_t _children_capacity = 1;
11286 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011287 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011288 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011289 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011290 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011291 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011292 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011293 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011294 )
11295 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011296 _res = elem;
11297 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011298 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011299 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011300 return NULL;
11301 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011302 if (_n == _children_capacity) {
11303 _children_capacity *= 2;
11304 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11305 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011306 PyErr_Format(PyExc_MemoryError, "realloc None");
11307 return NULL;
11308 }
11309 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011310 _children[_n++] = _res;
11311 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011312 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011313 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011314 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011315 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11316 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011317 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_6");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011318 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011319 return NULL;
11320 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011321 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11322 PyMem_Free(_children);
11323 _PyPegen_insert_memo(p, _start_mark, _loop0_6_type, _seq);
11324 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011325}
11326
11327// _gather_5: expression _loop0_6
11328static asdl_seq *
11329_gather_5_rule(Parser *p)
11330{
11331 if (p->error_indicator) {
11332 return NULL;
11333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011334 asdl_seq * _res = NULL;
11335 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011336 { // expression _loop0_6
11337 expr_ty elem;
11338 asdl_seq * seq;
11339 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011340 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011341 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011342 (seq = _loop0_6_rule(p)) // _loop0_6
Guido van Rossumc001c092020-04-30 12:12:19 -070011343 )
11344 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011345 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011346 goto done;
11347 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011348 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011349 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011350 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011351 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011352 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011353}
11354
11355// _loop0_8: ',' expression
11356static asdl_seq *
11357_loop0_8_rule(Parser *p)
11358{
11359 if (p->error_indicator) {
11360 return NULL;
11361 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011362 void *_res = NULL;
11363 int _mark = p->mark;
11364 int _start_mark = p->mark;
11365 void **_children = PyMem_Malloc(sizeof(void *));
11366 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011367 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11368 return NULL;
11369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011370 ssize_t _children_capacity = 1;
11371 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011372 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011373 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011374 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011375 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011376 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011377 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011378 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011379 )
11380 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011381 _res = elem;
11382 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011383 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011384 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011385 return NULL;
11386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011387 if (_n == _children_capacity) {
11388 _children_capacity *= 2;
11389 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11390 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011391 PyErr_Format(PyExc_MemoryError, "realloc None");
11392 return NULL;
11393 }
11394 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011395 _children[_n++] = _res;
11396 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011397 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011398 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011399 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011400 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11401 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011402 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_8");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011403 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011404 return NULL;
11405 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011406 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11407 PyMem_Free(_children);
11408 _PyPegen_insert_memo(p, _start_mark, _loop0_8_type, _seq);
11409 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011410}
11411
11412// _gather_7: expression _loop0_8
11413static asdl_seq *
11414_gather_7_rule(Parser *p)
11415{
11416 if (p->error_indicator) {
11417 return NULL;
11418 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011419 asdl_seq * _res = NULL;
11420 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011421 { // expression _loop0_8
11422 expr_ty elem;
11423 asdl_seq * seq;
11424 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011425 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011426 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011427 (seq = _loop0_8_rule(p)) // _loop0_8
Guido van Rossumc001c092020-04-30 12:12:19 -070011428 )
11429 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011430 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011431 goto done;
11432 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011433 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011435 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011436 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011437 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011438}
11439
11440// _loop0_10: ',' expression
11441static asdl_seq *
11442_loop0_10_rule(Parser *p)
11443{
11444 if (p->error_indicator) {
11445 return NULL;
11446 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011447 void *_res = NULL;
11448 int _mark = p->mark;
11449 int _start_mark = p->mark;
11450 void **_children = PyMem_Malloc(sizeof(void *));
11451 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011452 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11453 return NULL;
11454 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011455 ssize_t _children_capacity = 1;
11456 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011457 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011458 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011459 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011460 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011461 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011462 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011463 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011464 )
11465 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011466 _res = elem;
11467 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011468 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011469 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011470 return NULL;
11471 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011472 if (_n == _children_capacity) {
11473 _children_capacity *= 2;
11474 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11475 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011476 PyErr_Format(PyExc_MemoryError, "realloc None");
11477 return NULL;
11478 }
11479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011480 _children[_n++] = _res;
11481 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011482 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011483 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011484 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011485 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11486 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011487 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_10");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011488 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011489 return NULL;
11490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011491 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11492 PyMem_Free(_children);
11493 _PyPegen_insert_memo(p, _start_mark, _loop0_10_type, _seq);
11494 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011495}
11496
11497// _gather_9: expression _loop0_10
11498static asdl_seq *
11499_gather_9_rule(Parser *p)
11500{
11501 if (p->error_indicator) {
11502 return NULL;
11503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011504 asdl_seq * _res = NULL;
11505 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011506 { // expression _loop0_10
11507 expr_ty elem;
11508 asdl_seq * seq;
11509 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011510 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011511 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011512 (seq = _loop0_10_rule(p)) // _loop0_10
Guido van Rossumc001c092020-04-30 12:12:19 -070011513 )
11514 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011515 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011516 goto done;
11517 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011518 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011519 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011520 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011521 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011522 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011523}
11524
11525// _loop1_11: statement
11526static asdl_seq *
11527_loop1_11_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011528{
11529 if (p->error_indicator) {
11530 return NULL;
11531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011532 void *_res = NULL;
11533 int _mark = p->mark;
11534 int _start_mark = p->mark;
11535 void **_children = PyMem_Malloc(sizeof(void *));
11536 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011537 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11538 return NULL;
11539 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011540 ssize_t _children_capacity = 1;
11541 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011542 { // statement
11543 asdl_seq* statement_var;
11544 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010011545 (statement_var = statement_rule(p)) // statement
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011546 )
11547 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011548 _res = statement_var;
11549 if (_n == _children_capacity) {
11550 _children_capacity *= 2;
11551 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11552 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011553 PyErr_Format(PyExc_MemoryError, "realloc None");
11554 return NULL;
11555 }
11556 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011557 _children[_n++] = _res;
11558 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011559 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011560 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011561 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011562 if (_n == 0 || p->error_indicator) {
11563 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011564 return NULL;
11565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011566 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11567 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011568 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_11");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011569 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011570 return NULL;
11571 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011572 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11573 PyMem_Free(_children);
11574 _PyPegen_insert_memo(p, _start_mark, _loop1_11_type, _seq);
11575 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011576}
11577
Guido van Rossumc001c092020-04-30 12:12:19 -070011578// _loop0_13: ';' small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011579static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070011580_loop0_13_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011581{
11582 if (p->error_indicator) {
11583 return NULL;
11584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011585 void *_res = NULL;
11586 int _mark = p->mark;
11587 int _start_mark = p->mark;
11588 void **_children = PyMem_Malloc(sizeof(void *));
11589 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011590 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11591 return NULL;
11592 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011593 ssize_t _children_capacity = 1;
11594 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011595 { // ';' small_stmt
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011596 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011597 stmt_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011598 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011599 (_literal = _PyPegen_expect_token(p, 13)) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011600 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011601 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011602 )
11603 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011604 _res = elem;
11605 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011606 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011607 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011608 return NULL;
11609 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011610 if (_n == _children_capacity) {
11611 _children_capacity *= 2;
11612 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11613 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011614 PyErr_Format(PyExc_MemoryError, "realloc None");
11615 return NULL;
11616 }
11617 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011618 _children[_n++] = _res;
11619 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011620 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011621 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011622 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011623 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11624 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011625 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_13");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011626 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011627 return NULL;
11628 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011629 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11630 PyMem_Free(_children);
11631 _PyPegen_insert_memo(p, _start_mark, _loop0_13_type, _seq);
11632 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011633}
11634
Guido van Rossumc001c092020-04-30 12:12:19 -070011635// _gather_12: small_stmt _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011636static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070011637_gather_12_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011638{
11639 if (p->error_indicator) {
11640 return NULL;
11641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011642 asdl_seq * _res = NULL;
11643 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011644 { // small_stmt _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011645 stmt_ty elem;
11646 asdl_seq * seq;
11647 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011648 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011649 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011650 (seq = _loop0_13_rule(p)) // _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011651 )
11652 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011653 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011654 goto done;
11655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011656 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011657 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011658 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011659 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011660 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011661}
11662
Guido van Rossumc001c092020-04-30 12:12:19 -070011663// _tmp_14: 'import' | 'from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011664static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011665_tmp_14_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011666{
11667 if (p->error_indicator) {
11668 return NULL;
11669 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011670 void * _res = NULL;
11671 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011672 { // 'import'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011673 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011674 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011675 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011676 )
11677 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011678 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011679 goto done;
11680 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011681 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011682 }
11683 { // 'from'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011684 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011685 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011686 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011687 )
11688 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011689 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011690 goto done;
11691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011692 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011694 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011695 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011696 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011697}
11698
Guido van Rossumc001c092020-04-30 12:12:19 -070011699// _tmp_15: 'def' | '@' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011700static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011701_tmp_15_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011702{
11703 if (p->error_indicator) {
11704 return NULL;
11705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011706 void * _res = NULL;
11707 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011708 { // 'def'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011709 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011710 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011711 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011712 )
11713 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011714 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011715 goto done;
11716 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011717 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011718 }
11719 { // '@'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011720 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011721 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011722 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011723 )
11724 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011725 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011726 goto done;
11727 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011728 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011729 }
11730 { // ASYNC
Pablo Galindob796b3f2020-05-01 12:32:26 +010011731 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011732 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011733 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011734 )
11735 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011736 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011737 goto done;
11738 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011739 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011741 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011742 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011743 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011744}
11745
Guido van Rossumc001c092020-04-30 12:12:19 -070011746// _tmp_16: 'class' | '@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011747static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011748_tmp_16_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011749{
11750 if (p->error_indicator) {
11751 return NULL;
11752 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011753 void * _res = NULL;
11754 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011755 { // 'class'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011756 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011757 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011758 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011759 )
11760 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011761 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011762 goto done;
11763 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011764 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011765 }
11766 { // '@'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011767 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011768 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011769 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011770 )
11771 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011772 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011773 goto done;
11774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011775 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011776 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011777 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011778 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011779 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011780}
11781
Guido van Rossumc001c092020-04-30 12:12:19 -070011782// _tmp_17: 'with' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011783static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011784_tmp_17_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011785{
11786 if (p->error_indicator) {
11787 return NULL;
11788 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011789 void * _res = NULL;
11790 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011791 { // 'with'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011792 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011793 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011794 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011795 )
11796 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011797 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011798 goto done;
11799 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011800 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011801 }
11802 { // ASYNC
Pablo Galindob796b3f2020-05-01 12:32:26 +010011803 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011804 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011805 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011806 )
11807 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011808 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011809 goto done;
11810 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011811 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011812 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011813 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011814 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011815 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011816}
11817
Guido van Rossumc001c092020-04-30 12:12:19 -070011818// _tmp_18: 'for' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011819static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011820_tmp_18_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011821{
11822 if (p->error_indicator) {
11823 return NULL;
11824 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011825 void * _res = NULL;
11826 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011827 { // 'for'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011828 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011829 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011830 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011831 )
11832 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011833 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011834 goto done;
11835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011836 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011837 }
11838 { // ASYNC
Pablo Galindob796b3f2020-05-01 12:32:26 +010011839 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011840 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011841 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011842 )
11843 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011844 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011845 goto done;
11846 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011847 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011848 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011849 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011850 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011851 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011852}
11853
Guido van Rossumc001c092020-04-30 12:12:19 -070011854// _tmp_19: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011855static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011856_tmp_19_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011857{
11858 if (p->error_indicator) {
11859 return NULL;
11860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011861 void * _res = NULL;
11862 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011863 { // '=' annotated_rhs
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011864 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011865 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011866 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011867 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011868 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011869 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011870 )
11871 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011872 _res = d;
11873 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011874 p->error_indicator = 1;
11875 return NULL;
11876 }
11877 goto done;
11878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011879 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011880 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011881 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011882 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011883 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011884}
11885
Guido van Rossumc001c092020-04-30 12:12:19 -070011886// _tmp_20: '(' inside_paren_ann_assign_target ')' | ann_assign_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011887static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011888_tmp_20_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011889{
11890 if (p->error_indicator) {
11891 return NULL;
11892 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011893 void * _res = NULL;
11894 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011895 { // '(' inside_paren_ann_assign_target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011896 Token * _literal;
11897 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011898 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011899 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011900 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011901 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011902 (b = inside_paren_ann_assign_target_rule(p)) // inside_paren_ann_assign_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011903 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011904 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011905 )
11906 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011907 _res = b;
11908 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011909 p->error_indicator = 1;
11910 return NULL;
11911 }
11912 goto done;
11913 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011914 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011915 }
11916 { // ann_assign_subscript_attribute_target
11917 expr_ty ann_assign_subscript_attribute_target_var;
11918 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011919 (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 +010011920 )
11921 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011922 _res = ann_assign_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011923 goto done;
11924 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011925 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011927 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011928 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011929 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011930}
11931
Guido van Rossumc001c092020-04-30 12:12:19 -070011932// _tmp_21: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011933static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011934_tmp_21_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011935{
11936 if (p->error_indicator) {
11937 return NULL;
11938 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011939 void * _res = NULL;
11940 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011941 { // '=' annotated_rhs
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011942 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011943 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011944 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011945 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011946 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011947 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011948 )
11949 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011950 _res = d;
11951 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011952 p->error_indicator = 1;
11953 return NULL;
11954 }
11955 goto done;
11956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011957 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011958 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011959 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011960 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011961 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011962}
11963
Guido van Rossumc001c092020-04-30 12:12:19 -070011964// _loop1_22: (star_targets '=')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011965static asdl_seq *
11966_loop1_22_rule(Parser *p)
11967{
11968 if (p->error_indicator) {
11969 return NULL;
11970 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011971 void *_res = NULL;
11972 int _mark = p->mark;
11973 int _start_mark = p->mark;
11974 void **_children = PyMem_Malloc(sizeof(void *));
11975 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011976 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11977 return NULL;
11978 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011979 ssize_t _children_capacity = 1;
11980 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011981 { // (star_targets '=')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011982 void *_tmp_134_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011983 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010011984 (_tmp_134_var = _tmp_134_rule(p)) // star_targets '='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011985 )
11986 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011987 _res = _tmp_134_var;
11988 if (_n == _children_capacity) {
11989 _children_capacity *= 2;
11990 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11991 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011992 PyErr_Format(PyExc_MemoryError, "realloc None");
11993 return NULL;
11994 }
11995 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011996 _children[_n++] = _res;
11997 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011999 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012001 if (_n == 0 || p->error_indicator) {
12002 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012003 return NULL;
12004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012005 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12006 if (!_seq) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012007 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_22");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012008 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012009 return NULL;
12010 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012011 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12012 PyMem_Free(_children);
12013 _PyPegen_insert_memo(p, _start_mark, _loop1_22_type, _seq);
12014 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012015}
12016
Guido van Rossumc001c092020-04-30 12:12:19 -070012017// _tmp_23: yield_expr | star_expressions
12018static void *
12019_tmp_23_rule(Parser *p)
12020{
12021 if (p->error_indicator) {
12022 return NULL;
12023 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012024 void * _res = NULL;
12025 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012026 { // yield_expr
12027 expr_ty yield_expr_var;
12028 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012029 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070012030 )
12031 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012032 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012033 goto done;
12034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012035 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012036 }
12037 { // star_expressions
12038 expr_ty star_expressions_var;
12039 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012040 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070012041 )
12042 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012043 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012044 goto done;
12045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012046 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012048 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012049 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012050 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012051}
12052
12053// _tmp_24: yield_expr | star_expressions
12054static void *
12055_tmp_24_rule(Parser *p)
12056{
12057 if (p->error_indicator) {
12058 return NULL;
12059 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012060 void * _res = NULL;
12061 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012062 { // yield_expr
12063 expr_ty yield_expr_var;
12064 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012065 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070012066 )
12067 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012068 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012069 goto done;
12070 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012071 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012072 }
12073 { // star_expressions
12074 expr_ty star_expressions_var;
12075 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012076 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070012077 )
12078 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012079 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012080 goto done;
12081 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012082 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012083 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012084 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012085 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012086 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012087}
12088
12089// _loop0_26: ',' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012090static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012091_loop0_26_rule(Parser *p)
12092{
12093 if (p->error_indicator) {
12094 return NULL;
12095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012096 void *_res = NULL;
12097 int _mark = p->mark;
12098 int _start_mark = p->mark;
12099 void **_children = PyMem_Malloc(sizeof(void *));
12100 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012101 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12102 return NULL;
12103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012104 ssize_t _children_capacity = 1;
12105 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012106 { // ',' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012107 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012108 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012109 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012110 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012111 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012112 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070012113 )
12114 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012115 _res = elem;
12116 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012117 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012118 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012119 return NULL;
12120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012121 if (_n == _children_capacity) {
12122 _children_capacity *= 2;
12123 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12124 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012125 PyErr_Format(PyExc_MemoryError, "realloc None");
12126 return NULL;
12127 }
12128 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012129 _children[_n++] = _res;
12130 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012131 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012132 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012133 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012134 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12135 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012136 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_26");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012137 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012138 return NULL;
12139 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012140 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12141 PyMem_Free(_children);
12142 _PyPegen_insert_memo(p, _start_mark, _loop0_26_type, _seq);
12143 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012144}
12145
12146// _gather_25: NAME _loop0_26
12147static asdl_seq *
12148_gather_25_rule(Parser *p)
12149{
12150 if (p->error_indicator) {
12151 return NULL;
12152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012153 asdl_seq * _res = NULL;
12154 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012155 { // NAME _loop0_26
12156 expr_ty elem;
12157 asdl_seq * seq;
12158 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012159 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070012160 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012161 (seq = _loop0_26_rule(p)) // _loop0_26
Guido van Rossumc001c092020-04-30 12:12:19 -070012162 )
12163 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012164 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012165 goto done;
12166 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012167 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012168 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012169 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012170 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012171 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012172}
12173
12174// _loop0_28: ',' NAME
12175static asdl_seq *
12176_loop0_28_rule(Parser *p)
12177{
12178 if (p->error_indicator) {
12179 return NULL;
12180 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012181 void *_res = NULL;
12182 int _mark = p->mark;
12183 int _start_mark = p->mark;
12184 void **_children = PyMem_Malloc(sizeof(void *));
12185 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012186 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12187 return NULL;
12188 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012189 ssize_t _children_capacity = 1;
12190 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012191 { // ',' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012192 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012193 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012194 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012195 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012196 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012197 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070012198 )
12199 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012200 _res = elem;
12201 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012202 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012203 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012204 return NULL;
12205 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012206 if (_n == _children_capacity) {
12207 _children_capacity *= 2;
12208 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12209 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012210 PyErr_Format(PyExc_MemoryError, "realloc None");
12211 return NULL;
12212 }
12213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012214 _children[_n++] = _res;
12215 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012216 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012217 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012218 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012219 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12220 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012221 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_28");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012222 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012223 return NULL;
12224 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012225 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12226 PyMem_Free(_children);
12227 _PyPegen_insert_memo(p, _start_mark, _loop0_28_type, _seq);
12228 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012229}
12230
12231// _gather_27: NAME _loop0_28
12232static asdl_seq *
12233_gather_27_rule(Parser *p)
12234{
12235 if (p->error_indicator) {
12236 return NULL;
12237 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012238 asdl_seq * _res = NULL;
12239 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012240 { // NAME _loop0_28
12241 expr_ty elem;
12242 asdl_seq * seq;
12243 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012244 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070012245 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012246 (seq = _loop0_28_rule(p)) // _loop0_28
Guido van Rossumc001c092020-04-30 12:12:19 -070012247 )
12248 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012249 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012250 goto done;
12251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012252 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012254 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012255 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012256 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012257}
12258
12259// _tmp_29: ',' expression
12260static void *
12261_tmp_29_rule(Parser *p)
12262{
12263 if (p->error_indicator) {
12264 return NULL;
12265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012266 void * _res = NULL;
12267 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012268 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012269 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012270 expr_ty z;
12271 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012272 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012273 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012274 (z = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012275 )
12276 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012277 _res = z;
12278 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012279 p->error_indicator = 1;
12280 return NULL;
12281 }
12282 goto done;
12283 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012284 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012286 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012287 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012288 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012289}
12290
12291// _loop0_30: ('.' | '...')
12292static asdl_seq *
12293_loop0_30_rule(Parser *p)
12294{
12295 if (p->error_indicator) {
12296 return NULL;
12297 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012298 void *_res = NULL;
12299 int _mark = p->mark;
12300 int _start_mark = p->mark;
12301 void **_children = PyMem_Malloc(sizeof(void *));
12302 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012303 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12304 return NULL;
12305 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012306 ssize_t _children_capacity = 1;
12307 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012308 { // ('.' | '...')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012309 void *_tmp_135_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012310 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010012311 (_tmp_135_var = _tmp_135_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070012312 )
12313 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012314 _res = _tmp_135_var;
12315 if (_n == _children_capacity) {
12316 _children_capacity *= 2;
12317 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12318 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012319 PyErr_Format(PyExc_MemoryError, "realloc None");
12320 return NULL;
12321 }
12322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012323 _children[_n++] = _res;
12324 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012325 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012326 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012327 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012328 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12329 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012330 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_30");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012331 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012332 return NULL;
12333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012334 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12335 PyMem_Free(_children);
12336 _PyPegen_insert_memo(p, _start_mark, _loop0_30_type, _seq);
12337 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012338}
12339
12340// _loop1_31: ('.' | '...')
12341static asdl_seq *
12342_loop1_31_rule(Parser *p)
12343{
12344 if (p->error_indicator) {
12345 return NULL;
12346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012347 void *_res = NULL;
12348 int _mark = p->mark;
12349 int _start_mark = p->mark;
12350 void **_children = PyMem_Malloc(sizeof(void *));
12351 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012352 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12353 return NULL;
12354 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012355 ssize_t _children_capacity = 1;
12356 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012357 { // ('.' | '...')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012358 void *_tmp_136_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012359 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010012360 (_tmp_136_var = _tmp_136_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070012361 )
12362 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012363 _res = _tmp_136_var;
12364 if (_n == _children_capacity) {
12365 _children_capacity *= 2;
12366 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12367 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012368 PyErr_Format(PyExc_MemoryError, "realloc None");
12369 return NULL;
12370 }
12371 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012372 _children[_n++] = _res;
12373 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012374 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012375 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012376 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012377 if (_n == 0 || p->error_indicator) {
12378 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012379 return NULL;
12380 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012381 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12382 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012383 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_31");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012384 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012385 return NULL;
12386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012387 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12388 PyMem_Free(_children);
12389 _PyPegen_insert_memo(p, _start_mark, _loop1_31_type, _seq);
12390 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012391}
12392
12393// _loop0_33: ',' import_from_as_name
12394static asdl_seq *
12395_loop0_33_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012396{
12397 if (p->error_indicator) {
12398 return NULL;
12399 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012400 void *_res = NULL;
12401 int _mark = p->mark;
12402 int _start_mark = p->mark;
12403 void **_children = PyMem_Malloc(sizeof(void *));
12404 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012405 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12406 return NULL;
12407 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012408 ssize_t _children_capacity = 1;
12409 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012410 { // ',' import_from_as_name
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012411 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012412 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012413 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012414 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012415 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012416 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012417 )
12418 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012419 _res = elem;
12420 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012421 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012422 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012423 return NULL;
12424 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012425 if (_n == _children_capacity) {
12426 _children_capacity *= 2;
12427 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12428 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012429 PyErr_Format(PyExc_MemoryError, "realloc None");
12430 return NULL;
12431 }
12432 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012433 _children[_n++] = _res;
12434 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012435 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012436 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012437 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012438 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12439 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012440 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_33");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012441 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012442 return NULL;
12443 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012444 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12445 PyMem_Free(_children);
12446 _PyPegen_insert_memo(p, _start_mark, _loop0_33_type, _seq);
12447 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012448}
12449
Guido van Rossumc001c092020-04-30 12:12:19 -070012450// _gather_32: import_from_as_name _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012451static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012452_gather_32_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012453{
12454 if (p->error_indicator) {
12455 return NULL;
12456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012457 asdl_seq * _res = NULL;
12458 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012459 { // import_from_as_name _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012460 alias_ty elem;
12461 asdl_seq * seq;
12462 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012463 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012464 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012465 (seq = _loop0_33_rule(p)) // _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012466 )
12467 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012468 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012469 goto done;
12470 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012471 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012473 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012474 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012475 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012476}
12477
Guido van Rossumc001c092020-04-30 12:12:19 -070012478// _tmp_34: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012479static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070012480_tmp_34_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012481{
12482 if (p->error_indicator) {
12483 return NULL;
12484 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012485 void * _res = NULL;
12486 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012487 { // 'as' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012488 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012489 expr_ty z;
12490 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012491 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012492 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012493 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012494 )
12495 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012496 _res = z;
12497 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012498 p->error_indicator = 1;
12499 return NULL;
12500 }
12501 goto done;
12502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012503 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012504 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012505 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012506 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012507 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012508}
12509
Guido van Rossumc001c092020-04-30 12:12:19 -070012510// _loop0_36: ',' dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012511static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012512_loop0_36_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012513{
12514 if (p->error_indicator) {
12515 return NULL;
12516 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012517 void *_res = NULL;
12518 int _mark = p->mark;
12519 int _start_mark = p->mark;
12520 void **_children = PyMem_Malloc(sizeof(void *));
12521 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012522 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12523 return NULL;
12524 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012525 ssize_t _children_capacity = 1;
12526 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012527 { // ',' dotted_as_name
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012528 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012529 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012530 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012531 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012532 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012533 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012534 )
12535 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012536 _res = elem;
12537 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012538 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012539 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012540 return NULL;
12541 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012542 if (_n == _children_capacity) {
12543 _children_capacity *= 2;
12544 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12545 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012546 PyErr_Format(PyExc_MemoryError, "realloc None");
12547 return NULL;
12548 }
12549 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012550 _children[_n++] = _res;
12551 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012552 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012553 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012555 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12556 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012557 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_36");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012558 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012559 return NULL;
12560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012561 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12562 PyMem_Free(_children);
12563 _PyPegen_insert_memo(p, _start_mark, _loop0_36_type, _seq);
12564 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012565}
12566
Guido van Rossumc001c092020-04-30 12:12:19 -070012567// _gather_35: dotted_as_name _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012568static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012569_gather_35_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012570{
12571 if (p->error_indicator) {
12572 return NULL;
12573 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012574 asdl_seq * _res = NULL;
12575 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012576 { // dotted_as_name _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012577 alias_ty elem;
12578 asdl_seq * seq;
12579 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012580 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012581 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012582 (seq = _loop0_36_rule(p)) // _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012583 )
12584 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012585 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012586 goto done;
12587 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012588 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012590 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012591 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012592 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012593}
12594
Guido van Rossumc001c092020-04-30 12:12:19 -070012595// _tmp_37: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012596static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070012597_tmp_37_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012598{
12599 if (p->error_indicator) {
12600 return NULL;
12601 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012602 void * _res = NULL;
12603 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012604 { // 'as' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012605 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012606 expr_ty z;
12607 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012608 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012609 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012610 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012611 )
12612 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012613 _res = z;
12614 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012615 p->error_indicator = 1;
12616 return NULL;
12617 }
12618 goto done;
12619 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012620 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012621 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012622 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012623 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012624 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012625}
12626
Guido van Rossumc001c092020-04-30 12:12:19 -070012627// _loop0_39: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012628static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012629_loop0_39_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012630{
12631 if (p->error_indicator) {
12632 return NULL;
12633 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012634 void *_res = NULL;
12635 int _mark = p->mark;
12636 int _start_mark = p->mark;
12637 void **_children = PyMem_Malloc(sizeof(void *));
12638 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012639 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12640 return NULL;
12641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012642 ssize_t _children_capacity = 1;
12643 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012644 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012645 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012646 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012647 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012648 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012649 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012650 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012651 )
12652 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012653 _res = elem;
12654 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012655 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012656 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012657 return NULL;
12658 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012659 if (_n == _children_capacity) {
12660 _children_capacity *= 2;
12661 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12662 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012663 PyErr_Format(PyExc_MemoryError, "realloc None");
12664 return NULL;
12665 }
12666 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012667 _children[_n++] = _res;
12668 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012669 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012670 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012671 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012672 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12673 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012674 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_39");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012675 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012676 return NULL;
12677 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012678 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12679 PyMem_Free(_children);
12680 _PyPegen_insert_memo(p, _start_mark, _loop0_39_type, _seq);
12681 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012682}
12683
Guido van Rossumc001c092020-04-30 12:12:19 -070012684// _gather_38: with_item _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012685static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012686_gather_38_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012687{
12688 if (p->error_indicator) {
12689 return NULL;
12690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012691 asdl_seq * _res = NULL;
12692 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012693 { // with_item _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012694 withitem_ty elem;
12695 asdl_seq * seq;
12696 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012697 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012698 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012699 (seq = _loop0_39_rule(p)) // _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012700 )
12701 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012702 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012703 goto done;
12704 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012705 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012706 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012707 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012708 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012709 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012710}
12711
Guido van Rossumc001c092020-04-30 12:12:19 -070012712// _loop0_41: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012713static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012714_loop0_41_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012715{
12716 if (p->error_indicator) {
12717 return NULL;
12718 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012719 void *_res = NULL;
12720 int _mark = p->mark;
12721 int _start_mark = p->mark;
12722 void **_children = PyMem_Malloc(sizeof(void *));
12723 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012724 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12725 return NULL;
12726 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012727 ssize_t _children_capacity = 1;
12728 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012729 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012730 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012731 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012732 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012733 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012734 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012735 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012736 )
12737 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012738 _res = elem;
12739 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012740 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012741 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012742 return NULL;
12743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012744 if (_n == _children_capacity) {
12745 _children_capacity *= 2;
12746 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12747 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012748 PyErr_Format(PyExc_MemoryError, "realloc None");
12749 return NULL;
12750 }
12751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012752 _children[_n++] = _res;
12753 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012754 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012755 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012756 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012757 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12758 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012759 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_41");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012760 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012761 return NULL;
12762 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012763 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12764 PyMem_Free(_children);
12765 _PyPegen_insert_memo(p, _start_mark, _loop0_41_type, _seq);
12766 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012767}
12768
Guido van Rossumc001c092020-04-30 12:12:19 -070012769// _gather_40: with_item _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012770static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012771_gather_40_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012772{
12773 if (p->error_indicator) {
12774 return NULL;
12775 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012776 asdl_seq * _res = NULL;
12777 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012778 { // with_item _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012779 withitem_ty elem;
12780 asdl_seq * seq;
12781 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012782 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012783 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012784 (seq = _loop0_41_rule(p)) // _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012785 )
12786 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012787 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012788 goto done;
12789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012790 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012792 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012793 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012794 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012795}
12796
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012797// _loop0_43: ',' with_item
12798static asdl_seq *
12799_loop0_43_rule(Parser *p)
12800{
12801 if (p->error_indicator) {
12802 return NULL;
12803 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012804 void *_res = NULL;
12805 int _mark = p->mark;
12806 int _start_mark = p->mark;
12807 void **_children = PyMem_Malloc(sizeof(void *));
12808 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012809 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12810 return NULL;
12811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012812 ssize_t _children_capacity = 1;
12813 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012814 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012815 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012816 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012817 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012818 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012819 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012820 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012821 )
12822 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012823 _res = elem;
12824 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012825 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012826 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012827 return NULL;
12828 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012829 if (_n == _children_capacity) {
12830 _children_capacity *= 2;
12831 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12832 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012833 PyErr_Format(PyExc_MemoryError, "realloc None");
12834 return NULL;
12835 }
12836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012837 _children[_n++] = _res;
12838 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012839 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012840 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012841 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012842 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12843 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012844 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_43");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012845 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012846 return NULL;
12847 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012848 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12849 PyMem_Free(_children);
12850 _PyPegen_insert_memo(p, _start_mark, _loop0_43_type, _seq);
12851 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012852}
12853
12854// _gather_42: with_item _loop0_43
12855static asdl_seq *
12856_gather_42_rule(Parser *p)
12857{
12858 if (p->error_indicator) {
12859 return NULL;
12860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012861 asdl_seq * _res = NULL;
12862 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012863 { // with_item _loop0_43
12864 withitem_ty elem;
12865 asdl_seq * seq;
12866 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012867 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012868 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012869 (seq = _loop0_43_rule(p)) // _loop0_43
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012870 )
12871 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012872 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012873 goto done;
12874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012875 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012877 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012878 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012879 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012880}
12881
12882// _loop0_45: ',' with_item
12883static asdl_seq *
12884_loop0_45_rule(Parser *p)
12885{
12886 if (p->error_indicator) {
12887 return NULL;
12888 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012889 void *_res = NULL;
12890 int _mark = p->mark;
12891 int _start_mark = p->mark;
12892 void **_children = PyMem_Malloc(sizeof(void *));
12893 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012894 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12895 return NULL;
12896 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012897 ssize_t _children_capacity = 1;
12898 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012899 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012900 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012901 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012902 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012903 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012904 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012905 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012906 )
12907 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012908 _res = elem;
12909 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012910 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012911 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012912 return NULL;
12913 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012914 if (_n == _children_capacity) {
12915 _children_capacity *= 2;
12916 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12917 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012918 PyErr_Format(PyExc_MemoryError, "realloc None");
12919 return NULL;
12920 }
12921 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012922 _children[_n++] = _res;
12923 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012924 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012925 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012927 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12928 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012929 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_45");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012930 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012931 return NULL;
12932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012933 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12934 PyMem_Free(_children);
12935 _PyPegen_insert_memo(p, _start_mark, _loop0_45_type, _seq);
12936 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012937}
12938
12939// _gather_44: with_item _loop0_45
12940static asdl_seq *
12941_gather_44_rule(Parser *p)
12942{
12943 if (p->error_indicator) {
12944 return NULL;
12945 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012946 asdl_seq * _res = NULL;
12947 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012948 { // with_item _loop0_45
12949 withitem_ty elem;
12950 asdl_seq * seq;
12951 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012952 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012953 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012954 (seq = _loop0_45_rule(p)) // _loop0_45
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012955 )
12956 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012957 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012958 goto done;
12959 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012960 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012962 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012963 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012964 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012965}
12966
12967// _tmp_46: 'as' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012968static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012969_tmp_46_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012970{
12971 if (p->error_indicator) {
12972 return NULL;
12973 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012974 void * _res = NULL;
12975 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012976 { // 'as' target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012977 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012978 expr_ty t;
12979 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012980 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012981 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012982 (t = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012983 )
12984 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012985 _res = t;
12986 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012987 p->error_indicator = 1;
12988 return NULL;
12989 }
12990 goto done;
12991 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012992 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012993 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012994 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012995 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012996 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012997}
12998
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012999// _loop1_47: except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013000static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013001_loop1_47_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013002{
13003 if (p->error_indicator) {
13004 return NULL;
13005 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013006 void *_res = NULL;
13007 int _mark = p->mark;
13008 int _start_mark = p->mark;
13009 void **_children = PyMem_Malloc(sizeof(void *));
13010 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013011 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13012 return NULL;
13013 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013014 ssize_t _children_capacity = 1;
13015 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013016 { // except_block
13017 excepthandler_ty except_block_var;
13018 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013019 (except_block_var = except_block_rule(p)) // except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013020 )
13021 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013022 _res = except_block_var;
13023 if (_n == _children_capacity) {
13024 _children_capacity *= 2;
13025 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13026 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013027 PyErr_Format(PyExc_MemoryError, "realloc None");
13028 return NULL;
13029 }
13030 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013031 _children[_n++] = _res;
13032 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013034 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013035 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013036 if (_n == 0 || p->error_indicator) {
13037 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013038 return NULL;
13039 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013040 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13041 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013042 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_47");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013043 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013044 return NULL;
13045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013046 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13047 PyMem_Free(_children);
13048 _PyPegen_insert_memo(p, _start_mark, _loop1_47_type, _seq);
13049 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013050}
13051
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013052// _tmp_48: 'as' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013053static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013054_tmp_48_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013055{
13056 if (p->error_indicator) {
13057 return NULL;
13058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013059 void * _res = NULL;
13060 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013061 { // 'as' target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013062 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013063 expr_ty z;
13064 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013065 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013066 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013067 (z = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013068 )
13069 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013070 _res = z;
13071 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013072 p->error_indicator = 1;
13073 return NULL;
13074 }
13075 goto done;
13076 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013077 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013079 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013080 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013081 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013082}
13083
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013084// _tmp_49: 'from' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013085static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013086_tmp_49_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013087{
13088 if (p->error_indicator) {
13089 return NULL;
13090 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013091 void * _res = NULL;
13092 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013093 { // 'from' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013094 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013095 expr_ty z;
13096 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013097 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013098 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013099 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013100 )
13101 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013102 _res = z;
13103 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013104 p->error_indicator = 1;
13105 return NULL;
13106 }
13107 goto done;
13108 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013109 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013110 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013111 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013112 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013113 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013114}
13115
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013116// _tmp_50: '->' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013117static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013118_tmp_50_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013119{
13120 if (p->error_indicator) {
13121 return NULL;
13122 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013123 void * _res = NULL;
13124 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013125 { // '->' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013126 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070013127 expr_ty z;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013128 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013129 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013130 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013131 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013132 )
13133 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013134 _res = z;
13135 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013136 p->error_indicator = 1;
13137 return NULL;
13138 }
13139 goto done;
13140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013141 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013142 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013143 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013144 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013145 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013146}
13147
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013148// _tmp_51: '->' expression
Guido van Rossumc001c092020-04-30 12:12:19 -070013149static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013150_tmp_51_rule(Parser *p)
13151{
13152 if (p->error_indicator) {
13153 return NULL;
13154 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013155 void * _res = NULL;
13156 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013157 { // '->' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013158 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013159 expr_ty z;
13160 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013161 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013162 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013163 (z = expression_rule(p)) // expression
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013164 )
13165 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013166 _res = z;
13167 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013168 p->error_indicator = 1;
13169 return NULL;
13170 }
13171 goto done;
13172 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013173 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013174 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013175 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013176 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013177 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013178}
13179
13180// _tmp_52: NEWLINE INDENT
13181static void *
13182_tmp_52_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013183{
13184 if (p->error_indicator) {
13185 return NULL;
13186 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013187 void * _res = NULL;
13188 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013189 { // NEWLINE INDENT
Pablo Galindob796b3f2020-05-01 12:32:26 +010013190 Token * indent_var;
13191 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013192 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013193 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070013194 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013195 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070013196 )
13197 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013198 _res = _PyPegen_dummy_name(p, newline_var, indent_var);
Guido van Rossumc001c092020-04-30 12:12:19 -070013199 goto done;
13200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013201 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013202 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013203 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013204 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013205 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013206}
13207
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013208// _loop0_53: param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013209static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013210_loop0_53_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013211{
13212 if (p->error_indicator) {
13213 return NULL;
13214 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013215 void *_res = NULL;
13216 int _mark = p->mark;
13217 int _start_mark = p->mark;
13218 void **_children = PyMem_Malloc(sizeof(void *));
13219 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013220 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13221 return NULL;
13222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013223 ssize_t _children_capacity = 1;
13224 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013225 { // param_no_default
13226 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013227 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013228 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013229 )
13230 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013231 _res = param_no_default_var;
13232 if (_n == _children_capacity) {
13233 _children_capacity *= 2;
13234 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13235 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013236 PyErr_Format(PyExc_MemoryError, "realloc None");
13237 return NULL;
13238 }
13239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013240 _children[_n++] = _res;
13241 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013242 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013243 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013244 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013245 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13246 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013247 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_53");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013248 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013249 return NULL;
13250 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013251 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13252 PyMem_Free(_children);
13253 _PyPegen_insert_memo(p, _start_mark, _loop0_53_type, _seq);
13254 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013255}
13256
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013257// _loop0_54: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013258static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013259_loop0_54_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013260{
13261 if (p->error_indicator) {
13262 return NULL;
13263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013264 void *_res = NULL;
13265 int _mark = p->mark;
13266 int _start_mark = p->mark;
13267 void **_children = PyMem_Malloc(sizeof(void *));
13268 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013269 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13270 return NULL;
13271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013272 ssize_t _children_capacity = 1;
13273 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013274 { // param_with_default
13275 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013276 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013277 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013278 )
13279 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013280 _res = param_with_default_var;
13281 if (_n == _children_capacity) {
13282 _children_capacity *= 2;
13283 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13284 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013285 PyErr_Format(PyExc_MemoryError, "realloc None");
13286 return NULL;
13287 }
13288 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013289 _children[_n++] = _res;
13290 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013292 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013293 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013294 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13295 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013296 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_54");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013297 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013298 return NULL;
13299 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013300 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13301 PyMem_Free(_children);
13302 _PyPegen_insert_memo(p, _start_mark, _loop0_54_type, _seq);
13303 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013304}
13305
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013306// _loop0_55: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013307static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013308_loop0_55_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013309{
13310 if (p->error_indicator) {
13311 return NULL;
13312 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013313 void *_res = NULL;
13314 int _mark = p->mark;
13315 int _start_mark = p->mark;
13316 void **_children = PyMem_Malloc(sizeof(void *));
13317 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013318 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13319 return NULL;
13320 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013321 ssize_t _children_capacity = 1;
13322 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013323 { // param_with_default
13324 NameDefaultPair* param_with_default_var;
13325 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013326 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013327 )
13328 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013329 _res = param_with_default_var;
13330 if (_n == _children_capacity) {
13331 _children_capacity *= 2;
13332 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13333 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013334 PyErr_Format(PyExc_MemoryError, "realloc None");
13335 return NULL;
13336 }
13337 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013338 _children[_n++] = _res;
13339 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013340 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013341 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013343 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13344 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013345 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_55");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013346 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013347 return NULL;
13348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013349 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13350 PyMem_Free(_children);
13351 _PyPegen_insert_memo(p, _start_mark, _loop0_55_type, _seq);
13352 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013353}
13354
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013355// _loop1_56: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013356static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013357_loop1_56_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013358{
13359 if (p->error_indicator) {
13360 return NULL;
13361 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013362 void *_res = NULL;
13363 int _mark = p->mark;
13364 int _start_mark = p->mark;
13365 void **_children = PyMem_Malloc(sizeof(void *));
13366 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013367 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13368 return NULL;
13369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013370 ssize_t _children_capacity = 1;
13371 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013372 { // param_no_default
13373 arg_ty param_no_default_var;
13374 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013375 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013376 )
13377 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013378 _res = param_no_default_var;
13379 if (_n == _children_capacity) {
13380 _children_capacity *= 2;
13381 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13382 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013383 PyErr_Format(PyExc_MemoryError, "realloc None");
13384 return NULL;
13385 }
13386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013387 _children[_n++] = _res;
13388 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013389 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013390 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013392 if (_n == 0 || p->error_indicator) {
13393 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013394 return NULL;
13395 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013396 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13397 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013398 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_56");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013399 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013400 return NULL;
13401 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013402 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13403 PyMem_Free(_children);
13404 _PyPegen_insert_memo(p, _start_mark, _loop1_56_type, _seq);
13405 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013406}
13407
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013408// _loop0_57: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013409static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013410_loop0_57_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013411{
13412 if (p->error_indicator) {
13413 return NULL;
13414 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013415 void *_res = NULL;
13416 int _mark = p->mark;
13417 int _start_mark = p->mark;
13418 void **_children = PyMem_Malloc(sizeof(void *));
13419 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013420 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13421 return NULL;
13422 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013423 ssize_t _children_capacity = 1;
13424 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013425 { // param_with_default
13426 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013427 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013428 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013429 )
13430 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013431 _res = param_with_default_var;
13432 if (_n == _children_capacity) {
13433 _children_capacity *= 2;
13434 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13435 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013436 PyErr_Format(PyExc_MemoryError, "realloc None");
13437 return NULL;
13438 }
13439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013440 _children[_n++] = _res;
13441 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013442 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013443 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013444 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013445 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13446 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013447 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_57");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013448 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013449 return NULL;
13450 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013451 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13452 PyMem_Free(_children);
13453 _PyPegen_insert_memo(p, _start_mark, _loop0_57_type, _seq);
13454 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013455}
13456
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013457// _loop1_58: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013458static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013459_loop1_58_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013460{
13461 if (p->error_indicator) {
13462 return NULL;
13463 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013464 void *_res = NULL;
13465 int _mark = p->mark;
13466 int _start_mark = p->mark;
13467 void **_children = PyMem_Malloc(sizeof(void *));
13468 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013469 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13470 return NULL;
13471 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013472 ssize_t _children_capacity = 1;
13473 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013474 { // param_with_default
13475 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013476 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013477 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013478 )
13479 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013480 _res = param_with_default_var;
13481 if (_n == _children_capacity) {
13482 _children_capacity *= 2;
13483 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13484 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013485 PyErr_Format(PyExc_MemoryError, "realloc None");
13486 return NULL;
13487 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013488 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013489 _children[_n++] = _res;
13490 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013491 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013492 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013494 if (_n == 0 || p->error_indicator) {
13495 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013496 return NULL;
13497 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013498 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13499 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013500 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_58");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013501 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013502 return NULL;
13503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013504 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13505 PyMem_Free(_children);
13506 _PyPegen_insert_memo(p, _start_mark, _loop1_58_type, _seq);
13507 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013508}
13509
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013510// _loop1_59: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013511static asdl_seq *
13512_loop1_59_rule(Parser *p)
13513{
13514 if (p->error_indicator) {
13515 return NULL;
13516 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013517 void *_res = NULL;
13518 int _mark = p->mark;
13519 int _start_mark = p->mark;
13520 void **_children = PyMem_Malloc(sizeof(void *));
13521 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013522 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13523 return NULL;
13524 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013525 ssize_t _children_capacity = 1;
13526 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013527 { // param_no_default
13528 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013529 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013530 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013531 )
13532 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013533 _res = param_no_default_var;
13534 if (_n == _children_capacity) {
13535 _children_capacity *= 2;
13536 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13537 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013538 PyErr_Format(PyExc_MemoryError, "realloc None");
13539 return NULL;
13540 }
13541 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013542 _children[_n++] = _res;
13543 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013544 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013545 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013547 if (_n == 0 || p->error_indicator) {
13548 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013549 return NULL;
13550 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013551 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13552 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013553 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_59");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013554 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013555 return NULL;
13556 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013557 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13558 PyMem_Free(_children);
13559 _PyPegen_insert_memo(p, _start_mark, _loop1_59_type, _seq);
13560 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013561}
13562
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013563// _loop1_60: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013564static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013565_loop1_60_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013566{
13567 if (p->error_indicator) {
13568 return NULL;
13569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013570 void *_res = NULL;
13571 int _mark = p->mark;
13572 int _start_mark = p->mark;
13573 void **_children = PyMem_Malloc(sizeof(void *));
13574 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013575 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13576 return NULL;
13577 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013578 ssize_t _children_capacity = 1;
13579 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013580 { // param_no_default
13581 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013582 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013583 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013584 )
13585 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013586 _res = param_no_default_var;
13587 if (_n == _children_capacity) {
13588 _children_capacity *= 2;
13589 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13590 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013591 PyErr_Format(PyExc_MemoryError, "realloc None");
13592 return NULL;
13593 }
13594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013595 _children[_n++] = _res;
13596 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013597 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013598 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013599 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013600 if (_n == 0 || p->error_indicator) {
13601 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013602 return NULL;
13603 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013604 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13605 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013606 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_60");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013607 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013608 return NULL;
13609 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013610 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13611 PyMem_Free(_children);
13612 _PyPegen_insert_memo(p, _start_mark, _loop1_60_type, _seq);
13613 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013614}
13615
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013616// _loop0_61: param_no_default
13617static asdl_seq *
13618_loop0_61_rule(Parser *p)
13619{
13620 if (p->error_indicator) {
13621 return NULL;
13622 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013623 void *_res = NULL;
13624 int _mark = p->mark;
13625 int _start_mark = p->mark;
13626 void **_children = PyMem_Malloc(sizeof(void *));
13627 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013628 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13629 return NULL;
13630 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013631 ssize_t _children_capacity = 1;
13632 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013633 { // param_no_default
13634 arg_ty param_no_default_var;
13635 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013636 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013637 )
13638 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013639 _res = param_no_default_var;
13640 if (_n == _children_capacity) {
13641 _children_capacity *= 2;
13642 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13643 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013644 PyErr_Format(PyExc_MemoryError, "realloc None");
13645 return NULL;
13646 }
13647 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013648 _children[_n++] = _res;
13649 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013650 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013651 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013652 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013653 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13654 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013655 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_61");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013656 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013657 return NULL;
13658 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013659 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13660 PyMem_Free(_children);
13661 _PyPegen_insert_memo(p, _start_mark, _loop0_61_type, _seq);
13662 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013663}
13664
13665// _loop1_62: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013666static asdl_seq *
13667_loop1_62_rule(Parser *p)
13668{
13669 if (p->error_indicator) {
13670 return NULL;
13671 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013672 void *_res = NULL;
13673 int _mark = p->mark;
13674 int _start_mark = p->mark;
13675 void **_children = PyMem_Malloc(sizeof(void *));
13676 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013677 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13678 return NULL;
13679 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013680 ssize_t _children_capacity = 1;
13681 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013682 { // param_with_default
13683 NameDefaultPair* param_with_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013684 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013685 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013686 )
13687 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013688 _res = param_with_default_var;
13689 if (_n == _children_capacity) {
13690 _children_capacity *= 2;
13691 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13692 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013693 PyErr_Format(PyExc_MemoryError, "realloc None");
13694 return NULL;
13695 }
13696 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013697 _children[_n++] = _res;
13698 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013699 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013700 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013701 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013702 if (_n == 0 || p->error_indicator) {
13703 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013704 return NULL;
13705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013706 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13707 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013708 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_62");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013709 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013710 return NULL;
13711 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013712 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13713 PyMem_Free(_children);
13714 _PyPegen_insert_memo(p, _start_mark, _loop1_62_type, _seq);
13715 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013716}
13717
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013718// _loop0_63: param_no_default
13719static asdl_seq *
13720_loop0_63_rule(Parser *p)
13721{
13722 if (p->error_indicator) {
13723 return NULL;
13724 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013725 void *_res = NULL;
13726 int _mark = p->mark;
13727 int _start_mark = p->mark;
13728 void **_children = PyMem_Malloc(sizeof(void *));
13729 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013730 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13731 return NULL;
13732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013733 ssize_t _children_capacity = 1;
13734 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013735 { // param_no_default
13736 arg_ty param_no_default_var;
13737 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013738 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013739 )
13740 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013741 _res = param_no_default_var;
13742 if (_n == _children_capacity) {
13743 _children_capacity *= 2;
13744 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13745 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013746 PyErr_Format(PyExc_MemoryError, "realloc None");
13747 return NULL;
13748 }
13749 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013750 _children[_n++] = _res;
13751 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013752 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013753 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013754 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013755 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13756 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013757 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_63");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013758 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013759 return NULL;
13760 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013761 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13762 PyMem_Free(_children);
13763 _PyPegen_insert_memo(p, _start_mark, _loop0_63_type, _seq);
13764 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013765}
13766
13767// _loop1_64: param_with_default
13768static asdl_seq *
13769_loop1_64_rule(Parser *p)
13770{
13771 if (p->error_indicator) {
13772 return NULL;
13773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013774 void *_res = NULL;
13775 int _mark = p->mark;
13776 int _start_mark = p->mark;
13777 void **_children = PyMem_Malloc(sizeof(void *));
13778 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013779 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13780 return NULL;
13781 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013782 ssize_t _children_capacity = 1;
13783 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013784 { // param_with_default
13785 NameDefaultPair* param_with_default_var;
13786 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013787 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013788 )
13789 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013790 _res = param_with_default_var;
13791 if (_n == _children_capacity) {
13792 _children_capacity *= 2;
13793 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13794 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013795 PyErr_Format(PyExc_MemoryError, "realloc None");
13796 return NULL;
13797 }
13798 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013799 _children[_n++] = _res;
13800 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013801 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013802 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013803 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013804 if (_n == 0 || p->error_indicator) {
13805 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013806 return NULL;
13807 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013808 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13809 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013810 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_64");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013811 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013812 return NULL;
13813 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013814 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13815 PyMem_Free(_children);
13816 _PyPegen_insert_memo(p, _start_mark, _loop1_64_type, _seq);
13817 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013818}
13819
13820// _loop0_65: param_maybe_default
13821static asdl_seq *
13822_loop0_65_rule(Parser *p)
13823{
13824 if (p->error_indicator) {
13825 return NULL;
13826 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013827 void *_res = NULL;
13828 int _mark = p->mark;
13829 int _start_mark = p->mark;
13830 void **_children = PyMem_Malloc(sizeof(void *));
13831 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013832 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13833 return NULL;
13834 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013835 ssize_t _children_capacity = 1;
13836 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013837 { // param_maybe_default
13838 NameDefaultPair* param_maybe_default_var;
13839 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013840 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013841 )
13842 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013843 _res = param_maybe_default_var;
13844 if (_n == _children_capacity) {
13845 _children_capacity *= 2;
13846 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13847 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013848 PyErr_Format(PyExc_MemoryError, "realloc None");
13849 return NULL;
13850 }
13851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013852 _children[_n++] = _res;
13853 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013854 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013855 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013856 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013857 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13858 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013859 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_65");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013860 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013861 return NULL;
13862 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013863 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13864 PyMem_Free(_children);
13865 _PyPegen_insert_memo(p, _start_mark, _loop0_65_type, _seq);
13866 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013867}
13868
13869// _loop1_66: param_maybe_default
13870static asdl_seq *
13871_loop1_66_rule(Parser *p)
13872{
13873 if (p->error_indicator) {
13874 return NULL;
13875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013876 void *_res = NULL;
13877 int _mark = p->mark;
13878 int _start_mark = p->mark;
13879 void **_children = PyMem_Malloc(sizeof(void *));
13880 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013881 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13882 return NULL;
13883 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013884 ssize_t _children_capacity = 1;
13885 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013886 { // param_maybe_default
13887 NameDefaultPair* param_maybe_default_var;
13888 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013889 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013890 )
13891 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013892 _res = param_maybe_default_var;
13893 if (_n == _children_capacity) {
13894 _children_capacity *= 2;
13895 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13896 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013897 PyErr_Format(PyExc_MemoryError, "realloc None");
13898 return NULL;
13899 }
13900 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013901 _children[_n++] = _res;
13902 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013903 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013904 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013905 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013906 if (_n == 0 || p->error_indicator) {
13907 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013908 return NULL;
13909 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013910 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13911 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013912 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_66");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013913 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013914 return NULL;
13915 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013916 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13917 PyMem_Free(_children);
13918 _PyPegen_insert_memo(p, _start_mark, _loop1_66_type, _seq);
13919 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013920}
13921
13922// _loop1_67: ('@' named_expression NEWLINE)
13923static asdl_seq *
13924_loop1_67_rule(Parser *p)
13925{
13926 if (p->error_indicator) {
13927 return NULL;
13928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013929 void *_res = NULL;
13930 int _mark = p->mark;
13931 int _start_mark = p->mark;
13932 void **_children = PyMem_Malloc(sizeof(void *));
13933 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013934 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13935 return NULL;
13936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013937 ssize_t _children_capacity = 1;
13938 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013939 { // ('@' named_expression NEWLINE)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030013940 void *_tmp_137_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013941 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013942 (_tmp_137_var = _tmp_137_rule(p)) // '@' named_expression NEWLINE
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013943 )
13944 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013945 _res = _tmp_137_var;
13946 if (_n == _children_capacity) {
13947 _children_capacity *= 2;
13948 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13949 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013950 PyErr_Format(PyExc_MemoryError, "realloc None");
13951 return NULL;
13952 }
13953 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013954 _children[_n++] = _res;
13955 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013957 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013958 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013959 if (_n == 0 || p->error_indicator) {
13960 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013961 return NULL;
13962 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013963 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13964 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013965 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_67");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013966 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013967 return NULL;
13968 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013969 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13970 PyMem_Free(_children);
13971 _PyPegen_insert_memo(p, _start_mark, _loop1_67_type, _seq);
13972 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013973}
13974
13975// _tmp_68: '(' arguments? ')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013976static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013977_tmp_68_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013978{
13979 if (p->error_indicator) {
13980 return NULL;
13981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013982 void * _res = NULL;
13983 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013984 { // '(' arguments? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013985 Token * _literal;
13986 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013987 void *z;
13988 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013989 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013990 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013991 (z = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013992 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013993 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013994 )
13995 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013996 _res = z;
13997 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013998 p->error_indicator = 1;
13999 return NULL;
14000 }
14001 goto done;
14002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014003 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014005 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014006 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014007 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014008}
14009
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014010// _loop0_70: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014011static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014012_loop0_70_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014013{
14014 if (p->error_indicator) {
14015 return NULL;
14016 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014017 void *_res = NULL;
14018 int _mark = p->mark;
14019 int _start_mark = p->mark;
14020 void **_children = PyMem_Malloc(sizeof(void *));
14021 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014022 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14023 return NULL;
14024 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014025 ssize_t _children_capacity = 1;
14026 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014027 { // ',' star_expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014028 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014029 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014030 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014031 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014032 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014033 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014034 )
14035 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014036 _res = elem;
14037 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014038 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014039 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014040 return NULL;
14041 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014042 if (_n == _children_capacity) {
14043 _children_capacity *= 2;
14044 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14045 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014046 PyErr_Format(PyExc_MemoryError, "realloc None");
14047 return NULL;
14048 }
14049 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014050 _children[_n++] = _res;
14051 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014052 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014053 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014055 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14056 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014057 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_70");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014058 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014059 return NULL;
14060 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014061 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14062 PyMem_Free(_children);
14063 _PyPegen_insert_memo(p, _start_mark, _loop0_70_type, _seq);
14064 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014065}
14066
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014067// _gather_69: star_expression _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014068static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014069_gather_69_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014070{
14071 if (p->error_indicator) {
14072 return NULL;
14073 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014074 asdl_seq * _res = NULL;
14075 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014076 { // star_expression _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014077 expr_ty elem;
14078 asdl_seq * seq;
14079 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014080 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014081 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014082 (seq = _loop0_70_rule(p)) // _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014083 )
14084 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014085 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014086 goto done;
14087 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014088 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014089 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014090 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014091 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014092 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014093}
14094
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014095// _loop1_71: (',' star_expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014096static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014097_loop1_71_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014098{
14099 if (p->error_indicator) {
14100 return NULL;
14101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014102 void *_res = NULL;
14103 int _mark = p->mark;
14104 int _start_mark = p->mark;
14105 void **_children = PyMem_Malloc(sizeof(void *));
14106 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014107 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14108 return NULL;
14109 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014110 ssize_t _children_capacity = 1;
14111 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014112 { // (',' star_expression)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030014113 void *_tmp_138_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014114 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014115 (_tmp_138_var = _tmp_138_rule(p)) // ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014116 )
14117 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014118 _res = _tmp_138_var;
14119 if (_n == _children_capacity) {
14120 _children_capacity *= 2;
14121 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14122 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014123 PyErr_Format(PyExc_MemoryError, "realloc None");
14124 return NULL;
14125 }
14126 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014127 _children[_n++] = _res;
14128 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014129 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014130 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014131 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014132 if (_n == 0 || p->error_indicator) {
14133 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014134 return NULL;
14135 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014136 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14137 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014138 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_71");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014139 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014140 return NULL;
14141 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014142 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14143 PyMem_Free(_children);
14144 _PyPegen_insert_memo(p, _start_mark, _loop1_71_type, _seq);
14145 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014146}
14147
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014148// _loop0_73: ',' star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014149static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014150_loop0_73_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014151{
14152 if (p->error_indicator) {
14153 return NULL;
14154 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014155 void *_res = NULL;
14156 int _mark = p->mark;
14157 int _start_mark = p->mark;
14158 void **_children = PyMem_Malloc(sizeof(void *));
14159 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014160 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14161 return NULL;
14162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014163 ssize_t _children_capacity = 1;
14164 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014165 { // ',' star_named_expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014166 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014167 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014168 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014169 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014170 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014171 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014172 )
14173 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014174 _res = elem;
14175 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014176 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014177 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014178 return NULL;
14179 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014180 if (_n == _children_capacity) {
14181 _children_capacity *= 2;
14182 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14183 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014184 PyErr_Format(PyExc_MemoryError, "realloc None");
14185 return NULL;
14186 }
14187 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014188 _children[_n++] = _res;
14189 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014190 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014191 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014192 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014193 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14194 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014195 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_73");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014196 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014197 return NULL;
14198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014199 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14200 PyMem_Free(_children);
14201 _PyPegen_insert_memo(p, _start_mark, _loop0_73_type, _seq);
14202 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014203}
14204
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014205// _gather_72: star_named_expression _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014206static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014207_gather_72_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014208{
14209 if (p->error_indicator) {
14210 return NULL;
14211 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014212 asdl_seq * _res = NULL;
14213 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014214 { // star_named_expression _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014215 expr_ty elem;
14216 asdl_seq * seq;
14217 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014218 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014219 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014220 (seq = _loop0_73_rule(p)) // _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014221 )
14222 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014223 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014224 goto done;
14225 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014226 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014228 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014229 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014230 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014231}
14232
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014233// _loop1_74: (',' expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014234static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014235_loop1_74_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014236{
14237 if (p->error_indicator) {
14238 return NULL;
14239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014240 void *_res = NULL;
14241 int _mark = p->mark;
14242 int _start_mark = p->mark;
14243 void **_children = PyMem_Malloc(sizeof(void *));
14244 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014245 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14246 return NULL;
14247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014248 ssize_t _children_capacity = 1;
14249 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014250 { // (',' expression)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030014251 void *_tmp_139_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014252 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014253 (_tmp_139_var = _tmp_139_rule(p)) // ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014254 )
14255 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014256 _res = _tmp_139_var;
14257 if (_n == _children_capacity) {
14258 _children_capacity *= 2;
14259 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14260 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014261 PyErr_Format(PyExc_MemoryError, "realloc None");
14262 return NULL;
14263 }
14264 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014265 _children[_n++] = _res;
14266 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014268 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014269 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014270 if (_n == 0 || p->error_indicator) {
14271 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014272 return NULL;
14273 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014274 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14275 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014276 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_74");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014277 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014278 return NULL;
14279 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014280 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14281 PyMem_Free(_children);
14282 _PyPegen_insert_memo(p, _start_mark, _loop1_74_type, _seq);
14283 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014284}
14285
Guido van Rossum3941d972020-05-01 09:42:03 -070014286// _loop0_75: lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014287static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070014288_loop0_75_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014289{
14290 if (p->error_indicator) {
14291 return NULL;
14292 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014293 void *_res = NULL;
14294 int _mark = p->mark;
14295 int _start_mark = p->mark;
14296 void **_children = PyMem_Malloc(sizeof(void *));
14297 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014298 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14299 return NULL;
14300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014301 ssize_t _children_capacity = 1;
14302 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014303 { // lambda_param_no_default
14304 arg_ty lambda_param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014305 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014306 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014307 )
14308 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014309 _res = lambda_param_no_default_var;
14310 if (_n == _children_capacity) {
14311 _children_capacity *= 2;
14312 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14313 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014314 PyErr_Format(PyExc_MemoryError, "realloc None");
14315 return NULL;
14316 }
14317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014318 _children[_n++] = _res;
14319 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014320 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014321 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014323 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14324 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014325 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_75");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014326 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014327 return NULL;
14328 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014329 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14330 PyMem_Free(_children);
14331 _PyPegen_insert_memo(p, _start_mark, _loop0_75_type, _seq);
14332 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014333}
14334
Guido van Rossum3941d972020-05-01 09:42:03 -070014335// _loop0_76: lambda_param_with_default
14336static asdl_seq *
14337_loop0_76_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014338{
14339 if (p->error_indicator) {
14340 return NULL;
14341 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014342 void *_res = NULL;
14343 int _mark = p->mark;
14344 int _start_mark = p->mark;
14345 void **_children = PyMem_Malloc(sizeof(void *));
14346 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014347 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14348 return NULL;
14349 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014350 ssize_t _children_capacity = 1;
14351 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014352 { // lambda_param_with_default
14353 NameDefaultPair* lambda_param_with_default_var;
14354 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014355 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014356 )
14357 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014358 _res = lambda_param_with_default_var;
14359 if (_n == _children_capacity) {
14360 _children_capacity *= 2;
14361 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14362 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014363 PyErr_Format(PyExc_MemoryError, "realloc None");
14364 return NULL;
14365 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014367 _children[_n++] = _res;
14368 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014370 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014371 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014372 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14373 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014374 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_76");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014375 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014376 return NULL;
14377 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014378 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14379 PyMem_Free(_children);
14380 _PyPegen_insert_memo(p, _start_mark, _loop0_76_type, _seq);
14381 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014382}
14383
Guido van Rossum3941d972020-05-01 09:42:03 -070014384// _loop0_77: lambda_param_with_default
14385static asdl_seq *
14386_loop0_77_rule(Parser *p)
14387{
14388 if (p->error_indicator) {
14389 return NULL;
14390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014391 void *_res = NULL;
14392 int _mark = p->mark;
14393 int _start_mark = p->mark;
14394 void **_children = PyMem_Malloc(sizeof(void *));
14395 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014396 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14397 return NULL;
14398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014399 ssize_t _children_capacity = 1;
14400 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014401 { // lambda_param_with_default
14402 NameDefaultPair* lambda_param_with_default_var;
14403 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014404 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014405 )
14406 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014407 _res = lambda_param_with_default_var;
14408 if (_n == _children_capacity) {
14409 _children_capacity *= 2;
14410 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14411 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014412 PyErr_Format(PyExc_MemoryError, "realloc None");
14413 return NULL;
14414 }
14415 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014416 _children[_n++] = _res;
14417 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014418 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014419 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014421 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14422 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014423 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_77");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014424 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014425 return NULL;
14426 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014427 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14428 PyMem_Free(_children);
14429 _PyPegen_insert_memo(p, _start_mark, _loop0_77_type, _seq);
14430 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014431}
14432
14433// _loop1_78: lambda_param_no_default
14434static asdl_seq *
14435_loop1_78_rule(Parser *p)
14436{
14437 if (p->error_indicator) {
14438 return NULL;
14439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014440 void *_res = NULL;
14441 int _mark = p->mark;
14442 int _start_mark = p->mark;
14443 void **_children = PyMem_Malloc(sizeof(void *));
14444 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014445 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14446 return NULL;
14447 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014448 ssize_t _children_capacity = 1;
14449 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014450 { // lambda_param_no_default
14451 arg_ty lambda_param_no_default_var;
14452 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014453 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014454 )
14455 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014456 _res = lambda_param_no_default_var;
14457 if (_n == _children_capacity) {
14458 _children_capacity *= 2;
14459 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14460 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014461 PyErr_Format(PyExc_MemoryError, "realloc None");
14462 return NULL;
14463 }
14464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014465 _children[_n++] = _res;
14466 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014467 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014468 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014469 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014470 if (_n == 0 || p->error_indicator) {
14471 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014472 return NULL;
14473 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014474 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14475 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014476 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_78");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014477 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014478 return NULL;
14479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014480 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14481 PyMem_Free(_children);
14482 _PyPegen_insert_memo(p, _start_mark, _loop1_78_type, _seq);
14483 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014484}
14485
14486// _loop0_79: lambda_param_with_default
14487static asdl_seq *
14488_loop0_79_rule(Parser *p)
14489{
14490 if (p->error_indicator) {
14491 return NULL;
14492 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014493 void *_res = NULL;
14494 int _mark = p->mark;
14495 int _start_mark = p->mark;
14496 void **_children = PyMem_Malloc(sizeof(void *));
14497 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014498 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14499 return NULL;
14500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014501 ssize_t _children_capacity = 1;
14502 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014503 { // lambda_param_with_default
14504 NameDefaultPair* lambda_param_with_default_var;
14505 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014506 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014507 )
14508 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014509 _res = lambda_param_with_default_var;
14510 if (_n == _children_capacity) {
14511 _children_capacity *= 2;
14512 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14513 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014514 PyErr_Format(PyExc_MemoryError, "realloc None");
14515 return NULL;
14516 }
14517 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014518 _children[_n++] = _res;
14519 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014520 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014521 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014522 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014523 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14524 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014525 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_79");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014526 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014527 return NULL;
14528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014529 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14530 PyMem_Free(_children);
14531 _PyPegen_insert_memo(p, _start_mark, _loop0_79_type, _seq);
14532 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014533}
14534
14535// _loop1_80: lambda_param_with_default
14536static asdl_seq *
14537_loop1_80_rule(Parser *p)
14538{
14539 if (p->error_indicator) {
14540 return NULL;
14541 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014542 void *_res = NULL;
14543 int _mark = p->mark;
14544 int _start_mark = p->mark;
14545 void **_children = PyMem_Malloc(sizeof(void *));
14546 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014547 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14548 return NULL;
14549 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014550 ssize_t _children_capacity = 1;
14551 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014552 { // lambda_param_with_default
14553 NameDefaultPair* lambda_param_with_default_var;
14554 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014555 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014556 )
14557 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014558 _res = lambda_param_with_default_var;
14559 if (_n == _children_capacity) {
14560 _children_capacity *= 2;
14561 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14562 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014563 PyErr_Format(PyExc_MemoryError, "realloc None");
14564 return NULL;
14565 }
14566 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014567 _children[_n++] = _res;
14568 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014570 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014571 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014572 if (_n == 0 || p->error_indicator) {
14573 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014574 return NULL;
14575 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014576 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14577 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014578 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_80");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014579 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014580 return NULL;
14581 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014582 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14583 PyMem_Free(_children);
14584 _PyPegen_insert_memo(p, _start_mark, _loop1_80_type, _seq);
14585 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014586}
14587
14588// _loop1_81: lambda_param_no_default
14589static asdl_seq *
14590_loop1_81_rule(Parser *p)
14591{
14592 if (p->error_indicator) {
14593 return NULL;
14594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014595 void *_res = NULL;
14596 int _mark = p->mark;
14597 int _start_mark = p->mark;
14598 void **_children = PyMem_Malloc(sizeof(void *));
14599 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014600 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14601 return NULL;
14602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014603 ssize_t _children_capacity = 1;
14604 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014605 { // lambda_param_no_default
14606 arg_ty lambda_param_no_default_var;
14607 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014608 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014609 )
14610 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014611 _res = lambda_param_no_default_var;
14612 if (_n == _children_capacity) {
14613 _children_capacity *= 2;
14614 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14615 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014616 PyErr_Format(PyExc_MemoryError, "realloc None");
14617 return NULL;
14618 }
14619 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014620 _children[_n++] = _res;
14621 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014622 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014623 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014625 if (_n == 0 || p->error_indicator) {
14626 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014627 return NULL;
14628 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014629 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14630 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014631 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_81");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014632 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014633 return NULL;
14634 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014635 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14636 PyMem_Free(_children);
14637 _PyPegen_insert_memo(p, _start_mark, _loop1_81_type, _seq);
14638 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014639}
14640
14641// _loop1_82: lambda_param_no_default
14642static asdl_seq *
14643_loop1_82_rule(Parser *p)
14644{
14645 if (p->error_indicator) {
14646 return NULL;
14647 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014648 void *_res = NULL;
14649 int _mark = p->mark;
14650 int _start_mark = p->mark;
14651 void **_children = PyMem_Malloc(sizeof(void *));
14652 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014653 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14654 return NULL;
14655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014656 ssize_t _children_capacity = 1;
14657 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014658 { // lambda_param_no_default
14659 arg_ty lambda_param_no_default_var;
14660 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014661 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014662 )
14663 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014664 _res = lambda_param_no_default_var;
14665 if (_n == _children_capacity) {
14666 _children_capacity *= 2;
14667 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14668 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014669 PyErr_Format(PyExc_MemoryError, "realloc None");
14670 return NULL;
14671 }
14672 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014673 _children[_n++] = _res;
14674 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014675 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014676 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014677 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014678 if (_n == 0 || p->error_indicator) {
14679 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014680 return NULL;
14681 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014682 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14683 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014684 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_82");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014685 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014686 return NULL;
14687 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014688 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14689 PyMem_Free(_children);
14690 _PyPegen_insert_memo(p, _start_mark, _loop1_82_type, _seq);
14691 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014692}
14693
14694// _loop0_83: lambda_param_no_default
14695static asdl_seq *
14696_loop0_83_rule(Parser *p)
14697{
14698 if (p->error_indicator) {
14699 return NULL;
14700 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014701 void *_res = NULL;
14702 int _mark = p->mark;
14703 int _start_mark = p->mark;
14704 void **_children = PyMem_Malloc(sizeof(void *));
14705 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014706 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14707 return NULL;
14708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014709 ssize_t _children_capacity = 1;
14710 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014711 { // lambda_param_no_default
14712 arg_ty lambda_param_no_default_var;
14713 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014714 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014715 )
14716 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014717 _res = lambda_param_no_default_var;
14718 if (_n == _children_capacity) {
14719 _children_capacity *= 2;
14720 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14721 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014722 PyErr_Format(PyExc_MemoryError, "realloc None");
14723 return NULL;
14724 }
14725 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014726 _children[_n++] = _res;
14727 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014728 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014729 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014731 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14732 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014733 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_83");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014734 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014735 return NULL;
14736 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014737 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14738 PyMem_Free(_children);
14739 _PyPegen_insert_memo(p, _start_mark, _loop0_83_type, _seq);
14740 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014741}
14742
14743// _loop1_84: lambda_param_with_default
14744static asdl_seq *
14745_loop1_84_rule(Parser *p)
14746{
14747 if (p->error_indicator) {
14748 return NULL;
14749 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014750 void *_res = NULL;
14751 int _mark = p->mark;
14752 int _start_mark = p->mark;
14753 void **_children = PyMem_Malloc(sizeof(void *));
14754 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014755 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14756 return NULL;
14757 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014758 ssize_t _children_capacity = 1;
14759 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014760 { // lambda_param_with_default
14761 NameDefaultPair* lambda_param_with_default_var;
14762 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014763 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014764 )
14765 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014766 _res = lambda_param_with_default_var;
14767 if (_n == _children_capacity) {
14768 _children_capacity *= 2;
14769 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14770 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014771 PyErr_Format(PyExc_MemoryError, "realloc None");
14772 return NULL;
14773 }
14774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014775 _children[_n++] = _res;
14776 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014777 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014778 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014779 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014780 if (_n == 0 || p->error_indicator) {
14781 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014782 return NULL;
14783 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014784 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14785 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014786 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_84");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014787 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014788 return NULL;
14789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014790 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14791 PyMem_Free(_children);
14792 _PyPegen_insert_memo(p, _start_mark, _loop1_84_type, _seq);
14793 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014794}
14795
14796// _loop0_85: lambda_param_no_default
14797static asdl_seq *
14798_loop0_85_rule(Parser *p)
14799{
14800 if (p->error_indicator) {
14801 return NULL;
14802 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014803 void *_res = NULL;
14804 int _mark = p->mark;
14805 int _start_mark = p->mark;
14806 void **_children = PyMem_Malloc(sizeof(void *));
14807 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014808 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14809 return NULL;
14810 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014811 ssize_t _children_capacity = 1;
14812 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014813 { // lambda_param_no_default
14814 arg_ty lambda_param_no_default_var;
14815 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014816 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014817 )
14818 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014819 _res = lambda_param_no_default_var;
14820 if (_n == _children_capacity) {
14821 _children_capacity *= 2;
14822 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14823 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014824 PyErr_Format(PyExc_MemoryError, "realloc None");
14825 return NULL;
14826 }
14827 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014828 _children[_n++] = _res;
14829 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014831 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014832 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014833 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14834 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014835 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_85");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014836 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014837 return NULL;
14838 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014839 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14840 PyMem_Free(_children);
14841 _PyPegen_insert_memo(p, _start_mark, _loop0_85_type, _seq);
14842 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014843}
14844
14845// _loop1_86: lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014846static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014847_loop1_86_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014848{
14849 if (p->error_indicator) {
14850 return NULL;
14851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014852 void *_res = NULL;
14853 int _mark = p->mark;
14854 int _start_mark = p->mark;
14855 void **_children = PyMem_Malloc(sizeof(void *));
14856 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014857 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14858 return NULL;
14859 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014860 ssize_t _children_capacity = 1;
14861 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014862 { // lambda_param_with_default
14863 NameDefaultPair* lambda_param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014864 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014865 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014866 )
14867 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014868 _res = lambda_param_with_default_var;
14869 if (_n == _children_capacity) {
14870 _children_capacity *= 2;
14871 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14872 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014873 PyErr_Format(PyExc_MemoryError, "realloc None");
14874 return NULL;
14875 }
14876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014877 _children[_n++] = _res;
14878 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014879 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014880 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014881 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014882 if (_n == 0 || p->error_indicator) {
14883 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014884 return NULL;
14885 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014886 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14887 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014888 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_86");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014889 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014890 return NULL;
14891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014892 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14893 PyMem_Free(_children);
14894 _PyPegen_insert_memo(p, _start_mark, _loop1_86_type, _seq);
14895 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014896}
14897
Guido van Rossum3941d972020-05-01 09:42:03 -070014898// _loop0_87: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014899static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070014900_loop0_87_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014901{
14902 if (p->error_indicator) {
14903 return NULL;
14904 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014905 void *_res = NULL;
14906 int _mark = p->mark;
14907 int _start_mark = p->mark;
14908 void **_children = PyMem_Malloc(sizeof(void *));
14909 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014910 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14911 return NULL;
14912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014913 ssize_t _children_capacity = 1;
14914 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014915 { // lambda_param_maybe_default
14916 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014917 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014918 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014919 )
14920 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014921 _res = lambda_param_maybe_default_var;
14922 if (_n == _children_capacity) {
14923 _children_capacity *= 2;
14924 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14925 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014926 PyErr_Format(PyExc_MemoryError, "realloc None");
14927 return NULL;
14928 }
14929 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014930 _children[_n++] = _res;
14931 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014933 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014935 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14936 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014937 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_87");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014938 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014939 return NULL;
14940 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014941 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14942 PyMem_Free(_children);
14943 _PyPegen_insert_memo(p, _start_mark, _loop0_87_type, _seq);
14944 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014945}
14946
Guido van Rossum3941d972020-05-01 09:42:03 -070014947// _loop1_88: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014948static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070014949_loop1_88_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014950{
14951 if (p->error_indicator) {
14952 return NULL;
14953 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014954 void *_res = NULL;
14955 int _mark = p->mark;
14956 int _start_mark = p->mark;
14957 void **_children = PyMem_Malloc(sizeof(void *));
14958 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014959 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14960 return NULL;
14961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014962 ssize_t _children_capacity = 1;
14963 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014964 { // lambda_param_maybe_default
14965 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014966 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014967 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014968 )
14969 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014970 _res = lambda_param_maybe_default_var;
14971 if (_n == _children_capacity) {
14972 _children_capacity *= 2;
14973 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14974 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014975 PyErr_Format(PyExc_MemoryError, "realloc None");
14976 return NULL;
14977 }
14978 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014979 _children[_n++] = _res;
14980 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014982 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014984 if (_n == 0 || p->error_indicator) {
14985 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014986 return NULL;
14987 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014988 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14989 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014990 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_88");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014991 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014992 return NULL;
14993 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014994 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14995 PyMem_Free(_children);
14996 _PyPegen_insert_memo(p, _start_mark, _loop1_88_type, _seq);
14997 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014998}
14999
Guido van Rossum3941d972020-05-01 09:42:03 -070015000// _loop1_89: ('or' conjunction)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015001static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015002_loop1_89_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015003{
15004 if (p->error_indicator) {
15005 return NULL;
15006 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015007 void *_res = NULL;
15008 int _mark = p->mark;
15009 int _start_mark = p->mark;
15010 void **_children = PyMem_Malloc(sizeof(void *));
15011 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015012 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15013 return NULL;
15014 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015015 ssize_t _children_capacity = 1;
15016 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015017 { // ('or' conjunction)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015018 void *_tmp_140_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015019 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015020 (_tmp_140_var = _tmp_140_rule(p)) // 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015021 )
15022 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015023 _res = _tmp_140_var;
15024 if (_n == _children_capacity) {
15025 _children_capacity *= 2;
15026 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15027 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015028 PyErr_Format(PyExc_MemoryError, "realloc None");
15029 return NULL;
15030 }
15031 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015032 _children[_n++] = _res;
15033 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015035 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015037 if (_n == 0 || p->error_indicator) {
15038 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015039 return NULL;
15040 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015041 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15042 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015043 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_89");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015044 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015045 return NULL;
15046 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015047 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15048 PyMem_Free(_children);
15049 _PyPegen_insert_memo(p, _start_mark, _loop1_89_type, _seq);
15050 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015051}
15052
Guido van Rossum3941d972020-05-01 09:42:03 -070015053// _loop1_90: ('and' inversion)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015054static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015055_loop1_90_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015056{
15057 if (p->error_indicator) {
15058 return NULL;
15059 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015060 void *_res = NULL;
15061 int _mark = p->mark;
15062 int _start_mark = p->mark;
15063 void **_children = PyMem_Malloc(sizeof(void *));
15064 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015065 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15066 return NULL;
15067 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015068 ssize_t _children_capacity = 1;
15069 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015070 { // ('and' inversion)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015071 void *_tmp_141_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015072 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015073 (_tmp_141_var = _tmp_141_rule(p)) // 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015074 )
15075 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015076 _res = _tmp_141_var;
15077 if (_n == _children_capacity) {
15078 _children_capacity *= 2;
15079 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15080 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015081 PyErr_Format(PyExc_MemoryError, "realloc None");
15082 return NULL;
15083 }
15084 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015085 _children[_n++] = _res;
15086 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015087 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015088 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015089 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015090 if (_n == 0 || p->error_indicator) {
15091 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015092 return NULL;
15093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015094 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15095 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015096 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_90");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015097 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015098 return NULL;
15099 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015100 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15101 PyMem_Free(_children);
15102 _PyPegen_insert_memo(p, _start_mark, _loop1_90_type, _seq);
15103 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015104}
15105
Guido van Rossum3941d972020-05-01 09:42:03 -070015106// _loop1_91: compare_op_bitwise_or_pair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015107static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015108_loop1_91_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015109{
15110 if (p->error_indicator) {
15111 return NULL;
15112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015113 void *_res = NULL;
15114 int _mark = p->mark;
15115 int _start_mark = p->mark;
15116 void **_children = PyMem_Malloc(sizeof(void *));
15117 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015118 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15119 return NULL;
15120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015121 ssize_t _children_capacity = 1;
15122 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015123 { // compare_op_bitwise_or_pair
15124 CmpopExprPair* compare_op_bitwise_or_pair_var;
15125 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015126 (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 +010015127 )
15128 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015129 _res = compare_op_bitwise_or_pair_var;
15130 if (_n == _children_capacity) {
15131 _children_capacity *= 2;
15132 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15133 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015134 PyErr_Format(PyExc_MemoryError, "realloc None");
15135 return NULL;
15136 }
15137 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015138 _children[_n++] = _res;
15139 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015141 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015142 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015143 if (_n == 0 || p->error_indicator) {
15144 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015145 return NULL;
15146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015147 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15148 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015149 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_91");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015150 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015151 return NULL;
15152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015153 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15154 PyMem_Free(_children);
15155 _PyPegen_insert_memo(p, _start_mark, _loop1_91_type, _seq);
15156 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015157}
15158
Guido van Rossum3941d972020-05-01 09:42:03 -070015159// _tmp_92: '!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010015160static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015161_tmp_92_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010015162{
15163 if (p->error_indicator) {
15164 return NULL;
15165 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015166 void * _res = NULL;
15167 int _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015168 { // '!='
Pablo Galindob796b3f2020-05-01 12:32:26 +010015169 Token * tok;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015170 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015171 (tok = _PyPegen_expect_token(p, 28)) // token='!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010015172 )
15173 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015174 _res = _PyPegen_check_barry_as_flufl ( p ) ? NULL : tok;
15175 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindo2b74c832020-04-27 18:02:07 +010015176 p->error_indicator = 1;
15177 return NULL;
15178 }
15179 goto done;
15180 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015181 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015182 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015183 _res = NULL;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015184 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015185 return _res;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015186}
15187
Guido van Rossum3941d972020-05-01 09:42:03 -070015188// _loop0_94: ',' slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015189static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015190_loop0_94_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015191{
15192 if (p->error_indicator) {
15193 return NULL;
15194 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015195 void *_res = NULL;
15196 int _mark = p->mark;
15197 int _start_mark = p->mark;
15198 void **_children = PyMem_Malloc(sizeof(void *));
15199 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015200 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15201 return NULL;
15202 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015203 ssize_t _children_capacity = 1;
15204 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015205 { // ',' slice
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015206 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015207 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015208 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015209 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015210 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015211 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015212 )
15213 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015214 _res = elem;
15215 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015216 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015217 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015218 return NULL;
15219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015220 if (_n == _children_capacity) {
15221 _children_capacity *= 2;
15222 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15223 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015224 PyErr_Format(PyExc_MemoryError, "realloc None");
15225 return NULL;
15226 }
15227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015228 _children[_n++] = _res;
15229 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015230 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015231 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015232 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015233 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15234 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015235 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_94");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015236 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015237 return NULL;
15238 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015239 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15240 PyMem_Free(_children);
15241 _PyPegen_insert_memo(p, _start_mark, _loop0_94_type, _seq);
15242 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015243}
15244
Guido van Rossum3941d972020-05-01 09:42:03 -070015245// _gather_93: slice _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015246static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015247_gather_93_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015248{
15249 if (p->error_indicator) {
15250 return NULL;
15251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015252 asdl_seq * _res = NULL;
15253 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015254 { // slice _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015255 expr_ty elem;
15256 asdl_seq * seq;
15257 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015258 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015259 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015260 (seq = _loop0_94_rule(p)) // _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015261 )
15262 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015263 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015264 goto done;
15265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015266 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015268 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015269 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015270 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015271}
15272
Guido van Rossum3941d972020-05-01 09:42:03 -070015273// _tmp_95: ':' expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015274static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015275_tmp_95_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015276{
15277 if (p->error_indicator) {
15278 return NULL;
15279 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015280 void * _res = NULL;
15281 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015282 { // ':' expression?
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015283 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015284 void *d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015285 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015286 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015287 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015288 (d = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015289 )
15290 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015291 _res = d;
15292 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015293 p->error_indicator = 1;
15294 return NULL;
15295 }
15296 goto done;
15297 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015298 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015299 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015300 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015301 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015302 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015303}
15304
Guido van Rossum3941d972020-05-01 09:42:03 -070015305// _tmp_96: tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015306static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015307_tmp_96_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015308{
15309 if (p->error_indicator) {
15310 return NULL;
15311 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015312 void * _res = NULL;
15313 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015314 { // tuple
15315 expr_ty tuple_var;
15316 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015317 (tuple_var = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015318 )
15319 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015320 _res = tuple_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015321 goto done;
15322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015323 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015324 }
15325 { // group
15326 expr_ty group_var;
15327 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015328 (group_var = group_rule(p)) // group
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015329 )
15330 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015331 _res = group_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015332 goto done;
15333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015334 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015335 }
15336 { // genexp
15337 expr_ty genexp_var;
15338 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015339 (genexp_var = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015340 )
15341 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015342 _res = genexp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015343 goto done;
15344 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015345 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015347 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015348 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015349 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015350}
15351
Guido van Rossum3941d972020-05-01 09:42:03 -070015352// _tmp_97: list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015353static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015354_tmp_97_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015355{
15356 if (p->error_indicator) {
15357 return NULL;
15358 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015359 void * _res = NULL;
15360 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015361 { // list
15362 expr_ty list_var;
15363 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015364 (list_var = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015365 )
15366 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015367 _res = list_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015368 goto done;
15369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015370 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015371 }
15372 { // listcomp
15373 expr_ty listcomp_var;
15374 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015375 (listcomp_var = listcomp_rule(p)) // listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015376 )
15377 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015378 _res = listcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015379 goto done;
15380 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015381 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015383 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015384 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015385 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015386}
15387
Guido van Rossum3941d972020-05-01 09:42:03 -070015388// _tmp_98: dict | set | dictcomp | setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015389static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015390_tmp_98_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015391{
15392 if (p->error_indicator) {
15393 return NULL;
15394 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015395 void * _res = NULL;
15396 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015397 { // dict
15398 expr_ty dict_var;
15399 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015400 (dict_var = dict_rule(p)) // dict
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015401 )
15402 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015403 _res = dict_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015404 goto done;
15405 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015406 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015407 }
15408 { // set
15409 expr_ty set_var;
15410 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015411 (set_var = set_rule(p)) // set
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015412 )
15413 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015414 _res = set_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015415 goto done;
15416 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015417 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015418 }
15419 { // dictcomp
15420 expr_ty dictcomp_var;
15421 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015422 (dictcomp_var = dictcomp_rule(p)) // dictcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015423 )
15424 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015425 _res = dictcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015426 goto done;
15427 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015428 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015429 }
15430 { // setcomp
15431 expr_ty setcomp_var;
15432 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015433 (setcomp_var = setcomp_rule(p)) // setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015434 )
15435 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015436 _res = setcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015437 goto done;
15438 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015439 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015440 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015441 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015442 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015443 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015444}
15445
Guido van Rossum3941d972020-05-01 09:42:03 -070015446// _loop1_99: STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015447static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015448_loop1_99_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015449{
15450 if (p->error_indicator) {
15451 return NULL;
15452 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015453 void *_res = NULL;
15454 int _mark = p->mark;
15455 int _start_mark = p->mark;
15456 void **_children = PyMem_Malloc(sizeof(void *));
15457 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015458 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15459 return NULL;
15460 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015461 ssize_t _children_capacity = 1;
15462 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015463 { // STRING
15464 expr_ty string_var;
15465 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015466 (string_var = _PyPegen_string_token(p)) // STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015467 )
15468 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015469 _res = string_var;
15470 if (_n == _children_capacity) {
15471 _children_capacity *= 2;
15472 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15473 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015474 PyErr_Format(PyExc_MemoryError, "realloc None");
15475 return NULL;
15476 }
15477 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015478 _children[_n++] = _res;
15479 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015481 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015482 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015483 if (_n == 0 || p->error_indicator) {
15484 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015485 return NULL;
15486 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015487 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15488 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015489 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_99");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015490 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015491 return NULL;
15492 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015493 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15494 PyMem_Free(_children);
15495 _PyPegen_insert_memo(p, _start_mark, _loop1_99_type, _seq);
15496 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015497}
15498
Guido van Rossum3941d972020-05-01 09:42:03 -070015499// _tmp_100: star_named_expression ',' star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015500static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015501_tmp_100_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015502{
15503 if (p->error_indicator) {
15504 return NULL;
15505 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015506 void * _res = NULL;
15507 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015508 { // star_named_expression ',' star_named_expressions?
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015509 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015510 expr_ty y;
15511 void *z;
15512 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015513 (y = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015514 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015515 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015516 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015517 (z = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015518 )
15519 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015520 _res = _PyPegen_seq_insert_in_front ( p , y , z );
15521 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015522 p->error_indicator = 1;
15523 return NULL;
15524 }
15525 goto done;
15526 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015527 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015529 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015530 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015531 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015532}
15533
Guido van Rossum3941d972020-05-01 09:42:03 -070015534// _tmp_101: yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015535static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015536_tmp_101_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015537{
15538 if (p->error_indicator) {
15539 return NULL;
15540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015541 void * _res = NULL;
15542 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015543 { // yield_expr
15544 expr_ty yield_expr_var;
15545 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015546 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015547 )
15548 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015549 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015550 goto done;
15551 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015552 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015553 }
15554 { // named_expression
15555 expr_ty named_expression_var;
15556 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015557 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015558 )
15559 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015560 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015561 goto done;
15562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015563 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015565 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015566 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015567 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015568}
15569
Guido van Rossum3941d972020-05-01 09:42:03 -070015570// _loop0_103: ',' kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015571static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015572_loop0_103_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015573{
15574 if (p->error_indicator) {
15575 return NULL;
15576 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015577 void *_res = NULL;
15578 int _mark = p->mark;
15579 int _start_mark = p->mark;
15580 void **_children = PyMem_Malloc(sizeof(void *));
15581 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015582 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15583 return NULL;
15584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015585 ssize_t _children_capacity = 1;
15586 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015587 { // ',' kvpair
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015588 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015589 KeyValuePair* elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015590 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015591 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015592 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015593 (elem = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015594 )
15595 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015596 _res = elem;
15597 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015598 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015599 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015600 return NULL;
15601 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015602 if (_n == _children_capacity) {
15603 _children_capacity *= 2;
15604 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15605 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015606 PyErr_Format(PyExc_MemoryError, "realloc None");
15607 return NULL;
15608 }
15609 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015610 _children[_n++] = _res;
15611 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015613 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015614 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015615 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15616 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015617 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_103");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015618 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015619 return NULL;
15620 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015621 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15622 PyMem_Free(_children);
15623 _PyPegen_insert_memo(p, _start_mark, _loop0_103_type, _seq);
15624 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015625}
15626
Guido van Rossum3941d972020-05-01 09:42:03 -070015627// _gather_102: kvpair _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015628static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015629_gather_102_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015630{
15631 if (p->error_indicator) {
15632 return NULL;
15633 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015634 asdl_seq * _res = NULL;
15635 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015636 { // kvpair _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015637 KeyValuePair* elem;
15638 asdl_seq * seq;
15639 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015640 (elem = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015641 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015642 (seq = _loop0_103_rule(p)) // _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015643 )
15644 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015645 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015646 goto done;
15647 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015648 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015650 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015651 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015652 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015653}
15654
Guido van Rossum3941d972020-05-01 09:42:03 -070015655// _loop1_104: for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015656static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015657_loop1_104_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015658{
15659 if (p->error_indicator) {
15660 return NULL;
15661 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015662 void *_res = NULL;
15663 int _mark = p->mark;
15664 int _start_mark = p->mark;
15665 void **_children = PyMem_Malloc(sizeof(void *));
15666 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015667 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15668 return NULL;
15669 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015670 ssize_t _children_capacity = 1;
15671 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015672 { // for_if_clause
15673 comprehension_ty for_if_clause_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015674 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015675 (for_if_clause_var = for_if_clause_rule(p)) // for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015676 )
15677 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015678 _res = for_if_clause_var;
15679 if (_n == _children_capacity) {
15680 _children_capacity *= 2;
15681 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15682 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015683 PyErr_Format(PyExc_MemoryError, "realloc None");
15684 return NULL;
15685 }
15686 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015687 _children[_n++] = _res;
15688 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015689 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015690 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015692 if (_n == 0 || p->error_indicator) {
15693 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015694 return NULL;
15695 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015696 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15697 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015698 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_104");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015699 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015700 return NULL;
15701 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015702 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15703 PyMem_Free(_children);
15704 _PyPegen_insert_memo(p, _start_mark, _loop1_104_type, _seq);
15705 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015706}
15707
Guido van Rossum3941d972020-05-01 09:42:03 -070015708// _loop0_105: ('if' disjunction)
Pablo Galindo2b74c832020-04-27 18:02:07 +010015709static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015710_loop0_105_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010015711{
15712 if (p->error_indicator) {
15713 return NULL;
15714 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015715 void *_res = NULL;
15716 int _mark = p->mark;
15717 int _start_mark = p->mark;
15718 void **_children = PyMem_Malloc(sizeof(void *));
15719 if (!_children) {
Pablo Galindo2b74c832020-04-27 18:02:07 +010015720 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15721 return NULL;
15722 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015723 ssize_t _children_capacity = 1;
15724 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015725 { // ('if' disjunction)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015726 void *_tmp_142_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015727 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015728 (_tmp_142_var = _tmp_142_rule(p)) // 'if' disjunction
Pablo Galindo2b74c832020-04-27 18:02:07 +010015729 )
15730 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015731 _res = _tmp_142_var;
15732 if (_n == _children_capacity) {
15733 _children_capacity *= 2;
15734 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15735 if (!_children) {
Pablo Galindo2b74c832020-04-27 18:02:07 +010015736 PyErr_Format(PyExc_MemoryError, "realloc None");
15737 return NULL;
15738 }
15739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015740 _children[_n++] = _res;
15741 _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015743 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015744 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015745 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15746 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015747 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_105");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015748 PyMem_Free(_children);
Pablo Galindo2b74c832020-04-27 18:02:07 +010015749 return NULL;
15750 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015751 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15752 PyMem_Free(_children);
15753 _PyPegen_insert_memo(p, _start_mark, _loop0_105_type, _seq);
15754 return _seq;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015755}
15756
Guido van Rossum3941d972020-05-01 09:42:03 -070015757// _loop0_106: ('if' disjunction)
Guido van Rossumc001c092020-04-30 12:12:19 -070015758static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015759_loop0_106_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070015760{
15761 if (p->error_indicator) {
15762 return NULL;
15763 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015764 void *_res = NULL;
15765 int _mark = p->mark;
15766 int _start_mark = p->mark;
15767 void **_children = PyMem_Malloc(sizeof(void *));
15768 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015769 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15770 return NULL;
15771 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015772 ssize_t _children_capacity = 1;
15773 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015774 { // ('if' disjunction)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015775 void *_tmp_143_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015776 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015777 (_tmp_143_var = _tmp_143_rule(p)) // 'if' disjunction
Guido van Rossumc001c092020-04-30 12:12:19 -070015778 )
15779 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015780 _res = _tmp_143_var;
15781 if (_n == _children_capacity) {
15782 _children_capacity *= 2;
15783 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15784 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015785 PyErr_Format(PyExc_MemoryError, "realloc None");
15786 return NULL;
15787 }
15788 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015789 _children[_n++] = _res;
15790 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015792 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015793 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015794 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15795 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015796 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_106");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015797 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015798 return NULL;
15799 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015800 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15801 PyMem_Free(_children);
15802 _PyPegen_insert_memo(p, _start_mark, _loop0_106_type, _seq);
15803 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015804}
15805
Guido van Rossum3941d972020-05-01 09:42:03 -070015806// _tmp_107: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015807static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015808_tmp_107_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015809{
15810 if (p->error_indicator) {
15811 return NULL;
15812 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015813 void * _res = NULL;
15814 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015815 { // ',' args
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015816 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015817 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015818 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015819 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015820 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015821 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015822 )
15823 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015824 _res = c;
15825 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015826 p->error_indicator = 1;
15827 return NULL;
15828 }
Guido van Rossumc001c092020-04-30 12:12:19 -070015829 goto done;
15830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015831 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015832 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015833 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070015834 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015835 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070015836}
15837
Guido van Rossum3941d972020-05-01 09:42:03 -070015838// _tmp_108: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015839static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015840_tmp_108_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015841{
15842 if (p->error_indicator) {
15843 return NULL;
15844 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015845 void * _res = NULL;
15846 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015847 { // ',' args
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015848 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015849 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015850 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015851 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015852 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015853 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015854 )
15855 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015856 _res = c;
15857 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015858 p->error_indicator = 1;
15859 return NULL;
15860 }
15861 goto done;
15862 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015863 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015864 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015865 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015866 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015867 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015868}
15869
Guido van Rossum3941d972020-05-01 09:42:03 -070015870// _loop0_110: ',' kwarg_or_starred
15871static asdl_seq *
15872_loop0_110_rule(Parser *p)
15873{
15874 if (p->error_indicator) {
15875 return NULL;
15876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015877 void *_res = NULL;
15878 int _mark = p->mark;
15879 int _start_mark = p->mark;
15880 void **_children = PyMem_Malloc(sizeof(void *));
15881 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015882 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15883 return NULL;
15884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015885 ssize_t _children_capacity = 1;
15886 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070015887 { // ',' kwarg_or_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015888 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070015889 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070015890 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015891 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070015892 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015893 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070015894 )
15895 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015896 _res = elem;
15897 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015898 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015899 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070015900 return NULL;
15901 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015902 if (_n == _children_capacity) {
15903 _children_capacity *= 2;
15904 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15905 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015906 PyErr_Format(PyExc_MemoryError, "realloc None");
15907 return NULL;
15908 }
15909 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015910 _children[_n++] = _res;
15911 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015913 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015915 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15916 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015917 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_110");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015918 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070015919 return NULL;
15920 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015921 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15922 PyMem_Free(_children);
15923 _PyPegen_insert_memo(p, _start_mark, _loop0_110_type, _seq);
15924 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070015925}
15926
15927// _gather_109: kwarg_or_starred _loop0_110
15928static asdl_seq *
15929_gather_109_rule(Parser *p)
15930{
15931 if (p->error_indicator) {
15932 return NULL;
15933 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015934 asdl_seq * _res = NULL;
15935 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015936 { // kwarg_or_starred _loop0_110
15937 KeywordOrStarred* elem;
15938 asdl_seq * seq;
15939 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015940 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070015941 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015942 (seq = _loop0_110_rule(p)) // _loop0_110
Guido van Rossum3941d972020-05-01 09:42:03 -070015943 )
15944 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015945 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070015946 goto done;
15947 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015948 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015949 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015950 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070015951 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015952 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070015953}
15954
15955// _loop0_112: ',' kwarg_or_double_starred
15956static asdl_seq *
15957_loop0_112_rule(Parser *p)
15958{
15959 if (p->error_indicator) {
15960 return NULL;
15961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015962 void *_res = NULL;
15963 int _mark = p->mark;
15964 int _start_mark = p->mark;
15965 void **_children = PyMem_Malloc(sizeof(void *));
15966 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015967 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15968 return NULL;
15969 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015970 ssize_t _children_capacity = 1;
15971 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070015972 { // ',' kwarg_or_double_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015973 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070015974 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070015975 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015976 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070015977 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015978 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070015979 )
15980 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015981 _res = elem;
15982 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015983 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015984 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070015985 return NULL;
15986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015987 if (_n == _children_capacity) {
15988 _children_capacity *= 2;
15989 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15990 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015991 PyErr_Format(PyExc_MemoryError, "realloc None");
15992 return NULL;
15993 }
15994 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015995 _children[_n++] = _res;
15996 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015997 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015998 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015999 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016000 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16001 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016002 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_112");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016003 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016004 return NULL;
16005 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016006 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16007 PyMem_Free(_children);
16008 _PyPegen_insert_memo(p, _start_mark, _loop0_112_type, _seq);
16009 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016010}
16011
16012// _gather_111: kwarg_or_double_starred _loop0_112
16013static asdl_seq *
16014_gather_111_rule(Parser *p)
16015{
16016 if (p->error_indicator) {
16017 return NULL;
16018 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016019 asdl_seq * _res = NULL;
16020 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016021 { // kwarg_or_double_starred _loop0_112
16022 KeywordOrStarred* elem;
16023 asdl_seq * seq;
16024 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016025 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070016026 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016027 (seq = _loop0_112_rule(p)) // _loop0_112
Guido van Rossum3941d972020-05-01 09:42:03 -070016028 )
16029 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016030 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070016031 goto done;
16032 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016033 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016035 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070016036 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016037 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070016038}
16039
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016040// _loop0_114: ',' kwarg_or_starred
Pablo Galindo2b74c832020-04-27 18:02:07 +010016041static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016042_loop0_114_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016043{
16044 if (p->error_indicator) {
16045 return NULL;
16046 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016047 void *_res = NULL;
16048 int _mark = p->mark;
16049 int _start_mark = p->mark;
16050 void **_children = PyMem_Malloc(sizeof(void *));
16051 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016052 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16053 return NULL;
16054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016055 ssize_t _children_capacity = 1;
16056 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070016057 { // ',' kwarg_or_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016058 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070016059 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070016060 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016061 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070016062 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016063 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016064 )
16065 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016066 _res = elem;
16067 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016068 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016069 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016070 return NULL;
16071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016072 if (_n == _children_capacity) {
16073 _children_capacity *= 2;
16074 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16075 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016076 PyErr_Format(PyExc_MemoryError, "realloc None");
16077 return NULL;
16078 }
16079 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016080 _children[_n++] = _res;
16081 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016083 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016084 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016085 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16086 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016087 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_114");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016088 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016089 return NULL;
16090 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016091 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16092 PyMem_Free(_children);
16093 _PyPegen_insert_memo(p, _start_mark, _loop0_114_type, _seq);
16094 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070016095}
16096
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016097// _gather_113: kwarg_or_starred _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070016098static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016099_gather_113_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016100{
16101 if (p->error_indicator) {
16102 return NULL;
16103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016104 asdl_seq * _res = NULL;
16105 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016106 { // kwarg_or_starred _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070016107 KeywordOrStarred* elem;
16108 asdl_seq * seq;
16109 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016110 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016111 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016112 (seq = _loop0_114_rule(p)) // _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070016113 )
16114 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016115 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070016116 goto done;
16117 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016118 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016119 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016120 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070016121 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016122 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070016123}
16124
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016125// _loop0_116: ',' kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016126static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016127_loop0_116_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016128{
16129 if (p->error_indicator) {
16130 return NULL;
16131 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016132 void *_res = NULL;
16133 int _mark = p->mark;
16134 int _start_mark = p->mark;
16135 void **_children = PyMem_Malloc(sizeof(void *));
16136 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016137 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16138 return NULL;
16139 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016140 ssize_t _children_capacity = 1;
16141 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070016142 { // ',' kwarg_or_double_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016143 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070016144 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070016145 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016146 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070016147 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016148 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016149 )
16150 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016151 _res = elem;
16152 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016153 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016154 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016155 return NULL;
16156 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016157 if (_n == _children_capacity) {
16158 _children_capacity *= 2;
16159 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16160 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016161 PyErr_Format(PyExc_MemoryError, "realloc None");
16162 return NULL;
16163 }
16164 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016165 _children[_n++] = _res;
16166 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016167 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016168 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016170 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16171 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016172 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_116");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016173 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016174 return NULL;
16175 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016176 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16177 PyMem_Free(_children);
16178 _PyPegen_insert_memo(p, _start_mark, _loop0_116_type, _seq);
16179 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070016180}
16181
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016182// _gather_115: kwarg_or_double_starred _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070016183static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016184_gather_115_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016185{
16186 if (p->error_indicator) {
16187 return NULL;
16188 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016189 asdl_seq * _res = NULL;
16190 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016191 { // kwarg_or_double_starred _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070016192 KeywordOrStarred* elem;
16193 asdl_seq * seq;
16194 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016195 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016196 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016197 (seq = _loop0_116_rule(p)) // _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070016198 )
16199 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016200 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070016201 goto done;
16202 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016203 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016204 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016205 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070016206 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016207 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070016208}
16209
Guido van Rossum3941d972020-05-01 09:42:03 -070016210// _loop0_117: (',' star_target)
Guido van Rossumc001c092020-04-30 12:12:19 -070016211static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016212_loop0_117_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016213{
16214 if (p->error_indicator) {
16215 return NULL;
16216 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016217 void *_res = NULL;
16218 int _mark = p->mark;
16219 int _start_mark = p->mark;
16220 void **_children = PyMem_Malloc(sizeof(void *));
16221 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016222 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16223 return NULL;
16224 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016225 ssize_t _children_capacity = 1;
16226 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016227 { // (',' star_target)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016228 void *_tmp_144_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016229 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016230 (_tmp_144_var = _tmp_144_rule(p)) // ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016231 )
16232 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016233 _res = _tmp_144_var;
16234 if (_n == _children_capacity) {
16235 _children_capacity *= 2;
16236 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16237 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016238 PyErr_Format(PyExc_MemoryError, "realloc None");
16239 return NULL;
16240 }
16241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016242 _children[_n++] = _res;
16243 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016244 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016245 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016247 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16248 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016249 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_117");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016250 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016251 return NULL;
16252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016253 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16254 PyMem_Free(_children);
16255 _PyPegen_insert_memo(p, _start_mark, _loop0_117_type, _seq);
16256 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016257}
16258
Guido van Rossum3941d972020-05-01 09:42:03 -070016259// _loop0_119: ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016260static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016261_loop0_119_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016262{
16263 if (p->error_indicator) {
16264 return NULL;
16265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016266 void *_res = NULL;
16267 int _mark = p->mark;
16268 int _start_mark = p->mark;
16269 void **_children = PyMem_Malloc(sizeof(void *));
16270 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016271 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16272 return NULL;
16273 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016274 ssize_t _children_capacity = 1;
16275 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016276 { // ',' star_target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016277 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016278 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016279 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016280 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016281 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016282 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016283 )
16284 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016285 _res = elem;
16286 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016287 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016288 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016289 return NULL;
16290 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016291 if (_n == _children_capacity) {
16292 _children_capacity *= 2;
16293 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16294 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016295 PyErr_Format(PyExc_MemoryError, "realloc None");
16296 return NULL;
16297 }
16298 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016299 _children[_n++] = _res;
16300 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016301 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016302 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016303 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016304 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16305 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016306 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_119");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016307 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016308 return NULL;
16309 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016310 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16311 PyMem_Free(_children);
16312 _PyPegen_insert_memo(p, _start_mark, _loop0_119_type, _seq);
16313 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016314}
16315
Guido van Rossum3941d972020-05-01 09:42:03 -070016316// _gather_118: star_target _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016317static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016318_gather_118_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016319{
16320 if (p->error_indicator) {
16321 return NULL;
16322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016323 asdl_seq * _res = NULL;
16324 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016325 { // star_target _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016326 expr_ty elem;
16327 asdl_seq * seq;
16328 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016329 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016330 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016331 (seq = _loop0_119_rule(p)) // _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016332 )
16333 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016334 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016335 goto done;
16336 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016337 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016338 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016339 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016340 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016341 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016342}
16343
Guido van Rossum3941d972020-05-01 09:42:03 -070016344// _tmp_120: !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016345static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016346_tmp_120_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016347{
16348 if (p->error_indicator) {
16349 return NULL;
16350 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016351 void * _res = NULL;
16352 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016353 { // !'*' star_target
16354 expr_ty star_target_var;
16355 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016356 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016357 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016358 (star_target_var = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016359 )
16360 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016361 _res = star_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016362 goto done;
16363 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016364 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016366 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016367 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016368 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016369}
16370
Guido van Rossum3941d972020-05-01 09:42:03 -070016371// _loop0_122: ',' del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016372static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016373_loop0_122_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016374{
16375 if (p->error_indicator) {
16376 return NULL;
16377 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016378 void *_res = NULL;
16379 int _mark = p->mark;
16380 int _start_mark = p->mark;
16381 void **_children = PyMem_Malloc(sizeof(void *));
16382 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016383 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16384 return NULL;
16385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016386 ssize_t _children_capacity = 1;
16387 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016388 { // ',' del_target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016389 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016390 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016391 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016392 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016393 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016394 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016395 )
16396 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016397 _res = elem;
16398 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016399 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016400 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016401 return NULL;
16402 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016403 if (_n == _children_capacity) {
16404 _children_capacity *= 2;
16405 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16406 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016407 PyErr_Format(PyExc_MemoryError, "realloc None");
16408 return NULL;
16409 }
16410 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016411 _children[_n++] = _res;
16412 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016413 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016414 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016415 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016416 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16417 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016418 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_122");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016419 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016420 return NULL;
16421 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016422 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16423 PyMem_Free(_children);
16424 _PyPegen_insert_memo(p, _start_mark, _loop0_122_type, _seq);
16425 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016426}
16427
Guido van Rossum3941d972020-05-01 09:42:03 -070016428// _gather_121: del_target _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016429static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016430_gather_121_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016431{
16432 if (p->error_indicator) {
16433 return NULL;
16434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016435 asdl_seq * _res = NULL;
16436 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016437 { // del_target _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016438 expr_ty elem;
16439 asdl_seq * seq;
16440 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016441 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016442 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016443 (seq = _loop0_122_rule(p)) // _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016444 )
16445 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016446 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016447 goto done;
16448 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016449 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016450 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016451 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016452 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016453 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016454}
16455
Guido van Rossum3941d972020-05-01 09:42:03 -070016456// _loop0_124: ',' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016457static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016458_loop0_124_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016459{
16460 if (p->error_indicator) {
16461 return NULL;
16462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016463 void *_res = NULL;
16464 int _mark = p->mark;
16465 int _start_mark = p->mark;
16466 void **_children = PyMem_Malloc(sizeof(void *));
16467 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016468 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16469 return NULL;
16470 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016471 ssize_t _children_capacity = 1;
16472 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016473 { // ',' target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016474 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016475 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016476 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016477 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016478 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016479 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016480 )
16481 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016482 _res = elem;
16483 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016484 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016485 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016486 return NULL;
16487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016488 if (_n == _children_capacity) {
16489 _children_capacity *= 2;
16490 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16491 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016492 PyErr_Format(PyExc_MemoryError, "realloc None");
16493 return NULL;
16494 }
16495 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016496 _children[_n++] = _res;
16497 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016499 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016501 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16502 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016503 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_124");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016504 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016505 return NULL;
16506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016507 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16508 PyMem_Free(_children);
16509 _PyPegen_insert_memo(p, _start_mark, _loop0_124_type, _seq);
16510 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016511}
16512
Guido van Rossum3941d972020-05-01 09:42:03 -070016513// _gather_123: target _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016514static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016515_gather_123_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016516{
16517 if (p->error_indicator) {
16518 return NULL;
16519 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016520 asdl_seq * _res = NULL;
16521 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016522 { // target _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016523 expr_ty elem;
16524 asdl_seq * seq;
16525 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016526 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016527 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016528 (seq = _loop0_124_rule(p)) // _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016529 )
16530 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016531 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016532 goto done;
16533 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016534 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016535 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016536 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016537 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016538 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016539}
16540
Guido van Rossum3941d972020-05-01 09:42:03 -070016541// _tmp_125: args | expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016542static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016543_tmp_125_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016544{
16545 if (p->error_indicator) {
16546 return NULL;
16547 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016548 void * _res = NULL;
16549 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016550 { // args
16551 expr_ty args_var;
16552 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016553 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016554 )
16555 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016556 _res = args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016557 goto done;
16558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016559 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016560 }
16561 { // expression for_if_clauses
16562 expr_ty expression_var;
16563 asdl_seq* for_if_clauses_var;
16564 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016565 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016566 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016567 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016568 )
16569 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016570 _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016571 goto done;
16572 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016573 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016574 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016575 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016576 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016577 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016578}
16579
Guido van Rossum3941d972020-05-01 09:42:03 -070016580// _tmp_126: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016581static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016582_tmp_126_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016583{
16584 if (p->error_indicator) {
16585 return NULL;
16586 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016587 void * _res = NULL;
16588 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016589 { // '=' annotated_rhs
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016590 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016591 expr_ty annotated_rhs_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016592 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016593 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016594 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016595 (annotated_rhs_var = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016596 )
16597 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016598 _res = _PyPegen_dummy_name(p, _literal, annotated_rhs_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016599 goto done;
16600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016601 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016603 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016604 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016605 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016606}
16607
Guido van Rossum3941d972020-05-01 09:42:03 -070016608// _tmp_127: '=' | augassign
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016609static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016610_tmp_127_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016611{
16612 if (p->error_indicator) {
16613 return NULL;
16614 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016615 void * _res = NULL;
16616 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016617 { // '='
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016618 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016619 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016620 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016621 )
16622 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016623 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016624 goto done;
16625 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016626 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016627 }
16628 { // augassign
16629 AugOperator* augassign_var;
16630 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016631 (augassign_var = augassign_rule(p)) // augassign
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016632 )
16633 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016634 _res = augassign_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016635 goto done;
16636 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016637 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016638 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016639 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016640 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016641 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016642}
16643
Guido van Rossum3941d972020-05-01 09:42:03 -070016644// _tmp_128: yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016645static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016646_tmp_128_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016647{
16648 if (p->error_indicator) {
16649 return NULL;
16650 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016651 void * _res = NULL;
16652 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016653 { // yield_expr
16654 expr_ty yield_expr_var;
16655 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016656 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016657 )
16658 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016659 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016660 goto done;
16661 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016662 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016663 }
16664 { // star_expressions
16665 expr_ty star_expressions_var;
16666 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016667 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016668 )
16669 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016670 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016671 goto done;
16672 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016673 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016674 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016675 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016676 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016677 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016678}
16679
Guido van Rossum3941d972020-05-01 09:42:03 -070016680// _tmp_129: '[' | '(' | '{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016681static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016682_tmp_129_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016683{
16684 if (p->error_indicator) {
16685 return NULL;
16686 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016687 void * _res = NULL;
16688 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016689 { // '['
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016690 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016691 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016692 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016693 )
16694 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016695 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016696 goto done;
16697 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016698 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016699 }
16700 { // '('
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016701 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016702 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016703 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016704 )
16705 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016706 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016707 goto done;
16708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016709 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016710 }
16711 { // '{'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016712 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016713 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016714 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016715 )
16716 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016717 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016718 goto done;
16719 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016720 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016721 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016722 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016723 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016724 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016725}
16726
Guido van Rossum3941d972020-05-01 09:42:03 -070016727// _loop0_130: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070016728static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016729_loop0_130_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016730{
16731 if (p->error_indicator) {
16732 return NULL;
16733 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016734 void *_res = NULL;
16735 int _mark = p->mark;
16736 int _start_mark = p->mark;
16737 void **_children = PyMem_Malloc(sizeof(void *));
16738 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016739 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16740 return NULL;
16741 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016742 ssize_t _children_capacity = 1;
16743 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070016744 { // param_no_default
16745 arg_ty param_no_default_var;
16746 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016747 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016748 )
16749 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016750 _res = param_no_default_var;
16751 if (_n == _children_capacity) {
16752 _children_capacity *= 2;
16753 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16754 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016755 PyErr_Format(PyExc_MemoryError, "realloc None");
16756 return NULL;
16757 }
16758 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016759 _children[_n++] = _res;
16760 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016761 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016762 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016763 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016764 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16765 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016766 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_130");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016767 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016768 return NULL;
16769 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016770 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16771 PyMem_Free(_children);
16772 _PyPegen_insert_memo(p, _start_mark, _loop0_130_type, _seq);
16773 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016774}
16775
Guido van Rossum3941d972020-05-01 09:42:03 -070016776// _tmp_131: slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016777static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016778_tmp_131_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016779{
16780 if (p->error_indicator) {
16781 return NULL;
16782 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016783 void * _res = NULL;
16784 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016785 { // slash_with_default
16786 SlashWithDefault* slash_with_default_var;
16787 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016788 (slash_with_default_var = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016789 )
16790 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016791 _res = slash_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016792 goto done;
16793 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016794 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016795 }
Guido van Rossumc001c092020-04-30 12:12:19 -070016796 { // param_with_default+
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016797 asdl_seq * _loop1_145_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016798 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016799 (_loop1_145_var = _loop1_145_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016800 )
16801 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016802 _res = _loop1_145_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016803 goto done;
16804 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016805 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016807 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016808 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016809 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016810}
16811
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016812// _tmp_132: ')' | ',' (')' | '**')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016813static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016814_tmp_132_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016815{
16816 if (p->error_indicator) {
16817 return NULL;
16818 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016819 void * _res = NULL;
16820 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016821 { // ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016822 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016823 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016824 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016825 )
16826 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016827 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016828 goto done;
16829 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016830 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016831 }
16832 { // ',' (')' | '**')
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016833 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016834 void *_tmp_146_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016835 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016836 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016837 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016838 (_tmp_146_var = _tmp_146_rule(p)) // ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016839 )
16840 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016841 _res = _PyPegen_dummy_name(p, _literal, _tmp_146_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016842 goto done;
16843 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016844 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016845 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016846 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016847 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016848 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016849}
16850
16851// _tmp_133: ':' | ',' (':' | '**')
16852static void *
16853_tmp_133_rule(Parser *p)
16854{
16855 if (p->error_indicator) {
16856 return NULL;
16857 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016858 void * _res = NULL;
16859 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016860 { // ':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016861 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016862 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016863 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016864 )
16865 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016866 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016867 goto done;
16868 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016869 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016870 }
16871 { // ',' (':' | '**')
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016872 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016873 void *_tmp_147_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016874 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016875 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016876 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016877 (_tmp_147_var = _tmp_147_rule(p)) // ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016878 )
16879 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016880 _res = _PyPegen_dummy_name(p, _literal, _tmp_147_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016881 goto done;
16882 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016883 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016885 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016886 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016887 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016888}
16889
16890// _tmp_134: star_targets '='
16891static void *
16892_tmp_134_rule(Parser *p)
16893{
16894 if (p->error_indicator) {
16895 return NULL;
16896 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016897 void * _res = NULL;
16898 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016899 { // star_targets '='
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016900 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016901 expr_ty z;
16902 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016903 (z = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016904 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016905 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016906 )
16907 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016908 _res = z;
16909 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016910 p->error_indicator = 1;
16911 return NULL;
16912 }
16913 goto done;
16914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016915 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016916 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016917 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016918 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016919 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016920}
16921
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016922// _tmp_135: '.' | '...'
Pablo Galindo2b74c832020-04-27 18:02:07 +010016923static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016924_tmp_135_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016925{
16926 if (p->error_indicator) {
16927 return NULL;
16928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016929 void * _res = NULL;
16930 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016931 { // '.'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016932 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016933 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016934 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016935 )
16936 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016937 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016938 goto done;
16939 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016940 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016941 }
16942 { // '...'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016943 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016944 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016945 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016946 )
16947 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016948 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016949 goto done;
16950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016951 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016952 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016953 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016954 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016955 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016956}
16957
16958// _tmp_136: '.' | '...'
16959static void *
16960_tmp_136_rule(Parser *p)
16961{
16962 if (p->error_indicator) {
16963 return NULL;
16964 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016965 void * _res = NULL;
16966 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016967 { // '.'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016968 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016969 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016970 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016971 )
16972 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016973 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016974 goto done;
16975 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016976 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016977 }
16978 { // '...'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016979 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016980 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016981 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016982 )
16983 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016984 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016985 goto done;
16986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016987 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016988 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016989 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016990 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016991 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016992}
16993
16994// _tmp_137: '@' named_expression NEWLINE
16995static void *
16996_tmp_137_rule(Parser *p)
16997{
16998 if (p->error_indicator) {
16999 return NULL;
17000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017001 void * _res = NULL;
17002 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017003 { // '@' named_expression NEWLINE
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017004 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017005 expr_ty f;
Pablo Galindob796b3f2020-05-01 12:32:26 +010017006 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017007 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017008 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017009 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017010 (f = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017011 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017012 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017013 )
17014 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017015 _res = f;
17016 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017017 p->error_indicator = 1;
17018 return NULL;
17019 }
17020 goto done;
17021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017022 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017023 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017024 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017025 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017026 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017027}
17028
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017029// _tmp_138: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017030static void *
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017031_tmp_138_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017032{
17033 if (p->error_indicator) {
17034 return NULL;
17035 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017036 void * _res = NULL;
17037 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017038 { // ',' star_expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017039 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017040 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017041 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017042 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017043 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017044 (c = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017045 )
17046 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017047 _res = c;
17048 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017049 p->error_indicator = 1;
17050 return NULL;
17051 }
17052 goto done;
17053 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017054 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017055 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017056 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017057 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017058 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017059}
17060
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017061// _tmp_139: ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017062static void *
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017063_tmp_139_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017064{
17065 if (p->error_indicator) {
17066 return NULL;
17067 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017068 void * _res = NULL;
17069 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017070 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017071 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017072 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017073 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017074 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017075 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017076 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017077 )
17078 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017079 _res = c;
17080 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017081 p->error_indicator = 1;
17082 return NULL;
17083 }
17084 goto done;
17085 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017086 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017087 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017088 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017089 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017090 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017091}
17092
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017093// _tmp_140: 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017094static void *
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017095_tmp_140_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017096{
17097 if (p->error_indicator) {
17098 return NULL;
17099 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017100 void * _res = NULL;
17101 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017102 { // 'or' conjunction
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017103 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017104 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017105 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017106 (_keyword = _PyPegen_expect_token(p, 532)) // token='or'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017107 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017108 (c = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017109 )
17110 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017111 _res = c;
17112 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017113 p->error_indicator = 1;
17114 return NULL;
17115 }
17116 goto done;
17117 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017118 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017119 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017120 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017121 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017122 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017123}
17124
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017125// _tmp_141: 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017126static void *
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017127_tmp_141_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017128{
17129 if (p->error_indicator) {
17130 return NULL;
17131 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017132 void * _res = NULL;
17133 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017134 { // 'and' inversion
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017135 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017136 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017137 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017138 (_keyword = _PyPegen_expect_token(p, 533)) // token='and'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017139 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017140 (c = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017141 )
17142 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017143 _res = c;
17144 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017145 p->error_indicator = 1;
17146 return NULL;
17147 }
17148 goto done;
17149 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017150 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017152 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017153 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017154 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017155}
17156
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017157// _tmp_142: 'if' disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017158static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017159_tmp_142_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017160{
17161 if (p->error_indicator) {
17162 return NULL;
17163 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017164 void * _res = NULL;
17165 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017166 { // 'if' disjunction
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017167 Token * _keyword;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017168 expr_ty z;
17169 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017170 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017171 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017172 (z = disjunction_rule(p)) // disjunction
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017173 )
17174 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017175 _res = z;
17176 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017177 p->error_indicator = 1;
17178 return NULL;
17179 }
17180 goto done;
17181 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017182 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017184 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017185 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017186 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017187}
17188
17189// _tmp_143: 'if' disjunction
17190static void *
17191_tmp_143_rule(Parser *p)
17192{
17193 if (p->error_indicator) {
17194 return NULL;
17195 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017196 void * _res = NULL;
17197 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017198 { // 'if' disjunction
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017199 Token * _keyword;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017200 expr_ty z;
17201 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017202 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017203 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017204 (z = disjunction_rule(p)) // disjunction
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017205 )
17206 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017207 _res = z;
17208 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017209 p->error_indicator = 1;
17210 return NULL;
17211 }
17212 goto done;
17213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017214 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017216 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017217 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017218 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017219}
17220
17221// _tmp_144: ',' star_target
17222static void *
17223_tmp_144_rule(Parser *p)
17224{
17225 if (p->error_indicator) {
17226 return NULL;
17227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017228 void * _res = NULL;
17229 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017230 { // ',' star_target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017231 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017232 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017233 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017234 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017235 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017236 (c = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017237 )
17238 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017239 _res = c;
17240 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017241 p->error_indicator = 1;
17242 return NULL;
17243 }
17244 goto done;
17245 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017246 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017248 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017249 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017250 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017251}
17252
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017253// _loop1_145: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017254static asdl_seq *
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017255_loop1_145_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070017256{
17257 if (p->error_indicator) {
17258 return NULL;
17259 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017260 void *_res = NULL;
17261 int _mark = p->mark;
17262 int _start_mark = p->mark;
17263 void **_children = PyMem_Malloc(sizeof(void *));
17264 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070017265 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
17266 return NULL;
17267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017268 ssize_t _children_capacity = 1;
17269 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070017270 { // param_with_default
17271 NameDefaultPair* param_with_default_var;
17272 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010017273 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070017274 )
17275 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017276 _res = param_with_default_var;
17277 if (_n == _children_capacity) {
17278 _children_capacity *= 2;
17279 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17280 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070017281 PyErr_Format(PyExc_MemoryError, "realloc None");
17282 return NULL;
17283 }
17284 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017285 _children[_n++] = _res;
17286 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017287 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017288 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017289 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017290 if (_n == 0 || p->error_indicator) {
17291 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070017292 return NULL;
17293 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017294 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17295 if (!_seq) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017296 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_145");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017297 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070017298 return NULL;
17299 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017300 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17301 PyMem_Free(_children);
17302 _PyPegen_insert_memo(p, _start_mark, _loop1_145_type, _seq);
17303 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070017304}
17305
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017306// _tmp_146: ')' | '**'
17307static void *
17308_tmp_146_rule(Parser *p)
17309{
17310 if (p->error_indicator) {
17311 return NULL;
17312 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017313 void * _res = NULL;
17314 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017315 { // ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017316 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017317 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017318 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017319 )
17320 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017321 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017322 goto done;
17323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017324 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017325 }
17326 { // '**'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017327 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017328 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017329 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017330 )
17331 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017332 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017333 goto done;
17334 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017335 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017336 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017337 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017338 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017339 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017340}
17341
17342// _tmp_147: ':' | '**'
17343static void *
17344_tmp_147_rule(Parser *p)
17345{
17346 if (p->error_indicator) {
17347 return NULL;
17348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017349 void * _res = NULL;
17350 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017351 { // ':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017352 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017353 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017354 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017355 )
17356 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017357 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017358 goto done;
17359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017360 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017361 }
17362 { // '**'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017363 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017364 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017365 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017366 )
17367 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017368 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017369 goto done;
17370 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017371 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017373 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017374 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017375 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017376}
17377
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017378void *
17379_PyPegen_parse(Parser *p)
17380{
17381 // Initialize keywords
17382 p->keywords = reserved_keywords;
17383 p->n_keyword_lists = n_keyword_lists;
17384
17385 // Run parser
17386 void *result = NULL;
17387 if (p->start_rule == Py_file_input) {
17388 result = file_rule(p);
17389 } else if (p->start_rule == Py_single_input) {
17390 result = interactive_rule(p);
17391 } else if (p->start_rule == Py_eval_input) {
17392 result = eval_rule(p);
Guido van Rossumc001c092020-04-30 12:12:19 -070017393 } else if (p->start_rule == Py_func_type_input) {
17394 result = func_type_rule(p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017395 } else if (p->start_rule == Py_fstring_input) {
17396 result = fstring_rule(p);
17397 }
17398
17399 return result;
17400}
17401
17402// The end