blob: 27feda73d99e1834f92b06de641cd7b9f731dbdb [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
207#define targets_type 1136
208#define target_type 1137
209#define t_primary_type 1138 // Left-recursive
210#define t_lookahead_type 1139
211#define t_atom_type 1140
212#define incorrect_arguments_type 1141
Lysandros Nikolaou4638c642020-05-07 13:44:06 +0300213#define invalid_kwarg_type 1142
214#define invalid_named_expression_type 1143
215#define invalid_assignment_type 1144
216#define invalid_block_type 1145
217#define invalid_comprehension_type 1146
218#define invalid_parameters_type 1147
219#define invalid_star_etc_type 1148
220#define invalid_lambda_star_etc_type 1149
221#define invalid_double_type_comments_type 1150
222#define _loop0_1_type 1151
223#define _loop0_2_type 1152
224#define _loop0_4_type 1153
225#define _gather_3_type 1154
226#define _loop0_6_type 1155
227#define _gather_5_type 1156
228#define _loop0_8_type 1157
229#define _gather_7_type 1158
230#define _loop0_10_type 1159
231#define _gather_9_type 1160
232#define _loop1_11_type 1161
233#define _loop0_13_type 1162
234#define _gather_12_type 1163
235#define _tmp_14_type 1164
236#define _tmp_15_type 1165
237#define _tmp_16_type 1166
238#define _tmp_17_type 1167
239#define _tmp_18_type 1168
240#define _tmp_19_type 1169
241#define _tmp_20_type 1170
242#define _tmp_21_type 1171
243#define _loop1_22_type 1172
244#define _tmp_23_type 1173
245#define _tmp_24_type 1174
246#define _loop0_26_type 1175
247#define _gather_25_type 1176
248#define _loop0_28_type 1177
249#define _gather_27_type 1178
250#define _tmp_29_type 1179
251#define _loop0_30_type 1180
252#define _loop1_31_type 1181
253#define _loop0_33_type 1182
254#define _gather_32_type 1183
255#define _tmp_34_type 1184
256#define _loop0_36_type 1185
257#define _gather_35_type 1186
258#define _tmp_37_type 1187
259#define _loop0_39_type 1188
260#define _gather_38_type 1189
261#define _loop0_41_type 1190
262#define _gather_40_type 1191
263#define _loop0_43_type 1192
264#define _gather_42_type 1193
265#define _loop0_45_type 1194
266#define _gather_44_type 1195
267#define _tmp_46_type 1196
268#define _loop1_47_type 1197
269#define _tmp_48_type 1198
270#define _tmp_49_type 1199
271#define _tmp_50_type 1200
272#define _tmp_51_type 1201
273#define _tmp_52_type 1202
274#define _loop0_53_type 1203
275#define _loop0_54_type 1204
276#define _loop0_55_type 1205
277#define _loop1_56_type 1206
278#define _loop0_57_type 1207
279#define _loop1_58_type 1208
280#define _loop1_59_type 1209
281#define _loop1_60_type 1210
282#define _loop0_61_type 1211
283#define _loop1_62_type 1212
284#define _loop0_63_type 1213
285#define _loop1_64_type 1214
286#define _loop0_65_type 1215
287#define _loop1_66_type 1216
288#define _loop1_67_type 1217
289#define _tmp_68_type 1218
290#define _loop0_70_type 1219
291#define _gather_69_type 1220
292#define _loop1_71_type 1221
293#define _loop0_73_type 1222
294#define _gather_72_type 1223
295#define _loop1_74_type 1224
296#define _loop0_75_type 1225
297#define _loop0_76_type 1226
298#define _loop0_77_type 1227
299#define _loop1_78_type 1228
300#define _loop0_79_type 1229
301#define _loop1_80_type 1230
302#define _loop1_81_type 1231
303#define _loop1_82_type 1232
304#define _loop0_83_type 1233
305#define _loop1_84_type 1234
306#define _loop0_85_type 1235
307#define _loop1_86_type 1236
308#define _loop0_87_type 1237
309#define _loop1_88_type 1238
310#define _loop1_89_type 1239
311#define _loop1_90_type 1240
312#define _loop1_91_type 1241
313#define _tmp_92_type 1242
314#define _loop0_94_type 1243
315#define _gather_93_type 1244
316#define _tmp_95_type 1245
317#define _tmp_96_type 1246
318#define _tmp_97_type 1247
319#define _tmp_98_type 1248
320#define _loop1_99_type 1249
321#define _tmp_100_type 1250
322#define _tmp_101_type 1251
323#define _loop0_103_type 1252
324#define _gather_102_type 1253
325#define _loop1_104_type 1254
326#define _loop0_105_type 1255
327#define _loop0_106_type 1256
328#define _tmp_107_type 1257
329#define _tmp_108_type 1258
330#define _loop0_110_type 1259
331#define _gather_109_type 1260
332#define _loop0_112_type 1261
333#define _gather_111_type 1262
334#define _loop0_114_type 1263
335#define _gather_113_type 1264
336#define _loop0_116_type 1265
337#define _gather_115_type 1266
338#define _loop0_117_type 1267
339#define _loop0_119_type 1268
340#define _gather_118_type 1269
341#define _tmp_120_type 1270
342#define _loop0_122_type 1271
343#define _gather_121_type 1272
344#define _loop0_124_type 1273
345#define _gather_123_type 1274
346#define _tmp_125_type 1275
347#define _tmp_126_type 1276
348#define _tmp_127_type 1277
349#define _tmp_128_type 1278
350#define _tmp_129_type 1279
351#define _loop0_130_type 1280
352#define _tmp_131_type 1281
353#define _tmp_132_type 1282
354#define _tmp_133_type 1283
355#define _tmp_134_type 1284
356#define _tmp_135_type 1285
357#define _tmp_136_type 1286
358#define _tmp_137_type 1287
359#define _tmp_138_type 1288
360#define _tmp_139_type 1289
361#define _tmp_140_type 1290
362#define _tmp_141_type 1291
363#define _tmp_142_type 1292
364#define _tmp_143_type 1293
365#define _tmp_144_type 1294
366#define _loop1_145_type 1295
367#define _tmp_146_type 1296
368#define _tmp_147_type 1297
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100369
370static mod_ty file_rule(Parser *p);
371static mod_ty interactive_rule(Parser *p);
372static mod_ty eval_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700373static mod_ty func_type_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100374static expr_ty fstring_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700375static asdl_seq* type_expressions_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100376static asdl_seq* statements_rule(Parser *p);
377static asdl_seq* statement_rule(Parser *p);
378static asdl_seq* statement_newline_rule(Parser *p);
379static asdl_seq* simple_stmt_rule(Parser *p);
380static stmt_ty small_stmt_rule(Parser *p);
381static stmt_ty compound_stmt_rule(Parser *p);
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +0300382static stmt_ty assignment_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100383static AugOperator* augassign_rule(Parser *p);
384static stmt_ty global_stmt_rule(Parser *p);
385static stmt_ty nonlocal_stmt_rule(Parser *p);
386static stmt_ty yield_stmt_rule(Parser *p);
387static stmt_ty assert_stmt_rule(Parser *p);
388static stmt_ty del_stmt_rule(Parser *p);
389static stmt_ty import_stmt_rule(Parser *p);
390static stmt_ty import_name_rule(Parser *p);
391static stmt_ty import_from_rule(Parser *p);
392static asdl_seq* import_from_targets_rule(Parser *p);
393static asdl_seq* import_from_as_names_rule(Parser *p);
394static alias_ty import_from_as_name_rule(Parser *p);
395static asdl_seq* dotted_as_names_rule(Parser *p);
396static alias_ty dotted_as_name_rule(Parser *p);
397static expr_ty dotted_name_rule(Parser *p);
398static stmt_ty if_stmt_rule(Parser *p);
399static stmt_ty elif_stmt_rule(Parser *p);
400static asdl_seq* else_block_rule(Parser *p);
401static stmt_ty while_stmt_rule(Parser *p);
402static stmt_ty for_stmt_rule(Parser *p);
403static stmt_ty with_stmt_rule(Parser *p);
404static withitem_ty with_item_rule(Parser *p);
405static stmt_ty try_stmt_rule(Parser *p);
406static excepthandler_ty except_block_rule(Parser *p);
407static asdl_seq* finally_block_rule(Parser *p);
408static stmt_ty return_stmt_rule(Parser *p);
409static stmt_ty raise_stmt_rule(Parser *p);
410static stmt_ty function_def_rule(Parser *p);
411static stmt_ty function_def_raw_rule(Parser *p);
Pablo Galindod9552412020-05-01 16:32:09 +0100412static Token* func_type_comment_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100413static arguments_ty params_rule(Parser *p);
414static arguments_ty parameters_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700415static asdl_seq* slash_no_default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100416static SlashWithDefault* slash_with_default_rule(Parser *p);
417static StarEtc* star_etc_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100418static arg_ty kwds_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700419static arg_ty param_no_default_rule(Parser *p);
420static NameDefaultPair* param_with_default_rule(Parser *p);
421static NameDefaultPair* param_maybe_default_rule(Parser *p);
422static arg_ty param_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100423static expr_ty annotation_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700424static expr_ty default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100425static asdl_seq* decorators_rule(Parser *p);
426static stmt_ty class_def_rule(Parser *p);
427static stmt_ty class_def_raw_rule(Parser *p);
428static asdl_seq* block_rule(Parser *p);
429static asdl_seq* expressions_list_rule(Parser *p);
430static expr_ty star_expressions_rule(Parser *p);
431static expr_ty star_expression_rule(Parser *p);
432static asdl_seq* star_named_expressions_rule(Parser *p);
433static expr_ty star_named_expression_rule(Parser *p);
434static expr_ty named_expression_rule(Parser *p);
435static expr_ty annotated_rhs_rule(Parser *p);
436static expr_ty expressions_rule(Parser *p);
437static expr_ty expression_rule(Parser *p);
438static expr_ty lambdef_rule(Parser *p);
439static arguments_ty lambda_parameters_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700440static asdl_seq* lambda_slash_no_default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100441static SlashWithDefault* lambda_slash_with_default_rule(Parser *p);
442static StarEtc* lambda_star_etc_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100443static arg_ty lambda_kwds_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700444static arg_ty lambda_param_no_default_rule(Parser *p);
445static NameDefaultPair* lambda_param_with_default_rule(Parser *p);
446static NameDefaultPair* lambda_param_maybe_default_rule(Parser *p);
447static arg_ty lambda_param_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100448static expr_ty disjunction_rule(Parser *p);
449static expr_ty conjunction_rule(Parser *p);
450static expr_ty inversion_rule(Parser *p);
451static expr_ty comparison_rule(Parser *p);
452static CmpopExprPair* compare_op_bitwise_or_pair_rule(Parser *p);
453static CmpopExprPair* eq_bitwise_or_rule(Parser *p);
454static CmpopExprPair* noteq_bitwise_or_rule(Parser *p);
455static CmpopExprPair* lte_bitwise_or_rule(Parser *p);
456static CmpopExprPair* lt_bitwise_or_rule(Parser *p);
457static CmpopExprPair* gte_bitwise_or_rule(Parser *p);
458static CmpopExprPair* gt_bitwise_or_rule(Parser *p);
459static CmpopExprPair* notin_bitwise_or_rule(Parser *p);
460static CmpopExprPair* in_bitwise_or_rule(Parser *p);
461static CmpopExprPair* isnot_bitwise_or_rule(Parser *p);
462static CmpopExprPair* is_bitwise_or_rule(Parser *p);
463static expr_ty bitwise_or_rule(Parser *p);
464static expr_ty bitwise_xor_rule(Parser *p);
465static expr_ty bitwise_and_rule(Parser *p);
466static expr_ty shift_expr_rule(Parser *p);
467static expr_ty sum_rule(Parser *p);
468static expr_ty term_rule(Parser *p);
469static expr_ty factor_rule(Parser *p);
470static expr_ty power_rule(Parser *p);
471static expr_ty await_primary_rule(Parser *p);
472static expr_ty primary_rule(Parser *p);
473static expr_ty slices_rule(Parser *p);
474static expr_ty slice_rule(Parser *p);
475static expr_ty atom_rule(Parser *p);
476static expr_ty strings_rule(Parser *p);
477static expr_ty list_rule(Parser *p);
478static expr_ty listcomp_rule(Parser *p);
479static expr_ty tuple_rule(Parser *p);
480static expr_ty group_rule(Parser *p);
481static expr_ty genexp_rule(Parser *p);
482static expr_ty set_rule(Parser *p);
483static expr_ty setcomp_rule(Parser *p);
484static expr_ty dict_rule(Parser *p);
485static expr_ty dictcomp_rule(Parser *p);
486static asdl_seq* kvpairs_rule(Parser *p);
487static KeyValuePair* kvpair_rule(Parser *p);
488static asdl_seq* for_if_clauses_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300489static comprehension_ty for_if_clause_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100490static expr_ty yield_expr_rule(Parser *p);
491static expr_ty arguments_rule(Parser *p);
492static expr_ty args_rule(Parser *p);
493static asdl_seq* kwargs_rule(Parser *p);
494static expr_ty starred_expression_rule(Parser *p);
495static KeywordOrStarred* kwarg_or_starred_rule(Parser *p);
496static KeywordOrStarred* kwarg_or_double_starred_rule(Parser *p);
497static expr_ty star_targets_rule(Parser *p);
498static asdl_seq* star_targets_seq_rule(Parser *p);
499static expr_ty star_target_rule(Parser *p);
500static expr_ty star_atom_rule(Parser *p);
501static expr_ty inside_paren_ann_assign_target_rule(Parser *p);
502static expr_ty ann_assign_subscript_attribute_target_rule(Parser *p);
503static asdl_seq* del_targets_rule(Parser *p);
504static expr_ty del_target_rule(Parser *p);
505static expr_ty del_t_atom_rule(Parser *p);
506static asdl_seq* targets_rule(Parser *p);
507static expr_ty target_rule(Parser *p);
508static expr_ty t_primary_rule(Parser *p);
509static void *t_lookahead_rule(Parser *p);
510static expr_ty t_atom_rule(Parser *p);
511static void *incorrect_arguments_rule(Parser *p);
Lysandros Nikolaou4638c642020-05-07 13:44:06 +0300512static void *invalid_kwarg_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100513static void *invalid_named_expression_rule(Parser *p);
514static void *invalid_assignment_rule(Parser *p);
515static void *invalid_block_rule(Parser *p);
516static void *invalid_comprehension_rule(Parser *p);
517static void *invalid_parameters_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300518static void *invalid_star_etc_rule(Parser *p);
519static void *invalid_lambda_star_etc_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700520static void *invalid_double_type_comments_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100521static asdl_seq *_loop0_1_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700522static asdl_seq *_loop0_2_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100523static asdl_seq *_loop0_4_rule(Parser *p);
524static asdl_seq *_gather_3_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700525static asdl_seq *_loop0_6_rule(Parser *p);
526static asdl_seq *_gather_5_rule(Parser *p);
527static asdl_seq *_loop0_8_rule(Parser *p);
528static asdl_seq *_gather_7_rule(Parser *p);
529static asdl_seq *_loop0_10_rule(Parser *p);
530static asdl_seq *_gather_9_rule(Parser *p);
531static asdl_seq *_loop1_11_rule(Parser *p);
532static asdl_seq *_loop0_13_rule(Parser *p);
533static asdl_seq *_gather_12_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100534static void *_tmp_14_rule(Parser *p);
535static void *_tmp_15_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700536static void *_tmp_16_rule(Parser *p);
537static void *_tmp_17_rule(Parser *p);
538static void *_tmp_18_rule(Parser *p);
539static void *_tmp_19_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100540static void *_tmp_20_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700541static void *_tmp_21_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100542static asdl_seq *_loop1_22_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700543static void *_tmp_23_rule(Parser *p);
544static void *_tmp_24_rule(Parser *p);
545static asdl_seq *_loop0_26_rule(Parser *p);
546static asdl_seq *_gather_25_rule(Parser *p);
547static asdl_seq *_loop0_28_rule(Parser *p);
548static asdl_seq *_gather_27_rule(Parser *p);
549static void *_tmp_29_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100550static asdl_seq *_loop0_30_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700551static asdl_seq *_loop1_31_rule(Parser *p);
552static asdl_seq *_loop0_33_rule(Parser *p);
553static asdl_seq *_gather_32_rule(Parser *p);
554static void *_tmp_34_rule(Parser *p);
555static asdl_seq *_loop0_36_rule(Parser *p);
556static asdl_seq *_gather_35_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100557static void *_tmp_37_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700558static asdl_seq *_loop0_39_rule(Parser *p);
559static asdl_seq *_gather_38_rule(Parser *p);
560static asdl_seq *_loop0_41_rule(Parser *p);
561static asdl_seq *_gather_40_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300562static asdl_seq *_loop0_43_rule(Parser *p);
563static asdl_seq *_gather_42_rule(Parser *p);
564static asdl_seq *_loop0_45_rule(Parser *p);
565static asdl_seq *_gather_44_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100566static void *_tmp_46_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300567static asdl_seq *_loop1_47_rule(Parser *p);
568static void *_tmp_48_rule(Parser *p);
569static void *_tmp_49_rule(Parser *p);
570static void *_tmp_50_rule(Parser *p);
571static void *_tmp_51_rule(Parser *p);
572static void *_tmp_52_rule(Parser *p);
573static asdl_seq *_loop0_53_rule(Parser *p);
574static asdl_seq *_loop0_54_rule(Parser *p);
575static asdl_seq *_loop0_55_rule(Parser *p);
576static asdl_seq *_loop1_56_rule(Parser *p);
577static asdl_seq *_loop0_57_rule(Parser *p);
578static asdl_seq *_loop1_58_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700579static asdl_seq *_loop1_59_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300580static asdl_seq *_loop1_60_rule(Parser *p);
581static asdl_seq *_loop0_61_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700582static asdl_seq *_loop1_62_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300583static asdl_seq *_loop0_63_rule(Parser *p);
584static asdl_seq *_loop1_64_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700585static asdl_seq *_loop0_65_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700586static asdl_seq *_loop1_66_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300587static asdl_seq *_loop1_67_rule(Parser *p);
588static void *_tmp_68_rule(Parser *p);
589static asdl_seq *_loop0_70_rule(Parser *p);
590static asdl_seq *_gather_69_rule(Parser *p);
591static asdl_seq *_loop1_71_rule(Parser *p);
592static asdl_seq *_loop0_73_rule(Parser *p);
593static asdl_seq *_gather_72_rule(Parser *p);
594static asdl_seq *_loop1_74_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700595static asdl_seq *_loop0_75_rule(Parser *p);
596static asdl_seq *_loop0_76_rule(Parser *p);
597static asdl_seq *_loop0_77_rule(Parser *p);
598static asdl_seq *_loop1_78_rule(Parser *p);
599static asdl_seq *_loop0_79_rule(Parser *p);
600static asdl_seq *_loop1_80_rule(Parser *p);
601static asdl_seq *_loop1_81_rule(Parser *p);
602static asdl_seq *_loop1_82_rule(Parser *p);
603static asdl_seq *_loop0_83_rule(Parser *p);
604static asdl_seq *_loop1_84_rule(Parser *p);
605static asdl_seq *_loop0_85_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300606static asdl_seq *_loop1_86_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700607static asdl_seq *_loop0_87_rule(Parser *p);
608static asdl_seq *_loop1_88_rule(Parser *p);
609static asdl_seq *_loop1_89_rule(Parser *p);
610static asdl_seq *_loop1_90_rule(Parser *p);
611static asdl_seq *_loop1_91_rule(Parser *p);
612static void *_tmp_92_rule(Parser *p);
613static asdl_seq *_loop0_94_rule(Parser *p);
614static asdl_seq *_gather_93_rule(Parser *p);
615static void *_tmp_95_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700616static void *_tmp_96_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700617static void *_tmp_97_rule(Parser *p);
618static void *_tmp_98_rule(Parser *p);
619static asdl_seq *_loop1_99_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100620static void *_tmp_100_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300621static void *_tmp_101_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700622static asdl_seq *_loop0_103_rule(Parser *p);
623static asdl_seq *_gather_102_rule(Parser *p);
624static asdl_seq *_loop1_104_rule(Parser *p);
625static asdl_seq *_loop0_105_rule(Parser *p);
626static asdl_seq *_loop0_106_rule(Parser *p);
627static void *_tmp_107_rule(Parser *p);
628static void *_tmp_108_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300629static asdl_seq *_loop0_110_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700630static asdl_seq *_gather_109_rule(Parser *p);
631static asdl_seq *_loop0_112_rule(Parser *p);
632static asdl_seq *_gather_111_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100633static asdl_seq *_loop0_114_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300634static asdl_seq *_gather_113_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100635static asdl_seq *_loop0_116_rule(Parser *p);
636static asdl_seq *_gather_115_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700637static asdl_seq *_loop0_117_rule(Parser *p);
638static asdl_seq *_loop0_119_rule(Parser *p);
639static asdl_seq *_gather_118_rule(Parser *p);
640static void *_tmp_120_rule(Parser *p);
641static asdl_seq *_loop0_122_rule(Parser *p);
642static asdl_seq *_gather_121_rule(Parser *p);
643static asdl_seq *_loop0_124_rule(Parser *p);
644static asdl_seq *_gather_123_rule(Parser *p);
645static void *_tmp_125_rule(Parser *p);
646static void *_tmp_126_rule(Parser *p);
647static void *_tmp_127_rule(Parser *p);
648static void *_tmp_128_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100649static void *_tmp_129_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700650static asdl_seq *_loop0_130_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100651static void *_tmp_131_rule(Parser *p);
652static void *_tmp_132_rule(Parser *p);
653static void *_tmp_133_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700654static void *_tmp_134_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100655static void *_tmp_135_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700656static void *_tmp_136_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100657static void *_tmp_137_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700658static void *_tmp_138_rule(Parser *p);
659static void *_tmp_139_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300660static void *_tmp_140_rule(Parser *p);
661static void *_tmp_141_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700662static void *_tmp_142_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300663static void *_tmp_143_rule(Parser *p);
664static void *_tmp_144_rule(Parser *p);
665static asdl_seq *_loop1_145_rule(Parser *p);
666static void *_tmp_146_rule(Parser *p);
667static void *_tmp_147_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100668
669
670// file: statements? $
671static mod_ty
672file_rule(Parser *p)
673{
674 if (p->error_indicator) {
675 return NULL;
676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100677 mod_ty _res = NULL;
678 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100679 { // statements? $
680 void *a;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100681 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100682 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100683 (a = statements_rule(p), 1) // statements?
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100684 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100685 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100686 )
687 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100688 _res = _PyPegen_make_module ( p , a );
689 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100690 p->error_indicator = 1;
691 return NULL;
692 }
693 goto done;
694 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100695 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100696 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100697 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100698 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100699 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100700}
701
702// interactive: statement_newline
703static mod_ty
704interactive_rule(Parser *p)
705{
706 if (p->error_indicator) {
707 return NULL;
708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100709 mod_ty _res = NULL;
710 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100711 { // statement_newline
712 asdl_seq* a;
713 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100714 (a = statement_newline_rule(p)) // statement_newline
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100715 )
716 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100717 _res = Interactive ( a , p -> arena );
718 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100719 p->error_indicator = 1;
720 return NULL;
721 }
722 goto done;
723 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100724 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100725 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100726 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100727 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100728 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100729}
730
731// eval: expressions NEWLINE* $
732static mod_ty
733eval_rule(Parser *p)
734{
735 if (p->error_indicator) {
736 return NULL;
737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100738 mod_ty _res = NULL;
739 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100740 { // expressions NEWLINE* $
741 asdl_seq * _loop0_1_var;
742 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100743 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100744 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100745 (a = expressions_rule(p)) // expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100746 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100747 (_loop0_1_var = _loop0_1_rule(p)) // NEWLINE*
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100748 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100749 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100750 )
751 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100752 _res = Expression ( a , p -> arena );
753 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100754 p->error_indicator = 1;
755 return NULL;
756 }
757 goto done;
758 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100759 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100760 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100761 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100762 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100763 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100764}
765
Guido van Rossumc001c092020-04-30 12:12:19 -0700766// func_type: '(' type_expressions? ')' '->' expression NEWLINE* $
767static mod_ty
768func_type_rule(Parser *p)
769{
770 if (p->error_indicator) {
771 return NULL;
772 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100773 mod_ty _res = NULL;
774 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700775 { // '(' type_expressions? ')' '->' expression NEWLINE* $
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100776 Token * _literal;
777 Token * _literal_1;
778 Token * _literal_2;
Guido van Rossumc001c092020-04-30 12:12:19 -0700779 asdl_seq * _loop0_2_var;
780 void *a;
781 expr_ty b;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100782 Token * endmarker_var;
Guido van Rossumc001c092020-04-30 12:12:19 -0700783 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100784 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Guido van Rossumc001c092020-04-30 12:12:19 -0700785 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100786 (a = type_expressions_rule(p), 1) // type_expressions?
Guido van Rossumc001c092020-04-30 12:12:19 -0700787 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100788 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -0700789 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100790 (_literal_2 = _PyPegen_expect_token(p, 51)) // token='->'
Guido van Rossumc001c092020-04-30 12:12:19 -0700791 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100792 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700793 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100794 (_loop0_2_var = _loop0_2_rule(p)) // NEWLINE*
Guido van Rossumc001c092020-04-30 12:12:19 -0700795 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100796 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Guido van Rossumc001c092020-04-30 12:12:19 -0700797 )
798 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100799 _res = FunctionType ( a , b , p -> arena );
800 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700801 p->error_indicator = 1;
802 return NULL;
803 }
804 goto done;
805 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100806 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700807 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100808 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -0700809 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100810 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -0700811}
812
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100813// fstring: star_expressions
814static expr_ty
815fstring_rule(Parser *p)
816{
817 if (p->error_indicator) {
818 return NULL;
819 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100820 expr_ty _res = NULL;
821 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100822 { // star_expressions
823 expr_ty star_expressions_var;
824 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100825 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100826 )
827 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100828 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100829 goto done;
830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100831 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100832 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100833 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100834 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100835 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100836}
837
Guido van Rossumc001c092020-04-30 12:12:19 -0700838// type_expressions:
839// | ','.expression+ ',' '*' expression ',' '**' expression
840// | ','.expression+ ',' '*' expression
841// | ','.expression+ ',' '**' expression
Shantanu603d3542020-05-03 22:08:14 -0700842// | '*' expression ',' '**' expression
843// | '*' expression
844// | '**' expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700845// | ','.expression+
846static asdl_seq*
847type_expressions_rule(Parser *p)
848{
849 if (p->error_indicator) {
850 return NULL;
851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100852 asdl_seq* _res = NULL;
853 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700854 { // ','.expression+ ',' '*' expression ',' '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100855 Token * _literal;
856 Token * _literal_1;
857 Token * _literal_2;
858 Token * _literal_3;
Guido van Rossumc001c092020-04-30 12:12:19 -0700859 asdl_seq * a;
860 expr_ty b;
861 expr_ty c;
Guido van Rossumc001c092020-04-30 12:12:19 -0700862 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100863 (a = _gather_3_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700864 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100865 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700866 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100867 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Guido van Rossumc001c092020-04-30 12:12:19 -0700868 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100869 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700870 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100871 (_literal_2 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700872 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100873 (_literal_3 = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -0700874 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100875 (c = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700876 )
877 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100878 _res = _PyPegen_seq_append_to_end ( p , CHECK ( _PyPegen_seq_append_to_end ( p , a , b ) ) , c );
879 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700880 p->error_indicator = 1;
881 return NULL;
882 }
883 goto done;
884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100885 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700886 }
887 { // ','.expression+ ',' '*' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100888 Token * _literal;
889 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -0700890 asdl_seq * a;
891 expr_ty b;
Guido van Rossumc001c092020-04-30 12:12:19 -0700892 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100893 (a = _gather_5_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700894 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100895 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700896 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100897 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Guido van Rossumc001c092020-04-30 12:12:19 -0700898 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100899 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700900 )
901 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100902 _res = _PyPegen_seq_append_to_end ( p , a , b );
903 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700904 p->error_indicator = 1;
905 return NULL;
906 }
907 goto done;
908 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100909 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700910 }
911 { // ','.expression+ ',' '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100912 Token * _literal;
913 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -0700914 asdl_seq * a;
915 expr_ty b;
Guido van Rossumc001c092020-04-30 12:12:19 -0700916 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100917 (a = _gather_7_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700918 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100919 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700920 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100921 (_literal_1 = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -0700922 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100923 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700924 )
925 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100926 _res = _PyPegen_seq_append_to_end ( p , a , b );
927 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700928 p->error_indicator = 1;
929 return NULL;
930 }
931 goto done;
932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100933 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700934 }
Shantanu603d3542020-05-03 22:08:14 -0700935 { // '*' expression ',' '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100936 Token * _literal;
937 Token * _literal_1;
938 Token * _literal_2;
Shantanu603d3542020-05-03 22:08:14 -0700939 expr_ty a;
940 expr_ty b;
Shantanu603d3542020-05-03 22:08:14 -0700941 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100942 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Shantanu603d3542020-05-03 22:08:14 -0700943 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100944 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700945 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100946 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Shantanu603d3542020-05-03 22:08:14 -0700947 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100948 (_literal_2 = _PyPegen_expect_token(p, 35)) // token='**'
Shantanu603d3542020-05-03 22:08:14 -0700949 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100950 (b = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700951 )
952 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100953 _res = _PyPegen_seq_append_to_end ( p , CHECK ( _PyPegen_singleton_seq ( p , a ) ) , b );
954 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -0700955 p->error_indicator = 1;
956 return NULL;
957 }
958 goto done;
959 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100960 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -0700961 }
962 { // '*' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100963 Token * _literal;
Shantanu603d3542020-05-03 22:08:14 -0700964 expr_ty a;
Shantanu603d3542020-05-03 22:08:14 -0700965 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100966 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Shantanu603d3542020-05-03 22:08:14 -0700967 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100968 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700969 )
970 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100971 _res = _PyPegen_singleton_seq ( p , a );
972 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -0700973 p->error_indicator = 1;
974 return NULL;
975 }
976 goto done;
977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100978 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -0700979 }
980 { // '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100981 Token * _literal;
Shantanu603d3542020-05-03 22:08:14 -0700982 expr_ty a;
Shantanu603d3542020-05-03 22:08:14 -0700983 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100984 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Shantanu603d3542020-05-03 22:08:14 -0700985 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100986 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700987 )
988 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100989 _res = _PyPegen_singleton_seq ( p , a );
990 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -0700991 p->error_indicator = 1;
992 return NULL;
993 }
994 goto done;
995 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100996 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -0700997 }
Guido van Rossumc001c092020-04-30 12:12:19 -0700998 { // ','.expression+
999 asdl_seq * _gather_9_var;
1000 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001001 (_gather_9_var = _gather_9_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -07001002 )
1003 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001004 _res = _gather_9_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07001005 goto done;
1006 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001007 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07001008 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001009 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07001010 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001011 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07001012}
1013
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001014// statements: statement+
1015static asdl_seq*
1016statements_rule(Parser *p)
1017{
1018 if (p->error_indicator) {
1019 return NULL;
1020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001021 asdl_seq* _res = NULL;
1022 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001023 { // statement+
1024 asdl_seq * a;
1025 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001026 (a = _loop1_11_rule(p)) // statement+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001027 )
1028 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001029 _res = _PyPegen_seq_flatten ( p , a );
1030 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001031 p->error_indicator = 1;
1032 return NULL;
1033 }
1034 goto done;
1035 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001036 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001037 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001038 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001039 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001040 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001041}
1042
1043// statement: compound_stmt | simple_stmt
1044static asdl_seq*
1045statement_rule(Parser *p)
1046{
1047 if (p->error_indicator) {
1048 return NULL;
1049 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001050 asdl_seq* _res = NULL;
1051 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001052 { // compound_stmt
1053 stmt_ty a;
1054 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001055 (a = compound_stmt_rule(p)) // compound_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001056 )
1057 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001058 _res = _PyPegen_singleton_seq ( p , a );
1059 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001060 p->error_indicator = 1;
1061 return NULL;
1062 }
1063 goto done;
1064 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001065 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001066 }
1067 { // simple_stmt
1068 asdl_seq* simple_stmt_var;
1069 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001070 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001071 )
1072 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001073 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001074 goto done;
1075 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001076 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001077 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001078 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001079 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001080 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001081}
1082
1083// statement_newline: compound_stmt NEWLINE | simple_stmt | NEWLINE | $
1084static asdl_seq*
1085statement_newline_rule(Parser *p)
1086{
1087 if (p->error_indicator) {
1088 return NULL;
1089 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001090 asdl_seq* _res = NULL;
1091 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001092 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1093 p->error_indicator = 1;
1094 return NULL;
1095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001096 int _start_lineno = p->tokens[_mark]->lineno;
1097 UNUSED(_start_lineno); // Only used by EXTRA macro
1098 int _start_col_offset = p->tokens[_mark]->col_offset;
1099 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001100 { // compound_stmt NEWLINE
1101 stmt_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001102 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001103 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001104 (a = compound_stmt_rule(p)) // compound_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001105 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001106 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001107 )
1108 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001109 _res = _PyPegen_singleton_seq ( p , a );
1110 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001111 p->error_indicator = 1;
1112 return NULL;
1113 }
1114 goto done;
1115 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001116 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001117 }
1118 { // simple_stmt
1119 asdl_seq* simple_stmt_var;
1120 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001121 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001122 )
1123 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001124 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001125 goto done;
1126 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001127 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001128 }
1129 { // NEWLINE
Pablo Galindob796b3f2020-05-01 12:32:26 +01001130 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001131 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001132 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001133 )
1134 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001135 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1136 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001137 return NULL;
1138 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001139 int _end_lineno = _token->end_lineno;
1140 UNUSED(_end_lineno); // Only used by EXTRA macro
1141 int _end_col_offset = _token->end_col_offset;
1142 UNUSED(_end_col_offset); // Only used by EXTRA macro
1143 _res = _PyPegen_singleton_seq ( p , CHECK ( _Py_Pass ( EXTRA ) ) );
1144 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001145 p->error_indicator = 1;
1146 return NULL;
1147 }
1148 goto done;
1149 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001150 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001151 }
1152 { // $
Pablo Galindob796b3f2020-05-01 12:32:26 +01001153 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001154 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001155 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001156 )
1157 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001158 _res = _PyPegen_interactive_exit ( p );
1159 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001160 p->error_indicator = 1;
1161 return NULL;
1162 }
1163 goto done;
1164 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001165 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001166 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001167 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001168 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001169 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001170}
1171
1172// simple_stmt: small_stmt !';' NEWLINE | ';'.small_stmt+ ';'? NEWLINE
1173static asdl_seq*
1174simple_stmt_rule(Parser *p)
1175{
1176 if (p->error_indicator) {
1177 return NULL;
1178 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001179 asdl_seq* _res = NULL;
1180 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001181 { // small_stmt !';' NEWLINE
1182 stmt_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001183 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001184 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001185 (a = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001186 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001187 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 13) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001188 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001189 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001190 )
1191 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001192 _res = _PyPegen_singleton_seq ( p , a );
1193 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001194 p->error_indicator = 1;
1195 return NULL;
1196 }
1197 goto done;
1198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001199 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001200 }
1201 { // ';'.small_stmt+ ';'? NEWLINE
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001202 void *_opt_var;
1203 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001204 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001205 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001206 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001207 (a = _gather_12_rule(p)) // ';'.small_stmt+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001208 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001209 (_opt_var = _PyPegen_expect_token(p, 13), 1) // ';'?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001210 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001211 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001212 )
1213 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001214 _res = a;
1215 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001216 p->error_indicator = 1;
1217 return NULL;
1218 }
1219 goto done;
1220 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001221 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001223 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001224 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001225 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001226}
1227
1228// small_stmt:
1229// | assignment
1230// | star_expressions
1231// | &'return' return_stmt
1232// | &('import' | 'from') import_stmt
1233// | &'raise' raise_stmt
1234// | 'pass'
1235// | &'del' del_stmt
1236// | &'yield' yield_stmt
1237// | &'assert' assert_stmt
1238// | 'break'
1239// | 'continue'
1240// | &'global' global_stmt
1241// | &'nonlocal' nonlocal_stmt
1242static stmt_ty
1243small_stmt_rule(Parser *p)
1244{
1245 if (p->error_indicator) {
1246 return NULL;
1247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001248 stmt_ty _res = NULL;
1249 if (_PyPegen_is_memoized(p, small_stmt_type, &_res))
1250 return _res;
1251 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001252 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1253 p->error_indicator = 1;
1254 return NULL;
1255 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001256 int _start_lineno = p->tokens[_mark]->lineno;
1257 UNUSED(_start_lineno); // Only used by EXTRA macro
1258 int _start_col_offset = p->tokens[_mark]->col_offset;
1259 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001260 { // assignment
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +03001261 stmt_ty assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001262 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001263 (assignment_var = assignment_rule(p)) // assignment
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001264 )
1265 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001266 _res = assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001267 goto done;
1268 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001269 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001270 }
1271 { // star_expressions
1272 expr_ty e;
1273 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001274 (e = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001275 )
1276 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001277 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1278 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001279 return NULL;
1280 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001281 int _end_lineno = _token->end_lineno;
1282 UNUSED(_end_lineno); // Only used by EXTRA macro
1283 int _end_col_offset = _token->end_col_offset;
1284 UNUSED(_end_col_offset); // Only used by EXTRA macro
1285 _res = _Py_Expr ( e , EXTRA );
1286 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001287 p->error_indicator = 1;
1288 return NULL;
1289 }
1290 goto done;
1291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001292 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001293 }
1294 { // &'return' return_stmt
1295 stmt_ty return_stmt_var;
1296 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001297 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 500) // token='return'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001298 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001299 (return_stmt_var = return_stmt_rule(p)) // return_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001300 )
1301 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001302 _res = return_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001303 goto done;
1304 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001305 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001306 }
1307 { // &('import' | 'from') import_stmt
1308 stmt_ty import_stmt_var;
1309 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001310 _PyPegen_lookahead(1, _tmp_14_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001311 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001312 (import_stmt_var = import_stmt_rule(p)) // import_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001313 )
1314 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001315 _res = import_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001316 goto done;
1317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001318 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001319 }
1320 { // &'raise' raise_stmt
1321 stmt_ty raise_stmt_var;
1322 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001323 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 501) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001324 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001325 (raise_stmt_var = raise_stmt_rule(p)) // raise_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001326 )
1327 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001328 _res = raise_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001329 goto done;
1330 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001331 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001332 }
1333 { // 'pass'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001334 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001335 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001336 (_keyword = _PyPegen_expect_token(p, 502)) // token='pass'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001337 )
1338 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001339 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1340 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001341 return NULL;
1342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001343 int _end_lineno = _token->end_lineno;
1344 UNUSED(_end_lineno); // Only used by EXTRA macro
1345 int _end_col_offset = _token->end_col_offset;
1346 UNUSED(_end_col_offset); // Only used by EXTRA macro
1347 _res = _Py_Pass ( EXTRA );
1348 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001349 p->error_indicator = 1;
1350 return NULL;
1351 }
1352 goto done;
1353 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001354 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001355 }
1356 { // &'del' del_stmt
1357 stmt_ty del_stmt_var;
1358 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001359 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 503) // token='del'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001360 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001361 (del_stmt_var = del_stmt_rule(p)) // del_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001362 )
1363 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001364 _res = del_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001365 goto done;
1366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001367 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001368 }
1369 { // &'yield' yield_stmt
1370 stmt_ty yield_stmt_var;
1371 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001372 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 504) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001373 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001374 (yield_stmt_var = yield_stmt_rule(p)) // yield_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001375 )
1376 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001377 _res = yield_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001378 goto done;
1379 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001380 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001381 }
1382 { // &'assert' assert_stmt
1383 stmt_ty assert_stmt_var;
1384 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001385 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 505) // token='assert'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001386 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001387 (assert_stmt_var = assert_stmt_rule(p)) // assert_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001388 )
1389 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001390 _res = assert_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001391 goto done;
1392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001393 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001394 }
1395 { // 'break'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001396 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001397 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001398 (_keyword = _PyPegen_expect_token(p, 506)) // token='break'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001399 )
1400 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001401 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1402 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001403 return NULL;
1404 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001405 int _end_lineno = _token->end_lineno;
1406 UNUSED(_end_lineno); // Only used by EXTRA macro
1407 int _end_col_offset = _token->end_col_offset;
1408 UNUSED(_end_col_offset); // Only used by EXTRA macro
1409 _res = _Py_Break ( EXTRA );
1410 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001411 p->error_indicator = 1;
1412 return NULL;
1413 }
1414 goto done;
1415 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001416 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001417 }
1418 { // 'continue'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001419 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001420 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001421 (_keyword = _PyPegen_expect_token(p, 507)) // token='continue'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001422 )
1423 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001424 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1425 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001426 return NULL;
1427 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001428 int _end_lineno = _token->end_lineno;
1429 UNUSED(_end_lineno); // Only used by EXTRA macro
1430 int _end_col_offset = _token->end_col_offset;
1431 UNUSED(_end_col_offset); // Only used by EXTRA macro
1432 _res = _Py_Continue ( EXTRA );
1433 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001434 p->error_indicator = 1;
1435 return NULL;
1436 }
1437 goto done;
1438 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001439 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001440 }
1441 { // &'global' global_stmt
1442 stmt_ty global_stmt_var;
1443 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001444 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 508) // token='global'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001445 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001446 (global_stmt_var = global_stmt_rule(p)) // global_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001447 )
1448 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001449 _res = global_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001450 goto done;
1451 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001452 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001453 }
1454 { // &'nonlocal' nonlocal_stmt
1455 stmt_ty nonlocal_stmt_var;
1456 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001457 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 509) // token='nonlocal'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001458 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001459 (nonlocal_stmt_var = nonlocal_stmt_rule(p)) // nonlocal_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001460 )
1461 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001462 _res = nonlocal_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001463 goto done;
1464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001465 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001467 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001468 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001469 _PyPegen_insert_memo(p, _mark, small_stmt_type, _res);
1470 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001471}
1472
1473// compound_stmt:
1474// | &('def' | '@' | ASYNC) function_def
1475// | &'if' if_stmt
1476// | &('class' | '@') class_def
1477// | &('with' | ASYNC) with_stmt
1478// | &('for' | ASYNC) for_stmt
1479// | &'try' try_stmt
1480// | &'while' while_stmt
1481static stmt_ty
1482compound_stmt_rule(Parser *p)
1483{
1484 if (p->error_indicator) {
1485 return NULL;
1486 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001487 stmt_ty _res = NULL;
1488 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001489 { // &('def' | '@' | ASYNC) function_def
1490 stmt_ty function_def_var;
1491 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001492 _PyPegen_lookahead(1, _tmp_15_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001493 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001494 (function_def_var = function_def_rule(p)) // function_def
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001495 )
1496 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001497 _res = function_def_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001498 goto done;
1499 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001500 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001501 }
1502 { // &'if' if_stmt
1503 stmt_ty if_stmt_var;
1504 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001505 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 510) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001506 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001507 (if_stmt_var = if_stmt_rule(p)) // if_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001508 )
1509 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001510 _res = if_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001511 goto done;
1512 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001513 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001514 }
1515 { // &('class' | '@') class_def
1516 stmt_ty class_def_var;
1517 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001518 _PyPegen_lookahead(1, _tmp_16_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001519 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001520 (class_def_var = class_def_rule(p)) // class_def
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001521 )
1522 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001523 _res = class_def_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001524 goto done;
1525 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001526 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001527 }
1528 { // &('with' | ASYNC) with_stmt
1529 stmt_ty with_stmt_var;
1530 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001531 _PyPegen_lookahead(1, _tmp_17_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001532 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001533 (with_stmt_var = with_stmt_rule(p)) // with_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001534 )
1535 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001536 _res = with_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001537 goto done;
1538 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001539 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001540 }
1541 { // &('for' | ASYNC) for_stmt
1542 stmt_ty for_stmt_var;
1543 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001544 _PyPegen_lookahead(1, _tmp_18_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001545 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001546 (for_stmt_var = for_stmt_rule(p)) // for_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001547 )
1548 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001549 _res = for_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001550 goto done;
1551 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001552 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001553 }
1554 { // &'try' try_stmt
1555 stmt_ty try_stmt_var;
1556 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001557 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 511) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001558 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001559 (try_stmt_var = try_stmt_rule(p)) // try_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001560 )
1561 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001562 _res = try_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001563 goto done;
1564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001565 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001566 }
1567 { // &'while' while_stmt
1568 stmt_ty while_stmt_var;
1569 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001570 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 512) // token='while'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001571 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001572 (while_stmt_var = while_stmt_rule(p)) // while_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001573 )
1574 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001575 _res = while_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001576 goto done;
1577 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001578 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001579 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001580 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001581 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001582 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001583}
1584
1585// assignment:
1586// | NAME ':' expression ['=' annotated_rhs]
1587// | ('(' inside_paren_ann_assign_target ')' | ann_assign_subscript_attribute_target) ':' expression ['=' annotated_rhs]
Guido van Rossumc001c092020-04-30 12:12:19 -07001588// | ((star_targets '='))+ (yield_expr | star_expressions) TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001589// | target augassign (yield_expr | star_expressions)
1590// | invalid_assignment
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +03001591static stmt_ty
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001592assignment_rule(Parser *p)
1593{
1594 if (p->error_indicator) {
1595 return NULL;
1596 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001597 stmt_ty _res = NULL;
1598 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001599 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1600 p->error_indicator = 1;
1601 return NULL;
1602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001603 int _start_lineno = p->tokens[_mark]->lineno;
1604 UNUSED(_start_lineno); // Only used by EXTRA macro
1605 int _start_col_offset = p->tokens[_mark]->col_offset;
1606 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001607 { // NAME ':' expression ['=' annotated_rhs]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001608 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001609 expr_ty a;
1610 expr_ty b;
1611 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001612 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001613 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001614 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001615 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001616 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001617 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001618 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001619 (c = _tmp_19_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001620 )
1621 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001622 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1623 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001624 return NULL;
1625 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001626 int _end_lineno = _token->end_lineno;
1627 UNUSED(_end_lineno); // Only used by EXTRA macro
1628 int _end_col_offset = _token->end_col_offset;
1629 UNUSED(_end_col_offset); // Only used by EXTRA macro
1630 _res = CHECK_VERSION ( 6 , "Variable annotation syntax is" , _Py_AnnAssign ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , b , c , 1 , EXTRA ) );
1631 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001632 p->error_indicator = 1;
1633 return NULL;
1634 }
1635 goto done;
1636 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001637 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001638 }
1639 { // ('(' inside_paren_ann_assign_target ')' | ann_assign_subscript_attribute_target) ':' expression ['=' annotated_rhs]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001640 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001641 void *a;
1642 expr_ty b;
1643 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001644 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001645 (a = _tmp_20_rule(p)) // '(' inside_paren_ann_assign_target ')' | ann_assign_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001646 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001647 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001648 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001649 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001650 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001651 (c = _tmp_21_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001652 )
1653 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001654 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1655 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001656 return NULL;
1657 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001658 int _end_lineno = _token->end_lineno;
1659 UNUSED(_end_lineno); // Only used by EXTRA macro
1660 int _end_col_offset = _token->end_col_offset;
1661 UNUSED(_end_col_offset); // Only used by EXTRA macro
1662 _res = CHECK_VERSION ( 6 , "Variable annotations syntax is" , _Py_AnnAssign ( a , b , c , 0 , EXTRA ) );
1663 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001664 p->error_indicator = 1;
1665 return NULL;
1666 }
1667 goto done;
1668 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001669 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001670 }
Guido van Rossumc001c092020-04-30 12:12:19 -07001671 { // ((star_targets '='))+ (yield_expr | star_expressions) TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001672 asdl_seq * a;
1673 void *b;
Guido van Rossumc001c092020-04-30 12:12:19 -07001674 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001675 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001676 (a = _loop1_22_rule(p)) // ((star_targets '='))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001677 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001678 (b = _tmp_23_rule(p)) // yield_expr | star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -07001679 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001680 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001681 )
1682 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001683 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1684 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001685 return NULL;
1686 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001687 int _end_lineno = _token->end_lineno;
1688 UNUSED(_end_lineno); // Only used by EXTRA macro
1689 int _end_col_offset = _token->end_col_offset;
1690 UNUSED(_end_col_offset); // Only used by EXTRA macro
1691 _res = _Py_Assign ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
1692 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001693 p->error_indicator = 1;
1694 return NULL;
1695 }
1696 goto done;
1697 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001698 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001699 }
1700 { // target augassign (yield_expr | star_expressions)
1701 expr_ty a;
1702 AugOperator* b;
1703 void *c;
1704 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001705 (a = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001706 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001707 (b = augassign_rule(p)) // augassign
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001708 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001709 (c = _tmp_24_rule(p)) // yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001710 )
1711 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001712 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1713 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001714 return NULL;
1715 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001716 int _end_lineno = _token->end_lineno;
1717 UNUSED(_end_lineno); // Only used by EXTRA macro
1718 int _end_col_offset = _token->end_col_offset;
1719 UNUSED(_end_col_offset); // Only used by EXTRA macro
1720 _res = _Py_AugAssign ( a , b -> kind , c , EXTRA );
1721 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001722 p->error_indicator = 1;
1723 return NULL;
1724 }
1725 goto done;
1726 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001727 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001728 }
1729 { // invalid_assignment
1730 void *invalid_assignment_var;
1731 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001732 (invalid_assignment_var = invalid_assignment_rule(p)) // invalid_assignment
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001733 )
1734 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001735 _res = invalid_assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001736 goto done;
1737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001738 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001740 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001741 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001742 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001743}
1744
1745// augassign:
1746// | '+='
1747// | '-='
1748// | '*='
1749// | '@='
1750// | '/='
1751// | '%='
1752// | '&='
1753// | '|='
1754// | '^='
1755// | '<<='
1756// | '>>='
1757// | '**='
1758// | '//='
1759static AugOperator*
1760augassign_rule(Parser *p)
1761{
1762 if (p->error_indicator) {
1763 return NULL;
1764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001765 AugOperator* _res = NULL;
1766 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001767 { // '+='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001768 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001769 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001770 (_literal = _PyPegen_expect_token(p, 36)) // token='+='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001771 )
1772 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001773 _res = _PyPegen_augoperator ( p , Add );
1774 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001775 p->error_indicator = 1;
1776 return NULL;
1777 }
1778 goto done;
1779 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001780 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001781 }
1782 { // '-='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001783 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001784 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001785 (_literal = _PyPegen_expect_token(p, 37)) // token='-='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001786 )
1787 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001788 _res = _PyPegen_augoperator ( p , Sub );
1789 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001790 p->error_indicator = 1;
1791 return NULL;
1792 }
1793 goto done;
1794 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001795 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001796 }
1797 { // '*='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001798 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001799 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001800 (_literal = _PyPegen_expect_token(p, 38)) // token='*='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001801 )
1802 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001803 _res = _PyPegen_augoperator ( p , Mult );
1804 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001805 p->error_indicator = 1;
1806 return NULL;
1807 }
1808 goto done;
1809 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001810 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001811 }
1812 { // '@='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001813 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001814 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001815 (_literal = _PyPegen_expect_token(p, 50)) // token='@='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001816 )
1817 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001818 _res = CHECK_VERSION ( 5 , "The '@' operator is" , _PyPegen_augoperator ( p , MatMult ) );
1819 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001820 p->error_indicator = 1;
1821 return NULL;
1822 }
1823 goto done;
1824 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001825 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001826 }
1827 { // '/='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001828 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001829 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001830 (_literal = _PyPegen_expect_token(p, 39)) // token='/='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001831 )
1832 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001833 _res = _PyPegen_augoperator ( p , Div );
1834 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001835 p->error_indicator = 1;
1836 return NULL;
1837 }
1838 goto done;
1839 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001840 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001841 }
1842 { // '%='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001843 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001844 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001845 (_literal = _PyPegen_expect_token(p, 40)) // token='%='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001846 )
1847 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001848 _res = _PyPegen_augoperator ( p , Mod );
1849 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001850 p->error_indicator = 1;
1851 return NULL;
1852 }
1853 goto done;
1854 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001855 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001856 }
1857 { // '&='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001858 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001859 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001860 (_literal = _PyPegen_expect_token(p, 41)) // token='&='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001861 )
1862 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001863 _res = _PyPegen_augoperator ( p , BitAnd );
1864 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001865 p->error_indicator = 1;
1866 return NULL;
1867 }
1868 goto done;
1869 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001870 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001871 }
1872 { // '|='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001873 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001874 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001875 (_literal = _PyPegen_expect_token(p, 42)) // token='|='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001876 )
1877 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001878 _res = _PyPegen_augoperator ( p , BitOr );
1879 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001880 p->error_indicator = 1;
1881 return NULL;
1882 }
1883 goto done;
1884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001885 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001886 }
1887 { // '^='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001888 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001889 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001890 (_literal = _PyPegen_expect_token(p, 43)) // token='^='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001891 )
1892 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001893 _res = _PyPegen_augoperator ( p , BitXor );
1894 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001895 p->error_indicator = 1;
1896 return NULL;
1897 }
1898 goto done;
1899 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001900 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001901 }
1902 { // '<<='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001903 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001904 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001905 (_literal = _PyPegen_expect_token(p, 44)) // token='<<='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001906 )
1907 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001908 _res = _PyPegen_augoperator ( p , LShift );
1909 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001910 p->error_indicator = 1;
1911 return NULL;
1912 }
1913 goto done;
1914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001915 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001916 }
1917 { // '>>='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001918 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001919 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001920 (_literal = _PyPegen_expect_token(p, 45)) // token='>>='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001921 )
1922 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001923 _res = _PyPegen_augoperator ( p , RShift );
1924 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001925 p->error_indicator = 1;
1926 return NULL;
1927 }
1928 goto done;
1929 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001930 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001931 }
1932 { // '**='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001933 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001934 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001935 (_literal = _PyPegen_expect_token(p, 46)) // token='**='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001936 )
1937 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001938 _res = _PyPegen_augoperator ( p , Pow );
1939 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001940 p->error_indicator = 1;
1941 return NULL;
1942 }
1943 goto done;
1944 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001945 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001946 }
1947 { // '//='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001948 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001949 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001950 (_literal = _PyPegen_expect_token(p, 48)) // token='//='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001951 )
1952 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001953 _res = _PyPegen_augoperator ( p , FloorDiv );
1954 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001955 p->error_indicator = 1;
1956 return NULL;
1957 }
1958 goto done;
1959 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001960 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001962 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001963 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001964 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001965}
1966
1967// global_stmt: 'global' ','.NAME+
1968static stmt_ty
1969global_stmt_rule(Parser *p)
1970{
1971 if (p->error_indicator) {
1972 return NULL;
1973 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001974 stmt_ty _res = NULL;
1975 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001976 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1977 p->error_indicator = 1;
1978 return NULL;
1979 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001980 int _start_lineno = p->tokens[_mark]->lineno;
1981 UNUSED(_start_lineno); // Only used by EXTRA macro
1982 int _start_col_offset = p->tokens[_mark]->col_offset;
1983 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001984 { // 'global' ','.NAME+
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001985 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001986 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001987 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001988 (_keyword = _PyPegen_expect_token(p, 508)) // token='global'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001989 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001990 (a = _gather_25_rule(p)) // ','.NAME+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001991 )
1992 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001993 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1994 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001995 return NULL;
1996 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001997 int _end_lineno = _token->end_lineno;
1998 UNUSED(_end_lineno); // Only used by EXTRA macro
1999 int _end_col_offset = _token->end_col_offset;
2000 UNUSED(_end_col_offset); // Only used by EXTRA macro
2001 _res = _Py_Global ( CHECK ( _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2002 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002003 p->error_indicator = 1;
2004 return NULL;
2005 }
2006 goto done;
2007 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002008 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002010 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002011 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002012 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002013}
2014
2015// nonlocal_stmt: 'nonlocal' ','.NAME+
2016static stmt_ty
2017nonlocal_stmt_rule(Parser *p)
2018{
2019 if (p->error_indicator) {
2020 return NULL;
2021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002022 stmt_ty _res = NULL;
2023 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002024 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2025 p->error_indicator = 1;
2026 return NULL;
2027 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002028 int _start_lineno = p->tokens[_mark]->lineno;
2029 UNUSED(_start_lineno); // Only used by EXTRA macro
2030 int _start_col_offset = p->tokens[_mark]->col_offset;
2031 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002032 { // 'nonlocal' ','.NAME+
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002033 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002034 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002035 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002036 (_keyword = _PyPegen_expect_token(p, 509)) // token='nonlocal'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002037 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002038 (a = _gather_27_rule(p)) // ','.NAME+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002039 )
2040 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002041 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2042 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002043 return NULL;
2044 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002045 int _end_lineno = _token->end_lineno;
2046 UNUSED(_end_lineno); // Only used by EXTRA macro
2047 int _end_col_offset = _token->end_col_offset;
2048 UNUSED(_end_col_offset); // Only used by EXTRA macro
2049 _res = _Py_Nonlocal ( CHECK ( _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2050 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002051 p->error_indicator = 1;
2052 return NULL;
2053 }
2054 goto done;
2055 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002056 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002057 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002058 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002059 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002060 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002061}
2062
2063// yield_stmt: yield_expr
2064static stmt_ty
2065yield_stmt_rule(Parser *p)
2066{
2067 if (p->error_indicator) {
2068 return NULL;
2069 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002070 stmt_ty _res = NULL;
2071 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002072 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2073 p->error_indicator = 1;
2074 return NULL;
2075 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002076 int _start_lineno = p->tokens[_mark]->lineno;
2077 UNUSED(_start_lineno); // Only used by EXTRA macro
2078 int _start_col_offset = p->tokens[_mark]->col_offset;
2079 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002080 { // yield_expr
2081 expr_ty y;
2082 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002083 (y = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002084 )
2085 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002086 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2087 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002088 return NULL;
2089 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002090 int _end_lineno = _token->end_lineno;
2091 UNUSED(_end_lineno); // Only used by EXTRA macro
2092 int _end_col_offset = _token->end_col_offset;
2093 UNUSED(_end_col_offset); // Only used by EXTRA macro
2094 _res = _Py_Expr ( y , EXTRA );
2095 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002096 p->error_indicator = 1;
2097 return NULL;
2098 }
2099 goto done;
2100 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002101 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002102 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002103 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002104 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002105 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002106}
2107
2108// assert_stmt: 'assert' expression [',' expression]
2109static stmt_ty
2110assert_stmt_rule(Parser *p)
2111{
2112 if (p->error_indicator) {
2113 return NULL;
2114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002115 stmt_ty _res = NULL;
2116 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002117 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2118 p->error_indicator = 1;
2119 return NULL;
2120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002121 int _start_lineno = p->tokens[_mark]->lineno;
2122 UNUSED(_start_lineno); // Only used by EXTRA macro
2123 int _start_col_offset = p->tokens[_mark]->col_offset;
2124 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002125 { // 'assert' expression [',' expression]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002126 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002127 expr_ty a;
2128 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002129 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002130 (_keyword = _PyPegen_expect_token(p, 505)) // token='assert'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002131 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002132 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002133 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002134 (b = _tmp_29_rule(p), 1) // [',' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002135 )
2136 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002137 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2138 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002139 return NULL;
2140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002141 int _end_lineno = _token->end_lineno;
2142 UNUSED(_end_lineno); // Only used by EXTRA macro
2143 int _end_col_offset = _token->end_col_offset;
2144 UNUSED(_end_col_offset); // Only used by EXTRA macro
2145 _res = _Py_Assert ( a , b , EXTRA );
2146 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002147 p->error_indicator = 1;
2148 return NULL;
2149 }
2150 goto done;
2151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002152 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002153 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002154 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002155 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002156 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002157}
2158
2159// del_stmt: 'del' del_targets
2160static stmt_ty
2161del_stmt_rule(Parser *p)
2162{
2163 if (p->error_indicator) {
2164 return NULL;
2165 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002166 stmt_ty _res = NULL;
2167 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002168 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2169 p->error_indicator = 1;
2170 return NULL;
2171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002172 int _start_lineno = p->tokens[_mark]->lineno;
2173 UNUSED(_start_lineno); // Only used by EXTRA macro
2174 int _start_col_offset = p->tokens[_mark]->col_offset;
2175 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002176 { // 'del' del_targets
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002177 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002178 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002179 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002180 (_keyword = _PyPegen_expect_token(p, 503)) // token='del'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002181 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002182 (a = del_targets_rule(p)) // del_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002183 )
2184 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002185 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2186 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002187 return NULL;
2188 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002189 int _end_lineno = _token->end_lineno;
2190 UNUSED(_end_lineno); // Only used by EXTRA macro
2191 int _end_col_offset = _token->end_col_offset;
2192 UNUSED(_end_col_offset); // Only used by EXTRA macro
2193 _res = _Py_Delete ( a , EXTRA );
2194 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002195 p->error_indicator = 1;
2196 return NULL;
2197 }
2198 goto done;
2199 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002200 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002201 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002202 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002203 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002204 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002205}
2206
2207// import_stmt: import_name | import_from
2208static stmt_ty
2209import_stmt_rule(Parser *p)
2210{
2211 if (p->error_indicator) {
2212 return NULL;
2213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002214 stmt_ty _res = NULL;
2215 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002216 { // import_name
2217 stmt_ty import_name_var;
2218 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002219 (import_name_var = import_name_rule(p)) // import_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002220 )
2221 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002222 _res = import_name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002223 goto done;
2224 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002225 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002226 }
2227 { // import_from
2228 stmt_ty import_from_var;
2229 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002230 (import_from_var = import_from_rule(p)) // import_from
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002231 )
2232 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002233 _res = import_from_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002234 goto done;
2235 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002236 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002237 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002238 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002239 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002240 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002241}
2242
2243// import_name: 'import' dotted_as_names
2244static stmt_ty
2245import_name_rule(Parser *p)
2246{
2247 if (p->error_indicator) {
2248 return NULL;
2249 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002250 stmt_ty _res = NULL;
2251 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002252 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2253 p->error_indicator = 1;
2254 return NULL;
2255 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002256 int _start_lineno = p->tokens[_mark]->lineno;
2257 UNUSED(_start_lineno); // Only used by EXTRA macro
2258 int _start_col_offset = p->tokens[_mark]->col_offset;
2259 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002260 { // 'import' dotted_as_names
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002261 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002262 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002263 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002264 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002265 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002266 (a = dotted_as_names_rule(p)) // dotted_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002267 )
2268 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002269 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2270 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002271 return NULL;
2272 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002273 int _end_lineno = _token->end_lineno;
2274 UNUSED(_end_lineno); // Only used by EXTRA macro
2275 int _end_col_offset = _token->end_col_offset;
2276 UNUSED(_end_col_offset); // Only used by EXTRA macro
2277 _res = _Py_Import ( a , EXTRA );
2278 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002279 p->error_indicator = 1;
2280 return NULL;
2281 }
2282 goto done;
2283 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002284 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002286 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002287 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002288 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002289}
2290
2291// import_from:
2292// | 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
2293// | 'from' (('.' | '...'))+ 'import' import_from_targets
2294static stmt_ty
2295import_from_rule(Parser *p)
2296{
2297 if (p->error_indicator) {
2298 return NULL;
2299 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002300 stmt_ty _res = NULL;
2301 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002302 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2303 p->error_indicator = 1;
2304 return NULL;
2305 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002306 int _start_lineno = p->tokens[_mark]->lineno;
2307 UNUSED(_start_lineno); // Only used by EXTRA macro
2308 int _start_col_offset = p->tokens[_mark]->col_offset;
2309 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002310 { // 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002311 Token * _keyword;
2312 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002313 asdl_seq * a;
2314 expr_ty b;
2315 asdl_seq* c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002316 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002317 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002318 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002319 (a = _loop0_30_rule(p)) // (('.' | '...'))*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002320 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002321 (b = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002322 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002323 (_keyword_1 = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002324 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002325 (c = import_from_targets_rule(p)) // import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002326 )
2327 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002328 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2329 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002330 return NULL;
2331 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002332 int _end_lineno = _token->end_lineno;
2333 UNUSED(_end_lineno); // Only used by EXTRA macro
2334 int _end_col_offset = _token->end_col_offset;
2335 UNUSED(_end_col_offset); // Only used by EXTRA macro
2336 _res = _Py_ImportFrom ( b -> v . Name . id , c , _PyPegen_seq_count_dots ( a ) , EXTRA );
2337 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002338 p->error_indicator = 1;
2339 return NULL;
2340 }
2341 goto done;
2342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002343 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002344 }
2345 { // 'from' (('.' | '...'))+ 'import' import_from_targets
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002346 Token * _keyword;
2347 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002348 asdl_seq * a;
2349 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002350 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002351 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002352 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002353 (a = _loop1_31_rule(p)) // (('.' | '...'))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002354 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002355 (_keyword_1 = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002356 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002357 (b = import_from_targets_rule(p)) // import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002358 )
2359 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002360 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2361 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002362 return NULL;
2363 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002364 int _end_lineno = _token->end_lineno;
2365 UNUSED(_end_lineno); // Only used by EXTRA macro
2366 int _end_col_offset = _token->end_col_offset;
2367 UNUSED(_end_col_offset); // Only used by EXTRA macro
2368 _res = _Py_ImportFrom ( NULL , b , _PyPegen_seq_count_dots ( a ) , EXTRA );
2369 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002370 p->error_indicator = 1;
2371 return NULL;
2372 }
2373 goto done;
2374 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002375 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002376 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002377 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002378 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002379 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002380}
2381
2382// import_from_targets: '(' import_from_as_names ','? ')' | import_from_as_names | '*'
2383static asdl_seq*
2384import_from_targets_rule(Parser *p)
2385{
2386 if (p->error_indicator) {
2387 return NULL;
2388 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002389 asdl_seq* _res = NULL;
2390 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002391 { // '(' import_from_as_names ','? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002392 Token * _literal;
2393 Token * _literal_1;
2394 void *_opt_var;
2395 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002396 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002397 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002398 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002399 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002400 (a = import_from_as_names_rule(p)) // import_from_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002401 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002402 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002403 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002404 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002405 )
2406 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002407 _res = a;
2408 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002409 p->error_indicator = 1;
2410 return NULL;
2411 }
2412 goto done;
2413 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002414 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002415 }
2416 { // import_from_as_names
2417 asdl_seq* import_from_as_names_var;
2418 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002419 (import_from_as_names_var = import_from_as_names_rule(p)) // import_from_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002420 )
2421 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002422 _res = import_from_as_names_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002423 goto done;
2424 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002425 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002426 }
2427 { // '*'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002428 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002429 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002430 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002431 )
2432 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002433 _res = _PyPegen_singleton_seq ( p , CHECK ( _PyPegen_alias_for_star ( p ) ) );
2434 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002435 p->error_indicator = 1;
2436 return NULL;
2437 }
2438 goto done;
2439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002440 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002441 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002442 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002443 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002444 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002445}
2446
2447// import_from_as_names: ','.import_from_as_name+
2448static asdl_seq*
2449import_from_as_names_rule(Parser *p)
2450{
2451 if (p->error_indicator) {
2452 return NULL;
2453 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002454 asdl_seq* _res = NULL;
2455 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002456 { // ','.import_from_as_name+
2457 asdl_seq * a;
2458 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002459 (a = _gather_32_rule(p)) // ','.import_from_as_name+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002460 )
2461 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002462 _res = a;
2463 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002464 p->error_indicator = 1;
2465 return NULL;
2466 }
2467 goto done;
2468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002469 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002470 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002471 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002472 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002473 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002474}
2475
2476// import_from_as_name: NAME ['as' NAME]
2477static alias_ty
2478import_from_as_name_rule(Parser *p)
2479{
2480 if (p->error_indicator) {
2481 return NULL;
2482 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002483 alias_ty _res = NULL;
2484 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002485 { // NAME ['as' NAME]
2486 expr_ty a;
2487 void *b;
2488 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002489 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002490 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002491 (b = _tmp_34_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002492 )
2493 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002494 _res = _Py_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , p -> arena );
2495 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002496 p->error_indicator = 1;
2497 return NULL;
2498 }
2499 goto done;
2500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002501 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002503 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002504 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002505 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002506}
2507
2508// dotted_as_names: ','.dotted_as_name+
2509static asdl_seq*
2510dotted_as_names_rule(Parser *p)
2511{
2512 if (p->error_indicator) {
2513 return NULL;
2514 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002515 asdl_seq* _res = NULL;
2516 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002517 { // ','.dotted_as_name+
2518 asdl_seq * a;
2519 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002520 (a = _gather_35_rule(p)) // ','.dotted_as_name+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002521 )
2522 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002523 _res = a;
2524 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002525 p->error_indicator = 1;
2526 return NULL;
2527 }
2528 goto done;
2529 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002530 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002532 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002533 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002534 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002535}
2536
2537// dotted_as_name: dotted_name ['as' NAME]
2538static alias_ty
2539dotted_as_name_rule(Parser *p)
2540{
2541 if (p->error_indicator) {
2542 return NULL;
2543 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002544 alias_ty _res = NULL;
2545 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002546 { // dotted_name ['as' NAME]
2547 expr_ty a;
2548 void *b;
2549 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002550 (a = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002551 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002552 (b = _tmp_37_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002553 )
2554 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002555 _res = _Py_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , p -> arena );
2556 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002557 p->error_indicator = 1;
2558 return NULL;
2559 }
2560 goto done;
2561 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002562 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002563 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002564 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002565 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002566 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002567}
2568
2569// Left-recursive
2570// dotted_name: dotted_name '.' NAME | NAME
2571static expr_ty dotted_name_raw(Parser *);
2572static expr_ty
2573dotted_name_rule(Parser *p)
2574{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002575 expr_ty _res = NULL;
2576 if (_PyPegen_is_memoized(p, dotted_name_type, &_res))
2577 return _res;
2578 int _mark = p->mark;
2579 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002580 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002581 int tmpvar_0 = _PyPegen_update_memo(p, _mark, dotted_name_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002582 if (tmpvar_0) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002583 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002585 p->mark = _mark;
2586 void *_raw = dotted_name_raw(p);
2587 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002588 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002589 _resmark = p->mark;
2590 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002591 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002592 p->mark = _resmark;
2593 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002594}
2595static expr_ty
2596dotted_name_raw(Parser *p)
2597{
2598 if (p->error_indicator) {
2599 return NULL;
2600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002601 expr_ty _res = NULL;
2602 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002603 { // dotted_name '.' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002604 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002605 expr_ty a;
2606 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002607 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002608 (a = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002609 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002610 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002611 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002612 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002613 )
2614 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002615 _res = _PyPegen_join_names_with_dot ( p , a , b );
2616 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002617 p->error_indicator = 1;
2618 return NULL;
2619 }
2620 goto done;
2621 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002622 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002623 }
2624 { // NAME
2625 expr_ty name_var;
2626 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002627 (name_var = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002628 )
2629 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002630 _res = name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002631 goto done;
2632 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002633 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002634 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002635 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002636 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002637 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002638}
2639
2640// if_stmt:
2641// | 'if' named_expression ':' block elif_stmt
2642// | 'if' named_expression ':' block else_block?
2643static stmt_ty
2644if_stmt_rule(Parser *p)
2645{
2646 if (p->error_indicator) {
2647 return NULL;
2648 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002649 stmt_ty _res = NULL;
2650 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002651 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2652 p->error_indicator = 1;
2653 return NULL;
2654 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002655 int _start_lineno = p->tokens[_mark]->lineno;
2656 UNUSED(_start_lineno); // Only used by EXTRA macro
2657 int _start_col_offset = p->tokens[_mark]->col_offset;
2658 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002659 { // 'if' named_expression ':' block elif_stmt
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002660 Token * _keyword;
2661 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002662 expr_ty a;
2663 asdl_seq* b;
2664 stmt_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002665 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002666 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002667 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002668 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002669 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002670 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002671 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002672 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002673 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002674 (c = elif_stmt_rule(p)) // elif_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002675 )
2676 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002677 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2678 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002679 return NULL;
2680 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002681 int _end_lineno = _token->end_lineno;
2682 UNUSED(_end_lineno); // Only used by EXTRA macro
2683 int _end_col_offset = _token->end_col_offset;
2684 UNUSED(_end_col_offset); // Only used by EXTRA macro
2685 _res = _Py_If ( a , b , CHECK ( _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
2686 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002687 p->error_indicator = 1;
2688 return NULL;
2689 }
2690 goto done;
2691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002692 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002693 }
2694 { // 'if' named_expression ':' block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002695 Token * _keyword;
2696 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002697 expr_ty a;
2698 asdl_seq* b;
2699 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002700 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002701 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002702 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002703 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002704 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002705 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002706 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002707 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002708 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002709 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002710 )
2711 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002712 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2713 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002714 return NULL;
2715 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002716 int _end_lineno = _token->end_lineno;
2717 UNUSED(_end_lineno); // Only used by EXTRA macro
2718 int _end_col_offset = _token->end_col_offset;
2719 UNUSED(_end_col_offset); // Only used by EXTRA macro
2720 _res = _Py_If ( a , b , c , EXTRA );
2721 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002722 p->error_indicator = 1;
2723 return NULL;
2724 }
2725 goto done;
2726 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002727 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002728 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002729 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002730 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002731 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002732}
2733
2734// elif_stmt:
2735// | 'elif' named_expression ':' block elif_stmt
2736// | 'elif' named_expression ':' block else_block?
2737static stmt_ty
2738elif_stmt_rule(Parser *p)
2739{
2740 if (p->error_indicator) {
2741 return NULL;
2742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002743 stmt_ty _res = NULL;
2744 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002745 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2746 p->error_indicator = 1;
2747 return NULL;
2748 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002749 int _start_lineno = p->tokens[_mark]->lineno;
2750 UNUSED(_start_lineno); // Only used by EXTRA macro
2751 int _start_col_offset = p->tokens[_mark]->col_offset;
2752 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002753 { // 'elif' named_expression ':' block elif_stmt
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002754 Token * _keyword;
2755 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002756 expr_ty a;
2757 asdl_seq* b;
2758 stmt_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002759 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002760 (_keyword = _PyPegen_expect_token(p, 515)) // token='elif'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002761 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002762 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002763 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002764 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002765 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002766 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002767 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002768 (c = elif_stmt_rule(p)) // elif_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002769 )
2770 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002771 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2772 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002773 return NULL;
2774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002775 int _end_lineno = _token->end_lineno;
2776 UNUSED(_end_lineno); // Only used by EXTRA macro
2777 int _end_col_offset = _token->end_col_offset;
2778 UNUSED(_end_col_offset); // Only used by EXTRA macro
2779 _res = _Py_If ( a , b , CHECK ( _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
2780 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002781 p->error_indicator = 1;
2782 return NULL;
2783 }
2784 goto done;
2785 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002786 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002787 }
2788 { // 'elif' named_expression ':' block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002789 Token * _keyword;
2790 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002791 expr_ty a;
2792 asdl_seq* b;
2793 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002794 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002795 (_keyword = _PyPegen_expect_token(p, 515)) // token='elif'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002796 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002797 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002798 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002799 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002800 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002801 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002802 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002803 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002804 )
2805 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002806 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2807 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002808 return NULL;
2809 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002810 int _end_lineno = _token->end_lineno;
2811 UNUSED(_end_lineno); // Only used by EXTRA macro
2812 int _end_col_offset = _token->end_col_offset;
2813 UNUSED(_end_col_offset); // Only used by EXTRA macro
2814 _res = _Py_If ( a , b , c , EXTRA );
2815 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002816 p->error_indicator = 1;
2817 return NULL;
2818 }
2819 goto done;
2820 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002821 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002822 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002823 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002824 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002825 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002826}
2827
2828// else_block: 'else' ':' block
2829static asdl_seq*
2830else_block_rule(Parser *p)
2831{
2832 if (p->error_indicator) {
2833 return NULL;
2834 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002835 asdl_seq* _res = NULL;
2836 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002837 { // 'else' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002838 Token * _keyword;
2839 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002840 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002841 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002842 (_keyword = _PyPegen_expect_token(p, 516)) // token='else'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002843 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002844 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002845 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002846 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002847 )
2848 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002849 _res = b;
2850 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002851 p->error_indicator = 1;
2852 return NULL;
2853 }
2854 goto done;
2855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002856 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002857 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002858 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002859 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002860 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002861}
2862
2863// while_stmt: 'while' named_expression ':' block else_block?
2864static stmt_ty
2865while_stmt_rule(Parser *p)
2866{
2867 if (p->error_indicator) {
2868 return NULL;
2869 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002870 stmt_ty _res = NULL;
2871 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002872 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2873 p->error_indicator = 1;
2874 return NULL;
2875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002876 int _start_lineno = p->tokens[_mark]->lineno;
2877 UNUSED(_start_lineno); // Only used by EXTRA macro
2878 int _start_col_offset = p->tokens[_mark]->col_offset;
2879 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002880 { // 'while' named_expression ':' block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002881 Token * _keyword;
2882 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002883 expr_ty a;
2884 asdl_seq* b;
2885 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002886 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002887 (_keyword = _PyPegen_expect_token(p, 512)) // token='while'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002888 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002889 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002890 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002891 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002892 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002893 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002894 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002895 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002896 )
2897 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002898 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2899 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002900 return NULL;
2901 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002902 int _end_lineno = _token->end_lineno;
2903 UNUSED(_end_lineno); // Only used by EXTRA macro
2904 int _end_col_offset = _token->end_col_offset;
2905 UNUSED(_end_col_offset); // Only used by EXTRA macro
2906 _res = _Py_While ( a , b , c , EXTRA );
2907 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002908 p->error_indicator = 1;
2909 return NULL;
2910 }
2911 goto done;
2912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002913 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002915 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002916 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002917 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002918}
2919
Guido van Rossumc001c092020-04-30 12:12:19 -07002920// for_stmt:
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002921// | 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
2922// | ASYNC 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002923static stmt_ty
2924for_stmt_rule(Parser *p)
2925{
2926 if (p->error_indicator) {
2927 return NULL;
2928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002929 stmt_ty _res = NULL;
2930 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002931 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2932 p->error_indicator = 1;
2933 return NULL;
2934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002935 int _start_lineno = p->tokens[_mark]->lineno;
2936 UNUSED(_start_lineno); // Only used by EXTRA macro
2937 int _start_col_offset = p->tokens[_mark]->col_offset;
2938 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002939 { // 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002940 Token * _keyword;
2941 Token * _keyword_1;
2942 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002943 asdl_seq* b;
2944 void *el;
2945 expr_ty ex;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002946 expr_ty t;
Guido van Rossumc001c092020-04-30 12:12:19 -07002947 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002948 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002949 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002950 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002951 (t = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002952 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002953 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002954 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002955 (ex = star_expressions_rule(p)) // star_expressions
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002956 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002957 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002958 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002959 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002960 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002961 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002962 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002963 (el = else_block_rule(p), 1) // else_block?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002964 )
2965 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002966 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2967 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002968 return NULL;
2969 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002970 int _end_lineno = _token->end_lineno;
2971 UNUSED(_end_lineno); // Only used by EXTRA macro
2972 int _end_col_offset = _token->end_col_offset;
2973 UNUSED(_end_col_offset); // Only used by EXTRA macro
2974 _res = _Py_For ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
2975 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002976 p->error_indicator = 1;
2977 return NULL;
2978 }
2979 goto done;
2980 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002981 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002982 }
2983 { // ASYNC 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002984 Token * _keyword;
2985 Token * _keyword_1;
2986 Token * _literal;
Pablo Galindob796b3f2020-05-01 12:32:26 +01002987 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002988 asdl_seq* b;
2989 void *el;
2990 expr_ty ex;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002991 expr_ty t;
2992 void *tc;
2993 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002994 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002995 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002996 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002997 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002998 (t = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002999 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003000 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003001 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003002 (ex = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003003 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003004 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003005 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003006 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07003007 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003008 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003009 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003010 (el = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003011 )
3012 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003013 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3014 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003015 return NULL;
3016 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003017 int _end_lineno = _token->end_lineno;
3018 UNUSED(_end_lineno); // Only used by EXTRA macro
3019 int _end_col_offset = _token->end_col_offset;
3020 UNUSED(_end_col_offset); // Only used by EXTRA macro
3021 _res = CHECK_VERSION ( 5 , "Async for loops are" , _Py_AsyncFor ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
3022 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003023 p->error_indicator = 1;
3024 return NULL;
3025 }
3026 goto done;
3027 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003028 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003029 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003030 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003031 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003032 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003033}
3034
3035// with_stmt:
Pablo Galindo99db2a12020-05-06 22:54:34 +01003036// | 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003037// | 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindo99db2a12020-05-06 22:54:34 +01003038// | ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003039// | ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003040static stmt_ty
3041with_stmt_rule(Parser *p)
3042{
3043 if (p->error_indicator) {
3044 return NULL;
3045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003046 stmt_ty _res = NULL;
3047 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003048 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3049 p->error_indicator = 1;
3050 return NULL;
3051 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003052 int _start_lineno = p->tokens[_mark]->lineno;
3053 UNUSED(_start_lineno); // Only used by EXTRA macro
3054 int _start_col_offset = p->tokens[_mark]->col_offset;
3055 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindo99db2a12020-05-06 22:54:34 +01003056 { // 'with' '(' ','.with_item+ ','? ')' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003057 Token * _keyword;
3058 Token * _literal;
3059 Token * _literal_1;
3060 Token * _literal_2;
3061 void *_opt_var;
3062 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003063 asdl_seq * a;
3064 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003065 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003066 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003067 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003068 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003069 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003070 (a = _gather_38_rule(p)) // ','.with_item+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003071 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003072 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindo99db2a12020-05-06 22:54:34 +01003073 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003074 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003075 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003076 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003077 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003078 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003079 )
3080 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003081 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3082 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003083 return NULL;
3084 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003085 int _end_lineno = _token->end_lineno;
3086 UNUSED(_end_lineno); // Only used by EXTRA macro
3087 int _end_col_offset = _token->end_col_offset;
3088 UNUSED(_end_col_offset); // Only used by EXTRA macro
3089 _res = _Py_With ( a , b , NULL , EXTRA );
3090 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003091 p->error_indicator = 1;
3092 return NULL;
3093 }
3094 goto done;
3095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003096 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003097 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003098 { // 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003099 Token * _keyword;
3100 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003101 asdl_seq * a;
3102 asdl_seq* b;
Guido van Rossumc001c092020-04-30 12:12:19 -07003103 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003104 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003105 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003106 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003107 (a = _gather_40_rule(p)) // ','.with_item+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003108 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003109 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003110 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003111 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07003112 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003113 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003114 )
3115 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003116 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3117 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003118 return NULL;
3119 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003120 int _end_lineno = _token->end_lineno;
3121 UNUSED(_end_lineno); // Only used by EXTRA macro
3122 int _end_col_offset = _token->end_col_offset;
3123 UNUSED(_end_col_offset); // Only used by EXTRA macro
3124 _res = _Py_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
3125 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003126 p->error_indicator = 1;
3127 return NULL;
3128 }
3129 goto done;
3130 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003131 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003132 }
Pablo Galindo99db2a12020-05-06 22:54:34 +01003133 { // ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003134 Token * _keyword;
3135 Token * _literal;
3136 Token * _literal_1;
3137 Token * _literal_2;
3138 void *_opt_var;
3139 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003140 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003141 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003142 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003143 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003144 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003145 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003146 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003147 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003148 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003149 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003150 (a = _gather_42_rule(p)) // ','.with_item+
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003151 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003152 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindo99db2a12020-05-06 22:54:34 +01003153 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003154 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003155 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003156 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003157 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003158 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003159 )
3160 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003161 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3162 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003163 return NULL;
3164 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003165 int _end_lineno = _token->end_lineno;
3166 UNUSED(_end_lineno); // Only used by EXTRA macro
3167 int _end_col_offset = _token->end_col_offset;
3168 UNUSED(_end_col_offset); // Only used by EXTRA macro
3169 _res = CHECK_VERSION ( 5 , "Async with statements are" , _Py_AsyncWith ( a , b , NULL , EXTRA ) );
3170 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003171 p->error_indicator = 1;
3172 return NULL;
3173 }
3174 goto done;
3175 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003176 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003177 }
3178 { // ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003179 Token * _keyword;
3180 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003181 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003182 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003183 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003184 void *tc;
3185 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003186 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003187 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003188 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003189 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003190 (a = _gather_44_rule(p)) // ','.with_item+
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003191 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003192 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003193 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003194 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003195 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003196 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003197 )
3198 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003199 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3200 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003201 return NULL;
3202 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003203 int _end_lineno = _token->end_lineno;
3204 UNUSED(_end_lineno); // Only used by EXTRA macro
3205 int _end_col_offset = _token->end_col_offset;
3206 UNUSED(_end_col_offset); // Only used by EXTRA macro
3207 _res = CHECK_VERSION ( 5 , "Async with statements are" , _Py_AsyncWith ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
3208 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003209 p->error_indicator = 1;
3210 return NULL;
3211 }
3212 goto done;
3213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003214 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003216 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003217 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003218 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003219}
3220
3221// with_item: expression ['as' target]
3222static withitem_ty
3223with_item_rule(Parser *p)
3224{
3225 if (p->error_indicator) {
3226 return NULL;
3227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003228 withitem_ty _res = NULL;
3229 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003230 { // expression ['as' target]
3231 expr_ty e;
3232 void *o;
3233 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003234 (e = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003235 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003236 (o = _tmp_46_rule(p), 1) // ['as' target]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003237 )
3238 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003239 _res = _Py_withitem ( e , o , p -> arena );
3240 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003241 p->error_indicator = 1;
3242 return NULL;
3243 }
3244 goto done;
3245 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003246 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003248 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003249 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003250 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003251}
3252
3253// try_stmt:
3254// | 'try' ':' block finally_block
3255// | 'try' ':' block except_block+ else_block? finally_block?
3256static stmt_ty
3257try_stmt_rule(Parser *p)
3258{
3259 if (p->error_indicator) {
3260 return NULL;
3261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003262 stmt_ty _res = NULL;
3263 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003264 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3265 p->error_indicator = 1;
3266 return NULL;
3267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003268 int _start_lineno = p->tokens[_mark]->lineno;
3269 UNUSED(_start_lineno); // Only used by EXTRA macro
3270 int _start_col_offset = p->tokens[_mark]->col_offset;
3271 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003272 { // 'try' ':' block finally_block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003273 Token * _keyword;
3274 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003275 asdl_seq* b;
3276 asdl_seq* f;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003277 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003278 (_keyword = _PyPegen_expect_token(p, 511)) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003279 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003280 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003281 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003282 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003283 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003284 (f = finally_block_rule(p)) // finally_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003285 )
3286 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003287 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3288 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003289 return NULL;
3290 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003291 int _end_lineno = _token->end_lineno;
3292 UNUSED(_end_lineno); // Only used by EXTRA macro
3293 int _end_col_offset = _token->end_col_offset;
3294 UNUSED(_end_col_offset); // Only used by EXTRA macro
3295 _res = _Py_Try ( b , NULL , NULL , f , EXTRA );
3296 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003297 p->error_indicator = 1;
3298 return NULL;
3299 }
3300 goto done;
3301 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003302 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003303 }
3304 { // 'try' ':' block except_block+ else_block? finally_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003305 Token * _keyword;
3306 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003307 asdl_seq* b;
3308 void *el;
3309 asdl_seq * ex;
3310 void *f;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003311 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003312 (_keyword = _PyPegen_expect_token(p, 511)) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003313 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003314 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003315 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003316 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003317 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003318 (ex = _loop1_47_rule(p)) // except_block+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003319 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003320 (el = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003321 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003322 (f = finally_block_rule(p), 1) // finally_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003323 )
3324 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003325 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3326 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003327 return NULL;
3328 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003329 int _end_lineno = _token->end_lineno;
3330 UNUSED(_end_lineno); // Only used by EXTRA macro
3331 int _end_col_offset = _token->end_col_offset;
3332 UNUSED(_end_col_offset); // Only used by EXTRA macro
3333 _res = _Py_Try ( b , ex , el , f , EXTRA );
3334 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003335 p->error_indicator = 1;
3336 return NULL;
3337 }
3338 goto done;
3339 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003340 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003341 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003342 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003343 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003344 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003345}
3346
3347// except_block: 'except' expression ['as' target] ':' block | 'except' ':' block
3348static excepthandler_ty
3349except_block_rule(Parser *p)
3350{
3351 if (p->error_indicator) {
3352 return NULL;
3353 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003354 excepthandler_ty _res = NULL;
3355 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003356 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3357 p->error_indicator = 1;
3358 return NULL;
3359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003360 int _start_lineno = p->tokens[_mark]->lineno;
3361 UNUSED(_start_lineno); // Only used by EXTRA macro
3362 int _start_col_offset = p->tokens[_mark]->col_offset;
3363 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003364 { // 'except' expression ['as' target] ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003365 Token * _keyword;
3366 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003367 asdl_seq* b;
3368 expr_ty e;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003369 void *t;
3370 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003371 (_keyword = _PyPegen_expect_token(p, 520)) // token='except'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003372 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003373 (e = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003374 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003375 (t = _tmp_48_rule(p), 1) // ['as' target]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003376 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003377 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003378 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003379 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003380 )
3381 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003382 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3383 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003384 return NULL;
3385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003386 int _end_lineno = _token->end_lineno;
3387 UNUSED(_end_lineno); // Only used by EXTRA macro
3388 int _end_col_offset = _token->end_col_offset;
3389 UNUSED(_end_col_offset); // Only used by EXTRA macro
3390 _res = _Py_ExceptHandler ( e , ( t ) ? ( ( expr_ty ) t ) -> v . Name . id : NULL , b , EXTRA );
3391 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003392 p->error_indicator = 1;
3393 return NULL;
3394 }
3395 goto done;
3396 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003397 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003398 }
3399 { // 'except' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003400 Token * _keyword;
3401 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003402 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003403 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003404 (_keyword = _PyPegen_expect_token(p, 520)) // token='except'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003405 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003406 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003407 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003408 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003409 )
3410 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003411 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3412 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003413 return NULL;
3414 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003415 int _end_lineno = _token->end_lineno;
3416 UNUSED(_end_lineno); // Only used by EXTRA macro
3417 int _end_col_offset = _token->end_col_offset;
3418 UNUSED(_end_col_offset); // Only used by EXTRA macro
3419 _res = _Py_ExceptHandler ( NULL , NULL , b , EXTRA );
3420 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003421 p->error_indicator = 1;
3422 return NULL;
3423 }
3424 goto done;
3425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003426 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003427 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003428 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003429 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003430 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003431}
3432
3433// finally_block: 'finally' ':' block
3434static asdl_seq*
3435finally_block_rule(Parser *p)
3436{
3437 if (p->error_indicator) {
3438 return NULL;
3439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003440 asdl_seq* _res = NULL;
3441 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003442 { // 'finally' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003443 Token * _keyword;
3444 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003445 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003446 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003447 (_keyword = _PyPegen_expect_token(p, 521)) // token='finally'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003448 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003449 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003450 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003451 (a = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003452 )
3453 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003454 _res = a;
3455 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003456 p->error_indicator = 1;
3457 return NULL;
3458 }
3459 goto done;
3460 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003461 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003463 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003464 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003465 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003466}
3467
3468// return_stmt: 'return' star_expressions?
3469static stmt_ty
3470return_stmt_rule(Parser *p)
3471{
3472 if (p->error_indicator) {
3473 return NULL;
3474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003475 stmt_ty _res = NULL;
3476 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003477 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3478 p->error_indicator = 1;
3479 return NULL;
3480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003481 int _start_lineno = p->tokens[_mark]->lineno;
3482 UNUSED(_start_lineno); // Only used by EXTRA macro
3483 int _start_col_offset = p->tokens[_mark]->col_offset;
3484 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003485 { // 'return' star_expressions?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003486 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003487 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003488 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003489 (_keyword = _PyPegen_expect_token(p, 500)) // token='return'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003490 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003491 (a = star_expressions_rule(p), 1) // star_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003492 )
3493 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003494 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3495 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003496 return NULL;
3497 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003498 int _end_lineno = _token->end_lineno;
3499 UNUSED(_end_lineno); // Only used by EXTRA macro
3500 int _end_col_offset = _token->end_col_offset;
3501 UNUSED(_end_col_offset); // Only used by EXTRA macro
3502 _res = _Py_Return ( a , EXTRA );
3503 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003504 p->error_indicator = 1;
3505 return NULL;
3506 }
3507 goto done;
3508 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003509 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003510 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003511 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003512 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003513 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003514}
3515
3516// raise_stmt: 'raise' expression ['from' expression] | 'raise'
3517static stmt_ty
3518raise_stmt_rule(Parser *p)
3519{
3520 if (p->error_indicator) {
3521 return NULL;
3522 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003523 stmt_ty _res = NULL;
3524 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003525 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3526 p->error_indicator = 1;
3527 return NULL;
3528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003529 int _start_lineno = p->tokens[_mark]->lineno;
3530 UNUSED(_start_lineno); // Only used by EXTRA macro
3531 int _start_col_offset = p->tokens[_mark]->col_offset;
3532 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003533 { // 'raise' expression ['from' expression]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003534 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003535 expr_ty a;
3536 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003537 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003538 (_keyword = _PyPegen_expect_token(p, 501)) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003539 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003540 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003541 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003542 (b = _tmp_49_rule(p), 1) // ['from' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003543 )
3544 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003545 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3546 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003547 return NULL;
3548 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003549 int _end_lineno = _token->end_lineno;
3550 UNUSED(_end_lineno); // Only used by EXTRA macro
3551 int _end_col_offset = _token->end_col_offset;
3552 UNUSED(_end_col_offset); // Only used by EXTRA macro
3553 _res = _Py_Raise ( a , b , EXTRA );
3554 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003555 p->error_indicator = 1;
3556 return NULL;
3557 }
3558 goto done;
3559 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003560 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003561 }
3562 { // 'raise'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003563 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003564 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003565 (_keyword = _PyPegen_expect_token(p, 501)) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003566 )
3567 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003568 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3569 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003570 return NULL;
3571 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003572 int _end_lineno = _token->end_lineno;
3573 UNUSED(_end_lineno); // Only used by EXTRA macro
3574 int _end_col_offset = _token->end_col_offset;
3575 UNUSED(_end_col_offset); // Only used by EXTRA macro
3576 _res = _Py_Raise ( NULL , NULL , EXTRA );
3577 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003578 p->error_indicator = 1;
3579 return NULL;
3580 }
3581 goto done;
3582 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003583 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003585 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003586 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003587 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003588}
3589
3590// function_def: decorators function_def_raw | function_def_raw
3591static stmt_ty
3592function_def_rule(Parser *p)
3593{
3594 if (p->error_indicator) {
3595 return NULL;
3596 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003597 stmt_ty _res = NULL;
3598 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003599 { // decorators function_def_raw
3600 asdl_seq* d;
3601 stmt_ty f;
3602 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003603 (d = decorators_rule(p)) // decorators
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003604 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003605 (f = function_def_raw_rule(p)) // function_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003606 )
3607 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003608 _res = _PyPegen_function_def_decorators ( p , d , f );
3609 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003610 p->error_indicator = 1;
3611 return NULL;
3612 }
3613 goto done;
3614 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003615 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003616 }
3617 { // function_def_raw
3618 stmt_ty function_def_raw_var;
3619 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003620 (function_def_raw_var = function_def_raw_rule(p)) // function_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003621 )
3622 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003623 _res = function_def_raw_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003624 goto done;
3625 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003626 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003628 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003629 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003630 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003631}
3632
Guido van Rossumc001c092020-04-30 12:12:19 -07003633// function_def_raw:
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003634// | 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
3635// | ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003636static stmt_ty
3637function_def_raw_rule(Parser *p)
3638{
3639 if (p->error_indicator) {
3640 return NULL;
3641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003642 stmt_ty _res = NULL;
3643 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003644 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3645 p->error_indicator = 1;
3646 return NULL;
3647 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003648 int _start_lineno = p->tokens[_mark]->lineno;
3649 UNUSED(_start_lineno); // Only used by EXTRA macro
3650 int _start_col_offset = p->tokens[_mark]->col_offset;
3651 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003652 { // 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003653 Token * _keyword;
3654 Token * _literal;
3655 Token * _literal_1;
3656 Token * _literal_2;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003657 void *a;
3658 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003659 expr_ty n;
3660 void *params;
Guido van Rossumc001c092020-04-30 12:12:19 -07003661 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003662 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003663 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003664 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003665 (n = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003666 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003667 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003668 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003669 (params = params_rule(p), 1) // params?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003670 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003671 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003672 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003673 (a = _tmp_50_rule(p), 1) // ['->' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003674 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003675 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003676 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003677 (tc = func_type_comment_rule(p), 1) // func_type_comment?
Guido van Rossumc001c092020-04-30 12:12:19 -07003678 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003679 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003680 )
3681 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003682 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3683 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003684 return NULL;
3685 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003686 int _end_lineno = _token->end_lineno;
3687 UNUSED(_end_lineno); // Only used by EXTRA macro
3688 int _end_col_offset = _token->end_col_offset;
3689 UNUSED(_end_col_offset); // Only used by EXTRA macro
3690 _res = _Py_FunctionDef ( n -> v . Name . id , ( params ) ? params : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
3691 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003692 p->error_indicator = 1;
3693 return NULL;
3694 }
3695 goto done;
3696 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003697 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003698 }
3699 { // ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003700 Token * _keyword;
3701 Token * _literal;
3702 Token * _literal_1;
3703 Token * _literal_2;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003704 void *a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003705 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003706 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003707 expr_ty n;
3708 void *params;
3709 void *tc;
3710 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003711 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003712 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003713 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003714 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003715 (n = _PyPegen_name_token(p)) // NAME
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003716 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003717 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003718 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003719 (params = params_rule(p), 1) // params?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003720 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003721 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003722 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003723 (a = _tmp_51_rule(p), 1) // ['->' expression]
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003724 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003725 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003726 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003727 (tc = func_type_comment_rule(p), 1) // func_type_comment?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003728 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003729 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003730 )
3731 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003732 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3733 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003734 return NULL;
3735 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003736 int _end_lineno = _token->end_lineno;
3737 UNUSED(_end_lineno); // Only used by EXTRA macro
3738 int _end_col_offset = _token->end_col_offset;
3739 UNUSED(_end_col_offset); // Only used by EXTRA macro
3740 _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 ) );
3741 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003742 p->error_indicator = 1;
3743 return NULL;
3744 }
3745 goto done;
3746 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003747 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003748 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003749 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003750 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003751 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003752}
3753
Guido van Rossumc001c092020-04-30 12:12:19 -07003754// func_type_comment:
3755// | NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
3756// | invalid_double_type_comments
3757// | TYPE_COMMENT
Pablo Galindod9552412020-05-01 16:32:09 +01003758static Token*
Guido van Rossumc001c092020-04-30 12:12:19 -07003759func_type_comment_rule(Parser *p)
3760{
3761 if (p->error_indicator) {
3762 return NULL;
3763 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003764 Token* _res = NULL;
3765 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003766 { // NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
Pablo Galindob796b3f2020-05-01 12:32:26 +01003767 Token * newline_var;
3768 Token * t;
Guido van Rossumc001c092020-04-30 12:12:19 -07003769 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003770 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -07003771 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003772 (t = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -07003773 &&
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003774 _PyPegen_lookahead(1, _tmp_52_rule, p)
Guido van Rossumc001c092020-04-30 12:12:19 -07003775 )
3776 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003777 _res = t;
3778 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07003779 p->error_indicator = 1;
3780 return NULL;
3781 }
3782 goto done;
3783 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003784 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003785 }
3786 { // invalid_double_type_comments
3787 void *invalid_double_type_comments_var;
3788 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003789 (invalid_double_type_comments_var = invalid_double_type_comments_rule(p)) // invalid_double_type_comments
Guido van Rossumc001c092020-04-30 12:12:19 -07003790 )
3791 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003792 _res = invalid_double_type_comments_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07003793 goto done;
3794 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003795 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003796 }
3797 { // TYPE_COMMENT
Pablo Galindob796b3f2020-05-01 12:32:26 +01003798 Token * type_comment_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07003799 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003800 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -07003801 )
3802 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003803 _res = type_comment_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07003804 goto done;
3805 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003806 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003807 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003808 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07003809 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003810 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07003811}
3812
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003813// params: invalid_parameters | parameters
3814static arguments_ty
3815params_rule(Parser *p)
3816{
3817 if (p->error_indicator) {
3818 return NULL;
3819 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003820 arguments_ty _res = NULL;
3821 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003822 { // invalid_parameters
3823 void *invalid_parameters_var;
3824 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003825 (invalid_parameters_var = invalid_parameters_rule(p)) // invalid_parameters
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003826 )
3827 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003828 _res = invalid_parameters_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003829 goto done;
3830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003831 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003832 }
3833 { // parameters
3834 arguments_ty parameters_var;
3835 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003836 (parameters_var = parameters_rule(p)) // parameters
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003837 )
3838 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003839 _res = parameters_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003840 goto done;
3841 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003842 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003843 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003844 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003845 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003846 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003847}
3848
3849// parameters:
Guido van Rossumc001c092020-04-30 12:12:19 -07003850// | slash_no_default param_no_default* param_with_default* star_etc?
3851// | slash_with_default param_with_default* star_etc?
3852// | param_no_default+ param_with_default* star_etc?
3853// | param_with_default+ star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003854// | star_etc
3855static arguments_ty
3856parameters_rule(Parser *p)
3857{
3858 if (p->error_indicator) {
3859 return NULL;
3860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003861 arguments_ty _res = NULL;
3862 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003863 { // slash_no_default param_no_default* param_with_default* star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003864 asdl_seq* a;
Guido van Rossumc001c092020-04-30 12:12:19 -07003865 asdl_seq * b;
3866 asdl_seq * c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003867 void *d;
3868 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003869 (a = slash_no_default_rule(p)) // slash_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003870 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003871 (b = _loop0_53_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003872 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003873 (c = _loop0_54_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003874 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003875 (d = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003876 )
3877 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003878 _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
3879 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003880 p->error_indicator = 1;
3881 return NULL;
3882 }
3883 goto done;
3884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003885 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003886 }
Guido van Rossumc001c092020-04-30 12:12:19 -07003887 { // slash_with_default param_with_default* star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003888 SlashWithDefault* a;
Guido van Rossumc001c092020-04-30 12:12:19 -07003889 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003890 void *c;
3891 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003892 (a = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003893 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003894 (b = _loop0_55_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003895 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003896 (c = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003897 )
3898 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003899 _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
3900 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003901 p->error_indicator = 1;
3902 return NULL;
3903 }
3904 goto done;
3905 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003906 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003907 }
Guido van Rossumc001c092020-04-30 12:12:19 -07003908 { // param_no_default+ param_with_default* star_etc?
3909 asdl_seq * a;
3910 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003911 void *c;
3912 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003913 (a = _loop1_56_rule(p)) // param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003914 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003915 (b = _loop0_57_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003916 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003917 (c = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003918 )
3919 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003920 _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
3921 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003922 p->error_indicator = 1;
3923 return NULL;
3924 }
3925 goto done;
3926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003927 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003928 }
Guido van Rossumc001c092020-04-30 12:12:19 -07003929 { // param_with_default+ star_etc?
3930 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003931 void *b;
3932 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003933 (a = _loop1_58_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003934 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003935 (b = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003936 )
3937 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003938 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
3939 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003940 p->error_indicator = 1;
3941 return NULL;
3942 }
3943 goto done;
3944 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003945 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003946 }
3947 { // star_etc
3948 StarEtc* a;
3949 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003950 (a = star_etc_rule(p)) // star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003951 )
3952 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003953 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
3954 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003955 p->error_indicator = 1;
3956 return NULL;
3957 }
3958 goto done;
3959 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003960 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003962 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003963 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003964 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003965}
3966
Guido van Rossumc001c092020-04-30 12:12:19 -07003967// slash_no_default: param_no_default+ '/' ',' | param_no_default+ '/' &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003968static asdl_seq*
Guido van Rossumc001c092020-04-30 12:12:19 -07003969slash_no_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003970{
3971 if (p->error_indicator) {
3972 return NULL;
3973 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003974 asdl_seq* _res = NULL;
3975 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003976 { // param_no_default+ '/' ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003977 Token * _literal;
3978 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07003979 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003980 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003981 (a = _loop1_59_rule(p)) // param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003982 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003983 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003984 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003985 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07003986 )
3987 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003988 _res = a;
3989 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07003990 p->error_indicator = 1;
3991 return NULL;
3992 }
3993 goto done;
3994 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003995 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003996 }
3997 { // param_no_default+ '/' &')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003998 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07003999 asdl_seq * a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004000 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004001 (a = _loop1_60_rule(p)) // param_no_default+
Guido van Rossumc001c092020-04-30 12:12:19 -07004002 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004003 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossumc001c092020-04-30 12:12:19 -07004004 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004005 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004006 )
4007 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004008 _res = a;
4009 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004010 p->error_indicator = 1;
4011 return NULL;
4012 }
4013 goto done;
4014 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004015 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004016 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004017 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004018 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004019 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004020}
4021
Guido van Rossumc001c092020-04-30 12:12:19 -07004022// slash_with_default:
4023// | param_no_default* param_with_default+ '/' ','
4024// | param_no_default* param_with_default+ '/' &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004025static SlashWithDefault*
4026slash_with_default_rule(Parser *p)
4027{
4028 if (p->error_indicator) {
4029 return NULL;
4030 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004031 SlashWithDefault* _res = NULL;
4032 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004033 { // param_no_default* param_with_default+ '/' ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004034 Token * _literal;
4035 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07004036 asdl_seq * a;
4037 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004038 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004039 (a = _loop0_61_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004040 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004041 (b = _loop1_62_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004042 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004043 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004044 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004045 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004046 )
4047 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004048 _res = _PyPegen_slash_with_default ( p , a , b );
4049 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004050 p->error_indicator = 1;
4051 return NULL;
4052 }
4053 goto done;
4054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004055 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004056 }
4057 { // param_no_default* param_with_default+ '/' &')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004058 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004059 asdl_seq * a;
4060 asdl_seq * b;
Guido van Rossumc001c092020-04-30 12:12:19 -07004061 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004062 (a = _loop0_63_rule(p)) // param_no_default*
Guido van Rossumc001c092020-04-30 12:12:19 -07004063 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004064 (b = _loop1_64_rule(p)) // param_with_default+
Guido van Rossumc001c092020-04-30 12:12:19 -07004065 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004066 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossumc001c092020-04-30 12:12:19 -07004067 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004068 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004069 )
4070 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004071 _res = _PyPegen_slash_with_default ( p , a , b );
4072 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004073 p->error_indicator = 1;
4074 return NULL;
4075 }
4076 goto done;
4077 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004078 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004079 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004080 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004081 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004082 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004083}
4084
4085// star_etc:
Guido van Rossumc001c092020-04-30 12:12:19 -07004086// | '*' param_no_default param_maybe_default* kwds?
4087// | '*' ',' param_maybe_default+ kwds?
4088// | kwds
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004089// | invalid_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004090static StarEtc*
4091star_etc_rule(Parser *p)
4092{
4093 if (p->error_indicator) {
4094 return NULL;
4095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004096 StarEtc* _res = NULL;
4097 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004098 { // '*' param_no_default param_maybe_default* kwds?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004099 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004100 arg_ty a;
4101 asdl_seq * b;
4102 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004103 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004104 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004105 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004106 (a = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004107 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004108 (b = _loop0_65_rule(p)) // param_maybe_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004109 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004110 (c = kwds_rule(p), 1) // kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004111 )
4112 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004113 _res = _PyPegen_star_etc ( p , a , b , c );
4114 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004115 p->error_indicator = 1;
4116 return NULL;
4117 }
4118 goto done;
4119 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004120 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004121 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004122 { // '*' ',' param_maybe_default+ kwds?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004123 Token * _literal;
4124 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004125 asdl_seq * b;
4126 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004127 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004128 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004129 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004130 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004131 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004132 (b = _loop1_66_rule(p)) // param_maybe_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004133 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004134 (c = kwds_rule(p), 1) // kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004135 )
4136 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004137 _res = _PyPegen_star_etc ( p , NULL , b , c );
4138 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004139 p->error_indicator = 1;
4140 return NULL;
4141 }
4142 goto done;
4143 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004144 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004145 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004146 { // kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004147 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004148 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004149 (a = kwds_rule(p)) // kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004150 )
4151 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004152 _res = _PyPegen_star_etc ( p , NULL , NULL , a );
4153 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004154 p->error_indicator = 1;
4155 return NULL;
4156 }
4157 goto done;
4158 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004159 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004160 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004161 { // invalid_star_etc
4162 void *invalid_star_etc_var;
4163 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004164 (invalid_star_etc_var = invalid_star_etc_rule(p)) // invalid_star_etc
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004165 )
4166 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004167 _res = invalid_star_etc_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004168 goto done;
4169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004170 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004172 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004173 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004174 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004175}
4176
Guido van Rossumc001c092020-04-30 12:12:19 -07004177// kwds: '**' param_no_default
4178static arg_ty
4179kwds_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004180{
4181 if (p->error_indicator) {
4182 return NULL;
4183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004184 arg_ty _res = NULL;
4185 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004186 { // '**' param_no_default
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004187 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004188 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004189 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004190 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -07004191 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004192 (a = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -07004193 )
4194 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004195 _res = a;
4196 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004197 p->error_indicator = 1;
4198 return NULL;
4199 }
4200 goto done;
4201 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004202 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004203 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004204 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07004205 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004206 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07004207}
4208
4209// param_no_default: param ',' TYPE_COMMENT? | param TYPE_COMMENT? &')'
4210static arg_ty
4211param_no_default_rule(Parser *p)
4212{
4213 if (p->error_indicator) {
4214 return NULL;
4215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004216 arg_ty _res = NULL;
4217 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004218 { // param ',' TYPE_COMMENT?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004219 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004220 arg_ty a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004221 void *tc;
4222 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004223 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004224 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004225 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004226 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004227 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004228 )
4229 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004230 _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
4231 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004232 p->error_indicator = 1;
4233 return NULL;
4234 }
4235 goto done;
4236 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004237 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004238 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004239 { // param TYPE_COMMENT? &')'
4240 arg_ty a;
4241 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004242 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004243 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004244 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004245 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004246 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004247 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004248 )
4249 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004250 _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
4251 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004252 p->error_indicator = 1;
4253 return NULL;
4254 }
4255 goto done;
4256 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004257 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004258 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004259 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004260 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004261 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004262}
4263
Guido van Rossumc001c092020-04-30 12:12:19 -07004264// param_with_default: param default ',' TYPE_COMMENT? | param default TYPE_COMMENT? &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004265static NameDefaultPair*
Guido van Rossumc001c092020-04-30 12:12:19 -07004266param_with_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004267{
4268 if (p->error_indicator) {
4269 return NULL;
4270 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004271 NameDefaultPair* _res = NULL;
4272 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004273 { // param default ',' TYPE_COMMENT?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004274 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004275 arg_ty a;
4276 expr_ty c;
Guido van Rossumc001c092020-04-30 12:12:19 -07004277 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004278 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004279 (a = param_rule(p)) // param
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004280 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004281 (c = default_rule(p)) // default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004282 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004283 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004284 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004285 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004286 )
4287 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004288 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4289 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004290 p->error_indicator = 1;
4291 return NULL;
4292 }
4293 goto done;
4294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004295 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004296 }
4297 { // param default TYPE_COMMENT? &')'
4298 arg_ty a;
4299 expr_ty c;
4300 void *tc;
4301 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004302 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004303 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004304 (c = default_rule(p)) // default
Guido van Rossumc001c092020-04-30 12:12:19 -07004305 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004306 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004307 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004308 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -07004309 )
4310 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004311 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4312 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004313 p->error_indicator = 1;
4314 return NULL;
4315 }
4316 goto done;
4317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004318 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004319 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004320 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004321 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004322 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004323}
4324
Guido van Rossumc001c092020-04-30 12:12:19 -07004325// param_maybe_default:
4326// | param default? ',' TYPE_COMMENT?
4327// | param default? TYPE_COMMENT? &')'
4328static NameDefaultPair*
4329param_maybe_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004330{
4331 if (p->error_indicator) {
4332 return NULL;
4333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004334 NameDefaultPair* _res = NULL;
4335 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004336 { // param default? ',' TYPE_COMMENT?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004337 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004338 arg_ty a;
4339 void *c;
Guido van Rossumc001c092020-04-30 12:12:19 -07004340 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004341 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004342 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004343 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004344 (c = default_rule(p), 1) // default?
Guido van Rossumc001c092020-04-30 12:12:19 -07004345 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004346 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004347 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004348 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004349 )
4350 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004351 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4352 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004353 p->error_indicator = 1;
4354 return NULL;
4355 }
4356 goto done;
4357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004358 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004359 }
4360 { // param default? TYPE_COMMENT? &')'
4361 arg_ty a;
4362 void *c;
4363 void *tc;
4364 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004365 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004366 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004367 (c = default_rule(p), 1) // default?
Guido van Rossumc001c092020-04-30 12:12:19 -07004368 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004369 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004370 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004371 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -07004372 )
4373 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004374 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4375 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004376 p->error_indicator = 1;
4377 return NULL;
4378 }
4379 goto done;
4380 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004381 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004383 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004384 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004385 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004386}
4387
Guido van Rossumc001c092020-04-30 12:12:19 -07004388// param: NAME annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004389static arg_ty
Guido van Rossumc001c092020-04-30 12:12:19 -07004390param_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004391{
4392 if (p->error_indicator) {
4393 return NULL;
4394 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004395 arg_ty _res = NULL;
4396 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004397 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4398 p->error_indicator = 1;
4399 return NULL;
4400 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004401 int _start_lineno = p->tokens[_mark]->lineno;
4402 UNUSED(_start_lineno); // Only used by EXTRA macro
4403 int _start_col_offset = p->tokens[_mark]->col_offset;
4404 UNUSED(_start_col_offset); // Only used by EXTRA macro
Guido van Rossumc001c092020-04-30 12:12:19 -07004405 { // NAME annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004406 expr_ty a;
4407 void *b;
4408 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004409 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004410 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004411 (b = annotation_rule(p), 1) // annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004412 )
4413 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004414 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4415 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004416 return NULL;
4417 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004418 int _end_lineno = _token->end_lineno;
4419 UNUSED(_end_lineno); // Only used by EXTRA macro
4420 int _end_col_offset = _token->end_col_offset;
4421 UNUSED(_end_col_offset); // Only used by EXTRA macro
4422 _res = _Py_arg ( a -> v . Name . id , b , NULL , EXTRA );
4423 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004424 p->error_indicator = 1;
4425 return NULL;
4426 }
4427 goto done;
4428 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004429 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004430 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004431 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004432 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004433 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004434}
4435
Guido van Rossumc001c092020-04-30 12:12:19 -07004436// annotation: ':' expression
4437static expr_ty
4438annotation_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004439{
4440 if (p->error_indicator) {
4441 return NULL;
4442 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004443 expr_ty _res = NULL;
4444 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004445 { // ':' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004446 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004447 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004448 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004449 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004450 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004451 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004452 )
4453 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004454 _res = a;
4455 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004456 p->error_indicator = 1;
4457 return NULL;
4458 }
4459 goto done;
4460 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004461 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004463 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004464 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004465 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004466}
4467
Guido van Rossumc001c092020-04-30 12:12:19 -07004468// default: '=' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004469static expr_ty
Guido van Rossumc001c092020-04-30 12:12:19 -07004470default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004471{
4472 if (p->error_indicator) {
4473 return NULL;
4474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004475 expr_ty _res = NULL;
4476 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004477 { // '=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004478 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004479 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004480 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004481 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Guido van Rossumc001c092020-04-30 12:12:19 -07004482 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004483 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004484 )
4485 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004486 _res = a;
4487 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004488 p->error_indicator = 1;
4489 return NULL;
4490 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004491 goto done;
4492 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004493 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004494 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004495 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004496 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004497 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004498}
4499
4500// decorators: (('@' named_expression NEWLINE))+
4501static asdl_seq*
4502decorators_rule(Parser *p)
4503{
4504 if (p->error_indicator) {
4505 return NULL;
4506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004507 asdl_seq* _res = NULL;
4508 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004509 { // (('@' named_expression NEWLINE))+
4510 asdl_seq * a;
4511 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004512 (a = _loop1_67_rule(p)) // (('@' named_expression NEWLINE))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004513 )
4514 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004515 _res = a;
4516 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004517 p->error_indicator = 1;
4518 return NULL;
4519 }
4520 goto done;
4521 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004522 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004523 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004524 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004525 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004526 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004527}
4528
4529// class_def: decorators class_def_raw | class_def_raw
4530static stmt_ty
4531class_def_rule(Parser *p)
4532{
4533 if (p->error_indicator) {
4534 return NULL;
4535 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004536 stmt_ty _res = NULL;
4537 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004538 { // decorators class_def_raw
4539 asdl_seq* a;
4540 stmt_ty b;
4541 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004542 (a = decorators_rule(p)) // decorators
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004543 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004544 (b = class_def_raw_rule(p)) // class_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004545 )
4546 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004547 _res = _PyPegen_class_def_decorators ( p , a , b );
4548 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004549 p->error_indicator = 1;
4550 return NULL;
4551 }
4552 goto done;
4553 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004554 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004555 }
4556 { // class_def_raw
4557 stmt_ty class_def_raw_var;
4558 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004559 (class_def_raw_var = class_def_raw_rule(p)) // class_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004560 )
4561 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004562 _res = class_def_raw_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004563 goto done;
4564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004565 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004566 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004567 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004568 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004569 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004570}
4571
4572// class_def_raw: 'class' NAME ['(' arguments? ')'] ':' block
4573static stmt_ty
4574class_def_raw_rule(Parser *p)
4575{
4576 if (p->error_indicator) {
4577 return NULL;
4578 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004579 stmt_ty _res = NULL;
4580 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004581 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4582 p->error_indicator = 1;
4583 return NULL;
4584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004585 int _start_lineno = p->tokens[_mark]->lineno;
4586 UNUSED(_start_lineno); // Only used by EXTRA macro
4587 int _start_col_offset = p->tokens[_mark]->col_offset;
4588 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004589 { // 'class' NAME ['(' arguments? ')'] ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004590 Token * _keyword;
4591 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004592 expr_ty a;
4593 void *b;
4594 asdl_seq* c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004595 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004596 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004597 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004598 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004599 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004600 (b = _tmp_68_rule(p), 1) // ['(' arguments? ')']
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004601 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004602 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004603 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004604 (c = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004605 )
4606 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004607 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4608 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004609 return NULL;
4610 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004611 int _end_lineno = _token->end_lineno;
4612 UNUSED(_end_lineno); // Only used by EXTRA macro
4613 int _end_col_offset = _token->end_col_offset;
4614 UNUSED(_end_col_offset); // Only used by EXTRA macro
4615 _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 );
4616 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004617 p->error_indicator = 1;
4618 return NULL;
4619 }
4620 goto done;
4621 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004622 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004623 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004624 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004625 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004626 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004627}
4628
4629// block: NEWLINE INDENT statements DEDENT | simple_stmt | invalid_block
4630static asdl_seq*
4631block_rule(Parser *p)
4632{
4633 if (p->error_indicator) {
4634 return NULL;
4635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004636 asdl_seq* _res = NULL;
4637 if (_PyPegen_is_memoized(p, block_type, &_res))
4638 return _res;
4639 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004640 { // NEWLINE INDENT statements DEDENT
4641 asdl_seq* a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01004642 Token * dedent_var;
4643 Token * indent_var;
4644 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004645 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004646 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004647 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004648 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004649 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004650 (a = statements_rule(p)) // statements
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004651 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004652 (dedent_var = _PyPegen_expect_token(p, DEDENT)) // token='DEDENT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004653 )
4654 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004655 _res = a;
4656 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004657 p->error_indicator = 1;
4658 return NULL;
4659 }
4660 goto done;
4661 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004662 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004663 }
4664 { // simple_stmt
4665 asdl_seq* simple_stmt_var;
4666 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004667 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004668 )
4669 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004670 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004671 goto done;
4672 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004673 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004674 }
4675 { // invalid_block
4676 void *invalid_block_var;
4677 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004678 (invalid_block_var = invalid_block_rule(p)) // invalid_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004679 )
4680 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004681 _res = invalid_block_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004682 goto done;
4683 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004684 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004685 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004686 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004687 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004688 _PyPegen_insert_memo(p, _mark, block_type, _res);
4689 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004690}
4691
4692// expressions_list: ','.star_expression+ ','?
4693static asdl_seq*
4694expressions_list_rule(Parser *p)
4695{
4696 if (p->error_indicator) {
4697 return NULL;
4698 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004699 asdl_seq* _res = NULL;
4700 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004701 { // ','.star_expression+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004702 void *_opt_var;
4703 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004704 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004705 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004706 (a = _gather_69_rule(p)) // ','.star_expression+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004707 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004708 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004709 )
4710 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004711 _res = a;
4712 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004713 p->error_indicator = 1;
4714 return NULL;
4715 }
4716 goto done;
4717 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004718 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004719 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004720 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004721 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004722 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004723}
4724
4725// star_expressions:
4726// | star_expression ((',' star_expression))+ ','?
4727// | star_expression ','
4728// | star_expression
4729static expr_ty
4730star_expressions_rule(Parser *p)
4731{
4732 if (p->error_indicator) {
4733 return NULL;
4734 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004735 expr_ty _res = NULL;
4736 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004737 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4738 p->error_indicator = 1;
4739 return NULL;
4740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004741 int _start_lineno = p->tokens[_mark]->lineno;
4742 UNUSED(_start_lineno); // Only used by EXTRA macro
4743 int _start_col_offset = p->tokens[_mark]->col_offset;
4744 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004745 { // star_expression ((',' star_expression))+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004746 void *_opt_var;
4747 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004748 expr_ty a;
4749 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004750 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004751 (a = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004752 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004753 (b = _loop1_71_rule(p)) // ((',' star_expression))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004754 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004755 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004756 )
4757 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004758 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4759 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004760 return NULL;
4761 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004762 int _end_lineno = _token->end_lineno;
4763 UNUSED(_end_lineno); // Only used by EXTRA macro
4764 int _end_col_offset = _token->end_col_offset;
4765 UNUSED(_end_col_offset); // Only used by EXTRA macro
4766 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
4767 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004768 p->error_indicator = 1;
4769 return NULL;
4770 }
4771 goto done;
4772 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004773 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004774 }
4775 { // star_expression ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004776 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004777 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004778 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004779 (a = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004780 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004781 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004782 )
4783 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004784 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4785 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004786 return NULL;
4787 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004788 int _end_lineno = _token->end_lineno;
4789 UNUSED(_end_lineno); // Only used by EXTRA macro
4790 int _end_col_offset = _token->end_col_offset;
4791 UNUSED(_end_col_offset); // Only used by EXTRA macro
4792 _res = _Py_Tuple ( CHECK ( _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
4793 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004794 p->error_indicator = 1;
4795 return NULL;
4796 }
4797 goto done;
4798 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004799 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004800 }
4801 { // star_expression
4802 expr_ty star_expression_var;
4803 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004804 (star_expression_var = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004805 )
4806 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004807 _res = star_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004808 goto done;
4809 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004810 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004812 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004813 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004814 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004815}
4816
4817// star_expression: '*' bitwise_or | expression
4818static expr_ty
4819star_expression_rule(Parser *p)
4820{
4821 if (p->error_indicator) {
4822 return NULL;
4823 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004824 expr_ty _res = NULL;
4825 if (_PyPegen_is_memoized(p, star_expression_type, &_res))
4826 return _res;
4827 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004828 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4829 p->error_indicator = 1;
4830 return NULL;
4831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004832 int _start_lineno = p->tokens[_mark]->lineno;
4833 UNUSED(_start_lineno); // Only used by EXTRA macro
4834 int _start_col_offset = p->tokens[_mark]->col_offset;
4835 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004836 { // '*' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004837 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004838 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004839 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004840 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004841 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004842 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004843 )
4844 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004845 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4846 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004847 return NULL;
4848 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004849 int _end_lineno = _token->end_lineno;
4850 UNUSED(_end_lineno); // Only used by EXTRA macro
4851 int _end_col_offset = _token->end_col_offset;
4852 UNUSED(_end_col_offset); // Only used by EXTRA macro
4853 _res = _Py_Starred ( a , Load , EXTRA );
4854 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004855 p->error_indicator = 1;
4856 return NULL;
4857 }
4858 goto done;
4859 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004860 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004861 }
4862 { // expression
4863 expr_ty expression_var;
4864 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004865 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004866 )
4867 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004868 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004869 goto done;
4870 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004871 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004872 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004873 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004874 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004875 _PyPegen_insert_memo(p, _mark, star_expression_type, _res);
4876 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004877}
4878
4879// star_named_expressions: ','.star_named_expression+ ','?
4880static asdl_seq*
4881star_named_expressions_rule(Parser *p)
4882{
4883 if (p->error_indicator) {
4884 return NULL;
4885 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004886 asdl_seq* _res = NULL;
4887 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004888 { // ','.star_named_expression+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004889 void *_opt_var;
4890 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004891 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004892 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004893 (a = _gather_72_rule(p)) // ','.star_named_expression+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004894 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004895 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004896 )
4897 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004898 _res = a;
4899 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004900 p->error_indicator = 1;
4901 return NULL;
4902 }
4903 goto done;
4904 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004905 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004906 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004907 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004908 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004909 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004910}
4911
4912// star_named_expression: '*' bitwise_or | named_expression
4913static expr_ty
4914star_named_expression_rule(Parser *p)
4915{
4916 if (p->error_indicator) {
4917 return NULL;
4918 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004919 expr_ty _res = NULL;
4920 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004921 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4922 p->error_indicator = 1;
4923 return NULL;
4924 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004925 int _start_lineno = p->tokens[_mark]->lineno;
4926 UNUSED(_start_lineno); // Only used by EXTRA macro
4927 int _start_col_offset = p->tokens[_mark]->col_offset;
4928 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004929 { // '*' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004930 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004931 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004932 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004933 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004934 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004935 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004936 )
4937 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004938 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4939 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004940 return NULL;
4941 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004942 int _end_lineno = _token->end_lineno;
4943 UNUSED(_end_lineno); // Only used by EXTRA macro
4944 int _end_col_offset = _token->end_col_offset;
4945 UNUSED(_end_col_offset); // Only used by EXTRA macro
4946 _res = _Py_Starred ( a , Load , EXTRA );
4947 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004948 p->error_indicator = 1;
4949 return NULL;
4950 }
4951 goto done;
4952 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004953 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004954 }
4955 { // named_expression
4956 expr_ty named_expression_var;
4957 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004958 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004959 )
4960 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004961 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004962 goto done;
4963 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004964 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004966 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004967 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004968 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004969}
4970
4971// named_expression: NAME ':=' expression | expression !':=' | invalid_named_expression
4972static expr_ty
4973named_expression_rule(Parser *p)
4974{
4975 if (p->error_indicator) {
4976 return NULL;
4977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004978 expr_ty _res = NULL;
4979 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004980 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4981 p->error_indicator = 1;
4982 return NULL;
4983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004984 int _start_lineno = p->tokens[_mark]->lineno;
4985 UNUSED(_start_lineno); // Only used by EXTRA macro
4986 int _start_col_offset = p->tokens[_mark]->col_offset;
4987 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004988 { // NAME ':=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004989 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004990 expr_ty a;
4991 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004992 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004993 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004994 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004995 (_literal = _PyPegen_expect_token(p, 53)) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004996 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004997 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004998 )
4999 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005000 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5001 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005002 return NULL;
5003 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005004 int _end_lineno = _token->end_lineno;
5005 UNUSED(_end_lineno); // Only used by EXTRA macro
5006 int _end_col_offset = _token->end_col_offset;
5007 UNUSED(_end_col_offset); // Only used by EXTRA macro
5008 _res = _Py_NamedExpr ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , b , EXTRA );
5009 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005010 p->error_indicator = 1;
5011 return NULL;
5012 }
5013 goto done;
5014 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005015 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005016 }
5017 { // expression !':='
5018 expr_ty expression_var;
5019 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005020 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005021 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005022 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005023 )
5024 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005025 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005026 goto done;
5027 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005028 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005029 }
5030 { // invalid_named_expression
5031 void *invalid_named_expression_var;
5032 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005033 (invalid_named_expression_var = invalid_named_expression_rule(p)) // invalid_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005034 )
5035 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005036 _res = invalid_named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005037 goto done;
5038 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005039 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005040 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005041 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005042 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005043 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005044}
5045
5046// annotated_rhs: yield_expr | star_expressions
5047static expr_ty
5048annotated_rhs_rule(Parser *p)
5049{
5050 if (p->error_indicator) {
5051 return NULL;
5052 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005053 expr_ty _res = NULL;
5054 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005055 { // yield_expr
5056 expr_ty yield_expr_var;
5057 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005058 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005059 )
5060 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005061 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005062 goto done;
5063 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005064 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005065 }
5066 { // star_expressions
5067 expr_ty star_expressions_var;
5068 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005069 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005070 )
5071 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005072 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005073 goto done;
5074 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005075 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005076 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005077 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005078 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005079 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005080}
5081
5082// expressions: expression ((',' expression))+ ','? | expression ',' | expression
5083static expr_ty
5084expressions_rule(Parser *p)
5085{
5086 if (p->error_indicator) {
5087 return NULL;
5088 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005089 expr_ty _res = NULL;
5090 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005091 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5092 p->error_indicator = 1;
5093 return NULL;
5094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005095 int _start_lineno = p->tokens[_mark]->lineno;
5096 UNUSED(_start_lineno); // Only used by EXTRA macro
5097 int _start_col_offset = p->tokens[_mark]->col_offset;
5098 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005099 { // expression ((',' expression))+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005100 void *_opt_var;
5101 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005102 expr_ty a;
5103 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005104 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005105 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005106 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005107 (b = _loop1_74_rule(p)) // ((',' expression))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005108 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005109 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005110 )
5111 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005112 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5113 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005114 return NULL;
5115 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005116 int _end_lineno = _token->end_lineno;
5117 UNUSED(_end_lineno); // Only used by EXTRA macro
5118 int _end_col_offset = _token->end_col_offset;
5119 UNUSED(_end_col_offset); // Only used by EXTRA macro
5120 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
5121 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005122 p->error_indicator = 1;
5123 return NULL;
5124 }
5125 goto done;
5126 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005127 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005128 }
5129 { // expression ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005130 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005131 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005132 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005133 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005134 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005135 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005136 )
5137 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005138 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5139 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005140 return NULL;
5141 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005142 int _end_lineno = _token->end_lineno;
5143 UNUSED(_end_lineno); // Only used by EXTRA macro
5144 int _end_col_offset = _token->end_col_offset;
5145 UNUSED(_end_col_offset); // Only used by EXTRA macro
5146 _res = _Py_Tuple ( CHECK ( _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
5147 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005148 p->error_indicator = 1;
5149 return NULL;
5150 }
5151 goto done;
5152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005153 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005154 }
5155 { // expression
5156 expr_ty expression_var;
5157 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005158 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005159 )
5160 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005161 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005162 goto done;
5163 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005164 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005165 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005166 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005167 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005168 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005169}
5170
5171// expression: disjunction 'if' disjunction 'else' expression | disjunction | lambdef
5172static expr_ty
5173expression_rule(Parser *p)
5174{
5175 if (p->error_indicator) {
5176 return NULL;
5177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005178 expr_ty _res = NULL;
5179 if (_PyPegen_is_memoized(p, expression_type, &_res))
5180 return _res;
5181 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005182 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5183 p->error_indicator = 1;
5184 return NULL;
5185 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005186 int _start_lineno = p->tokens[_mark]->lineno;
5187 UNUSED(_start_lineno); // Only used by EXTRA macro
5188 int _start_col_offset = p->tokens[_mark]->col_offset;
5189 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005190 { // disjunction 'if' disjunction 'else' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005191 Token * _keyword;
5192 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005193 expr_ty a;
5194 expr_ty b;
5195 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005196 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005197 (a = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005198 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005199 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005200 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005201 (b = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005202 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005203 (_keyword_1 = _PyPegen_expect_token(p, 516)) // token='else'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005204 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005205 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005206 )
5207 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005208 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5209 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005210 return NULL;
5211 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005212 int _end_lineno = _token->end_lineno;
5213 UNUSED(_end_lineno); // Only used by EXTRA macro
5214 int _end_col_offset = _token->end_col_offset;
5215 UNUSED(_end_col_offset); // Only used by EXTRA macro
5216 _res = _Py_IfExp ( b , a , c , EXTRA );
5217 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005218 p->error_indicator = 1;
5219 return NULL;
5220 }
5221 goto done;
5222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005223 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005224 }
5225 { // disjunction
5226 expr_ty disjunction_var;
5227 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005228 (disjunction_var = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005229 )
5230 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005231 _res = disjunction_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005232 goto done;
5233 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005234 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005235 }
5236 { // lambdef
5237 expr_ty lambdef_var;
5238 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005239 (lambdef_var = lambdef_rule(p)) // lambdef
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005240 )
5241 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005242 _res = lambdef_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005243 goto done;
5244 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005245 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005247 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005248 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005249 _PyPegen_insert_memo(p, _mark, expression_type, _res);
5250 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005251}
5252
5253// lambdef: 'lambda' lambda_parameters? ':' expression
5254static expr_ty
5255lambdef_rule(Parser *p)
5256{
5257 if (p->error_indicator) {
5258 return NULL;
5259 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005260 expr_ty _res = NULL;
5261 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005262 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5263 p->error_indicator = 1;
5264 return NULL;
5265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005266 int _start_lineno = p->tokens[_mark]->lineno;
5267 UNUSED(_start_lineno); // Only used by EXTRA macro
5268 int _start_col_offset = p->tokens[_mark]->col_offset;
5269 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005270 { // 'lambda' lambda_parameters? ':' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005271 Token * _keyword;
5272 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005273 void *a;
5274 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005275 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005276 (_keyword = _PyPegen_expect_token(p, 524)) // token='lambda'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005277 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005278 (a = lambda_parameters_rule(p), 1) // lambda_parameters?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005279 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005280 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005281 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005282 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005283 )
5284 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005285 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5286 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005287 return NULL;
5288 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005289 int _end_lineno = _token->end_lineno;
5290 UNUSED(_end_lineno); // Only used by EXTRA macro
5291 int _end_col_offset = _token->end_col_offset;
5292 UNUSED(_end_col_offset); // Only used by EXTRA macro
5293 _res = _Py_Lambda ( ( a ) ? a : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , EXTRA );
5294 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005295 p->error_indicator = 1;
5296 return NULL;
5297 }
5298 goto done;
5299 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005300 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005301 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005302 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005303 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005304 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005305}
5306
5307// lambda_parameters:
Guido van Rossum3941d972020-05-01 09:42:03 -07005308// | lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
5309// | lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
5310// | lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
5311// | lambda_param_with_default+ lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005312// | lambda_star_etc
5313static arguments_ty
5314lambda_parameters_rule(Parser *p)
5315{
5316 if (p->error_indicator) {
5317 return NULL;
5318 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005319 arguments_ty _res = NULL;
5320 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005321 { // lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005322 asdl_seq* a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005323 asdl_seq * b;
5324 asdl_seq * c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005325 void *d;
5326 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005327 (a = lambda_slash_no_default_rule(p)) // lambda_slash_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005328 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005329 (b = _loop0_75_rule(p)) // lambda_param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005330 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005331 (c = _loop0_76_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005332 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005333 (d = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005334 )
5335 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005336 _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
5337 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005338 p->error_indicator = 1;
5339 return NULL;
5340 }
5341 goto done;
5342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005343 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005344 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005345 { // lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005346 SlashWithDefault* a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005347 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005348 void *c;
5349 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005350 (a = lambda_slash_with_default_rule(p)) // lambda_slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005351 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005352 (b = _loop0_77_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005353 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005354 (c = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005355 )
5356 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005357 _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
5358 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005359 p->error_indicator = 1;
5360 return NULL;
5361 }
5362 goto done;
5363 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005364 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005365 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005366 { // lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
5367 asdl_seq * a;
5368 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005369 void *c;
5370 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005371 (a = _loop1_78_rule(p)) // lambda_param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005372 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005373 (b = _loop0_79_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005374 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005375 (c = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005376 )
5377 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005378 _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
5379 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005380 p->error_indicator = 1;
5381 return NULL;
5382 }
5383 goto done;
5384 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005385 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005386 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005387 { // lambda_param_with_default+ lambda_star_etc?
5388 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005389 void *b;
5390 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005391 (a = _loop1_80_rule(p)) // lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005392 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005393 (b = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005394 )
5395 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005396 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
5397 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005398 p->error_indicator = 1;
5399 return NULL;
5400 }
5401 goto done;
5402 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005403 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005404 }
5405 { // lambda_star_etc
5406 StarEtc* a;
5407 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005408 (a = lambda_star_etc_rule(p)) // lambda_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005409 )
5410 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005411 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
5412 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005413 p->error_indicator = 1;
5414 return NULL;
5415 }
5416 goto done;
5417 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005418 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005419 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005420 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005421 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005422 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005423}
5424
Guido van Rossum3941d972020-05-01 09:42:03 -07005425// lambda_slash_no_default:
5426// | lambda_param_no_default+ '/' ','
5427// | lambda_param_no_default+ '/' &':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005428static asdl_seq*
Guido van Rossum3941d972020-05-01 09:42:03 -07005429lambda_slash_no_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005430{
5431 if (p->error_indicator) {
5432 return NULL;
5433 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005434 asdl_seq* _res = NULL;
5435 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005436 { // lambda_param_no_default+ '/' ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005437 Token * _literal;
5438 Token * _literal_1;
Guido van Rossum3941d972020-05-01 09:42:03 -07005439 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005440 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005441 (a = _loop1_81_rule(p)) // lambda_param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005442 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005443 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005444 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005445 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005446 )
5447 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005448 _res = a;
5449 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005450 p->error_indicator = 1;
5451 return NULL;
5452 }
5453 goto done;
5454 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005455 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005456 }
5457 { // lambda_param_no_default+ '/' &':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005458 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005459 asdl_seq * a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005460 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005461 (a = _loop1_82_rule(p)) // lambda_param_no_default+
Guido van Rossum3941d972020-05-01 09:42:03 -07005462 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005463 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossum3941d972020-05-01 09:42:03 -07005464 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005465 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005466 )
5467 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005468 _res = a;
5469 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005470 p->error_indicator = 1;
5471 return NULL;
5472 }
5473 goto done;
5474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005475 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005476 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005477 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005478 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005479 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005480}
5481
Guido van Rossum3941d972020-05-01 09:42:03 -07005482// lambda_slash_with_default:
5483// | lambda_param_no_default* lambda_param_with_default+ '/' ','
5484// | lambda_param_no_default* lambda_param_with_default+ '/' &':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005485static SlashWithDefault*
5486lambda_slash_with_default_rule(Parser *p)
5487{
5488 if (p->error_indicator) {
5489 return NULL;
5490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005491 SlashWithDefault* _res = NULL;
5492 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005493 { // lambda_param_no_default* lambda_param_with_default+ '/' ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005494 Token * _literal;
5495 Token * _literal_1;
Guido van Rossum3941d972020-05-01 09:42:03 -07005496 asdl_seq * a;
5497 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005498 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005499 (a = _loop0_83_rule(p)) // lambda_param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005500 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005501 (b = _loop1_84_rule(p)) // lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005502 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005503 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005504 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005505 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005506 )
5507 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005508 _res = _PyPegen_slash_with_default ( p , a , b );
5509 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005510 p->error_indicator = 1;
5511 return NULL;
5512 }
5513 goto done;
5514 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005515 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005516 }
5517 { // lambda_param_no_default* lambda_param_with_default+ '/' &':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005518 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005519 asdl_seq * a;
5520 asdl_seq * b;
Guido van Rossum3941d972020-05-01 09:42:03 -07005521 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005522 (a = _loop0_85_rule(p)) // lambda_param_no_default*
Guido van Rossum3941d972020-05-01 09:42:03 -07005523 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005524 (b = _loop1_86_rule(p)) // lambda_param_with_default+
Guido van Rossum3941d972020-05-01 09:42:03 -07005525 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005526 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossum3941d972020-05-01 09:42:03 -07005527 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005528 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005529 )
5530 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005531 _res = _PyPegen_slash_with_default ( p , a , b );
5532 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005533 p->error_indicator = 1;
5534 return NULL;
5535 }
5536 goto done;
5537 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005538 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005539 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005540 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005541 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005542 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005543}
5544
5545// lambda_star_etc:
Guido van Rossum3941d972020-05-01 09:42:03 -07005546// | '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
5547// | '*' ',' lambda_param_maybe_default+ lambda_kwds?
5548// | lambda_kwds
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005549// | invalid_lambda_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005550static StarEtc*
5551lambda_star_etc_rule(Parser *p)
5552{
5553 if (p->error_indicator) {
5554 return NULL;
5555 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005556 StarEtc* _res = NULL;
5557 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005558 { // '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005559 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005560 arg_ty a;
5561 asdl_seq * b;
5562 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005563 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005564 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005565 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005566 (a = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005567 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005568 (b = _loop0_87_rule(p)) // lambda_param_maybe_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005569 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005570 (c = lambda_kwds_rule(p), 1) // lambda_kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005571 )
5572 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005573 _res = _PyPegen_star_etc ( p , a , b , c );
5574 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005575 p->error_indicator = 1;
5576 return NULL;
5577 }
5578 goto done;
5579 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005580 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005581 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005582 { // '*' ',' lambda_param_maybe_default+ lambda_kwds?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005583 Token * _literal;
5584 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005585 asdl_seq * b;
5586 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005587 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005588 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005589 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005590 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005591 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005592 (b = _loop1_88_rule(p)) // lambda_param_maybe_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005593 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005594 (c = lambda_kwds_rule(p), 1) // lambda_kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005595 )
5596 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005597 _res = _PyPegen_star_etc ( p , NULL , b , c );
5598 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005599 p->error_indicator = 1;
5600 return NULL;
5601 }
5602 goto done;
5603 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005604 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005605 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005606 { // lambda_kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005607 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005608 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005609 (a = lambda_kwds_rule(p)) // lambda_kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005610 )
5611 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005612 _res = _PyPegen_star_etc ( p , NULL , NULL , a );
5613 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005614 p->error_indicator = 1;
5615 return NULL;
5616 }
5617 goto done;
5618 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005619 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005620 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005621 { // invalid_lambda_star_etc
5622 void *invalid_lambda_star_etc_var;
5623 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005624 (invalid_lambda_star_etc_var = invalid_lambda_star_etc_rule(p)) // invalid_lambda_star_etc
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005625 )
5626 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005627 _res = invalid_lambda_star_etc_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005628 goto done;
5629 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005630 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005632 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005633 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005634 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005635}
5636
Guido van Rossum3941d972020-05-01 09:42:03 -07005637// lambda_kwds: '**' lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005638static arg_ty
Guido van Rossum3941d972020-05-01 09:42:03 -07005639lambda_kwds_rule(Parser *p)
5640{
5641 if (p->error_indicator) {
5642 return NULL;
5643 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005644 arg_ty _res = NULL;
5645 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005646 { // '**' lambda_param_no_default
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005647 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005648 arg_ty a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005649 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005650 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossum3941d972020-05-01 09:42:03 -07005651 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005652 (a = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -07005653 )
5654 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005655 _res = a;
5656 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005657 p->error_indicator = 1;
5658 return NULL;
5659 }
5660 goto done;
5661 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005662 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005664 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07005665 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005666 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07005667}
5668
5669// lambda_param_no_default: lambda_param ',' | lambda_param &':'
5670static arg_ty
5671lambda_param_no_default_rule(Parser *p)
5672{
5673 if (p->error_indicator) {
5674 return NULL;
5675 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005676 arg_ty _res = NULL;
5677 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005678 { // lambda_param ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005679 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005680 arg_ty a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005681 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005682 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005683 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005684 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005685 )
5686 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005687 _res = a;
5688 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005689 p->error_indicator = 1;
5690 return NULL;
5691 }
5692 goto done;
5693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005694 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005695 }
5696 { // lambda_param &':'
5697 arg_ty a;
5698 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005699 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005700 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005701 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07005702 )
5703 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005704 _res = a;
5705 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005706 p->error_indicator = 1;
5707 return NULL;
5708 }
5709 goto done;
5710 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005711 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005712 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005713 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07005714 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005715 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07005716}
5717
5718// lambda_param_with_default: lambda_param default ',' | lambda_param default &':'
5719static NameDefaultPair*
5720lambda_param_with_default_rule(Parser *p)
5721{
5722 if (p->error_indicator) {
5723 return NULL;
5724 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005725 NameDefaultPair* _res = NULL;
5726 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005727 { // lambda_param default ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005728 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005729 arg_ty a;
5730 expr_ty c;
Guido van Rossum3941d972020-05-01 09:42:03 -07005731 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005732 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005733 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005734 (c = default_rule(p)) // default
Guido van Rossum3941d972020-05-01 09:42:03 -07005735 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005736 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005737 )
5738 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005739 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
5740 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005741 p->error_indicator = 1;
5742 return NULL;
5743 }
5744 goto done;
5745 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005746 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005747 }
5748 { // lambda_param default &':'
5749 arg_ty a;
5750 expr_ty c;
5751 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005752 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005753 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005754 (c = default_rule(p)) // default
Guido van Rossum3941d972020-05-01 09:42:03 -07005755 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005756 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07005757 )
5758 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005759 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
5760 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005761 p->error_indicator = 1;
5762 return NULL;
5763 }
5764 goto done;
5765 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005766 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005767 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005768 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07005769 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005770 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07005771}
5772
5773// lambda_param_maybe_default: lambda_param default? ',' | lambda_param default? &':'
5774static NameDefaultPair*
5775lambda_param_maybe_default_rule(Parser *p)
5776{
5777 if (p->error_indicator) {
5778 return NULL;
5779 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005780 NameDefaultPair* _res = NULL;
5781 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005782 { // lambda_param default? ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005783 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005784 arg_ty a;
5785 void *c;
Guido van Rossum3941d972020-05-01 09:42:03 -07005786 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005787 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005788 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005789 (c = default_rule(p), 1) // default?
Guido van Rossum3941d972020-05-01 09:42:03 -07005790 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005791 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005792 )
5793 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005794 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
5795 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005796 p->error_indicator = 1;
5797 return NULL;
5798 }
5799 goto done;
5800 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005801 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005802 }
5803 { // lambda_param default? &':'
5804 arg_ty a;
5805 void *c;
5806 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005807 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005808 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005809 (c = default_rule(p), 1) // default?
Guido van Rossum3941d972020-05-01 09:42:03 -07005810 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005811 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07005812 )
5813 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005814 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
5815 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005816 p->error_indicator = 1;
5817 return NULL;
5818 }
5819 goto done;
5820 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005821 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005822 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005823 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07005824 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005825 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07005826}
5827
5828// lambda_param: NAME
5829static arg_ty
5830lambda_param_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005831{
5832 if (p->error_indicator) {
5833 return NULL;
5834 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005835 arg_ty _res = NULL;
5836 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005837 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5838 p->error_indicator = 1;
5839 return NULL;
5840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005841 int _start_lineno = p->tokens[_mark]->lineno;
5842 UNUSED(_start_lineno); // Only used by EXTRA macro
5843 int _start_col_offset = p->tokens[_mark]->col_offset;
5844 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005845 { // NAME
5846 expr_ty a;
5847 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005848 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005849 )
5850 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005851 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5852 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005853 return NULL;
5854 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005855 int _end_lineno = _token->end_lineno;
5856 UNUSED(_end_lineno); // Only used by EXTRA macro
5857 int _end_col_offset = _token->end_col_offset;
5858 UNUSED(_end_col_offset); // Only used by EXTRA macro
5859 _res = _Py_arg ( a -> v . Name . id , NULL , NULL , EXTRA );
5860 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005861 p->error_indicator = 1;
5862 return NULL;
5863 }
5864 goto done;
5865 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005866 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005867 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005868 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005869 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005870 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005871}
5872
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005873// disjunction: conjunction (('or' conjunction))+ | conjunction
5874static expr_ty
5875disjunction_rule(Parser *p)
5876{
5877 if (p->error_indicator) {
5878 return NULL;
5879 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005880 expr_ty _res = NULL;
5881 if (_PyPegen_is_memoized(p, disjunction_type, &_res))
5882 return _res;
5883 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005884 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5885 p->error_indicator = 1;
5886 return NULL;
5887 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005888 int _start_lineno = p->tokens[_mark]->lineno;
5889 UNUSED(_start_lineno); // Only used by EXTRA macro
5890 int _start_col_offset = p->tokens[_mark]->col_offset;
5891 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005892 { // conjunction (('or' conjunction))+
5893 expr_ty a;
5894 asdl_seq * b;
5895 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005896 (a = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005897 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005898 (b = _loop1_89_rule(p)) // (('or' conjunction))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005899 )
5900 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005901 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5902 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005903 return NULL;
5904 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005905 int _end_lineno = _token->end_lineno;
5906 UNUSED(_end_lineno); // Only used by EXTRA macro
5907 int _end_col_offset = _token->end_col_offset;
5908 UNUSED(_end_col_offset); // Only used by EXTRA macro
5909 _res = _Py_BoolOp ( Or , CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
5910 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005911 p->error_indicator = 1;
5912 return NULL;
5913 }
5914 goto done;
5915 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005916 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005917 }
5918 { // conjunction
5919 expr_ty conjunction_var;
5920 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005921 (conjunction_var = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005922 )
5923 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005924 _res = conjunction_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005925 goto done;
5926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005927 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005929 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005930 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005931 _PyPegen_insert_memo(p, _mark, disjunction_type, _res);
5932 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005933}
5934
5935// conjunction: inversion (('and' inversion))+ | inversion
5936static expr_ty
5937conjunction_rule(Parser *p)
5938{
5939 if (p->error_indicator) {
5940 return NULL;
5941 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005942 expr_ty _res = NULL;
5943 if (_PyPegen_is_memoized(p, conjunction_type, &_res))
5944 return _res;
5945 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005946 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5947 p->error_indicator = 1;
5948 return NULL;
5949 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005950 int _start_lineno = p->tokens[_mark]->lineno;
5951 UNUSED(_start_lineno); // Only used by EXTRA macro
5952 int _start_col_offset = p->tokens[_mark]->col_offset;
5953 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005954 { // inversion (('and' inversion))+
5955 expr_ty a;
5956 asdl_seq * b;
5957 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005958 (a = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005959 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005960 (b = _loop1_90_rule(p)) // (('and' inversion))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005961 )
5962 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005963 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5964 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005965 return NULL;
5966 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005967 int _end_lineno = _token->end_lineno;
5968 UNUSED(_end_lineno); // Only used by EXTRA macro
5969 int _end_col_offset = _token->end_col_offset;
5970 UNUSED(_end_col_offset); // Only used by EXTRA macro
5971 _res = _Py_BoolOp ( And , CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
5972 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005973 p->error_indicator = 1;
5974 return NULL;
5975 }
5976 goto done;
5977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005978 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005979 }
5980 { // inversion
5981 expr_ty inversion_var;
5982 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005983 (inversion_var = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005984 )
5985 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005986 _res = inversion_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005987 goto done;
5988 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005989 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005990 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005991 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005992 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005993 _PyPegen_insert_memo(p, _mark, conjunction_type, _res);
5994 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005995}
5996
5997// inversion: 'not' inversion | comparison
5998static expr_ty
5999inversion_rule(Parser *p)
6000{
6001 if (p->error_indicator) {
6002 return NULL;
6003 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006004 expr_ty _res = NULL;
6005 if (_PyPegen_is_memoized(p, inversion_type, &_res))
6006 return _res;
6007 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006008 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6009 p->error_indicator = 1;
6010 return NULL;
6011 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006012 int _start_lineno = p->tokens[_mark]->lineno;
6013 UNUSED(_start_lineno); // Only used by EXTRA macro
6014 int _start_col_offset = p->tokens[_mark]->col_offset;
6015 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006016 { // 'not' inversion
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006017 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006018 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006019 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006020 (_keyword = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006021 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006022 (a = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006023 )
6024 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006025 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6026 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006027 return NULL;
6028 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006029 int _end_lineno = _token->end_lineno;
6030 UNUSED(_end_lineno); // Only used by EXTRA macro
6031 int _end_col_offset = _token->end_col_offset;
6032 UNUSED(_end_col_offset); // Only used by EXTRA macro
6033 _res = _Py_UnaryOp ( Not , a , EXTRA );
6034 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006035 p->error_indicator = 1;
6036 return NULL;
6037 }
6038 goto done;
6039 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006040 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006041 }
6042 { // comparison
6043 expr_ty comparison_var;
6044 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006045 (comparison_var = comparison_rule(p)) // comparison
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006046 )
6047 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006048 _res = comparison_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006049 goto done;
6050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006051 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006052 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006053 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006054 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006055 _PyPegen_insert_memo(p, _mark, inversion_type, _res);
6056 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006057}
6058
6059// comparison: bitwise_or compare_op_bitwise_or_pair+ | bitwise_or
6060static expr_ty
6061comparison_rule(Parser *p)
6062{
6063 if (p->error_indicator) {
6064 return NULL;
6065 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006066 expr_ty _res = NULL;
6067 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006068 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6069 p->error_indicator = 1;
6070 return NULL;
6071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006072 int _start_lineno = p->tokens[_mark]->lineno;
6073 UNUSED(_start_lineno); // Only used by EXTRA macro
6074 int _start_col_offset = p->tokens[_mark]->col_offset;
6075 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006076 { // bitwise_or compare_op_bitwise_or_pair+
6077 expr_ty a;
6078 asdl_seq * b;
6079 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006080 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006081 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006082 (b = _loop1_91_rule(p)) // compare_op_bitwise_or_pair+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006083 )
6084 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006085 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6086 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006087 return NULL;
6088 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006089 int _end_lineno = _token->end_lineno;
6090 UNUSED(_end_lineno); // Only used by EXTRA macro
6091 int _end_col_offset = _token->end_col_offset;
6092 UNUSED(_end_col_offset); // Only used by EXTRA macro
6093 _res = _Py_Compare ( a , CHECK ( _PyPegen_get_cmpops ( p , b ) ) , CHECK ( _PyPegen_get_exprs ( p , b ) ) , EXTRA );
6094 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006095 p->error_indicator = 1;
6096 return NULL;
6097 }
6098 goto done;
6099 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006100 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006101 }
6102 { // bitwise_or
6103 expr_ty bitwise_or_var;
6104 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006105 (bitwise_or_var = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006106 )
6107 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006108 _res = bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006109 goto done;
6110 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006111 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006113 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006114 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006115 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006116}
6117
6118// compare_op_bitwise_or_pair:
6119// | eq_bitwise_or
6120// | noteq_bitwise_or
6121// | lte_bitwise_or
6122// | lt_bitwise_or
6123// | gte_bitwise_or
6124// | gt_bitwise_or
6125// | notin_bitwise_or
6126// | in_bitwise_or
6127// | isnot_bitwise_or
6128// | is_bitwise_or
6129static CmpopExprPair*
6130compare_op_bitwise_or_pair_rule(Parser *p)
6131{
6132 if (p->error_indicator) {
6133 return NULL;
6134 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006135 CmpopExprPair* _res = NULL;
6136 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006137 { // eq_bitwise_or
6138 CmpopExprPair* eq_bitwise_or_var;
6139 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006140 (eq_bitwise_or_var = eq_bitwise_or_rule(p)) // eq_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006141 )
6142 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006143 _res = eq_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006144 goto done;
6145 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006146 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006147 }
6148 { // noteq_bitwise_or
6149 CmpopExprPair* noteq_bitwise_or_var;
6150 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006151 (noteq_bitwise_or_var = noteq_bitwise_or_rule(p)) // noteq_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006152 )
6153 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006154 _res = noteq_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006155 goto done;
6156 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006157 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006158 }
6159 { // lte_bitwise_or
6160 CmpopExprPair* lte_bitwise_or_var;
6161 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006162 (lte_bitwise_or_var = lte_bitwise_or_rule(p)) // lte_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006163 )
6164 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006165 _res = lte_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006166 goto done;
6167 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006168 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006169 }
6170 { // lt_bitwise_or
6171 CmpopExprPair* lt_bitwise_or_var;
6172 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006173 (lt_bitwise_or_var = lt_bitwise_or_rule(p)) // lt_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006174 )
6175 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006176 _res = lt_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006177 goto done;
6178 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006179 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006180 }
6181 { // gte_bitwise_or
6182 CmpopExprPair* gte_bitwise_or_var;
6183 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006184 (gte_bitwise_or_var = gte_bitwise_or_rule(p)) // gte_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006185 )
6186 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006187 _res = gte_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006188 goto done;
6189 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006190 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006191 }
6192 { // gt_bitwise_or
6193 CmpopExprPair* gt_bitwise_or_var;
6194 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006195 (gt_bitwise_or_var = gt_bitwise_or_rule(p)) // gt_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006196 )
6197 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006198 _res = gt_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006199 goto done;
6200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006201 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006202 }
6203 { // notin_bitwise_or
6204 CmpopExprPair* notin_bitwise_or_var;
6205 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006206 (notin_bitwise_or_var = notin_bitwise_or_rule(p)) // notin_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006207 )
6208 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006209 _res = notin_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006210 goto done;
6211 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006212 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006213 }
6214 { // in_bitwise_or
6215 CmpopExprPair* in_bitwise_or_var;
6216 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006217 (in_bitwise_or_var = in_bitwise_or_rule(p)) // in_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006218 )
6219 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006220 _res = in_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006221 goto done;
6222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006223 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006224 }
6225 { // isnot_bitwise_or
6226 CmpopExprPair* isnot_bitwise_or_var;
6227 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006228 (isnot_bitwise_or_var = isnot_bitwise_or_rule(p)) // isnot_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006229 )
6230 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006231 _res = isnot_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006232 goto done;
6233 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006234 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006235 }
6236 { // is_bitwise_or
6237 CmpopExprPair* is_bitwise_or_var;
6238 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006239 (is_bitwise_or_var = is_bitwise_or_rule(p)) // is_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006240 )
6241 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006242 _res = is_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006243 goto done;
6244 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006245 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006247 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006248 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006249 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006250}
6251
6252// eq_bitwise_or: '==' bitwise_or
6253static CmpopExprPair*
6254eq_bitwise_or_rule(Parser *p)
6255{
6256 if (p->error_indicator) {
6257 return NULL;
6258 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006259 CmpopExprPair* _res = NULL;
6260 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006261 { // '==' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006262 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006263 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006264 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006265 (_literal = _PyPegen_expect_token(p, 27)) // token='=='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006266 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006267 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006268 )
6269 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006270 _res = _PyPegen_cmpop_expr_pair ( p , Eq , a );
6271 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006272 p->error_indicator = 1;
6273 return NULL;
6274 }
6275 goto done;
6276 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006277 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006278 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006279 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006280 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006281 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006282}
6283
Pablo Galindo2b74c832020-04-27 18:02:07 +01006284// noteq_bitwise_or: ('!=') bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006285static CmpopExprPair*
6286noteq_bitwise_or_rule(Parser *p)
6287{
6288 if (p->error_indicator) {
6289 return NULL;
6290 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006291 CmpopExprPair* _res = NULL;
6292 int _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +01006293 { // ('!=') bitwise_or
Guido van Rossum3941d972020-05-01 09:42:03 -07006294 void *_tmp_92_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006295 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006296 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006297 (_tmp_92_var = _tmp_92_rule(p)) // '!='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006298 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006299 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006300 )
6301 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006302 _res = _PyPegen_cmpop_expr_pair ( p , NotEq , a );
6303 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006304 p->error_indicator = 1;
6305 return NULL;
6306 }
6307 goto done;
6308 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006309 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006310 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006311 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006312 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006313 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006314}
6315
6316// lte_bitwise_or: '<=' bitwise_or
6317static CmpopExprPair*
6318lte_bitwise_or_rule(Parser *p)
6319{
6320 if (p->error_indicator) {
6321 return NULL;
6322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006323 CmpopExprPair* _res = NULL;
6324 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006325 { // '<=' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006326 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006327 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006328 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006329 (_literal = _PyPegen_expect_token(p, 29)) // token='<='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006330 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006331 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006332 )
6333 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006334 _res = _PyPegen_cmpop_expr_pair ( p , LtE , a );
6335 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006336 p->error_indicator = 1;
6337 return NULL;
6338 }
6339 goto done;
6340 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006341 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006343 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006344 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006345 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006346}
6347
6348// lt_bitwise_or: '<' bitwise_or
6349static CmpopExprPair*
6350lt_bitwise_or_rule(Parser *p)
6351{
6352 if (p->error_indicator) {
6353 return NULL;
6354 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006355 CmpopExprPair* _res = NULL;
6356 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006357 { // '<' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006358 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006359 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006360 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006361 (_literal = _PyPegen_expect_token(p, 20)) // token='<'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006362 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006363 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006364 )
6365 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006366 _res = _PyPegen_cmpop_expr_pair ( p , Lt , a );
6367 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006368 p->error_indicator = 1;
6369 return NULL;
6370 }
6371 goto done;
6372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006373 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006374 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006375 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006376 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006377 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006378}
6379
6380// gte_bitwise_or: '>=' bitwise_or
6381static CmpopExprPair*
6382gte_bitwise_or_rule(Parser *p)
6383{
6384 if (p->error_indicator) {
6385 return NULL;
6386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006387 CmpopExprPair* _res = NULL;
6388 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006389 { // '>=' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006390 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006391 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006392 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006393 (_literal = _PyPegen_expect_token(p, 30)) // token='>='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006394 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006395 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006396 )
6397 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006398 _res = _PyPegen_cmpop_expr_pair ( p , GtE , a );
6399 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006400 p->error_indicator = 1;
6401 return NULL;
6402 }
6403 goto done;
6404 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006405 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006407 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006408 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006409 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006410}
6411
6412// gt_bitwise_or: '>' bitwise_or
6413static CmpopExprPair*
6414gt_bitwise_or_rule(Parser *p)
6415{
6416 if (p->error_indicator) {
6417 return NULL;
6418 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006419 CmpopExprPair* _res = NULL;
6420 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006421 { // '>' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006422 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006423 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006424 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006425 (_literal = _PyPegen_expect_token(p, 21)) // token='>'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006426 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006427 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006428 )
6429 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006430 _res = _PyPegen_cmpop_expr_pair ( p , Gt , a );
6431 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006432 p->error_indicator = 1;
6433 return NULL;
6434 }
6435 goto done;
6436 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006437 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006438 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006439 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006440 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006441 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006442}
6443
6444// notin_bitwise_or: 'not' 'in' bitwise_or
6445static CmpopExprPair*
6446notin_bitwise_or_rule(Parser *p)
6447{
6448 if (p->error_indicator) {
6449 return NULL;
6450 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006451 CmpopExprPair* _res = NULL;
6452 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006453 { // 'not' 'in' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006454 Token * _keyword;
6455 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006456 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006457 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006458 (_keyword = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006459 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006460 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006461 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006462 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006463 )
6464 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006465 _res = _PyPegen_cmpop_expr_pair ( p , NotIn , a );
6466 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006467 p->error_indicator = 1;
6468 return NULL;
6469 }
6470 goto done;
6471 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006472 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006473 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006474 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006475 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006476 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006477}
6478
6479// in_bitwise_or: 'in' bitwise_or
6480static CmpopExprPair*
6481in_bitwise_or_rule(Parser *p)
6482{
6483 if (p->error_indicator) {
6484 return NULL;
6485 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006486 CmpopExprPair* _res = NULL;
6487 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006488 { // 'in' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006489 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006490 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006491 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006492 (_keyword = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006493 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006494 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006495 )
6496 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006497 _res = _PyPegen_cmpop_expr_pair ( p , In , a );
6498 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006499 p->error_indicator = 1;
6500 return NULL;
6501 }
6502 goto done;
6503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006504 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006505 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006506 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006507 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006508 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006509}
6510
6511// isnot_bitwise_or: 'is' 'not' bitwise_or
6512static CmpopExprPair*
6513isnot_bitwise_or_rule(Parser *p)
6514{
6515 if (p->error_indicator) {
6516 return NULL;
6517 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006518 CmpopExprPair* _res = NULL;
6519 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006520 { // 'is' 'not' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006521 Token * _keyword;
6522 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006523 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006524 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006525 (_keyword = _PyPegen_expect_token(p, 526)) // token='is'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006526 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006527 (_keyword_1 = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006528 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006529 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006530 )
6531 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006532 _res = _PyPegen_cmpop_expr_pair ( p , IsNot , a );
6533 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006534 p->error_indicator = 1;
6535 return NULL;
6536 }
6537 goto done;
6538 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006539 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006541 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006542 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006543 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006544}
6545
6546// is_bitwise_or: 'is' bitwise_or
6547static CmpopExprPair*
6548is_bitwise_or_rule(Parser *p)
6549{
6550 if (p->error_indicator) {
6551 return NULL;
6552 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006553 CmpopExprPair* _res = NULL;
6554 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006555 { // 'is' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006556 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006557 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006558 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006559 (_keyword = _PyPegen_expect_token(p, 526)) // token='is'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006560 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006561 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006562 )
6563 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006564 _res = _PyPegen_cmpop_expr_pair ( p , Is , a );
6565 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006566 p->error_indicator = 1;
6567 return NULL;
6568 }
6569 goto done;
6570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006571 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006572 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006573 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006574 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006575 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006576}
6577
6578// Left-recursive
6579// bitwise_or: bitwise_or '|' bitwise_xor | bitwise_xor
6580static expr_ty bitwise_or_raw(Parser *);
6581static expr_ty
6582bitwise_or_rule(Parser *p)
6583{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006584 expr_ty _res = NULL;
6585 if (_PyPegen_is_memoized(p, bitwise_or_type, &_res))
6586 return _res;
6587 int _mark = p->mark;
6588 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006589 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006590 int tmpvar_1 = _PyPegen_update_memo(p, _mark, bitwise_or_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006591 if (tmpvar_1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006592 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006593 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006594 p->mark = _mark;
6595 void *_raw = bitwise_or_raw(p);
6596 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006597 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006598 _resmark = p->mark;
6599 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006601 p->mark = _resmark;
6602 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006603}
6604static expr_ty
6605bitwise_or_raw(Parser *p)
6606{
6607 if (p->error_indicator) {
6608 return NULL;
6609 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006610 expr_ty _res = NULL;
6611 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006612 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6613 p->error_indicator = 1;
6614 return NULL;
6615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006616 int _start_lineno = p->tokens[_mark]->lineno;
6617 UNUSED(_start_lineno); // Only used by EXTRA macro
6618 int _start_col_offset = p->tokens[_mark]->col_offset;
6619 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006620 { // bitwise_or '|' bitwise_xor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006621 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006622 expr_ty a;
6623 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006624 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006625 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006626 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006627 (_literal = _PyPegen_expect_token(p, 18)) // token='|'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006628 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006629 (b = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006630 )
6631 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006632 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6633 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006634 return NULL;
6635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006636 int _end_lineno = _token->end_lineno;
6637 UNUSED(_end_lineno); // Only used by EXTRA macro
6638 int _end_col_offset = _token->end_col_offset;
6639 UNUSED(_end_col_offset); // Only used by EXTRA macro
6640 _res = _Py_BinOp ( a , BitOr , b , EXTRA );
6641 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006642 p->error_indicator = 1;
6643 return NULL;
6644 }
6645 goto done;
6646 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006647 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006648 }
6649 { // bitwise_xor
6650 expr_ty bitwise_xor_var;
6651 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006652 (bitwise_xor_var = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006653 )
6654 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006655 _res = bitwise_xor_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006656 goto done;
6657 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006658 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006659 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006660 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006661 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006662 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006663}
6664
6665// Left-recursive
6666// bitwise_xor: bitwise_xor '^' bitwise_and | bitwise_and
6667static expr_ty bitwise_xor_raw(Parser *);
6668static expr_ty
6669bitwise_xor_rule(Parser *p)
6670{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006671 expr_ty _res = NULL;
6672 if (_PyPegen_is_memoized(p, bitwise_xor_type, &_res))
6673 return _res;
6674 int _mark = p->mark;
6675 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006676 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006677 int tmpvar_2 = _PyPegen_update_memo(p, _mark, bitwise_xor_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006678 if (tmpvar_2) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006679 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006680 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006681 p->mark = _mark;
6682 void *_raw = bitwise_xor_raw(p);
6683 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006684 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006685 _resmark = p->mark;
6686 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006687 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006688 p->mark = _resmark;
6689 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006690}
6691static expr_ty
6692bitwise_xor_raw(Parser *p)
6693{
6694 if (p->error_indicator) {
6695 return NULL;
6696 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006697 expr_ty _res = NULL;
6698 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006699 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6700 p->error_indicator = 1;
6701 return NULL;
6702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006703 int _start_lineno = p->tokens[_mark]->lineno;
6704 UNUSED(_start_lineno); // Only used by EXTRA macro
6705 int _start_col_offset = p->tokens[_mark]->col_offset;
6706 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006707 { // bitwise_xor '^' bitwise_and
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006708 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006709 expr_ty a;
6710 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006711 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006712 (a = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006713 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006714 (_literal = _PyPegen_expect_token(p, 32)) // token='^'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006715 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006716 (b = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006717 )
6718 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006719 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6720 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006721 return NULL;
6722 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006723 int _end_lineno = _token->end_lineno;
6724 UNUSED(_end_lineno); // Only used by EXTRA macro
6725 int _end_col_offset = _token->end_col_offset;
6726 UNUSED(_end_col_offset); // Only used by EXTRA macro
6727 _res = _Py_BinOp ( a , BitXor , b , EXTRA );
6728 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006729 p->error_indicator = 1;
6730 return NULL;
6731 }
6732 goto done;
6733 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006734 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006735 }
6736 { // bitwise_and
6737 expr_ty bitwise_and_var;
6738 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006739 (bitwise_and_var = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006740 )
6741 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006742 _res = bitwise_and_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006743 goto done;
6744 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006745 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006746 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006747 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006748 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006749 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006750}
6751
6752// Left-recursive
6753// bitwise_and: bitwise_and '&' shift_expr | shift_expr
6754static expr_ty bitwise_and_raw(Parser *);
6755static expr_ty
6756bitwise_and_rule(Parser *p)
6757{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006758 expr_ty _res = NULL;
6759 if (_PyPegen_is_memoized(p, bitwise_and_type, &_res))
6760 return _res;
6761 int _mark = p->mark;
6762 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006763 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006764 int tmpvar_3 = _PyPegen_update_memo(p, _mark, bitwise_and_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006765 if (tmpvar_3) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006766 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006767 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006768 p->mark = _mark;
6769 void *_raw = bitwise_and_raw(p);
6770 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006771 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006772 _resmark = p->mark;
6773 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006775 p->mark = _resmark;
6776 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006777}
6778static expr_ty
6779bitwise_and_raw(Parser *p)
6780{
6781 if (p->error_indicator) {
6782 return NULL;
6783 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006784 expr_ty _res = NULL;
6785 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006786 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6787 p->error_indicator = 1;
6788 return NULL;
6789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006790 int _start_lineno = p->tokens[_mark]->lineno;
6791 UNUSED(_start_lineno); // Only used by EXTRA macro
6792 int _start_col_offset = p->tokens[_mark]->col_offset;
6793 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006794 { // bitwise_and '&' shift_expr
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006795 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006796 expr_ty a;
6797 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006798 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006799 (a = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006800 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006801 (_literal = _PyPegen_expect_token(p, 19)) // token='&'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006802 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006803 (b = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006804 )
6805 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006806 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6807 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006808 return NULL;
6809 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006810 int _end_lineno = _token->end_lineno;
6811 UNUSED(_end_lineno); // Only used by EXTRA macro
6812 int _end_col_offset = _token->end_col_offset;
6813 UNUSED(_end_col_offset); // Only used by EXTRA macro
6814 _res = _Py_BinOp ( a , BitAnd , b , EXTRA );
6815 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006816 p->error_indicator = 1;
6817 return NULL;
6818 }
6819 goto done;
6820 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006821 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006822 }
6823 { // shift_expr
6824 expr_ty shift_expr_var;
6825 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006826 (shift_expr_var = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006827 )
6828 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006829 _res = shift_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006830 goto done;
6831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006832 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006834 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006835 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006836 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006837}
6838
6839// Left-recursive
6840// shift_expr: shift_expr '<<' sum | shift_expr '>>' sum | sum
6841static expr_ty shift_expr_raw(Parser *);
6842static expr_ty
6843shift_expr_rule(Parser *p)
6844{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006845 expr_ty _res = NULL;
6846 if (_PyPegen_is_memoized(p, shift_expr_type, &_res))
6847 return _res;
6848 int _mark = p->mark;
6849 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006850 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006851 int tmpvar_4 = _PyPegen_update_memo(p, _mark, shift_expr_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006852 if (tmpvar_4) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006853 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006854 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006855 p->mark = _mark;
6856 void *_raw = shift_expr_raw(p);
6857 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006858 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006859 _resmark = p->mark;
6860 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006861 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006862 p->mark = _resmark;
6863 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006864}
6865static expr_ty
6866shift_expr_raw(Parser *p)
6867{
6868 if (p->error_indicator) {
6869 return NULL;
6870 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006871 expr_ty _res = NULL;
6872 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006873 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6874 p->error_indicator = 1;
6875 return NULL;
6876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006877 int _start_lineno = p->tokens[_mark]->lineno;
6878 UNUSED(_start_lineno); // Only used by EXTRA macro
6879 int _start_col_offset = p->tokens[_mark]->col_offset;
6880 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006881 { // shift_expr '<<' sum
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006882 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006883 expr_ty a;
6884 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006885 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006886 (a = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006887 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006888 (_literal = _PyPegen_expect_token(p, 33)) // token='<<'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006889 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006890 (b = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006891 )
6892 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006893 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6894 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006895 return NULL;
6896 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006897 int _end_lineno = _token->end_lineno;
6898 UNUSED(_end_lineno); // Only used by EXTRA macro
6899 int _end_col_offset = _token->end_col_offset;
6900 UNUSED(_end_col_offset); // Only used by EXTRA macro
6901 _res = _Py_BinOp ( a , LShift , b , EXTRA );
6902 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006903 p->error_indicator = 1;
6904 return NULL;
6905 }
6906 goto done;
6907 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006908 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006909 }
6910 { // shift_expr '>>' sum
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006911 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006912 expr_ty a;
6913 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006914 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006915 (a = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006916 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006917 (_literal = _PyPegen_expect_token(p, 34)) // token='>>'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006918 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006919 (b = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006920 )
6921 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006922 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6923 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006924 return NULL;
6925 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006926 int _end_lineno = _token->end_lineno;
6927 UNUSED(_end_lineno); // Only used by EXTRA macro
6928 int _end_col_offset = _token->end_col_offset;
6929 UNUSED(_end_col_offset); // Only used by EXTRA macro
6930 _res = _Py_BinOp ( a , RShift , b , EXTRA );
6931 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006932 p->error_indicator = 1;
6933 return NULL;
6934 }
6935 goto done;
6936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006937 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006938 }
6939 { // sum
6940 expr_ty sum_var;
6941 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006942 (sum_var = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006943 )
6944 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006945 _res = sum_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006946 goto done;
6947 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006948 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006949 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006950 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006951 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006952 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006953}
6954
6955// Left-recursive
6956// sum: sum '+' term | sum '-' term | term
6957static expr_ty sum_raw(Parser *);
6958static expr_ty
6959sum_rule(Parser *p)
6960{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006961 expr_ty _res = NULL;
6962 if (_PyPegen_is_memoized(p, sum_type, &_res))
6963 return _res;
6964 int _mark = p->mark;
6965 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006966 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006967 int tmpvar_5 = _PyPegen_update_memo(p, _mark, sum_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006968 if (tmpvar_5) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006969 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006970 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006971 p->mark = _mark;
6972 void *_raw = sum_raw(p);
6973 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006974 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006975 _resmark = p->mark;
6976 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006978 p->mark = _resmark;
6979 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006980}
6981static expr_ty
6982sum_raw(Parser *p)
6983{
6984 if (p->error_indicator) {
6985 return NULL;
6986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006987 expr_ty _res = NULL;
6988 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006989 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6990 p->error_indicator = 1;
6991 return NULL;
6992 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006993 int _start_lineno = p->tokens[_mark]->lineno;
6994 UNUSED(_start_lineno); // Only used by EXTRA macro
6995 int _start_col_offset = p->tokens[_mark]->col_offset;
6996 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006997 { // sum '+' term
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006998 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006999 expr_ty a;
7000 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007001 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007002 (a = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007003 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007004 (_literal = _PyPegen_expect_token(p, 14)) // token='+'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007005 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007006 (b = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007007 )
7008 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007009 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7010 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007011 return NULL;
7012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007013 int _end_lineno = _token->end_lineno;
7014 UNUSED(_end_lineno); // Only used by EXTRA macro
7015 int _end_col_offset = _token->end_col_offset;
7016 UNUSED(_end_col_offset); // Only used by EXTRA macro
7017 _res = _Py_BinOp ( a , Add , b , EXTRA );
7018 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007019 p->error_indicator = 1;
7020 return NULL;
7021 }
7022 goto done;
7023 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007024 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007025 }
7026 { // sum '-' term
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007027 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007028 expr_ty a;
7029 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007030 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007031 (a = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007032 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007033 (_literal = _PyPegen_expect_token(p, 15)) // token='-'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007034 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007035 (b = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007036 )
7037 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007038 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7039 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007040 return NULL;
7041 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007042 int _end_lineno = _token->end_lineno;
7043 UNUSED(_end_lineno); // Only used by EXTRA macro
7044 int _end_col_offset = _token->end_col_offset;
7045 UNUSED(_end_col_offset); // Only used by EXTRA macro
7046 _res = _Py_BinOp ( a , Sub , b , EXTRA );
7047 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007048 p->error_indicator = 1;
7049 return NULL;
7050 }
7051 goto done;
7052 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007053 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007054 }
7055 { // term
7056 expr_ty term_var;
7057 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007058 (term_var = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007059 )
7060 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007061 _res = term_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007062 goto done;
7063 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007064 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007065 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007066 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007067 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007068 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007069}
7070
7071// Left-recursive
7072// term:
7073// | term '*' factor
7074// | term '/' factor
7075// | term '//' factor
7076// | term '%' factor
7077// | term '@' factor
7078// | factor
7079static expr_ty term_raw(Parser *);
7080static expr_ty
7081term_rule(Parser *p)
7082{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007083 expr_ty _res = NULL;
7084 if (_PyPegen_is_memoized(p, term_type, &_res))
7085 return _res;
7086 int _mark = p->mark;
7087 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007088 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007089 int tmpvar_6 = _PyPegen_update_memo(p, _mark, term_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007090 if (tmpvar_6) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007091 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007092 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007093 p->mark = _mark;
7094 void *_raw = term_raw(p);
7095 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007096 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007097 _resmark = p->mark;
7098 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007099 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007100 p->mark = _resmark;
7101 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007102}
7103static expr_ty
7104term_raw(Parser *p)
7105{
7106 if (p->error_indicator) {
7107 return NULL;
7108 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007109 expr_ty _res = NULL;
7110 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007111 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7112 p->error_indicator = 1;
7113 return NULL;
7114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007115 int _start_lineno = p->tokens[_mark]->lineno;
7116 UNUSED(_start_lineno); // Only used by EXTRA macro
7117 int _start_col_offset = p->tokens[_mark]->col_offset;
7118 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007119 { // term '*' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007120 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007121 expr_ty a;
7122 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007123 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007124 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007125 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007126 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007127 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007128 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007129 )
7130 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007131 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7132 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007133 return NULL;
7134 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007135 int _end_lineno = _token->end_lineno;
7136 UNUSED(_end_lineno); // Only used by EXTRA macro
7137 int _end_col_offset = _token->end_col_offset;
7138 UNUSED(_end_col_offset); // Only used by EXTRA macro
7139 _res = _Py_BinOp ( a , Mult , b , EXTRA );
7140 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007141 p->error_indicator = 1;
7142 return NULL;
7143 }
7144 goto done;
7145 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007146 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007147 }
7148 { // term '/' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007149 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007150 expr_ty a;
7151 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007152 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007153 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007154 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007155 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007156 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007157 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007158 )
7159 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007160 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7161 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007162 return NULL;
7163 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007164 int _end_lineno = _token->end_lineno;
7165 UNUSED(_end_lineno); // Only used by EXTRA macro
7166 int _end_col_offset = _token->end_col_offset;
7167 UNUSED(_end_col_offset); // Only used by EXTRA macro
7168 _res = _Py_BinOp ( a , Div , b , EXTRA );
7169 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007170 p->error_indicator = 1;
7171 return NULL;
7172 }
7173 goto done;
7174 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007175 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007176 }
7177 { // term '//' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007178 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007179 expr_ty a;
7180 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007181 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007182 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007183 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007184 (_literal = _PyPegen_expect_token(p, 47)) // token='//'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007185 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007186 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007187 )
7188 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007189 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7190 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007191 return NULL;
7192 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007193 int _end_lineno = _token->end_lineno;
7194 UNUSED(_end_lineno); // Only used by EXTRA macro
7195 int _end_col_offset = _token->end_col_offset;
7196 UNUSED(_end_col_offset); // Only used by EXTRA macro
7197 _res = _Py_BinOp ( a , FloorDiv , b , EXTRA );
7198 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007199 p->error_indicator = 1;
7200 return NULL;
7201 }
7202 goto done;
7203 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007204 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007205 }
7206 { // term '%' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007207 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007208 expr_ty a;
7209 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007210 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007211 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007212 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007213 (_literal = _PyPegen_expect_token(p, 24)) // token='%'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007214 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007215 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007216 )
7217 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007218 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7219 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007220 return NULL;
7221 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007222 int _end_lineno = _token->end_lineno;
7223 UNUSED(_end_lineno); // Only used by EXTRA macro
7224 int _end_col_offset = _token->end_col_offset;
7225 UNUSED(_end_col_offset); // Only used by EXTRA macro
7226 _res = _Py_BinOp ( a , Mod , b , EXTRA );
7227 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007228 p->error_indicator = 1;
7229 return NULL;
7230 }
7231 goto done;
7232 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007233 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007234 }
7235 { // term '@' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007236 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007237 expr_ty a;
7238 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007239 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007240 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007241 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007242 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007243 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007244 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007245 )
7246 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007247 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7248 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007249 return NULL;
7250 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007251 int _end_lineno = _token->end_lineno;
7252 UNUSED(_end_lineno); // Only used by EXTRA macro
7253 int _end_col_offset = _token->end_col_offset;
7254 UNUSED(_end_col_offset); // Only used by EXTRA macro
7255 _res = CHECK_VERSION ( 5 , "The '@' operator is" , _Py_BinOp ( a , MatMult , b , EXTRA ) );
7256 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007257 p->error_indicator = 1;
7258 return NULL;
7259 }
7260 goto done;
7261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007262 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007263 }
7264 { // factor
7265 expr_ty factor_var;
7266 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007267 (factor_var = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007268 )
7269 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007270 _res = factor_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007271 goto done;
7272 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007273 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007274 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007275 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007276 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007277 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007278}
7279
7280// factor: '+' factor | '-' factor | '~' factor | power
7281static expr_ty
7282factor_rule(Parser *p)
7283{
7284 if (p->error_indicator) {
7285 return NULL;
7286 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007287 expr_ty _res = NULL;
7288 if (_PyPegen_is_memoized(p, factor_type, &_res))
7289 return _res;
7290 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007291 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7292 p->error_indicator = 1;
7293 return NULL;
7294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007295 int _start_lineno = p->tokens[_mark]->lineno;
7296 UNUSED(_start_lineno); // Only used by EXTRA macro
7297 int _start_col_offset = p->tokens[_mark]->col_offset;
7298 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007299 { // '+' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007300 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007301 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007302 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007303 (_literal = _PyPegen_expect_token(p, 14)) // token='+'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007304 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007305 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007306 )
7307 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007308 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7309 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007310 return NULL;
7311 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007312 int _end_lineno = _token->end_lineno;
7313 UNUSED(_end_lineno); // Only used by EXTRA macro
7314 int _end_col_offset = _token->end_col_offset;
7315 UNUSED(_end_col_offset); // Only used by EXTRA macro
7316 _res = _Py_UnaryOp ( UAdd , a , EXTRA );
7317 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007318 p->error_indicator = 1;
7319 return NULL;
7320 }
7321 goto done;
7322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007323 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007324 }
7325 { // '-' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007326 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007327 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007328 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007329 (_literal = _PyPegen_expect_token(p, 15)) // token='-'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007330 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007331 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007332 )
7333 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007334 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7335 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007336 return NULL;
7337 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007338 int _end_lineno = _token->end_lineno;
7339 UNUSED(_end_lineno); // Only used by EXTRA macro
7340 int _end_col_offset = _token->end_col_offset;
7341 UNUSED(_end_col_offset); // Only used by EXTRA macro
7342 _res = _Py_UnaryOp ( USub , a , EXTRA );
7343 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007344 p->error_indicator = 1;
7345 return NULL;
7346 }
7347 goto done;
7348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007349 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007350 }
7351 { // '~' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007352 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007353 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007354 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007355 (_literal = _PyPegen_expect_token(p, 31)) // token='~'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007356 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007357 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007358 )
7359 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007360 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7361 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007362 return NULL;
7363 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007364 int _end_lineno = _token->end_lineno;
7365 UNUSED(_end_lineno); // Only used by EXTRA macro
7366 int _end_col_offset = _token->end_col_offset;
7367 UNUSED(_end_col_offset); // Only used by EXTRA macro
7368 _res = _Py_UnaryOp ( Invert , a , EXTRA );
7369 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007370 p->error_indicator = 1;
7371 return NULL;
7372 }
7373 goto done;
7374 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007375 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007376 }
7377 { // power
7378 expr_ty power_var;
7379 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007380 (power_var = power_rule(p)) // power
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007381 )
7382 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007383 _res = power_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007384 goto done;
7385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007386 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007387 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007388 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007389 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007390 _PyPegen_insert_memo(p, _mark, factor_type, _res);
7391 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007392}
7393
7394// power: await_primary '**' factor | await_primary
7395static expr_ty
7396power_rule(Parser *p)
7397{
7398 if (p->error_indicator) {
7399 return NULL;
7400 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007401 expr_ty _res = NULL;
7402 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007403 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7404 p->error_indicator = 1;
7405 return NULL;
7406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007407 int _start_lineno = p->tokens[_mark]->lineno;
7408 UNUSED(_start_lineno); // Only used by EXTRA macro
7409 int _start_col_offset = p->tokens[_mark]->col_offset;
7410 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007411 { // await_primary '**' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007412 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007413 expr_ty a;
7414 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007415 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007416 (a = await_primary_rule(p)) // await_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007417 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007418 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007419 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007420 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007421 )
7422 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007423 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7424 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007425 return NULL;
7426 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007427 int _end_lineno = _token->end_lineno;
7428 UNUSED(_end_lineno); // Only used by EXTRA macro
7429 int _end_col_offset = _token->end_col_offset;
7430 UNUSED(_end_col_offset); // Only used by EXTRA macro
7431 _res = _Py_BinOp ( a , Pow , b , EXTRA );
7432 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007433 p->error_indicator = 1;
7434 return NULL;
7435 }
7436 goto done;
7437 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007438 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007439 }
7440 { // await_primary
7441 expr_ty await_primary_var;
7442 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007443 (await_primary_var = await_primary_rule(p)) // await_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007444 )
7445 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007446 _res = await_primary_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007447 goto done;
7448 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007449 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007450 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007451 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007452 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007453 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007454}
7455
7456// await_primary: AWAIT primary | primary
7457static expr_ty
7458await_primary_rule(Parser *p)
7459{
7460 if (p->error_indicator) {
7461 return NULL;
7462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007463 expr_ty _res = NULL;
7464 if (_PyPegen_is_memoized(p, await_primary_type, &_res))
7465 return _res;
7466 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007467 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7468 p->error_indicator = 1;
7469 return NULL;
7470 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007471 int _start_lineno = p->tokens[_mark]->lineno;
7472 UNUSED(_start_lineno); // Only used by EXTRA macro
7473 int _start_col_offset = p->tokens[_mark]->col_offset;
7474 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007475 { // AWAIT primary
7476 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01007477 Token * await_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007478 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007479 (await_var = _PyPegen_expect_token(p, AWAIT)) // token='AWAIT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007480 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007481 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007482 )
7483 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007484 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7485 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007486 return NULL;
7487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007488 int _end_lineno = _token->end_lineno;
7489 UNUSED(_end_lineno); // Only used by EXTRA macro
7490 int _end_col_offset = _token->end_col_offset;
7491 UNUSED(_end_col_offset); // Only used by EXTRA macro
7492 _res = CHECK_VERSION ( 5 , "Await expressions are" , _Py_Await ( a , EXTRA ) );
7493 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007494 p->error_indicator = 1;
7495 return NULL;
7496 }
7497 goto done;
7498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007499 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007500 }
7501 { // primary
7502 expr_ty primary_var;
7503 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007504 (primary_var = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007505 )
7506 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007507 _res = primary_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007508 goto done;
7509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007510 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007512 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007513 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007514 _PyPegen_insert_memo(p, _mark, await_primary_type, _res);
7515 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007516}
7517
7518// Left-recursive
7519// primary:
7520// | primary '.' NAME
7521// | primary genexp
7522// | primary '(' arguments? ')'
7523// | primary '[' slices ']'
7524// | atom
7525static expr_ty primary_raw(Parser *);
7526static expr_ty
7527primary_rule(Parser *p)
7528{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007529 expr_ty _res = NULL;
7530 if (_PyPegen_is_memoized(p, primary_type, &_res))
7531 return _res;
7532 int _mark = p->mark;
7533 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007534 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007535 int tmpvar_7 = _PyPegen_update_memo(p, _mark, primary_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007536 if (tmpvar_7) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007537 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007538 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007539 p->mark = _mark;
7540 void *_raw = primary_raw(p);
7541 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007542 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007543 _resmark = p->mark;
7544 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007545 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007546 p->mark = _resmark;
7547 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007548}
7549static expr_ty
7550primary_raw(Parser *p)
7551{
7552 if (p->error_indicator) {
7553 return NULL;
7554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007555 expr_ty _res = NULL;
7556 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007557 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7558 p->error_indicator = 1;
7559 return NULL;
7560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007561 int _start_lineno = p->tokens[_mark]->lineno;
7562 UNUSED(_start_lineno); // Only used by EXTRA macro
7563 int _start_col_offset = p->tokens[_mark]->col_offset;
7564 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007565 { // primary '.' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007566 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007567 expr_ty a;
7568 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007569 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007570 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007571 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007572 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007573 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007574 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007575 )
7576 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007577 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7578 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007579 return NULL;
7580 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007581 int _end_lineno = _token->end_lineno;
7582 UNUSED(_end_lineno); // Only used by EXTRA macro
7583 int _end_col_offset = _token->end_col_offset;
7584 UNUSED(_end_col_offset); // Only used by EXTRA macro
7585 _res = _Py_Attribute ( a , b -> v . Name . id , Load , EXTRA );
7586 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007587 p->error_indicator = 1;
7588 return NULL;
7589 }
7590 goto done;
7591 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007592 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007593 }
7594 { // primary genexp
7595 expr_ty a;
7596 expr_ty b;
7597 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007598 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007599 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007600 (b = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007601 )
7602 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007603 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7604 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007605 return NULL;
7606 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007607 int _end_lineno = _token->end_lineno;
7608 UNUSED(_end_lineno); // Only used by EXTRA macro
7609 int _end_col_offset = _token->end_col_offset;
7610 UNUSED(_end_col_offset); // Only used by EXTRA macro
7611 _res = _Py_Call ( a , CHECK ( _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
7612 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007613 p->error_indicator = 1;
7614 return NULL;
7615 }
7616 goto done;
7617 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007618 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007619 }
7620 { // primary '(' arguments? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007621 Token * _literal;
7622 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007623 expr_ty a;
7624 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007625 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007626 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007627 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007628 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007629 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007630 (b = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007631 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007632 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007633 )
7634 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007635 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7636 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007637 return NULL;
7638 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007639 int _end_lineno = _token->end_lineno;
7640 UNUSED(_end_lineno); // Only used by EXTRA macro
7641 int _end_col_offset = _token->end_col_offset;
7642 UNUSED(_end_col_offset); // Only used by EXTRA macro
7643 _res = _Py_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
7644 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007645 p->error_indicator = 1;
7646 return NULL;
7647 }
7648 goto done;
7649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007650 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007651 }
7652 { // primary '[' slices ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007653 Token * _literal;
7654 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007655 expr_ty a;
7656 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007657 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007658 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007659 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007660 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007661 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007662 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007663 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007664 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007665 )
7666 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007667 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7668 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007669 return NULL;
7670 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007671 int _end_lineno = _token->end_lineno;
7672 UNUSED(_end_lineno); // Only used by EXTRA macro
7673 int _end_col_offset = _token->end_col_offset;
7674 UNUSED(_end_col_offset); // Only used by EXTRA macro
7675 _res = _Py_Subscript ( a , b , Load , EXTRA );
7676 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007677 p->error_indicator = 1;
7678 return NULL;
7679 }
7680 goto done;
7681 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007682 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007683 }
7684 { // atom
7685 expr_ty atom_var;
7686 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007687 (atom_var = atom_rule(p)) // atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007688 )
7689 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007690 _res = atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007691 goto done;
7692 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007693 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007694 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007695 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007696 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007697 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007698}
7699
7700// slices: slice !',' | ','.slice+ ','?
7701static expr_ty
7702slices_rule(Parser *p)
7703{
7704 if (p->error_indicator) {
7705 return NULL;
7706 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007707 expr_ty _res = NULL;
7708 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007709 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7710 p->error_indicator = 1;
7711 return NULL;
7712 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007713 int _start_lineno = p->tokens[_mark]->lineno;
7714 UNUSED(_start_lineno); // Only used by EXTRA macro
7715 int _start_col_offset = p->tokens[_mark]->col_offset;
7716 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007717 { // slice !','
7718 expr_ty a;
7719 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007720 (a = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007721 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007722 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007723 )
7724 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007725 _res = a;
7726 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007727 p->error_indicator = 1;
7728 return NULL;
7729 }
7730 goto done;
7731 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007732 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007733 }
7734 { // ','.slice+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007735 void *_opt_var;
7736 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007737 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007738 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007739 (a = _gather_93_rule(p)) // ','.slice+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007740 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007741 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007742 )
7743 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007744 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7745 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007746 return NULL;
7747 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007748 int _end_lineno = _token->end_lineno;
7749 UNUSED(_end_lineno); // Only used by EXTRA macro
7750 int _end_col_offset = _token->end_col_offset;
7751 UNUSED(_end_col_offset); // Only used by EXTRA macro
7752 _res = _Py_Tuple ( a , Load , EXTRA );
7753 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007754 p->error_indicator = 1;
7755 return NULL;
7756 }
7757 goto done;
7758 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007759 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007760 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007761 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007762 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007763 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007764}
7765
7766// slice: expression? ':' expression? [':' expression?] | expression
7767static expr_ty
7768slice_rule(Parser *p)
7769{
7770 if (p->error_indicator) {
7771 return NULL;
7772 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007773 expr_ty _res = NULL;
7774 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007775 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7776 p->error_indicator = 1;
7777 return NULL;
7778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007779 int _start_lineno = p->tokens[_mark]->lineno;
7780 UNUSED(_start_lineno); // Only used by EXTRA macro
7781 int _start_col_offset = p->tokens[_mark]->col_offset;
7782 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007783 { // expression? ':' expression? [':' expression?]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007784 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007785 void *a;
7786 void *b;
7787 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007788 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007789 (a = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007790 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007791 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007792 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007793 (b = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007794 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007795 (c = _tmp_95_rule(p), 1) // [':' expression?]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007796 )
7797 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007798 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7799 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007800 return NULL;
7801 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007802 int _end_lineno = _token->end_lineno;
7803 UNUSED(_end_lineno); // Only used by EXTRA macro
7804 int _end_col_offset = _token->end_col_offset;
7805 UNUSED(_end_col_offset); // Only used by EXTRA macro
7806 _res = _Py_Slice ( a , b , c , EXTRA );
7807 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007808 p->error_indicator = 1;
7809 return NULL;
7810 }
7811 goto done;
7812 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007813 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007814 }
7815 { // expression
7816 expr_ty a;
7817 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007818 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007819 )
7820 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007821 _res = a;
7822 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007823 p->error_indicator = 1;
7824 return NULL;
7825 }
7826 goto done;
7827 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007828 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007829 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007830 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007831 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007832 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007833}
7834
7835// atom:
7836// | NAME
7837// | 'True'
7838// | 'False'
7839// | 'None'
7840// | '__new_parser__'
7841// | &STRING strings
7842// | NUMBER
7843// | &'(' (tuple | group | genexp)
7844// | &'[' (list | listcomp)
7845// | &'{' (dict | set | dictcomp | setcomp)
7846// | '...'
7847static expr_ty
7848atom_rule(Parser *p)
7849{
7850 if (p->error_indicator) {
7851 return NULL;
7852 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007853 expr_ty _res = NULL;
7854 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007855 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7856 p->error_indicator = 1;
7857 return NULL;
7858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007859 int _start_lineno = p->tokens[_mark]->lineno;
7860 UNUSED(_start_lineno); // Only used by EXTRA macro
7861 int _start_col_offset = p->tokens[_mark]->col_offset;
7862 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007863 { // NAME
7864 expr_ty name_var;
7865 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007866 (name_var = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007867 )
7868 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007869 _res = name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007870 goto done;
7871 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007872 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007873 }
7874 { // 'True'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007875 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007876 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007877 (_keyword = _PyPegen_expect_token(p, 527)) // token='True'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007878 )
7879 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007880 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7881 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007882 return NULL;
7883 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007884 int _end_lineno = _token->end_lineno;
7885 UNUSED(_end_lineno); // Only used by EXTRA macro
7886 int _end_col_offset = _token->end_col_offset;
7887 UNUSED(_end_col_offset); // Only used by EXTRA macro
7888 _res = _Py_Constant ( Py_True , NULL , EXTRA );
7889 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007890 p->error_indicator = 1;
7891 return NULL;
7892 }
7893 goto done;
7894 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007895 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007896 }
7897 { // 'False'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007898 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007899 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007900 (_keyword = _PyPegen_expect_token(p, 528)) // token='False'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007901 )
7902 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007903 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7904 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007905 return NULL;
7906 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007907 int _end_lineno = _token->end_lineno;
7908 UNUSED(_end_lineno); // Only used by EXTRA macro
7909 int _end_col_offset = _token->end_col_offset;
7910 UNUSED(_end_col_offset); // Only used by EXTRA macro
7911 _res = _Py_Constant ( Py_False , NULL , EXTRA );
7912 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007913 p->error_indicator = 1;
7914 return NULL;
7915 }
7916 goto done;
7917 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007918 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007919 }
7920 { // 'None'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007921 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007922 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007923 (_keyword = _PyPegen_expect_token(p, 529)) // token='None'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007924 )
7925 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007926 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7927 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007928 return NULL;
7929 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007930 int _end_lineno = _token->end_lineno;
7931 UNUSED(_end_lineno); // Only used by EXTRA macro
7932 int _end_col_offset = _token->end_col_offset;
7933 UNUSED(_end_col_offset); // Only used by EXTRA macro
7934 _res = _Py_Constant ( Py_None , NULL , EXTRA );
7935 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007936 p->error_indicator = 1;
7937 return NULL;
7938 }
7939 goto done;
7940 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007941 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007942 }
7943 { // '__new_parser__'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007944 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007945 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007946 (_keyword = _PyPegen_expect_token(p, 530)) // token='__new_parser__'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007947 )
7948 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007949 _res = RAISE_SYNTAX_ERROR ( "You found it!" );
7950 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007951 p->error_indicator = 1;
7952 return NULL;
7953 }
7954 goto done;
7955 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007956 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007957 }
7958 { // &STRING strings
7959 expr_ty strings_var;
7960 if (
7961 _PyPegen_lookahead(1, _PyPegen_string_token, p)
7962 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007963 (strings_var = strings_rule(p)) // strings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007964 )
7965 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007966 _res = strings_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007967 goto done;
7968 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007969 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007970 }
7971 { // NUMBER
7972 expr_ty number_var;
7973 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007974 (number_var = _PyPegen_number_token(p)) // NUMBER
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007975 )
7976 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007977 _res = number_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007978 goto done;
7979 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007980 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007981 }
7982 { // &'(' (tuple | group | genexp)
Guido van Rossum3941d972020-05-01 09:42:03 -07007983 void *_tmp_96_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007984 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007985 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007986 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007987 (_tmp_96_var = _tmp_96_rule(p)) // tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007988 )
7989 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007990 _res = _tmp_96_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007991 goto done;
7992 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007993 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007994 }
Pablo Galindo2b74c832020-04-27 18:02:07 +01007995 { // &'[' (list | listcomp)
Guido van Rossum3941d972020-05-01 09:42:03 -07007996 void *_tmp_97_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007997 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007998 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007999 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008000 (_tmp_97_var = _tmp_97_rule(p)) // list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008001 )
8002 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008003 _res = _tmp_97_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008004 goto done;
8005 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008006 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008007 }
Pablo Galindo2b74c832020-04-27 18:02:07 +01008008 { // &'{' (dict | set | dictcomp | setcomp)
Guido van Rossum3941d972020-05-01 09:42:03 -07008009 void *_tmp_98_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008010 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008011 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25) // token='{'
Pablo Galindo2b74c832020-04-27 18:02:07 +01008012 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008013 (_tmp_98_var = _tmp_98_rule(p)) // dict | set | dictcomp | setcomp
Pablo Galindo2b74c832020-04-27 18:02:07 +01008014 )
8015 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008016 _res = _tmp_98_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008017 goto done;
8018 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008019 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008020 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008021 { // '...'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008022 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008023 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008024 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008025 )
8026 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008027 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8028 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008029 return NULL;
8030 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008031 int _end_lineno = _token->end_lineno;
8032 UNUSED(_end_lineno); // Only used by EXTRA macro
8033 int _end_col_offset = _token->end_col_offset;
8034 UNUSED(_end_col_offset); // Only used by EXTRA macro
8035 _res = _Py_Constant ( Py_Ellipsis , NULL , EXTRA );
8036 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008037 p->error_indicator = 1;
8038 return NULL;
8039 }
8040 goto done;
8041 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008042 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008043 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008044 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008045 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008046 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008047}
8048
8049// strings: STRING+
8050static expr_ty
8051strings_rule(Parser *p)
8052{
8053 if (p->error_indicator) {
8054 return NULL;
8055 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008056 expr_ty _res = NULL;
8057 if (_PyPegen_is_memoized(p, strings_type, &_res))
8058 return _res;
8059 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008060 { // STRING+
8061 asdl_seq * a;
8062 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008063 (a = _loop1_99_rule(p)) // STRING+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008064 )
8065 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008066 _res = _PyPegen_concatenate_strings ( p , a );
8067 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008068 p->error_indicator = 1;
8069 return NULL;
8070 }
8071 goto done;
8072 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008073 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008074 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008075 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008076 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008077 _PyPegen_insert_memo(p, _mark, strings_type, _res);
8078 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008079}
8080
8081// list: '[' star_named_expressions? ']'
8082static expr_ty
8083list_rule(Parser *p)
8084{
8085 if (p->error_indicator) {
8086 return NULL;
8087 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008088 expr_ty _res = NULL;
8089 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008090 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8091 p->error_indicator = 1;
8092 return NULL;
8093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008094 int _start_lineno = p->tokens[_mark]->lineno;
8095 UNUSED(_start_lineno); // Only used by EXTRA macro
8096 int _start_col_offset = p->tokens[_mark]->col_offset;
8097 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008098 { // '[' star_named_expressions? ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008099 Token * _literal;
8100 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008101 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008102 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008103 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008104 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008105 (a = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008106 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008107 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008108 )
8109 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008110 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8111 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008112 return NULL;
8113 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008114 int _end_lineno = _token->end_lineno;
8115 UNUSED(_end_lineno); // Only used by EXTRA macro
8116 int _end_col_offset = _token->end_col_offset;
8117 UNUSED(_end_col_offset); // Only used by EXTRA macro
8118 _res = _Py_List ( a , Load , EXTRA );
8119 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008120 p->error_indicator = 1;
8121 return NULL;
8122 }
8123 goto done;
8124 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008125 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008126 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008127 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008128 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008129 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008130}
8131
8132// listcomp: '[' named_expression for_if_clauses ']' | invalid_comprehension
8133static expr_ty
8134listcomp_rule(Parser *p)
8135{
8136 if (p->error_indicator) {
8137 return NULL;
8138 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008139 expr_ty _res = NULL;
8140 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008141 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8142 p->error_indicator = 1;
8143 return NULL;
8144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008145 int _start_lineno = p->tokens[_mark]->lineno;
8146 UNUSED(_start_lineno); // Only used by EXTRA macro
8147 int _start_col_offset = p->tokens[_mark]->col_offset;
8148 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008149 { // '[' named_expression for_if_clauses ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008150 Token * _literal;
8151 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008152 expr_ty a;
8153 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008154 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008155 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008156 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008157 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008158 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008159 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008160 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008161 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008162 )
8163 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008164 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8165 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008166 return NULL;
8167 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008168 int _end_lineno = _token->end_lineno;
8169 UNUSED(_end_lineno); // Only used by EXTRA macro
8170 int _end_col_offset = _token->end_col_offset;
8171 UNUSED(_end_col_offset); // Only used by EXTRA macro
8172 _res = _Py_ListComp ( a , b , EXTRA );
8173 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008174 p->error_indicator = 1;
8175 return NULL;
8176 }
8177 goto done;
8178 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008179 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008180 }
8181 { // invalid_comprehension
8182 void *invalid_comprehension_var;
8183 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008184 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008185 )
8186 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008187 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008188 goto done;
8189 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008190 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008191 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008192 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008193 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008194 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008195}
8196
8197// tuple: '(' [star_named_expression ',' star_named_expressions?] ')'
8198static expr_ty
8199tuple_rule(Parser *p)
8200{
8201 if (p->error_indicator) {
8202 return NULL;
8203 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008204 expr_ty _res = NULL;
8205 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008206 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8207 p->error_indicator = 1;
8208 return NULL;
8209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008210 int _start_lineno = p->tokens[_mark]->lineno;
8211 UNUSED(_start_lineno); // Only used by EXTRA macro
8212 int _start_col_offset = p->tokens[_mark]->col_offset;
8213 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008214 { // '(' [star_named_expression ',' star_named_expressions?] ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008215 Token * _literal;
8216 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008217 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008218 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008219 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008220 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008221 (a = _tmp_100_rule(p), 1) // [star_named_expression ',' star_named_expressions?]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008222 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008223 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008224 )
8225 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008226 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8227 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008228 return NULL;
8229 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008230 int _end_lineno = _token->end_lineno;
8231 UNUSED(_end_lineno); // Only used by EXTRA macro
8232 int _end_col_offset = _token->end_col_offset;
8233 UNUSED(_end_col_offset); // Only used by EXTRA macro
8234 _res = _Py_Tuple ( a , Load , EXTRA );
8235 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008236 p->error_indicator = 1;
8237 return NULL;
8238 }
8239 goto done;
8240 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008241 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008242 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008243 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008244 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008245 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008246}
8247
8248// group: '(' (yield_expr | named_expression) ')'
8249static expr_ty
8250group_rule(Parser *p)
8251{
8252 if (p->error_indicator) {
8253 return NULL;
8254 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008255 expr_ty _res = NULL;
8256 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008257 { // '(' (yield_expr | named_expression) ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008258 Token * _literal;
8259 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008260 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008261 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008262 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008263 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008264 (a = _tmp_101_rule(p)) // yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008265 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008266 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008267 )
8268 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008269 _res = a;
8270 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008271 p->error_indicator = 1;
8272 return NULL;
8273 }
8274 goto done;
8275 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008276 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008277 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008278 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008279 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008280 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008281}
8282
8283// genexp: '(' expression for_if_clauses ')' | invalid_comprehension
8284static expr_ty
8285genexp_rule(Parser *p)
8286{
8287 if (p->error_indicator) {
8288 return NULL;
8289 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008290 expr_ty _res = NULL;
8291 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008292 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8293 p->error_indicator = 1;
8294 return NULL;
8295 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008296 int _start_lineno = p->tokens[_mark]->lineno;
8297 UNUSED(_start_lineno); // Only used by EXTRA macro
8298 int _start_col_offset = p->tokens[_mark]->col_offset;
8299 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008300 { // '(' expression for_if_clauses ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008301 Token * _literal;
8302 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008303 expr_ty a;
8304 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008305 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008306 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008307 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008308 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008309 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008310 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008311 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008312 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008313 )
8314 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008315 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8316 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008317 return NULL;
8318 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008319 int _end_lineno = _token->end_lineno;
8320 UNUSED(_end_lineno); // Only used by EXTRA macro
8321 int _end_col_offset = _token->end_col_offset;
8322 UNUSED(_end_col_offset); // Only used by EXTRA macro
8323 _res = _Py_GeneratorExp ( a , b , EXTRA );
8324 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008325 p->error_indicator = 1;
8326 return NULL;
8327 }
8328 goto done;
8329 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008330 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008331 }
8332 { // invalid_comprehension
8333 void *invalid_comprehension_var;
8334 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008335 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008336 )
8337 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008338 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008339 goto done;
8340 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008341 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008343 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008344 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008345 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008346}
8347
8348// set: '{' expressions_list '}'
8349static expr_ty
8350set_rule(Parser *p)
8351{
8352 if (p->error_indicator) {
8353 return NULL;
8354 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008355 expr_ty _res = NULL;
8356 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008357 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8358 p->error_indicator = 1;
8359 return NULL;
8360 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008361 int _start_lineno = p->tokens[_mark]->lineno;
8362 UNUSED(_start_lineno); // Only used by EXTRA macro
8363 int _start_col_offset = p->tokens[_mark]->col_offset;
8364 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008365 { // '{' expressions_list '}'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008366 Token * _literal;
8367 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008368 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008369 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008370 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008371 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008372 (a = expressions_list_rule(p)) // expressions_list
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008373 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008374 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008375 )
8376 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008377 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8378 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008379 return NULL;
8380 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008381 int _end_lineno = _token->end_lineno;
8382 UNUSED(_end_lineno); // Only used by EXTRA macro
8383 int _end_col_offset = _token->end_col_offset;
8384 UNUSED(_end_col_offset); // Only used by EXTRA macro
8385 _res = _Py_Set ( a , EXTRA );
8386 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008387 p->error_indicator = 1;
8388 return NULL;
8389 }
8390 goto done;
8391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008392 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008394 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008395 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008396 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008397}
8398
8399// setcomp: '{' expression for_if_clauses '}' | invalid_comprehension
8400static expr_ty
8401setcomp_rule(Parser *p)
8402{
8403 if (p->error_indicator) {
8404 return NULL;
8405 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008406 expr_ty _res = NULL;
8407 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008408 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8409 p->error_indicator = 1;
8410 return NULL;
8411 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008412 int _start_lineno = p->tokens[_mark]->lineno;
8413 UNUSED(_start_lineno); // Only used by EXTRA macro
8414 int _start_col_offset = p->tokens[_mark]->col_offset;
8415 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008416 { // '{' expression for_if_clauses '}'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008417 Token * _literal;
8418 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008419 expr_ty a;
8420 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008421 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008422 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008423 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008424 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008425 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008426 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008427 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008428 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008429 )
8430 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008431 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8432 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008433 return NULL;
8434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008435 int _end_lineno = _token->end_lineno;
8436 UNUSED(_end_lineno); // Only used by EXTRA macro
8437 int _end_col_offset = _token->end_col_offset;
8438 UNUSED(_end_col_offset); // Only used by EXTRA macro
8439 _res = _Py_SetComp ( a , b , EXTRA );
8440 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008441 p->error_indicator = 1;
8442 return NULL;
8443 }
8444 goto done;
8445 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008446 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008447 }
8448 { // invalid_comprehension
8449 void *invalid_comprehension_var;
8450 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008451 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008452 )
8453 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008454 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008455 goto done;
8456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008457 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008458 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008459 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008460 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008461 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008462}
8463
8464// dict: '{' kvpairs? '}'
8465static expr_ty
8466dict_rule(Parser *p)
8467{
8468 if (p->error_indicator) {
8469 return NULL;
8470 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008471 expr_ty _res = NULL;
8472 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008473 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8474 p->error_indicator = 1;
8475 return NULL;
8476 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008477 int _start_lineno = p->tokens[_mark]->lineno;
8478 UNUSED(_start_lineno); // Only used by EXTRA macro
8479 int _start_col_offset = p->tokens[_mark]->col_offset;
8480 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008481 { // '{' kvpairs? '}'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008482 Token * _literal;
8483 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008484 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008485 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008486 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008487 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008488 (a = kvpairs_rule(p), 1) // kvpairs?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008489 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008490 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008491 )
8492 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008493 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8494 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008495 return NULL;
8496 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008497 int _end_lineno = _token->end_lineno;
8498 UNUSED(_end_lineno); // Only used by EXTRA macro
8499 int _end_col_offset = _token->end_col_offset;
8500 UNUSED(_end_col_offset); // Only used by EXTRA macro
8501 _res = _Py_Dict ( CHECK ( _PyPegen_get_keys ( p , a ) ) , CHECK ( _PyPegen_get_values ( p , a ) ) , EXTRA );
8502 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008503 p->error_indicator = 1;
8504 return NULL;
8505 }
8506 goto done;
8507 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008508 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008510 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008511 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008512 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008513}
8514
8515// dictcomp: '{' kvpair for_if_clauses '}'
8516static expr_ty
8517dictcomp_rule(Parser *p)
8518{
8519 if (p->error_indicator) {
8520 return NULL;
8521 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008522 expr_ty _res = NULL;
8523 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008524 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8525 p->error_indicator = 1;
8526 return NULL;
8527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008528 int _start_lineno = p->tokens[_mark]->lineno;
8529 UNUSED(_start_lineno); // Only used by EXTRA macro
8530 int _start_col_offset = p->tokens[_mark]->col_offset;
8531 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008532 { // '{' kvpair for_if_clauses '}'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008533 Token * _literal;
8534 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008535 KeyValuePair* a;
8536 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008537 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008538 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008539 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008540 (a = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008541 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008542 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008543 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008544 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008545 )
8546 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008547 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8548 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008549 return NULL;
8550 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008551 int _end_lineno = _token->end_lineno;
8552 UNUSED(_end_lineno); // Only used by EXTRA macro
8553 int _end_col_offset = _token->end_col_offset;
8554 UNUSED(_end_col_offset); // Only used by EXTRA macro
8555 _res = _Py_DictComp ( a -> key , a -> value , b , EXTRA );
8556 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008557 p->error_indicator = 1;
8558 return NULL;
8559 }
8560 goto done;
8561 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008562 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008563 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008564 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008565 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008566 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008567}
8568
8569// kvpairs: ','.kvpair+ ','?
8570static asdl_seq*
8571kvpairs_rule(Parser *p)
8572{
8573 if (p->error_indicator) {
8574 return NULL;
8575 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008576 asdl_seq* _res = NULL;
8577 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008578 { // ','.kvpair+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008579 void *_opt_var;
8580 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008581 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008582 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008583 (a = _gather_102_rule(p)) // ','.kvpair+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008584 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008585 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008586 )
8587 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008588 _res = a;
8589 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008590 p->error_indicator = 1;
8591 return NULL;
8592 }
8593 goto done;
8594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008595 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008596 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008597 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008598 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008599 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008600}
8601
8602// kvpair: '**' bitwise_or | expression ':' expression
8603static KeyValuePair*
8604kvpair_rule(Parser *p)
8605{
8606 if (p->error_indicator) {
8607 return NULL;
8608 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008609 KeyValuePair* _res = NULL;
8610 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008611 { // '**' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008612 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008613 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008614 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008615 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008616 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008617 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008618 )
8619 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008620 _res = _PyPegen_key_value_pair ( p , NULL , a );
8621 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008622 p->error_indicator = 1;
8623 return NULL;
8624 }
8625 goto done;
8626 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008627 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008628 }
8629 { // expression ':' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008630 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008631 expr_ty a;
8632 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008633 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008634 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008635 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008636 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008637 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008638 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008639 )
8640 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008641 _res = _PyPegen_key_value_pair ( p , a , b );
8642 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008643 p->error_indicator = 1;
8644 return NULL;
8645 }
8646 goto done;
8647 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008648 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008650 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008651 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008652 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008653}
8654
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008655// for_if_clauses: for_if_clause+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008656static asdl_seq*
8657for_if_clauses_rule(Parser *p)
8658{
8659 if (p->error_indicator) {
8660 return NULL;
8661 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008662 asdl_seq* _res = NULL;
8663 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008664 { // for_if_clause+
Guido van Rossum3941d972020-05-01 09:42:03 -07008665 asdl_seq * _loop1_104_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008666 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008667 (_loop1_104_var = _loop1_104_rule(p)) // for_if_clause+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008668 )
8669 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008670 _res = _loop1_104_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008671 goto done;
8672 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008673 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008674 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008675 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008676 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008677 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008678}
8679
8680// for_if_clause:
8681// | ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*
8682// | 'for' star_targets 'in' disjunction (('if' disjunction))*
8683static comprehension_ty
8684for_if_clause_rule(Parser *p)
8685{
8686 if (p->error_indicator) {
8687 return NULL;
8688 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008689 comprehension_ty _res = NULL;
8690 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008691 { // ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008692 Token * _keyword;
8693 Token * _keyword_1;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008694 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01008695 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008696 expr_ty b;
8697 asdl_seq * c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008698 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008699 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008700 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008701 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008702 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008703 (a = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008704 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008705 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008706 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008707 (b = disjunction_rule(p)) // disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008708 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008709 (c = _loop0_105_rule(p)) // (('if' disjunction))*
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008710 )
8711 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008712 _res = CHECK_VERSION ( 6 , "Async comprehensions are" , _Py_comprehension ( a , b , c , 1 , p -> arena ) );
8713 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008714 p->error_indicator = 1;
8715 return NULL;
8716 }
8717 goto done;
8718 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008719 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008720 }
8721 { // 'for' star_targets 'in' disjunction (('if' disjunction))*
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008722 Token * _keyword;
8723 Token * _keyword_1;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008724 expr_ty a;
8725 expr_ty b;
8726 asdl_seq * c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008727 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008728 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008729 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008730 (a = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008731 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008732 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008733 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008734 (b = disjunction_rule(p)) // disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008735 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008736 (c = _loop0_106_rule(p)) // (('if' disjunction))*
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008737 )
8738 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008739 _res = _Py_comprehension ( a , b , c , 0 , p -> arena );
8740 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008741 p->error_indicator = 1;
8742 return NULL;
8743 }
8744 goto done;
8745 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008746 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008747 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008748 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008749 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008750 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008751}
8752
8753// yield_expr: 'yield' 'from' expression | 'yield' star_expressions?
8754static expr_ty
8755yield_expr_rule(Parser *p)
8756{
8757 if (p->error_indicator) {
8758 return NULL;
8759 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008760 expr_ty _res = NULL;
8761 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008762 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8763 p->error_indicator = 1;
8764 return NULL;
8765 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008766 int _start_lineno = p->tokens[_mark]->lineno;
8767 UNUSED(_start_lineno); // Only used by EXTRA macro
8768 int _start_col_offset = p->tokens[_mark]->col_offset;
8769 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008770 { // 'yield' 'from' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008771 Token * _keyword;
8772 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008773 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008774 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008775 (_keyword = _PyPegen_expect_token(p, 504)) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008776 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008777 (_keyword_1 = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008778 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008779 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008780 )
8781 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008782 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8783 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008784 return NULL;
8785 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008786 int _end_lineno = _token->end_lineno;
8787 UNUSED(_end_lineno); // Only used by EXTRA macro
8788 int _end_col_offset = _token->end_col_offset;
8789 UNUSED(_end_col_offset); // Only used by EXTRA macro
8790 _res = _Py_YieldFrom ( a , EXTRA );
8791 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008792 p->error_indicator = 1;
8793 return NULL;
8794 }
8795 goto done;
8796 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008797 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008798 }
8799 { // 'yield' star_expressions?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008800 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008801 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008802 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008803 (_keyword = _PyPegen_expect_token(p, 504)) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008804 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008805 (a = star_expressions_rule(p), 1) // star_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008806 )
8807 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008808 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8809 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008810 return NULL;
8811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008812 int _end_lineno = _token->end_lineno;
8813 UNUSED(_end_lineno); // Only used by EXTRA macro
8814 int _end_col_offset = _token->end_col_offset;
8815 UNUSED(_end_col_offset); // Only used by EXTRA macro
8816 _res = _Py_Yield ( a , EXTRA );
8817 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008818 p->error_indicator = 1;
8819 return NULL;
8820 }
8821 goto done;
8822 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008823 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008824 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008825 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008826 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008827 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008828}
8829
8830// arguments: args ','? &')' | incorrect_arguments
8831static expr_ty
8832arguments_rule(Parser *p)
8833{
8834 if (p->error_indicator) {
8835 return NULL;
8836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008837 expr_ty _res = NULL;
8838 if (_PyPegen_is_memoized(p, arguments_type, &_res))
8839 return _res;
8840 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008841 { // args ','? &')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008842 void *_opt_var;
8843 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008844 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008845 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008846 (a = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008847 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008848 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008849 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008850 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008851 )
8852 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008853 _res = a;
8854 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008855 p->error_indicator = 1;
8856 return NULL;
8857 }
8858 goto done;
8859 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008860 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008861 }
8862 { // incorrect_arguments
8863 void *incorrect_arguments_var;
8864 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008865 (incorrect_arguments_var = incorrect_arguments_rule(p)) // incorrect_arguments
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008866 )
8867 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008868 _res = incorrect_arguments_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008869 goto done;
8870 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008871 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008872 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008873 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008874 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008875 _PyPegen_insert_memo(p, _mark, arguments_type, _res);
8876 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008877}
8878
8879// args: starred_expression [',' args] | kwargs | named_expression [',' args]
8880static expr_ty
8881args_rule(Parser *p)
8882{
8883 if (p->error_indicator) {
8884 return NULL;
8885 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008886 expr_ty _res = NULL;
8887 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008888 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8889 p->error_indicator = 1;
8890 return NULL;
8891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008892 int _start_lineno = p->tokens[_mark]->lineno;
8893 UNUSED(_start_lineno); // Only used by EXTRA macro
8894 int _start_col_offset = p->tokens[_mark]->col_offset;
8895 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008896 { // starred_expression [',' args]
8897 expr_ty a;
8898 void *b;
8899 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008900 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008901 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008902 (b = _tmp_107_rule(p), 1) // [',' args]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008903 )
8904 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008905 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8906 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008907 return NULL;
8908 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008909 int _end_lineno = _token->end_lineno;
8910 UNUSED(_end_lineno); // Only used by EXTRA macro
8911 int _end_col_offset = _token->end_col_offset;
8912 UNUSED(_end_col_offset); // Only used by EXTRA macro
8913 _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 );
8914 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008915 p->error_indicator = 1;
8916 return NULL;
8917 }
8918 goto done;
8919 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008920 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008921 }
8922 { // kwargs
8923 asdl_seq* a;
8924 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008925 (a = kwargs_rule(p)) // kwargs
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008926 )
8927 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008928 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8929 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008930 return NULL;
8931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008932 int _end_lineno = _token->end_lineno;
8933 UNUSED(_end_lineno); // Only used by EXTRA macro
8934 int _end_col_offset = _token->end_col_offset;
8935 UNUSED(_end_col_offset); // Only used by EXTRA macro
8936 _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 );
8937 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008938 p->error_indicator = 1;
8939 return NULL;
8940 }
8941 goto done;
8942 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008943 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008944 }
8945 { // named_expression [',' args]
8946 expr_ty a;
8947 void *b;
8948 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008949 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008950 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008951 (b = _tmp_108_rule(p), 1) // [',' args]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008952 )
8953 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008954 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8955 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008956 return NULL;
8957 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008958 int _end_lineno = _token->end_lineno;
8959 UNUSED(_end_lineno); // Only used by EXTRA macro
8960 int _end_col_offset = _token->end_col_offset;
8961 UNUSED(_end_col_offset); // Only used by EXTRA macro
8962 _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 );
8963 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008964 p->error_indicator = 1;
8965 return NULL;
8966 }
8967 goto done;
8968 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008969 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008970 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008971 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008972 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008973 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008974}
8975
8976// kwargs:
8977// | ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
8978// | ','.kwarg_or_starred+
8979// | ','.kwarg_or_double_starred+
8980static asdl_seq*
8981kwargs_rule(Parser *p)
8982{
8983 if (p->error_indicator) {
8984 return NULL;
8985 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008986 asdl_seq* _res = NULL;
8987 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008988 { // ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008989 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008990 asdl_seq * a;
8991 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008992 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008993 (a = _gather_109_rule(p)) // ','.kwarg_or_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008994 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008995 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008996 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008997 (b = _gather_111_rule(p)) // ','.kwarg_or_double_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008998 )
8999 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009000 _res = _PyPegen_join_sequences ( p , a , b );
9001 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009002 p->error_indicator = 1;
9003 return NULL;
9004 }
9005 goto done;
9006 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009007 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009008 }
9009 { // ','.kwarg_or_starred+
Guido van Rossum3941d972020-05-01 09:42:03 -07009010 asdl_seq * _gather_113_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009011 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009012 (_gather_113_var = _gather_113_rule(p)) // ','.kwarg_or_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009013 )
9014 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009015 _res = _gather_113_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009016 goto done;
9017 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009018 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009019 }
9020 { // ','.kwarg_or_double_starred+
Guido van Rossum3941d972020-05-01 09:42:03 -07009021 asdl_seq * _gather_115_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009022 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009023 (_gather_115_var = _gather_115_rule(p)) // ','.kwarg_or_double_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009024 )
9025 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009026 _res = _gather_115_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009027 goto done;
9028 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009029 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009030 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009031 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009032 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009033 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009034}
9035
9036// starred_expression: '*' expression
9037static expr_ty
9038starred_expression_rule(Parser *p)
9039{
9040 if (p->error_indicator) {
9041 return NULL;
9042 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009043 expr_ty _res = NULL;
9044 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009045 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9046 p->error_indicator = 1;
9047 return NULL;
9048 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009049 int _start_lineno = p->tokens[_mark]->lineno;
9050 UNUSED(_start_lineno); // Only used by EXTRA macro
9051 int _start_col_offset = p->tokens[_mark]->col_offset;
9052 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009053 { // '*' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009054 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009055 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009056 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009057 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009058 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009059 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009060 )
9061 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009062 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9063 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009064 return NULL;
9065 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009066 int _end_lineno = _token->end_lineno;
9067 UNUSED(_end_lineno); // Only used by EXTRA macro
9068 int _end_col_offset = _token->end_col_offset;
9069 UNUSED(_end_col_offset); // Only used by EXTRA macro
9070 _res = _Py_Starred ( a , Load , EXTRA );
9071 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009072 p->error_indicator = 1;
9073 return NULL;
9074 }
9075 goto done;
9076 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009077 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009079 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009080 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009081 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009082}
9083
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009084// kwarg_or_starred: NAME '=' expression | starred_expression | invalid_kwarg
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009085static KeywordOrStarred*
9086kwarg_or_starred_rule(Parser *p)
9087{
9088 if (p->error_indicator) {
9089 return NULL;
9090 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009091 KeywordOrStarred* _res = NULL;
9092 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009093 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9094 p->error_indicator = 1;
9095 return NULL;
9096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009097 int _start_lineno = p->tokens[_mark]->lineno;
9098 UNUSED(_start_lineno); // Only used by EXTRA macro
9099 int _start_col_offset = p->tokens[_mark]->col_offset;
9100 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009101 { // NAME '=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009102 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009103 expr_ty a;
9104 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009105 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009106 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009107 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009108 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009109 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009110 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009111 )
9112 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009113 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9114 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009115 return NULL;
9116 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009117 int _end_lineno = _token->end_lineno;
9118 UNUSED(_end_lineno); // Only used by EXTRA macro
9119 int _end_col_offset = _token->end_col_offset;
9120 UNUSED(_end_col_offset); // Only used by EXTRA macro
9121 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
9122 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009123 p->error_indicator = 1;
9124 return NULL;
9125 }
9126 goto done;
9127 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009128 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009129 }
9130 { // starred_expression
9131 expr_ty a;
9132 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009133 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009134 )
9135 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009136 _res = _PyPegen_keyword_or_starred ( p , a , 0 );
9137 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009138 p->error_indicator = 1;
9139 return NULL;
9140 }
9141 goto done;
9142 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009143 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009144 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009145 { // invalid_kwarg
9146 void *invalid_kwarg_var;
9147 if (
9148 (invalid_kwarg_var = invalid_kwarg_rule(p)) // invalid_kwarg
9149 )
9150 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009151 _res = invalid_kwarg_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009152 goto done;
9153 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009154 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009155 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009156 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009157 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009158 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009159}
9160
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009161// kwarg_or_double_starred: NAME '=' expression | '**' expression | invalid_kwarg
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009162static KeywordOrStarred*
9163kwarg_or_double_starred_rule(Parser *p)
9164{
9165 if (p->error_indicator) {
9166 return NULL;
9167 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009168 KeywordOrStarred* _res = NULL;
9169 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009170 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9171 p->error_indicator = 1;
9172 return NULL;
9173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009174 int _start_lineno = p->tokens[_mark]->lineno;
9175 UNUSED(_start_lineno); // Only used by EXTRA macro
9176 int _start_col_offset = p->tokens[_mark]->col_offset;
9177 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009178 { // NAME '=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009179 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009180 expr_ty a;
9181 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009182 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009183 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009184 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009185 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009186 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009187 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009188 )
9189 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009190 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9191 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009192 return NULL;
9193 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009194 int _end_lineno = _token->end_lineno;
9195 UNUSED(_end_lineno); // Only used by EXTRA macro
9196 int _end_col_offset = _token->end_col_offset;
9197 UNUSED(_end_col_offset); // Only used by EXTRA macro
9198 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
9199 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009200 p->error_indicator = 1;
9201 return NULL;
9202 }
9203 goto done;
9204 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009205 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009206 }
9207 { // '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009208 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009209 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009210 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009211 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009212 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009213 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009214 )
9215 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009216 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9217 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009218 return NULL;
9219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009220 int _end_lineno = _token->end_lineno;
9221 UNUSED(_end_lineno); // Only used by EXTRA macro
9222 int _end_col_offset = _token->end_col_offset;
9223 UNUSED(_end_col_offset); // Only used by EXTRA macro
9224 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( NULL , a , EXTRA ) ) , 1 );
9225 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009226 p->error_indicator = 1;
9227 return NULL;
9228 }
9229 goto done;
9230 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009231 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009232 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009233 { // invalid_kwarg
9234 void *invalid_kwarg_var;
9235 if (
9236 (invalid_kwarg_var = invalid_kwarg_rule(p)) // invalid_kwarg
9237 )
9238 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009239 _res = invalid_kwarg_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009240 goto done;
9241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009242 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009244 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009245 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009246 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009247}
9248
9249// star_targets: star_target !',' | star_target ((',' star_target))* ','?
9250static expr_ty
9251star_targets_rule(Parser *p)
9252{
9253 if (p->error_indicator) {
9254 return NULL;
9255 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009256 expr_ty _res = NULL;
9257 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009258 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9259 p->error_indicator = 1;
9260 return NULL;
9261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009262 int _start_lineno = p->tokens[_mark]->lineno;
9263 UNUSED(_start_lineno); // Only used by EXTRA macro
9264 int _start_col_offset = p->tokens[_mark]->col_offset;
9265 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009266 { // star_target !','
9267 expr_ty a;
9268 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009269 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009270 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009271 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009272 )
9273 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009274 _res = a;
9275 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009276 p->error_indicator = 1;
9277 return NULL;
9278 }
9279 goto done;
9280 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009281 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009282 }
9283 { // star_target ((',' star_target))* ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009284 void *_opt_var;
9285 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009286 expr_ty a;
9287 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009288 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009289 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009290 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009291 (b = _loop0_117_rule(p)) // ((',' star_target))*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009292 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009293 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009294 )
9295 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009296 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9297 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009298 return NULL;
9299 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009300 int _end_lineno = _token->end_lineno;
9301 UNUSED(_end_lineno); // Only used by EXTRA macro
9302 int _end_col_offset = _token->end_col_offset;
9303 UNUSED(_end_col_offset); // Only used by EXTRA macro
9304 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Store , EXTRA );
9305 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009306 p->error_indicator = 1;
9307 return NULL;
9308 }
9309 goto done;
9310 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009311 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009312 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009313 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009314 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009315 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009316}
9317
9318// star_targets_seq: ','.star_target+ ','?
9319static asdl_seq*
9320star_targets_seq_rule(Parser *p)
9321{
9322 if (p->error_indicator) {
9323 return NULL;
9324 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009325 asdl_seq* _res = NULL;
9326 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009327 { // ','.star_target+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009328 void *_opt_var;
9329 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009330 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009331 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009332 (a = _gather_118_rule(p)) // ','.star_target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009333 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009334 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009335 )
9336 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009337 _res = a;
9338 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009339 p->error_indicator = 1;
9340 return NULL;
9341 }
9342 goto done;
9343 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009344 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009346 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009347 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009348 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009349}
9350
9351// star_target:
9352// | '*' (!'*' star_target)
9353// | t_primary '.' NAME !t_lookahead
9354// | t_primary '[' slices ']' !t_lookahead
9355// | star_atom
9356static expr_ty
9357star_target_rule(Parser *p)
9358{
9359 if (p->error_indicator) {
9360 return NULL;
9361 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009362 expr_ty _res = NULL;
9363 if (_PyPegen_is_memoized(p, star_target_type, &_res))
9364 return _res;
9365 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009366 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9367 p->error_indicator = 1;
9368 return NULL;
9369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009370 int _start_lineno = p->tokens[_mark]->lineno;
9371 UNUSED(_start_lineno); // Only used by EXTRA macro
9372 int _start_col_offset = p->tokens[_mark]->col_offset;
9373 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009374 { // '*' (!'*' star_target)
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009375 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009376 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009377 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009378 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009379 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009380 (a = _tmp_120_rule(p)) // !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009381 )
9382 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009383 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9384 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009385 return NULL;
9386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009387 int _end_lineno = _token->end_lineno;
9388 UNUSED(_end_lineno); // Only used by EXTRA macro
9389 int _end_col_offset = _token->end_col_offset;
9390 UNUSED(_end_col_offset); // Only used by EXTRA macro
9391 _res = _Py_Starred ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , Store , EXTRA );
9392 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009393 p->error_indicator = 1;
9394 return NULL;
9395 }
9396 goto done;
9397 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009398 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009399 }
9400 { // t_primary '.' NAME !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009401 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009402 expr_ty a;
9403 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009404 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009405 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009406 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009407 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009408 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009409 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009410 &&
9411 _PyPegen_lookahead(0, t_lookahead_rule, p)
9412 )
9413 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009414 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9415 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009416 return NULL;
9417 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009418 int _end_lineno = _token->end_lineno;
9419 UNUSED(_end_lineno); // Only used by EXTRA macro
9420 int _end_col_offset = _token->end_col_offset;
9421 UNUSED(_end_col_offset); // Only used by EXTRA macro
9422 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
9423 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009424 p->error_indicator = 1;
9425 return NULL;
9426 }
9427 goto done;
9428 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009429 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009430 }
9431 { // t_primary '[' slices ']' !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009432 Token * _literal;
9433 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009434 expr_ty a;
9435 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009436 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009437 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009438 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009439 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009440 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009441 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009442 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009443 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009444 &&
9445 _PyPegen_lookahead(0, t_lookahead_rule, p)
9446 )
9447 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009448 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9449 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009450 return NULL;
9451 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009452 int _end_lineno = _token->end_lineno;
9453 UNUSED(_end_lineno); // Only used by EXTRA macro
9454 int _end_col_offset = _token->end_col_offset;
9455 UNUSED(_end_col_offset); // Only used by EXTRA macro
9456 _res = _Py_Subscript ( a , b , Store , EXTRA );
9457 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009458 p->error_indicator = 1;
9459 return NULL;
9460 }
9461 goto done;
9462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009463 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009464 }
9465 { // star_atom
9466 expr_ty star_atom_var;
9467 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009468 (star_atom_var = star_atom_rule(p)) // star_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009469 )
9470 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009471 _res = star_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009472 goto done;
9473 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009474 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009475 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009476 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009477 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009478 _PyPegen_insert_memo(p, _mark, star_target_type, _res);
9479 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009480}
9481
9482// star_atom:
9483// | NAME
9484// | '(' star_target ')'
9485// | '(' star_targets_seq? ')'
9486// | '[' star_targets_seq? ']'
9487static expr_ty
9488star_atom_rule(Parser *p)
9489{
9490 if (p->error_indicator) {
9491 return NULL;
9492 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009493 expr_ty _res = NULL;
9494 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009495 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9496 p->error_indicator = 1;
9497 return NULL;
9498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009499 int _start_lineno = p->tokens[_mark]->lineno;
9500 UNUSED(_start_lineno); // Only used by EXTRA macro
9501 int _start_col_offset = p->tokens[_mark]->col_offset;
9502 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009503 { // NAME
9504 expr_ty a;
9505 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009506 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009507 )
9508 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009509 _res = _PyPegen_set_expr_context ( p , a , Store );
9510 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009511 p->error_indicator = 1;
9512 return NULL;
9513 }
9514 goto done;
9515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009516 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009517 }
9518 { // '(' star_target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009519 Token * _literal;
9520 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009521 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009522 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009523 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009524 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009525 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009526 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009527 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009528 )
9529 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009530 _res = _PyPegen_set_expr_context ( p , a , Store );
9531 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009532 p->error_indicator = 1;
9533 return NULL;
9534 }
9535 goto done;
9536 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009537 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009538 }
9539 { // '(' star_targets_seq? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009540 Token * _literal;
9541 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009542 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009543 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009544 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009545 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009546 (a = star_targets_seq_rule(p), 1) // star_targets_seq?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009547 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009548 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009549 )
9550 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009551 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9552 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009553 return NULL;
9554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009555 int _end_lineno = _token->end_lineno;
9556 UNUSED(_end_lineno); // Only used by EXTRA macro
9557 int _end_col_offset = _token->end_col_offset;
9558 UNUSED(_end_col_offset); // Only used by EXTRA macro
9559 _res = _Py_Tuple ( a , Store , EXTRA );
9560 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009561 p->error_indicator = 1;
9562 return NULL;
9563 }
9564 goto done;
9565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009566 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009567 }
9568 { // '[' star_targets_seq? ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009569 Token * _literal;
9570 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009571 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009572 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009573 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009574 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009575 (a = star_targets_seq_rule(p), 1) // star_targets_seq?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009576 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009577 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009578 )
9579 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009580 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9581 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009582 return NULL;
9583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009584 int _end_lineno = _token->end_lineno;
9585 UNUSED(_end_lineno); // Only used by EXTRA macro
9586 int _end_col_offset = _token->end_col_offset;
9587 UNUSED(_end_col_offset); // Only used by EXTRA macro
9588 _res = _Py_List ( a , Store , EXTRA );
9589 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009590 p->error_indicator = 1;
9591 return NULL;
9592 }
9593 goto done;
9594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009595 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009596 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009597 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009598 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009599 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009600}
9601
9602// inside_paren_ann_assign_target:
9603// | ann_assign_subscript_attribute_target
9604// | NAME
9605// | '(' inside_paren_ann_assign_target ')'
9606static expr_ty
9607inside_paren_ann_assign_target_rule(Parser *p)
9608{
9609 if (p->error_indicator) {
9610 return NULL;
9611 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009612 expr_ty _res = NULL;
9613 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009614 { // ann_assign_subscript_attribute_target
9615 expr_ty ann_assign_subscript_attribute_target_var;
9616 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009617 (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 +01009618 )
9619 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009620 _res = ann_assign_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009621 goto done;
9622 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009623 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009624 }
9625 { // NAME
9626 expr_ty a;
9627 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009628 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009629 )
9630 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009631 _res = _PyPegen_set_expr_context ( p , a , Store );
9632 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009633 p->error_indicator = 1;
9634 return NULL;
9635 }
9636 goto done;
9637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009638 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009639 }
9640 { // '(' inside_paren_ann_assign_target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009641 Token * _literal;
9642 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009643 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009644 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009645 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009646 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009647 (a = inside_paren_ann_assign_target_rule(p)) // inside_paren_ann_assign_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009648 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009649 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009650 )
9651 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009652 _res = a;
9653 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009654 p->error_indicator = 1;
9655 return NULL;
9656 }
9657 goto done;
9658 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009659 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009660 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009661 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009662 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009663 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009664}
9665
9666// ann_assign_subscript_attribute_target:
9667// | t_primary '.' NAME !t_lookahead
9668// | t_primary '[' slices ']' !t_lookahead
9669static expr_ty
9670ann_assign_subscript_attribute_target_rule(Parser *p)
9671{
9672 if (p->error_indicator) {
9673 return NULL;
9674 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009675 expr_ty _res = NULL;
9676 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009677 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9678 p->error_indicator = 1;
9679 return NULL;
9680 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009681 int _start_lineno = p->tokens[_mark]->lineno;
9682 UNUSED(_start_lineno); // Only used by EXTRA macro
9683 int _start_col_offset = p->tokens[_mark]->col_offset;
9684 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009685 { // t_primary '.' NAME !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009686 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009687 expr_ty a;
9688 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009689 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009690 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009691 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009692 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009693 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009694 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009695 &&
9696 _PyPegen_lookahead(0, t_lookahead_rule, p)
9697 )
9698 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009699 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9700 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009701 return NULL;
9702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009703 int _end_lineno = _token->end_lineno;
9704 UNUSED(_end_lineno); // Only used by EXTRA macro
9705 int _end_col_offset = _token->end_col_offset;
9706 UNUSED(_end_col_offset); // Only used by EXTRA macro
9707 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
9708 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009709 p->error_indicator = 1;
9710 return NULL;
9711 }
9712 goto done;
9713 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009714 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009715 }
9716 { // t_primary '[' slices ']' !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009717 Token * _literal;
9718 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009719 expr_ty a;
9720 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009721 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009722 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009723 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009724 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009725 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009726 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009727 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009728 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009729 &&
9730 _PyPegen_lookahead(0, t_lookahead_rule, p)
9731 )
9732 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009733 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9734 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009735 return NULL;
9736 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009737 int _end_lineno = _token->end_lineno;
9738 UNUSED(_end_lineno); // Only used by EXTRA macro
9739 int _end_col_offset = _token->end_col_offset;
9740 UNUSED(_end_col_offset); // Only used by EXTRA macro
9741 _res = _Py_Subscript ( a , b , Store , EXTRA );
9742 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009743 p->error_indicator = 1;
9744 return NULL;
9745 }
9746 goto done;
9747 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009748 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009749 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009750 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009751 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009752 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009753}
9754
9755// del_targets: ','.del_target+ ','?
9756static asdl_seq*
9757del_targets_rule(Parser *p)
9758{
9759 if (p->error_indicator) {
9760 return NULL;
9761 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009762 asdl_seq* _res = NULL;
9763 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009764 { // ','.del_target+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009765 void *_opt_var;
9766 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009767 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009768 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009769 (a = _gather_121_rule(p)) // ','.del_target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009770 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009771 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009772 )
9773 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009774 _res = a;
9775 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009776 p->error_indicator = 1;
9777 return NULL;
9778 }
9779 goto done;
9780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009781 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009782 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009783 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009784 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009785 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009786}
9787
9788// del_target:
9789// | t_primary '.' NAME !t_lookahead
9790// | t_primary '[' slices ']' !t_lookahead
9791// | del_t_atom
9792static expr_ty
9793del_target_rule(Parser *p)
9794{
9795 if (p->error_indicator) {
9796 return NULL;
9797 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009798 expr_ty _res = NULL;
9799 if (_PyPegen_is_memoized(p, del_target_type, &_res))
9800 return _res;
9801 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009802 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9803 p->error_indicator = 1;
9804 return NULL;
9805 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009806 int _start_lineno = p->tokens[_mark]->lineno;
9807 UNUSED(_start_lineno); // Only used by EXTRA macro
9808 int _start_col_offset = p->tokens[_mark]->col_offset;
9809 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009810 { // t_primary '.' NAME !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009811 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009812 expr_ty a;
9813 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009814 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009815 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009816 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009817 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009818 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009819 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009820 &&
9821 _PyPegen_lookahead(0, t_lookahead_rule, p)
9822 )
9823 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009824 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9825 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009826 return NULL;
9827 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009828 int _end_lineno = _token->end_lineno;
9829 UNUSED(_end_lineno); // Only used by EXTRA macro
9830 int _end_col_offset = _token->end_col_offset;
9831 UNUSED(_end_col_offset); // Only used by EXTRA macro
9832 _res = _Py_Attribute ( a , b -> v . Name . id , Del , EXTRA );
9833 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009834 p->error_indicator = 1;
9835 return NULL;
9836 }
9837 goto done;
9838 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009839 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009840 }
9841 { // t_primary '[' slices ']' !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009842 Token * _literal;
9843 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009844 expr_ty a;
9845 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009846 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009847 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009848 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009849 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009850 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009851 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009852 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009853 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009854 &&
9855 _PyPegen_lookahead(0, t_lookahead_rule, p)
9856 )
9857 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009858 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9859 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009860 return NULL;
9861 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009862 int _end_lineno = _token->end_lineno;
9863 UNUSED(_end_lineno); // Only used by EXTRA macro
9864 int _end_col_offset = _token->end_col_offset;
9865 UNUSED(_end_col_offset); // Only used by EXTRA macro
9866 _res = _Py_Subscript ( a , b , Del , EXTRA );
9867 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009868 p->error_indicator = 1;
9869 return NULL;
9870 }
9871 goto done;
9872 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009873 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009874 }
9875 { // del_t_atom
9876 expr_ty del_t_atom_var;
9877 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009878 (del_t_atom_var = del_t_atom_rule(p)) // del_t_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009879 )
9880 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009881 _res = del_t_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009882 goto done;
9883 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009884 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009885 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009886 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009887 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009888 _PyPegen_insert_memo(p, _mark, del_target_type, _res);
9889 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009890}
9891
9892// del_t_atom: NAME | '(' del_target ')' | '(' del_targets? ')' | '[' del_targets? ']'
9893static expr_ty
9894del_t_atom_rule(Parser *p)
9895{
9896 if (p->error_indicator) {
9897 return NULL;
9898 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009899 expr_ty _res = NULL;
9900 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009901 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9902 p->error_indicator = 1;
9903 return NULL;
9904 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009905 int _start_lineno = p->tokens[_mark]->lineno;
9906 UNUSED(_start_lineno); // Only used by EXTRA macro
9907 int _start_col_offset = p->tokens[_mark]->col_offset;
9908 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009909 { // NAME
9910 expr_ty a;
9911 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009912 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009913 )
9914 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009915 _res = _PyPegen_set_expr_context ( p , a , Del );
9916 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009917 p->error_indicator = 1;
9918 return NULL;
9919 }
9920 goto done;
9921 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009922 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009923 }
9924 { // '(' del_target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009925 Token * _literal;
9926 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009927 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009928 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009929 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009930 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009931 (a = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009932 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009933 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009934 )
9935 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009936 _res = _PyPegen_set_expr_context ( p , a , Del );
9937 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009938 p->error_indicator = 1;
9939 return NULL;
9940 }
9941 goto done;
9942 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009943 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009944 }
9945 { // '(' del_targets? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009946 Token * _literal;
9947 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009948 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009949 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009950 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009951 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009952 (a = del_targets_rule(p), 1) // del_targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009953 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009954 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009955 )
9956 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009957 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9958 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009959 return NULL;
9960 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009961 int _end_lineno = _token->end_lineno;
9962 UNUSED(_end_lineno); // Only used by EXTRA macro
9963 int _end_col_offset = _token->end_col_offset;
9964 UNUSED(_end_col_offset); // Only used by EXTRA macro
9965 _res = _Py_Tuple ( a , Del , EXTRA );
9966 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009967 p->error_indicator = 1;
9968 return NULL;
9969 }
9970 goto done;
9971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009972 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009973 }
9974 { // '[' del_targets? ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009975 Token * _literal;
9976 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009977 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009978 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009979 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009980 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009981 (a = del_targets_rule(p), 1) // del_targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009982 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009983 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009984 )
9985 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009986 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9987 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009988 return NULL;
9989 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009990 int _end_lineno = _token->end_lineno;
9991 UNUSED(_end_lineno); // Only used by EXTRA macro
9992 int _end_col_offset = _token->end_col_offset;
9993 UNUSED(_end_col_offset); // Only used by EXTRA macro
9994 _res = _Py_List ( a , Del , EXTRA );
9995 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009996 p->error_indicator = 1;
9997 return NULL;
9998 }
9999 goto done;
10000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010001 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010003 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010004 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010005 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010006}
10007
10008// targets: ','.target+ ','?
10009static asdl_seq*
10010targets_rule(Parser *p)
10011{
10012 if (p->error_indicator) {
10013 return NULL;
10014 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010015 asdl_seq* _res = NULL;
10016 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010017 { // ','.target+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010018 void *_opt_var;
10019 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010020 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010021 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010022 (a = _gather_123_rule(p)) // ','.target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010023 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010024 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010025 )
10026 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010027 _res = a;
10028 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010029 p->error_indicator = 1;
10030 return NULL;
10031 }
10032 goto done;
10033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010034 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010035 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010036 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010037 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010038 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010039}
10040
10041// target:
10042// | t_primary '.' NAME !t_lookahead
10043// | t_primary '[' slices ']' !t_lookahead
10044// | t_atom
10045static expr_ty
10046target_rule(Parser *p)
10047{
10048 if (p->error_indicator) {
10049 return NULL;
10050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010051 expr_ty _res = NULL;
10052 if (_PyPegen_is_memoized(p, target_type, &_res))
10053 return _res;
10054 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010055 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10056 p->error_indicator = 1;
10057 return NULL;
10058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010059 int _start_lineno = p->tokens[_mark]->lineno;
10060 UNUSED(_start_lineno); // Only used by EXTRA macro
10061 int _start_col_offset = p->tokens[_mark]->col_offset;
10062 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010063 { // t_primary '.' NAME !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010064 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010065 expr_ty a;
10066 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010067 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010068 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010069 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010070 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010071 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010072 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010073 &&
10074 _PyPegen_lookahead(0, t_lookahead_rule, p)
10075 )
10076 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010077 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10078 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010079 return NULL;
10080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010081 int _end_lineno = _token->end_lineno;
10082 UNUSED(_end_lineno); // Only used by EXTRA macro
10083 int _end_col_offset = _token->end_col_offset;
10084 UNUSED(_end_col_offset); // Only used by EXTRA macro
10085 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
10086 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010087 p->error_indicator = 1;
10088 return NULL;
10089 }
10090 goto done;
10091 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010092 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010093 }
10094 { // t_primary '[' slices ']' !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010095 Token * _literal;
10096 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010097 expr_ty a;
10098 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010099 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010100 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010101 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010102 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010103 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010104 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010105 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010106 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010107 &&
10108 _PyPegen_lookahead(0, t_lookahead_rule, p)
10109 )
10110 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010111 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10112 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010113 return NULL;
10114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010115 int _end_lineno = _token->end_lineno;
10116 UNUSED(_end_lineno); // Only used by EXTRA macro
10117 int _end_col_offset = _token->end_col_offset;
10118 UNUSED(_end_col_offset); // Only used by EXTRA macro
10119 _res = _Py_Subscript ( a , b , Store , EXTRA );
10120 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010121 p->error_indicator = 1;
10122 return NULL;
10123 }
10124 goto done;
10125 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010126 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010127 }
10128 { // t_atom
10129 expr_ty t_atom_var;
10130 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010131 (t_atom_var = t_atom_rule(p)) // t_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010132 )
10133 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010134 _res = t_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010135 goto done;
10136 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010137 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010138 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010139 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010140 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010141 _PyPegen_insert_memo(p, _mark, target_type, _res);
10142 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010143}
10144
10145// Left-recursive
10146// t_primary:
10147// | t_primary '.' NAME &t_lookahead
10148// | t_primary '[' slices ']' &t_lookahead
10149// | t_primary genexp &t_lookahead
10150// | t_primary '(' arguments? ')' &t_lookahead
10151// | atom &t_lookahead
10152static expr_ty t_primary_raw(Parser *);
10153static expr_ty
10154t_primary_rule(Parser *p)
10155{
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010156 expr_ty _res = NULL;
10157 if (_PyPegen_is_memoized(p, t_primary_type, &_res))
10158 return _res;
10159 int _mark = p->mark;
10160 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010161 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010162 int tmpvar_8 = _PyPegen_update_memo(p, _mark, t_primary_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010163 if (tmpvar_8) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010164 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010165 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010166 p->mark = _mark;
10167 void *_raw = t_primary_raw(p);
10168 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010169 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010170 _resmark = p->mark;
10171 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010172 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010173 p->mark = _resmark;
10174 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010175}
10176static expr_ty
10177t_primary_raw(Parser *p)
10178{
10179 if (p->error_indicator) {
10180 return NULL;
10181 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010182 expr_ty _res = NULL;
10183 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010184 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10185 p->error_indicator = 1;
10186 return NULL;
10187 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010188 int _start_lineno = p->tokens[_mark]->lineno;
10189 UNUSED(_start_lineno); // Only used by EXTRA macro
10190 int _start_col_offset = p->tokens[_mark]->col_offset;
10191 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010192 { // t_primary '.' NAME &t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010193 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010194 expr_ty a;
10195 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010196 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010197 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010198 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010199 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010200 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010201 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010202 &&
10203 _PyPegen_lookahead(1, t_lookahead_rule, p)
10204 )
10205 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010206 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10207 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010208 return NULL;
10209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010210 int _end_lineno = _token->end_lineno;
10211 UNUSED(_end_lineno); // Only used by EXTRA macro
10212 int _end_col_offset = _token->end_col_offset;
10213 UNUSED(_end_col_offset); // Only used by EXTRA macro
10214 _res = _Py_Attribute ( a , b -> v . Name . id , Load , EXTRA );
10215 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010216 p->error_indicator = 1;
10217 return NULL;
10218 }
10219 goto done;
10220 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010221 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010222 }
10223 { // t_primary '[' slices ']' &t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010224 Token * _literal;
10225 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010226 expr_ty a;
10227 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010228 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010229 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010230 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010231 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010232 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010233 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010234 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010235 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010236 &&
10237 _PyPegen_lookahead(1, t_lookahead_rule, p)
10238 )
10239 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010240 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10241 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010242 return NULL;
10243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010244 int _end_lineno = _token->end_lineno;
10245 UNUSED(_end_lineno); // Only used by EXTRA macro
10246 int _end_col_offset = _token->end_col_offset;
10247 UNUSED(_end_col_offset); // Only used by EXTRA macro
10248 _res = _Py_Subscript ( a , b , Load , EXTRA );
10249 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010250 p->error_indicator = 1;
10251 return NULL;
10252 }
10253 goto done;
10254 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010255 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010256 }
10257 { // t_primary genexp &t_lookahead
10258 expr_ty a;
10259 expr_ty b;
10260 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010261 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010262 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010263 (b = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010264 &&
10265 _PyPegen_lookahead(1, t_lookahead_rule, p)
10266 )
10267 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010268 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10269 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010270 return NULL;
10271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010272 int _end_lineno = _token->end_lineno;
10273 UNUSED(_end_lineno); // Only used by EXTRA macro
10274 int _end_col_offset = _token->end_col_offset;
10275 UNUSED(_end_col_offset); // Only used by EXTRA macro
10276 _res = _Py_Call ( a , CHECK ( _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
10277 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010278 p->error_indicator = 1;
10279 return NULL;
10280 }
10281 goto done;
10282 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010283 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010284 }
10285 { // t_primary '(' arguments? ')' &t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010286 Token * _literal;
10287 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010288 expr_ty a;
10289 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010290 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010291 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010292 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010293 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010294 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010295 (b = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010296 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010297 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010298 &&
10299 _PyPegen_lookahead(1, t_lookahead_rule, p)
10300 )
10301 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010302 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10303 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010304 return NULL;
10305 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010306 int _end_lineno = _token->end_lineno;
10307 UNUSED(_end_lineno); // Only used by EXTRA macro
10308 int _end_col_offset = _token->end_col_offset;
10309 UNUSED(_end_col_offset); // Only used by EXTRA macro
10310 _res = _Py_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
10311 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010312 p->error_indicator = 1;
10313 return NULL;
10314 }
10315 goto done;
10316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010317 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010318 }
10319 { // atom &t_lookahead
10320 expr_ty a;
10321 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010322 (a = atom_rule(p)) // atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010323 &&
10324 _PyPegen_lookahead(1, t_lookahead_rule, p)
10325 )
10326 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010327 _res = a;
10328 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010329 p->error_indicator = 1;
10330 return NULL;
10331 }
10332 goto done;
10333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010334 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010335 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010336 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010337 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010338 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010339}
10340
10341// t_lookahead: '(' | '[' | '.'
10342static void *
10343t_lookahead_rule(Parser *p)
10344{
10345 if (p->error_indicator) {
10346 return NULL;
10347 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010348 void * _res = NULL;
10349 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010350 { // '('
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010351 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010352 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010353 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010354 )
10355 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010356 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010357 goto done;
10358 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010359 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010360 }
10361 { // '['
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010362 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010363 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010364 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010365 )
10366 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010367 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010368 goto done;
10369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010370 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010371 }
10372 { // '.'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010373 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010374 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010375 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010376 )
10377 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010378 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010379 goto done;
10380 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010381 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010383 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010384 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010385 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010386}
10387
10388// t_atom: NAME | '(' target ')' | '(' targets? ')' | '[' targets? ']'
10389static expr_ty
10390t_atom_rule(Parser *p)
10391{
10392 if (p->error_indicator) {
10393 return NULL;
10394 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010395 expr_ty _res = NULL;
10396 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010397 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10398 p->error_indicator = 1;
10399 return NULL;
10400 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010401 int _start_lineno = p->tokens[_mark]->lineno;
10402 UNUSED(_start_lineno); // Only used by EXTRA macro
10403 int _start_col_offset = p->tokens[_mark]->col_offset;
10404 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010405 { // NAME
10406 expr_ty a;
10407 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010408 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010409 )
10410 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010411 _res = _PyPegen_set_expr_context ( p , a , Store );
10412 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010413 p->error_indicator = 1;
10414 return NULL;
10415 }
10416 goto done;
10417 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010418 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010419 }
10420 { // '(' target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010421 Token * _literal;
10422 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010423 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010424 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010425 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010426 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010427 (a = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010428 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010429 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010430 )
10431 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010432 _res = _PyPegen_set_expr_context ( p , a , Store );
10433 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010434 p->error_indicator = 1;
10435 return NULL;
10436 }
10437 goto done;
10438 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010439 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010440 }
10441 { // '(' targets? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010442 Token * _literal;
10443 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010444 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010445 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010446 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010447 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010448 (b = targets_rule(p), 1) // targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010449 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010450 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010451 )
10452 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010453 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10454 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010455 return NULL;
10456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010457 int _end_lineno = _token->end_lineno;
10458 UNUSED(_end_lineno); // Only used by EXTRA macro
10459 int _end_col_offset = _token->end_col_offset;
10460 UNUSED(_end_col_offset); // Only used by EXTRA macro
10461 _res = _Py_Tuple ( b , Store , EXTRA );
10462 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010463 p->error_indicator = 1;
10464 return NULL;
10465 }
10466 goto done;
10467 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010468 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010469 }
10470 { // '[' targets? ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010471 Token * _literal;
10472 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010473 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010474 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010475 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010476 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010477 (b = targets_rule(p), 1) // targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010478 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010479 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010480 )
10481 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010482 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10483 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010484 return NULL;
10485 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010486 int _end_lineno = _token->end_lineno;
10487 UNUSED(_end_lineno); // Only used by EXTRA macro
10488 int _end_col_offset = _token->end_col_offset;
10489 UNUSED(_end_col_offset); // Only used by EXTRA macro
10490 _res = _Py_List ( b , Store , EXTRA );
10491 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010492 p->error_indicator = 1;
10493 return NULL;
10494 }
10495 goto done;
10496 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010497 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010499 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010500 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010501 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010502}
10503
10504// incorrect_arguments:
10505// | args ',' '*'
10506// | expression for_if_clauses ',' [args | expression for_if_clauses]
10507// | args ',' args
10508static void *
10509incorrect_arguments_rule(Parser *p)
10510{
10511 if (p->error_indicator) {
10512 return NULL;
10513 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010514 void * _res = NULL;
10515 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010516 { // args ',' '*'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010517 Token * _literal;
10518 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010519 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010520 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010521 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010522 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010523 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010524 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010525 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010526 )
10527 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010528 _res = RAISE_SYNTAX_ERROR ( "iterable argument unpacking follows keyword argument unpacking" );
10529 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010530 p->error_indicator = 1;
10531 return NULL;
10532 }
10533 goto done;
10534 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010535 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010536 }
10537 { // expression for_if_clauses ',' [args | expression for_if_clauses]
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010538 Token * _literal;
10539 void *_opt_var;
10540 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010541 expr_ty expression_var;
10542 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010543 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010544 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010545 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010546 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010547 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010548 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010549 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010550 (_opt_var = _tmp_125_rule(p), 1) // [args | expression for_if_clauses]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010551 )
10552 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010553 _res = RAISE_SYNTAX_ERROR ( "Generator expression must be parenthesized" );
10554 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010555 p->error_indicator = 1;
10556 return NULL;
10557 }
10558 goto done;
10559 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010560 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010561 }
10562 { // args ',' args
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010563 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010564 expr_ty a;
10565 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010566 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010567 (a = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010568 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010569 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010570 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010571 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010572 )
10573 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010574 _res = _PyPegen_arguments_parsing_error ( p , a );
10575 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010576 p->error_indicator = 1;
10577 return NULL;
10578 }
10579 goto done;
10580 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010581 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010582 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010583 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010584 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010585 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010586}
10587
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010588// invalid_kwarg: expression '='
10589static void *
10590invalid_kwarg_rule(Parser *p)
10591{
10592 if (p->error_indicator) {
10593 return NULL;
10594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010595 void * _res = NULL;
10596 int _mark = p->mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010597 { // expression '='
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010598 Token * _literal;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010599 expr_ty expression_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010600 if (
10601 (expression_var = expression_rule(p)) // expression
10602 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010603 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010604 )
10605 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010606 _res = RAISE_SYNTAX_ERROR ( "expression cannot contain assignment, perhaps you meant \"==\"?" );
10607 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010608 p->error_indicator = 1;
10609 return NULL;
10610 }
10611 goto done;
10612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010613 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010614 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010615 _res = NULL;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010616 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010617 return _res;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010618}
10619
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010620// invalid_named_expression: expression ':=' expression
10621static void *
10622invalid_named_expression_rule(Parser *p)
10623{
10624 if (p->error_indicator) {
10625 return NULL;
10626 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010627 void * _res = NULL;
10628 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010629 { // expression ':=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010630 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010631 expr_ty a;
10632 expr_ty expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010633 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010634 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010635 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010636 (_literal = _PyPegen_expect_token(p, 53)) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010637 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010638 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010639 )
10640 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010641 _res = RAISE_SYNTAX_ERROR ( "cannot use assignment expressions with %s" , _PyPegen_get_expr_name ( a ) );
10642 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010643 p->error_indicator = 1;
10644 return NULL;
10645 }
10646 goto done;
10647 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010648 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010650 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010651 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010652 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010653}
10654
10655// invalid_assignment:
10656// | list ':'
10657// | tuple ':'
10658// | expression ':' expression ['=' annotated_rhs]
10659// | expression ('=' | augassign) (yield_expr | star_expressions)
10660static void *
10661invalid_assignment_rule(Parser *p)
10662{
10663 if (p->error_indicator) {
10664 return NULL;
10665 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010666 void * _res = NULL;
10667 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010668 { // list ':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010669 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010670 expr_ty list_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010671 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010672 (list_var = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010673 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010674 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010675 )
10676 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010677 _res = RAISE_SYNTAX_ERROR ( "only single target (not list) can be annotated" );
10678 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010679 p->error_indicator = 1;
10680 return NULL;
10681 }
10682 goto done;
10683 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010684 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010685 }
10686 { // tuple ':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010687 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010688 expr_ty tuple_var;
10689 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010690 (tuple_var = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010691 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010692 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010693 )
10694 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010695 _res = RAISE_SYNTAX_ERROR ( "only single target (not tuple) can be annotated" );
10696 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010697 p->error_indicator = 1;
10698 return NULL;
10699 }
10700 goto done;
10701 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010702 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010703 }
10704 { // expression ':' expression ['=' annotated_rhs]
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010705 Token * _literal;
10706 void *_opt_var;
10707 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010708 expr_ty expression_var;
10709 expr_ty expression_var_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010710 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010711 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010712 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010713 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010714 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010715 (expression_var_1 = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010716 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010717 (_opt_var = _tmp_126_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010718 )
10719 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010720 _res = RAISE_SYNTAX_ERROR ( "illegal target for annotation" );
10721 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010722 p->error_indicator = 1;
10723 return NULL;
10724 }
10725 goto done;
10726 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010727 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010728 }
10729 { // expression ('=' | augassign) (yield_expr | star_expressions)
Guido van Rossum3941d972020-05-01 09:42:03 -070010730 void *_tmp_127_var;
10731 void *_tmp_128_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010732 expr_ty a;
10733 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010734 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010735 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010736 (_tmp_127_var = _tmp_127_rule(p)) // '=' | augassign
Pablo Galindo2b74c832020-04-27 18:02:07 +010010737 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010738 (_tmp_128_var = _tmp_128_rule(p)) // yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010739 )
10740 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010741 _res = RAISE_SYNTAX_ERROR_NO_COL_OFFSET ( "cannot assign to %s" , _PyPegen_get_expr_name ( a ) );
10742 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010743 p->error_indicator = 1;
10744 return NULL;
10745 }
10746 goto done;
10747 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010748 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010749 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010750 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010751 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010752 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010753}
10754
10755// invalid_block: NEWLINE !INDENT
10756static void *
10757invalid_block_rule(Parser *p)
10758{
10759 if (p->error_indicator) {
10760 return NULL;
10761 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010762 void * _res = NULL;
10763 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010764 { // NEWLINE !INDENT
Pablo Galindob796b3f2020-05-01 12:32:26 +010010765 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010766 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010767 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010768 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010769 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT) // token=INDENT
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010770 )
10771 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010772 _res = RAISE_INDENTATION_ERROR ( "expected an indented block" );
10773 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010774 p->error_indicator = 1;
10775 return NULL;
10776 }
10777 goto done;
10778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010779 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010781 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010782 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010783 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010784}
10785
10786// invalid_comprehension: ('[' | '(' | '{') '*' expression for_if_clauses
10787static void *
10788invalid_comprehension_rule(Parser *p)
10789{
10790 if (p->error_indicator) {
10791 return NULL;
10792 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010793 void * _res = NULL;
10794 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010795 { // ('[' | '(' | '{') '*' expression for_if_clauses
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010796 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070010797 void *_tmp_129_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010798 expr_ty expression_var;
10799 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010800 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010801 (_tmp_129_var = _tmp_129_rule(p)) // '[' | '(' | '{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010802 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010803 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010804 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010805 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010806 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010807 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010808 )
10809 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010810 _res = RAISE_SYNTAX_ERROR ( "iterable unpacking cannot be used in comprehension" );
10811 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010812 p->error_indicator = 1;
10813 return NULL;
10814 }
10815 goto done;
10816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010817 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010818 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010819 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010820 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010821 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010822}
10823
10824// invalid_parameters:
Guido van Rossumc001c092020-04-30 12:12:19 -070010825// | param_no_default* (slash_with_default | param_with_default+) param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010826static void *
10827invalid_parameters_rule(Parser *p)
10828{
10829 if (p->error_indicator) {
10830 return NULL;
10831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010832 void * _res = NULL;
10833 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070010834 { // param_no_default* (slash_with_default | param_with_default+) param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070010835 asdl_seq * _loop0_130_var;
10836 void *_tmp_131_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070010837 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010838 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010839 (_loop0_130_var = _loop0_130_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010840 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010841 (_tmp_131_var = _tmp_131_rule(p)) // slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010842 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010843 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010844 )
10845 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010846 _res = RAISE_SYNTAX_ERROR ( "non-default argument follows default argument" );
10847 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010848 p->error_indicator = 1;
10849 return NULL;
10850 }
10851 goto done;
10852 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010853 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010854 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010855 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010856 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010857 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010858}
10859
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010860// invalid_star_etc: '*' (')' | ',' (')' | '**'))
10861static void *
10862invalid_star_etc_rule(Parser *p)
10863{
10864 if (p->error_indicator) {
10865 return NULL;
10866 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010867 void * _res = NULL;
10868 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010869 { // '*' (')' | ',' (')' | '**'))
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010870 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010871 void *_tmp_132_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010872 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010873 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010874 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010875 (_tmp_132_var = _tmp_132_rule(p)) // ')' | ',' (')' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010876 )
10877 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010878 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
10879 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010880 p->error_indicator = 1;
10881 return NULL;
10882 }
10883 goto done;
10884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010885 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010886 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010887 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010888 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010889 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010890}
10891
10892// invalid_lambda_star_etc: '*' (':' | ',' (':' | '**'))
10893static void *
10894invalid_lambda_star_etc_rule(Parser *p)
10895{
10896 if (p->error_indicator) {
10897 return NULL;
10898 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010899 void * _res = NULL;
10900 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010901 { // '*' (':' | ',' (':' | '**'))
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010902 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010903 void *_tmp_133_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010904 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010905 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010906 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010907 (_tmp_133_var = _tmp_133_rule(p)) // ':' | ',' (':' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010908 )
10909 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010910 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
10911 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010912 p->error_indicator = 1;
10913 return NULL;
10914 }
10915 goto done;
10916 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010917 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010918 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010919 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010920 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010921 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010922}
10923
Guido van Rossumc001c092020-04-30 12:12:19 -070010924// invalid_double_type_comments: TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
10925static void *
10926invalid_double_type_comments_rule(Parser *p)
10927{
10928 if (p->error_indicator) {
10929 return NULL;
10930 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010931 void * _res = NULL;
10932 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070010933 { // TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
Pablo Galindob796b3f2020-05-01 12:32:26 +010010934 Token * indent_var;
10935 Token * newline_var;
10936 Token * newline_var_1;
10937 Token * type_comment_var;
10938 Token * type_comment_var_1;
Guido van Rossumc001c092020-04-30 12:12:19 -070010939 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010940 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070010941 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010942 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070010943 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010944 (type_comment_var_1 = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070010945 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010946 (newline_var_1 = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070010947 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010948 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070010949 )
10950 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010951 _res = RAISE_SYNTAX_ERROR ( "Cannot have two type comments on def" );
10952 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070010953 p->error_indicator = 1;
10954 return NULL;
10955 }
10956 goto done;
10957 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010958 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070010959 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010960 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070010961 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010962 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070010963}
10964
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010965// _loop0_1: NEWLINE
10966static asdl_seq *
10967_loop0_1_rule(Parser *p)
10968{
10969 if (p->error_indicator) {
10970 return NULL;
10971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010972 void *_res = NULL;
10973 int _mark = p->mark;
10974 int _start_mark = p->mark;
10975 void **_children = PyMem_Malloc(sizeof(void *));
10976 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010977 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
10978 return NULL;
10979 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010980 ssize_t _children_capacity = 1;
10981 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010982 { // NEWLINE
Pablo Galindob796b3f2020-05-01 12:32:26 +010010983 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010984 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010010985 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010986 )
10987 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010988 _res = newline_var;
10989 if (_n == _children_capacity) {
10990 _children_capacity *= 2;
10991 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
10992 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010993 PyErr_Format(PyExc_MemoryError, "realloc None");
10994 return NULL;
10995 }
10996 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010997 _children[_n++] = _res;
10998 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010999 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011000 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011001 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011002 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11003 if (!_seq) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011004 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_1");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011005 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011006 return NULL;
11007 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011008 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11009 PyMem_Free(_children);
11010 _PyPegen_insert_memo(p, _start_mark, _loop0_1_type, _seq);
11011 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011012}
11013
Guido van Rossumc001c092020-04-30 12:12:19 -070011014// _loop0_2: NEWLINE
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011015static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070011016_loop0_2_rule(Parser *p)
11017{
11018 if (p->error_indicator) {
11019 return NULL;
11020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011021 void *_res = NULL;
11022 int _mark = p->mark;
11023 int _start_mark = p->mark;
11024 void **_children = PyMem_Malloc(sizeof(void *));
11025 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011026 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11027 return NULL;
11028 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011029 ssize_t _children_capacity = 1;
11030 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011031 { // NEWLINE
Pablo Galindob796b3f2020-05-01 12:32:26 +010011032 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070011033 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010011034 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070011035 )
11036 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011037 _res = newline_var;
11038 if (_n == _children_capacity) {
11039 _children_capacity *= 2;
11040 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11041 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011042 PyErr_Format(PyExc_MemoryError, "realloc None");
11043 return NULL;
11044 }
11045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011046 _children[_n++] = _res;
11047 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011048 }
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 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11052 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011053 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_2");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011054 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011055 return NULL;
11056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011057 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11058 PyMem_Free(_children);
11059 _PyPegen_insert_memo(p, _start_mark, _loop0_2_type, _seq);
11060 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011061}
11062
11063// _loop0_4: ',' expression
11064static asdl_seq *
11065_loop0_4_rule(Parser *p)
11066{
11067 if (p->error_indicator) {
11068 return NULL;
11069 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011070 void *_res = NULL;
11071 int _mark = p->mark;
11072 int _start_mark = p->mark;
11073 void **_children = PyMem_Malloc(sizeof(void *));
11074 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011075 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11076 return NULL;
11077 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011078 ssize_t _children_capacity = 1;
11079 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011080 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011081 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011082 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011083 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011084 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011085 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011086 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011087 )
11088 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011089 _res = elem;
11090 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011091 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011092 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011093 return NULL;
11094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011095 if (_n == _children_capacity) {
11096 _children_capacity *= 2;
11097 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11098 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011099 PyErr_Format(PyExc_MemoryError, "realloc None");
11100 return NULL;
11101 }
11102 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011103 _children[_n++] = _res;
11104 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011105 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011106 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011107 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011108 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11109 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011110 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_4");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011111 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011112 return NULL;
11113 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011114 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11115 PyMem_Free(_children);
11116 _PyPegen_insert_memo(p, _start_mark, _loop0_4_type, _seq);
11117 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011118}
11119
11120// _gather_3: expression _loop0_4
11121static asdl_seq *
11122_gather_3_rule(Parser *p)
11123{
11124 if (p->error_indicator) {
11125 return NULL;
11126 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011127 asdl_seq * _res = NULL;
11128 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011129 { // expression _loop0_4
11130 expr_ty elem;
11131 asdl_seq * seq;
11132 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011133 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011134 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011135 (seq = _loop0_4_rule(p)) // _loop0_4
Guido van Rossumc001c092020-04-30 12:12:19 -070011136 )
11137 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011138 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011139 goto done;
11140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011141 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011142 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011143 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011144 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011145 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011146}
11147
11148// _loop0_6: ',' expression
11149static asdl_seq *
11150_loop0_6_rule(Parser *p)
11151{
11152 if (p->error_indicator) {
11153 return NULL;
11154 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011155 void *_res = NULL;
11156 int _mark = p->mark;
11157 int _start_mark = p->mark;
11158 void **_children = PyMem_Malloc(sizeof(void *));
11159 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011160 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11161 return NULL;
11162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011163 ssize_t _children_capacity = 1;
11164 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011165 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011166 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011167 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011168 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011169 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011170 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011171 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011172 )
11173 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011174 _res = elem;
11175 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011176 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011177 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011178 return NULL;
11179 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011180 if (_n == _children_capacity) {
11181 _children_capacity *= 2;
11182 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11183 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011184 PyErr_Format(PyExc_MemoryError, "realloc None");
11185 return NULL;
11186 }
11187 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011188 _children[_n++] = _res;
11189 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011190 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011191 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011192 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011193 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11194 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011195 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_6");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011196 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011197 return NULL;
11198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011199 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11200 PyMem_Free(_children);
11201 _PyPegen_insert_memo(p, _start_mark, _loop0_6_type, _seq);
11202 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011203}
11204
11205// _gather_5: expression _loop0_6
11206static asdl_seq *
11207_gather_5_rule(Parser *p)
11208{
11209 if (p->error_indicator) {
11210 return NULL;
11211 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011212 asdl_seq * _res = NULL;
11213 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011214 { // expression _loop0_6
11215 expr_ty elem;
11216 asdl_seq * seq;
11217 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011218 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011219 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011220 (seq = _loop0_6_rule(p)) // _loop0_6
Guido van Rossumc001c092020-04-30 12:12:19 -070011221 )
11222 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011223 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011224 goto done;
11225 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011226 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011228 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011229 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011230 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011231}
11232
11233// _loop0_8: ',' expression
11234static asdl_seq *
11235_loop0_8_rule(Parser *p)
11236{
11237 if (p->error_indicator) {
11238 return NULL;
11239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011240 void *_res = NULL;
11241 int _mark = p->mark;
11242 int _start_mark = p->mark;
11243 void **_children = PyMem_Malloc(sizeof(void *));
11244 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011245 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11246 return NULL;
11247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011248 ssize_t _children_capacity = 1;
11249 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011250 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011251 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011252 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011253 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011254 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011255 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011256 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011257 )
11258 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011259 _res = elem;
11260 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011261 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011262 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011263 return NULL;
11264 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011265 if (_n == _children_capacity) {
11266 _children_capacity *= 2;
11267 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11268 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011269 PyErr_Format(PyExc_MemoryError, "realloc None");
11270 return NULL;
11271 }
11272 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011273 _children[_n++] = _res;
11274 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011275 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011276 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011277 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011278 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11279 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011280 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_8");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011281 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011282 return NULL;
11283 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011284 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11285 PyMem_Free(_children);
11286 _PyPegen_insert_memo(p, _start_mark, _loop0_8_type, _seq);
11287 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011288}
11289
11290// _gather_7: expression _loop0_8
11291static asdl_seq *
11292_gather_7_rule(Parser *p)
11293{
11294 if (p->error_indicator) {
11295 return NULL;
11296 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011297 asdl_seq * _res = NULL;
11298 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011299 { // expression _loop0_8
11300 expr_ty elem;
11301 asdl_seq * seq;
11302 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011303 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011304 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011305 (seq = _loop0_8_rule(p)) // _loop0_8
Guido van Rossumc001c092020-04-30 12:12:19 -070011306 )
11307 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011308 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011309 goto done;
11310 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011311 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011312 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011313 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011314 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011315 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011316}
11317
11318// _loop0_10: ',' expression
11319static asdl_seq *
11320_loop0_10_rule(Parser *p)
11321{
11322 if (p->error_indicator) {
11323 return NULL;
11324 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011325 void *_res = NULL;
11326 int _mark = p->mark;
11327 int _start_mark = p->mark;
11328 void **_children = PyMem_Malloc(sizeof(void *));
11329 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011330 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11331 return NULL;
11332 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011333 ssize_t _children_capacity = 1;
11334 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011335 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011336 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011337 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011338 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011339 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011340 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011341 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011342 )
11343 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011344 _res = elem;
11345 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011346 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011347 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011348 return NULL;
11349 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011350 if (_n == _children_capacity) {
11351 _children_capacity *= 2;
11352 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11353 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011354 PyErr_Format(PyExc_MemoryError, "realloc None");
11355 return NULL;
11356 }
11357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011358 _children[_n++] = _res;
11359 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011360 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011361 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011362 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011363 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11364 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011365 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_10");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011366 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011367 return NULL;
11368 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011369 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11370 PyMem_Free(_children);
11371 _PyPegen_insert_memo(p, _start_mark, _loop0_10_type, _seq);
11372 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011373}
11374
11375// _gather_9: expression _loop0_10
11376static asdl_seq *
11377_gather_9_rule(Parser *p)
11378{
11379 if (p->error_indicator) {
11380 return NULL;
11381 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011382 asdl_seq * _res = NULL;
11383 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011384 { // expression _loop0_10
11385 expr_ty elem;
11386 asdl_seq * seq;
11387 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011388 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011389 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011390 (seq = _loop0_10_rule(p)) // _loop0_10
Guido van Rossumc001c092020-04-30 12:12:19 -070011391 )
11392 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011393 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011394 goto done;
11395 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011396 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011397 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011398 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011399 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011400 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011401}
11402
11403// _loop1_11: statement
11404static asdl_seq *
11405_loop1_11_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011406{
11407 if (p->error_indicator) {
11408 return NULL;
11409 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011410 void *_res = NULL;
11411 int _mark = p->mark;
11412 int _start_mark = p->mark;
11413 void **_children = PyMem_Malloc(sizeof(void *));
11414 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011415 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11416 return NULL;
11417 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011418 ssize_t _children_capacity = 1;
11419 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011420 { // statement
11421 asdl_seq* statement_var;
11422 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010011423 (statement_var = statement_rule(p)) // statement
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011424 )
11425 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011426 _res = statement_var;
11427 if (_n == _children_capacity) {
11428 _children_capacity *= 2;
11429 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11430 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011431 PyErr_Format(PyExc_MemoryError, "realloc None");
11432 return NULL;
11433 }
11434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011435 _children[_n++] = _res;
11436 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011437 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011438 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011440 if (_n == 0 || p->error_indicator) {
11441 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011442 return NULL;
11443 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011444 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11445 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011446 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_11");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011447 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011448 return NULL;
11449 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011450 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11451 PyMem_Free(_children);
11452 _PyPegen_insert_memo(p, _start_mark, _loop1_11_type, _seq);
11453 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011454}
11455
Guido van Rossumc001c092020-04-30 12:12:19 -070011456// _loop0_13: ';' small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011457static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070011458_loop0_13_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011459{
11460 if (p->error_indicator) {
11461 return NULL;
11462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011463 void *_res = NULL;
11464 int _mark = p->mark;
11465 int _start_mark = p->mark;
11466 void **_children = PyMem_Malloc(sizeof(void *));
11467 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011468 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11469 return NULL;
11470 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011471 ssize_t _children_capacity = 1;
11472 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011473 { // ';' small_stmt
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011474 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011475 stmt_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011476 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011477 (_literal = _PyPegen_expect_token(p, 13)) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011478 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011479 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011480 )
11481 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011482 _res = elem;
11483 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011484 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011485 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011486 return NULL;
11487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011488 if (_n == _children_capacity) {
11489 _children_capacity *= 2;
11490 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11491 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011492 PyErr_Format(PyExc_MemoryError, "realloc None");
11493 return NULL;
11494 }
11495 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011496 _children[_n++] = _res;
11497 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011499 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011501 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11502 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011503 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_13");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011504 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011505 return NULL;
11506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011507 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11508 PyMem_Free(_children);
11509 _PyPegen_insert_memo(p, _start_mark, _loop0_13_type, _seq);
11510 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011511}
11512
Guido van Rossumc001c092020-04-30 12:12:19 -070011513// _gather_12: small_stmt _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011514static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070011515_gather_12_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011516{
11517 if (p->error_indicator) {
11518 return NULL;
11519 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011520 asdl_seq * _res = NULL;
11521 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011522 { // small_stmt _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011523 stmt_ty elem;
11524 asdl_seq * seq;
11525 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011526 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011527 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011528 (seq = _loop0_13_rule(p)) // _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011529 )
11530 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011531 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011532 goto done;
11533 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011534 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011535 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011536 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011537 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011538 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011539}
11540
Guido van Rossumc001c092020-04-30 12:12:19 -070011541// _tmp_14: 'import' | 'from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011542static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011543_tmp_14_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011544{
11545 if (p->error_indicator) {
11546 return NULL;
11547 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011548 void * _res = NULL;
11549 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011550 { // 'import'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011551 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011552 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011553 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011554 )
11555 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011556 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011557 goto done;
11558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011559 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011560 }
11561 { // 'from'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011562 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011563 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011564 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011565 )
11566 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011567 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011568 goto done;
11569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011570 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011571 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011572 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011573 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011574 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011575}
11576
Guido van Rossumc001c092020-04-30 12:12:19 -070011577// _tmp_15: 'def' | '@' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011578static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011579_tmp_15_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011580{
11581 if (p->error_indicator) {
11582 return NULL;
11583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011584 void * _res = NULL;
11585 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011586 { // 'def'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011587 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011588 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011589 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011590 )
11591 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011592 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011593 goto done;
11594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011595 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011596 }
11597 { // '@'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011598 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011599 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011600 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011601 )
11602 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011603 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011604 goto done;
11605 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011606 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011607 }
11608 { // ASYNC
Pablo Galindob796b3f2020-05-01 12:32:26 +010011609 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011610 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011611 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011612 )
11613 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011614 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011615 goto done;
11616 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011617 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011618 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011619 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011620 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011621 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011622}
11623
Guido van Rossumc001c092020-04-30 12:12:19 -070011624// _tmp_16: 'class' | '@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011625static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011626_tmp_16_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011627{
11628 if (p->error_indicator) {
11629 return NULL;
11630 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011631 void * _res = NULL;
11632 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011633 { // 'class'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011634 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011635 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011636 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011637 )
11638 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011639 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011640 goto done;
11641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011642 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011643 }
11644 { // '@'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011645 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011646 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011647 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011648 )
11649 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011650 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011651 goto done;
11652 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011653 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011654 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011655 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011656 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011657 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011658}
11659
Guido van Rossumc001c092020-04-30 12:12:19 -070011660// _tmp_17: 'with' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011661static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011662_tmp_17_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011663{
11664 if (p->error_indicator) {
11665 return NULL;
11666 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011667 void * _res = NULL;
11668 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011669 { // 'with'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011670 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011671 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011672 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011673 )
11674 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011675 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011676 goto done;
11677 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011678 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011679 }
11680 { // ASYNC
Pablo Galindob796b3f2020-05-01 12:32:26 +010011681 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011682 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011683 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011684 )
11685 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011686 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011687 goto done;
11688 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011689 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011691 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011692 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011693 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011694}
11695
Guido van Rossumc001c092020-04-30 12:12:19 -070011696// _tmp_18: 'for' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011697static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011698_tmp_18_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011699{
11700 if (p->error_indicator) {
11701 return NULL;
11702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011703 void * _res = NULL;
11704 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011705 { // 'for'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011706 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011707 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011708 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011709 )
11710 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011711 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011712 goto done;
11713 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011714 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011715 }
11716 { // ASYNC
Pablo Galindob796b3f2020-05-01 12:32:26 +010011717 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011718 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011719 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011720 )
11721 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011722 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011723 goto done;
11724 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011725 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011726 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011727 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011728 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011729 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011730}
11731
Guido van Rossumc001c092020-04-30 12:12:19 -070011732// _tmp_19: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011733static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011734_tmp_19_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011735{
11736 if (p->error_indicator) {
11737 return NULL;
11738 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011739 void * _res = NULL;
11740 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011741 { // '=' annotated_rhs
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011742 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011743 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011744 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011745 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011746 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011747 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011748 )
11749 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011750 _res = d;
11751 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011752 p->error_indicator = 1;
11753 return NULL;
11754 }
11755 goto done;
11756 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011757 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011758 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011759 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011760 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011761 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011762}
11763
Guido van Rossumc001c092020-04-30 12:12:19 -070011764// _tmp_20: '(' inside_paren_ann_assign_target ')' | ann_assign_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011765static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011766_tmp_20_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011767{
11768 if (p->error_indicator) {
11769 return NULL;
11770 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011771 void * _res = NULL;
11772 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011773 { // '(' inside_paren_ann_assign_target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011774 Token * _literal;
11775 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011776 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011777 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011778 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011779 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011780 (b = inside_paren_ann_assign_target_rule(p)) // inside_paren_ann_assign_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011781 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011782 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011783 )
11784 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011785 _res = b;
11786 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011787 p->error_indicator = 1;
11788 return NULL;
11789 }
11790 goto done;
11791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011792 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011793 }
11794 { // ann_assign_subscript_attribute_target
11795 expr_ty ann_assign_subscript_attribute_target_var;
11796 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011797 (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 +010011798 )
11799 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011800 _res = ann_assign_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011801 goto done;
11802 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011803 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011804 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011805 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011806 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011807 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011808}
11809
Guido van Rossumc001c092020-04-30 12:12:19 -070011810// _tmp_21: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011811static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011812_tmp_21_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011813{
11814 if (p->error_indicator) {
11815 return NULL;
11816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011817 void * _res = NULL;
11818 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011819 { // '=' annotated_rhs
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011820 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011821 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011822 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011823 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011824 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011825 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011826 )
11827 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011828 _res = d;
11829 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011830 p->error_indicator = 1;
11831 return NULL;
11832 }
11833 goto done;
11834 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011835 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011837 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011838 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011839 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011840}
11841
Guido van Rossumc001c092020-04-30 12:12:19 -070011842// _loop1_22: (star_targets '=')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011843static asdl_seq *
11844_loop1_22_rule(Parser *p)
11845{
11846 if (p->error_indicator) {
11847 return NULL;
11848 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011849 void *_res = NULL;
11850 int _mark = p->mark;
11851 int _start_mark = p->mark;
11852 void **_children = PyMem_Malloc(sizeof(void *));
11853 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011854 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11855 return NULL;
11856 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011857 ssize_t _children_capacity = 1;
11858 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011859 { // (star_targets '=')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011860 void *_tmp_134_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011861 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010011862 (_tmp_134_var = _tmp_134_rule(p)) // star_targets '='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011863 )
11864 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011865 _res = _tmp_134_var;
11866 if (_n == _children_capacity) {
11867 _children_capacity *= 2;
11868 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11869 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011870 PyErr_Format(PyExc_MemoryError, "realloc None");
11871 return NULL;
11872 }
11873 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011874 _children[_n++] = _res;
11875 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011877 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011879 if (_n == 0 || p->error_indicator) {
11880 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011881 return NULL;
11882 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011883 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11884 if (!_seq) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011885 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_22");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011886 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011887 return NULL;
11888 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011889 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11890 PyMem_Free(_children);
11891 _PyPegen_insert_memo(p, _start_mark, _loop1_22_type, _seq);
11892 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011893}
11894
Guido van Rossumc001c092020-04-30 12:12:19 -070011895// _tmp_23: yield_expr | star_expressions
11896static void *
11897_tmp_23_rule(Parser *p)
11898{
11899 if (p->error_indicator) {
11900 return NULL;
11901 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011902 void * _res = NULL;
11903 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011904 { // yield_expr
11905 expr_ty yield_expr_var;
11906 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011907 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070011908 )
11909 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011910 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070011911 goto done;
11912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011913 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011914 }
11915 { // star_expressions
11916 expr_ty star_expressions_var;
11917 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011918 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070011919 )
11920 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011921 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070011922 goto done;
11923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011924 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011925 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011926 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011927 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011928 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011929}
11930
11931// _tmp_24: yield_expr | star_expressions
11932static void *
11933_tmp_24_rule(Parser *p)
11934{
11935 if (p->error_indicator) {
11936 return NULL;
11937 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011938 void * _res = NULL;
11939 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011940 { // yield_expr
11941 expr_ty yield_expr_var;
11942 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011943 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070011944 )
11945 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011946 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070011947 goto done;
11948 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011949 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011950 }
11951 { // star_expressions
11952 expr_ty star_expressions_var;
11953 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011954 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070011955 )
11956 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011957 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070011958 goto done;
11959 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011960 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011962 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011963 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011964 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011965}
11966
11967// _loop0_26: ',' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011968static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070011969_loop0_26_rule(Parser *p)
11970{
11971 if (p->error_indicator) {
11972 return NULL;
11973 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011974 void *_res = NULL;
11975 int _mark = p->mark;
11976 int _start_mark = p->mark;
11977 void **_children = PyMem_Malloc(sizeof(void *));
11978 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011979 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11980 return NULL;
11981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011982 ssize_t _children_capacity = 1;
11983 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011984 { // ',' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011985 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011986 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011987 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011988 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011989 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011990 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070011991 )
11992 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011993 _res = elem;
11994 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011995 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011996 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011997 return NULL;
11998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011999 if (_n == _children_capacity) {
12000 _children_capacity *= 2;
12001 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12002 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012003 PyErr_Format(PyExc_MemoryError, "realloc None");
12004 return NULL;
12005 }
12006 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012007 _children[_n++] = _res;
12008 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012010 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012011 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012012 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12013 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012014 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_26");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012015 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012016 return NULL;
12017 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012018 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12019 PyMem_Free(_children);
12020 _PyPegen_insert_memo(p, _start_mark, _loop0_26_type, _seq);
12021 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012022}
12023
12024// _gather_25: NAME _loop0_26
12025static asdl_seq *
12026_gather_25_rule(Parser *p)
12027{
12028 if (p->error_indicator) {
12029 return NULL;
12030 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012031 asdl_seq * _res = NULL;
12032 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012033 { // NAME _loop0_26
12034 expr_ty elem;
12035 asdl_seq * seq;
12036 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012037 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070012038 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012039 (seq = _loop0_26_rule(p)) // _loop0_26
Guido van Rossumc001c092020-04-30 12:12:19 -070012040 )
12041 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012042 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012043 goto done;
12044 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012045 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012046 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012047 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012048 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012049 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012050}
12051
12052// _loop0_28: ',' NAME
12053static asdl_seq *
12054_loop0_28_rule(Parser *p)
12055{
12056 if (p->error_indicator) {
12057 return NULL;
12058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012059 void *_res = NULL;
12060 int _mark = p->mark;
12061 int _start_mark = p->mark;
12062 void **_children = PyMem_Malloc(sizeof(void *));
12063 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012064 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12065 return NULL;
12066 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012067 ssize_t _children_capacity = 1;
12068 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012069 { // ',' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012070 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012071 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012072 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012073 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012074 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012075 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070012076 )
12077 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012078 _res = elem;
12079 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012080 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012081 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012082 return NULL;
12083 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012084 if (_n == _children_capacity) {
12085 _children_capacity *= 2;
12086 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12087 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012088 PyErr_Format(PyExc_MemoryError, "realloc None");
12089 return NULL;
12090 }
12091 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012092 _children[_n++] = _res;
12093 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012095 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012097 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12098 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012099 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_28");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012100 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012101 return NULL;
12102 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012103 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12104 PyMem_Free(_children);
12105 _PyPegen_insert_memo(p, _start_mark, _loop0_28_type, _seq);
12106 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012107}
12108
12109// _gather_27: NAME _loop0_28
12110static asdl_seq *
12111_gather_27_rule(Parser *p)
12112{
12113 if (p->error_indicator) {
12114 return NULL;
12115 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012116 asdl_seq * _res = NULL;
12117 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012118 { // NAME _loop0_28
12119 expr_ty elem;
12120 asdl_seq * seq;
12121 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012122 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070012123 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012124 (seq = _loop0_28_rule(p)) // _loop0_28
Guido van Rossumc001c092020-04-30 12:12:19 -070012125 )
12126 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012127 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012128 goto done;
12129 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012130 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012131 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012132 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012133 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012134 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012135}
12136
12137// _tmp_29: ',' expression
12138static void *
12139_tmp_29_rule(Parser *p)
12140{
12141 if (p->error_indicator) {
12142 return NULL;
12143 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012144 void * _res = NULL;
12145 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012146 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012147 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012148 expr_ty z;
12149 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012150 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012151 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012152 (z = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012153 )
12154 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012155 _res = z;
12156 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012157 p->error_indicator = 1;
12158 return NULL;
12159 }
12160 goto done;
12161 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012162 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012163 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012164 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012165 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012166 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012167}
12168
12169// _loop0_30: ('.' | '...')
12170static asdl_seq *
12171_loop0_30_rule(Parser *p)
12172{
12173 if (p->error_indicator) {
12174 return NULL;
12175 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012176 void *_res = NULL;
12177 int _mark = p->mark;
12178 int _start_mark = p->mark;
12179 void **_children = PyMem_Malloc(sizeof(void *));
12180 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012181 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12182 return NULL;
12183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012184 ssize_t _children_capacity = 1;
12185 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012186 { // ('.' | '...')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012187 void *_tmp_135_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012188 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010012189 (_tmp_135_var = _tmp_135_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070012190 )
12191 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012192 _res = _tmp_135_var;
12193 if (_n == _children_capacity) {
12194 _children_capacity *= 2;
12195 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12196 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012197 PyErr_Format(PyExc_MemoryError, "realloc None");
12198 return NULL;
12199 }
12200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012201 _children[_n++] = _res;
12202 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012203 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012204 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012205 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012206 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12207 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012208 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_30");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012209 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012210 return NULL;
12211 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012212 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12213 PyMem_Free(_children);
12214 _PyPegen_insert_memo(p, _start_mark, _loop0_30_type, _seq);
12215 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012216}
12217
12218// _loop1_31: ('.' | '...')
12219static asdl_seq *
12220_loop1_31_rule(Parser *p)
12221{
12222 if (p->error_indicator) {
12223 return NULL;
12224 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012225 void *_res = NULL;
12226 int _mark = p->mark;
12227 int _start_mark = p->mark;
12228 void **_children = PyMem_Malloc(sizeof(void *));
12229 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012230 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12231 return NULL;
12232 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012233 ssize_t _children_capacity = 1;
12234 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012235 { // ('.' | '...')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012236 void *_tmp_136_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012237 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010012238 (_tmp_136_var = _tmp_136_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070012239 )
12240 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012241 _res = _tmp_136_var;
12242 if (_n == _children_capacity) {
12243 _children_capacity *= 2;
12244 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12245 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012246 PyErr_Format(PyExc_MemoryError, "realloc None");
12247 return NULL;
12248 }
12249 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012250 _children[_n++] = _res;
12251 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012253 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012254 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012255 if (_n == 0 || p->error_indicator) {
12256 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012257 return NULL;
12258 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012259 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12260 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012261 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_31");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012262 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012263 return NULL;
12264 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012265 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12266 PyMem_Free(_children);
12267 _PyPegen_insert_memo(p, _start_mark, _loop1_31_type, _seq);
12268 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012269}
12270
12271// _loop0_33: ',' import_from_as_name
12272static asdl_seq *
12273_loop0_33_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012274{
12275 if (p->error_indicator) {
12276 return NULL;
12277 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012278 void *_res = NULL;
12279 int _mark = p->mark;
12280 int _start_mark = p->mark;
12281 void **_children = PyMem_Malloc(sizeof(void *));
12282 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012283 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12284 return NULL;
12285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012286 ssize_t _children_capacity = 1;
12287 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012288 { // ',' import_from_as_name
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012289 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012290 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012291 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012292 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012293 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012294 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012295 )
12296 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012297 _res = elem;
12298 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012299 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012300 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012301 return NULL;
12302 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012303 if (_n == _children_capacity) {
12304 _children_capacity *= 2;
12305 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12306 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012307 PyErr_Format(PyExc_MemoryError, "realloc None");
12308 return NULL;
12309 }
12310 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012311 _children[_n++] = _res;
12312 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012313 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012314 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012315 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012316 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12317 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012318 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_33");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012319 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012320 return NULL;
12321 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012322 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12323 PyMem_Free(_children);
12324 _PyPegen_insert_memo(p, _start_mark, _loop0_33_type, _seq);
12325 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012326}
12327
Guido van Rossumc001c092020-04-30 12:12:19 -070012328// _gather_32: import_from_as_name _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012329static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012330_gather_32_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012331{
12332 if (p->error_indicator) {
12333 return NULL;
12334 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012335 asdl_seq * _res = NULL;
12336 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012337 { // import_from_as_name _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012338 alias_ty elem;
12339 asdl_seq * seq;
12340 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012341 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012342 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012343 (seq = _loop0_33_rule(p)) // _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012344 )
12345 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012346 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012347 goto done;
12348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012349 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012350 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012351 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012352 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012353 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012354}
12355
Guido van Rossumc001c092020-04-30 12:12:19 -070012356// _tmp_34: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012357static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070012358_tmp_34_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012359{
12360 if (p->error_indicator) {
12361 return NULL;
12362 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012363 void * _res = NULL;
12364 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012365 { // 'as' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012366 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012367 expr_ty z;
12368 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012369 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012370 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012371 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012372 )
12373 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012374 _res = z;
12375 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012376 p->error_indicator = 1;
12377 return NULL;
12378 }
12379 goto done;
12380 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012381 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012383 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012384 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012385 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012386}
12387
Guido van Rossumc001c092020-04-30 12:12:19 -070012388// _loop0_36: ',' dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012389static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012390_loop0_36_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012391{
12392 if (p->error_indicator) {
12393 return NULL;
12394 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012395 void *_res = NULL;
12396 int _mark = p->mark;
12397 int _start_mark = p->mark;
12398 void **_children = PyMem_Malloc(sizeof(void *));
12399 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012400 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12401 return NULL;
12402 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012403 ssize_t _children_capacity = 1;
12404 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012405 { // ',' dotted_as_name
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012406 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012407 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012408 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012409 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012410 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012411 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012412 )
12413 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012414 _res = elem;
12415 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012416 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012417 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012418 return NULL;
12419 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012420 if (_n == _children_capacity) {
12421 _children_capacity *= 2;
12422 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12423 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012424 PyErr_Format(PyExc_MemoryError, "realloc None");
12425 return NULL;
12426 }
12427 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012428 _children[_n++] = _res;
12429 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012430 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012431 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012432 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012433 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12434 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012435 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_36");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012436 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012437 return NULL;
12438 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012439 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12440 PyMem_Free(_children);
12441 _PyPegen_insert_memo(p, _start_mark, _loop0_36_type, _seq);
12442 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012443}
12444
Guido van Rossumc001c092020-04-30 12:12:19 -070012445// _gather_35: dotted_as_name _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012446static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012447_gather_35_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012448{
12449 if (p->error_indicator) {
12450 return NULL;
12451 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012452 asdl_seq * _res = NULL;
12453 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012454 { // dotted_as_name _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012455 alias_ty elem;
12456 asdl_seq * seq;
12457 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012458 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012459 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012460 (seq = _loop0_36_rule(p)) // _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012461 )
12462 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012463 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012464 goto done;
12465 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012466 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012467 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012468 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012469 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012470 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012471}
12472
Guido van Rossumc001c092020-04-30 12:12:19 -070012473// _tmp_37: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012474static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070012475_tmp_37_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012476{
12477 if (p->error_indicator) {
12478 return NULL;
12479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012480 void * _res = NULL;
12481 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012482 { // 'as' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012483 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012484 expr_ty z;
12485 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012486 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012487 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012488 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012489 )
12490 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012491 _res = z;
12492 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012493 p->error_indicator = 1;
12494 return NULL;
12495 }
12496 goto done;
12497 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012498 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012499 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012500 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012501 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012502 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012503}
12504
Guido van Rossumc001c092020-04-30 12:12:19 -070012505// _loop0_39: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012506static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012507_loop0_39_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012508{
12509 if (p->error_indicator) {
12510 return NULL;
12511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012512 void *_res = NULL;
12513 int _mark = p->mark;
12514 int _start_mark = p->mark;
12515 void **_children = PyMem_Malloc(sizeof(void *));
12516 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012517 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12518 return NULL;
12519 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012520 ssize_t _children_capacity = 1;
12521 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012522 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012523 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012524 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012525 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012526 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012527 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012528 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012529 )
12530 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012531 _res = elem;
12532 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012533 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012534 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012535 return NULL;
12536 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012537 if (_n == _children_capacity) {
12538 _children_capacity *= 2;
12539 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12540 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012541 PyErr_Format(PyExc_MemoryError, "realloc None");
12542 return NULL;
12543 }
12544 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012545 _children[_n++] = _res;
12546 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012547 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012548 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012549 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012550 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12551 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012552 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_39");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012553 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012554 return NULL;
12555 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012556 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12557 PyMem_Free(_children);
12558 _PyPegen_insert_memo(p, _start_mark, _loop0_39_type, _seq);
12559 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012560}
12561
Guido van Rossumc001c092020-04-30 12:12:19 -070012562// _gather_38: with_item _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012563static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012564_gather_38_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012565{
12566 if (p->error_indicator) {
12567 return NULL;
12568 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012569 asdl_seq * _res = NULL;
12570 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012571 { // with_item _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012572 withitem_ty elem;
12573 asdl_seq * seq;
12574 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012575 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012576 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012577 (seq = _loop0_39_rule(p)) // _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012578 )
12579 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012580 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012581 goto done;
12582 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012583 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012585 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012586 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012587 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012588}
12589
Guido van Rossumc001c092020-04-30 12:12:19 -070012590// _loop0_41: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012591static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012592_loop0_41_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012593{
12594 if (p->error_indicator) {
12595 return NULL;
12596 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012597 void *_res = NULL;
12598 int _mark = p->mark;
12599 int _start_mark = p->mark;
12600 void **_children = PyMem_Malloc(sizeof(void *));
12601 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012602 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12603 return NULL;
12604 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012605 ssize_t _children_capacity = 1;
12606 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012607 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012608 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012609 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012610 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012611 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012612 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012613 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012614 )
12615 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012616 _res = elem;
12617 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012618 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012619 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012620 return NULL;
12621 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012622 if (_n == _children_capacity) {
12623 _children_capacity *= 2;
12624 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12625 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012626 PyErr_Format(PyExc_MemoryError, "realloc None");
12627 return NULL;
12628 }
12629 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012630 _children[_n++] = _res;
12631 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012632 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012633 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012634 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012635 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12636 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012637 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_41");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012638 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012639 return NULL;
12640 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012641 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12642 PyMem_Free(_children);
12643 _PyPegen_insert_memo(p, _start_mark, _loop0_41_type, _seq);
12644 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012645}
12646
Guido van Rossumc001c092020-04-30 12:12:19 -070012647// _gather_40: with_item _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012648static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012649_gather_40_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012650{
12651 if (p->error_indicator) {
12652 return NULL;
12653 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012654 asdl_seq * _res = NULL;
12655 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012656 { // with_item _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012657 withitem_ty elem;
12658 asdl_seq * seq;
12659 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012660 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012661 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012662 (seq = _loop0_41_rule(p)) // _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012663 )
12664 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012665 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012666 goto done;
12667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012668 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012669 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012670 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012671 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012672 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012673}
12674
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012675// _loop0_43: ',' with_item
12676static asdl_seq *
12677_loop0_43_rule(Parser *p)
12678{
12679 if (p->error_indicator) {
12680 return NULL;
12681 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012682 void *_res = NULL;
12683 int _mark = p->mark;
12684 int _start_mark = p->mark;
12685 void **_children = PyMem_Malloc(sizeof(void *));
12686 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012687 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12688 return NULL;
12689 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012690 ssize_t _children_capacity = 1;
12691 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012692 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012693 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012694 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012695 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012696 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012697 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012698 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012699 )
12700 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012701 _res = elem;
12702 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012703 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012704 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012705 return NULL;
12706 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012707 if (_n == _children_capacity) {
12708 _children_capacity *= 2;
12709 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12710 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012711 PyErr_Format(PyExc_MemoryError, "realloc None");
12712 return NULL;
12713 }
12714 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012715 _children[_n++] = _res;
12716 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012717 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012718 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012719 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012720 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12721 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012722 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_43");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012723 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012724 return NULL;
12725 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012726 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12727 PyMem_Free(_children);
12728 _PyPegen_insert_memo(p, _start_mark, _loop0_43_type, _seq);
12729 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012730}
12731
12732// _gather_42: with_item _loop0_43
12733static asdl_seq *
12734_gather_42_rule(Parser *p)
12735{
12736 if (p->error_indicator) {
12737 return NULL;
12738 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012739 asdl_seq * _res = NULL;
12740 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012741 { // with_item _loop0_43
12742 withitem_ty elem;
12743 asdl_seq * seq;
12744 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012745 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012746 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012747 (seq = _loop0_43_rule(p)) // _loop0_43
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012748 )
12749 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012750 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012751 goto done;
12752 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012753 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012754 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012755 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012756 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012757 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012758}
12759
12760// _loop0_45: ',' with_item
12761static asdl_seq *
12762_loop0_45_rule(Parser *p)
12763{
12764 if (p->error_indicator) {
12765 return NULL;
12766 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012767 void *_res = NULL;
12768 int _mark = p->mark;
12769 int _start_mark = p->mark;
12770 void **_children = PyMem_Malloc(sizeof(void *));
12771 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012772 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12773 return NULL;
12774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012775 ssize_t _children_capacity = 1;
12776 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012777 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012778 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012779 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012780 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012781 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012782 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012783 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012784 )
12785 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012786 _res = elem;
12787 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012788 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012789 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012790 return NULL;
12791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012792 if (_n == _children_capacity) {
12793 _children_capacity *= 2;
12794 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12795 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012796 PyErr_Format(PyExc_MemoryError, "realloc None");
12797 return NULL;
12798 }
12799 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012800 _children[_n++] = _res;
12801 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012802 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012803 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012804 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012805 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12806 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012807 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_45");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012808 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012809 return NULL;
12810 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012811 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12812 PyMem_Free(_children);
12813 _PyPegen_insert_memo(p, _start_mark, _loop0_45_type, _seq);
12814 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012815}
12816
12817// _gather_44: with_item _loop0_45
12818static asdl_seq *
12819_gather_44_rule(Parser *p)
12820{
12821 if (p->error_indicator) {
12822 return NULL;
12823 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012824 asdl_seq * _res = NULL;
12825 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012826 { // with_item _loop0_45
12827 withitem_ty elem;
12828 asdl_seq * seq;
12829 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012830 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012831 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012832 (seq = _loop0_45_rule(p)) // _loop0_45
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012833 )
12834 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012835 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012836 goto done;
12837 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012838 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012839 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012840 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012841 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012842 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012843}
12844
12845// _tmp_46: 'as' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012846static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012847_tmp_46_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012848{
12849 if (p->error_indicator) {
12850 return NULL;
12851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012852 void * _res = NULL;
12853 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012854 { // 'as' target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012855 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012856 expr_ty t;
12857 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012858 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012859 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012860 (t = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012861 )
12862 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012863 _res = t;
12864 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012865 p->error_indicator = 1;
12866 return NULL;
12867 }
12868 goto done;
12869 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012870 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012871 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012872 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012873 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012874 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012875}
12876
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012877// _loop1_47: except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012878static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012879_loop1_47_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012880{
12881 if (p->error_indicator) {
12882 return NULL;
12883 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012884 void *_res = NULL;
12885 int _mark = p->mark;
12886 int _start_mark = p->mark;
12887 void **_children = PyMem_Malloc(sizeof(void *));
12888 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012889 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12890 return NULL;
12891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012892 ssize_t _children_capacity = 1;
12893 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012894 { // except_block
12895 excepthandler_ty except_block_var;
12896 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010012897 (except_block_var = except_block_rule(p)) // except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012898 )
12899 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012900 _res = except_block_var;
12901 if (_n == _children_capacity) {
12902 _children_capacity *= 2;
12903 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12904 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012905 PyErr_Format(PyExc_MemoryError, "realloc None");
12906 return NULL;
12907 }
12908 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012909 _children[_n++] = _res;
12910 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012911 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012912 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012913 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012914 if (_n == 0 || p->error_indicator) {
12915 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012916 return NULL;
12917 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012918 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12919 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012920 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_47");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012921 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012922 return NULL;
12923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012924 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12925 PyMem_Free(_children);
12926 _PyPegen_insert_memo(p, _start_mark, _loop1_47_type, _seq);
12927 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012928}
12929
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012930// _tmp_48: 'as' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012931static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012932_tmp_48_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012933{
12934 if (p->error_indicator) {
12935 return NULL;
12936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012937 void * _res = NULL;
12938 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012939 { // 'as' target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012940 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012941 expr_ty z;
12942 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012943 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012944 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012945 (z = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012946 )
12947 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012948 _res = z;
12949 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012950 p->error_indicator = 1;
12951 return NULL;
12952 }
12953 goto done;
12954 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012955 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012957 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012958 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012959 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012960}
12961
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012962// _tmp_49: 'from' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012963static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012964_tmp_49_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012965{
12966 if (p->error_indicator) {
12967 return NULL;
12968 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012969 void * _res = NULL;
12970 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012971 { // 'from' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012972 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012973 expr_ty z;
12974 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012975 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012976 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012977 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012978 )
12979 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012980 _res = z;
12981 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012982 p->error_indicator = 1;
12983 return NULL;
12984 }
12985 goto done;
12986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012987 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012988 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012989 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012990 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012991 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012992}
12993
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012994// _tmp_50: '->' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012995static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012996_tmp_50_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012997{
12998 if (p->error_indicator) {
12999 return NULL;
13000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013001 void * _res = NULL;
13002 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013003 { // '->' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013004 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070013005 expr_ty z;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013006 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013007 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013008 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013009 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013010 )
13011 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013012 _res = z;
13013 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013014 p->error_indicator = 1;
13015 return NULL;
13016 }
13017 goto done;
13018 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013019 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013021 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013022 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013023 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013024}
13025
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013026// _tmp_51: '->' expression
Guido van Rossumc001c092020-04-30 12:12:19 -070013027static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013028_tmp_51_rule(Parser *p)
13029{
13030 if (p->error_indicator) {
13031 return NULL;
13032 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013033 void * _res = NULL;
13034 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013035 { // '->' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013036 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013037 expr_ty z;
13038 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013039 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013040 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013041 (z = expression_rule(p)) // expression
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013042 )
13043 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013044 _res = z;
13045 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013046 p->error_indicator = 1;
13047 return NULL;
13048 }
13049 goto done;
13050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013051 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013052 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013053 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013054 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013055 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013056}
13057
13058// _tmp_52: NEWLINE INDENT
13059static void *
13060_tmp_52_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013061{
13062 if (p->error_indicator) {
13063 return NULL;
13064 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013065 void * _res = NULL;
13066 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013067 { // NEWLINE INDENT
Pablo Galindob796b3f2020-05-01 12:32:26 +010013068 Token * indent_var;
13069 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013070 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013071 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070013072 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013073 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070013074 )
13075 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013076 _res = _PyPegen_dummy_name(p, newline_var, indent_var);
Guido van Rossumc001c092020-04-30 12:12:19 -070013077 goto done;
13078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013079 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013081 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013082 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013083 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013084}
13085
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013086// _loop0_53: param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013087static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013088_loop0_53_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013089{
13090 if (p->error_indicator) {
13091 return NULL;
13092 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013093 void *_res = NULL;
13094 int _mark = p->mark;
13095 int _start_mark = p->mark;
13096 void **_children = PyMem_Malloc(sizeof(void *));
13097 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013098 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13099 return NULL;
13100 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013101 ssize_t _children_capacity = 1;
13102 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013103 { // param_no_default
13104 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013105 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013106 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013107 )
13108 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013109 _res = param_no_default_var;
13110 if (_n == _children_capacity) {
13111 _children_capacity *= 2;
13112 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13113 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013114 PyErr_Format(PyExc_MemoryError, "realloc None");
13115 return NULL;
13116 }
13117 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013118 _children[_n++] = _res;
13119 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013121 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013122 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013123 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13124 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013125 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_53");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013126 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013127 return NULL;
13128 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013129 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13130 PyMem_Free(_children);
13131 _PyPegen_insert_memo(p, _start_mark, _loop0_53_type, _seq);
13132 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013133}
13134
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013135// _loop0_54: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013136static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013137_loop0_54_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013138{
13139 if (p->error_indicator) {
13140 return NULL;
13141 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013142 void *_res = NULL;
13143 int _mark = p->mark;
13144 int _start_mark = p->mark;
13145 void **_children = PyMem_Malloc(sizeof(void *));
13146 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013147 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13148 return NULL;
13149 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013150 ssize_t _children_capacity = 1;
13151 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013152 { // param_with_default
13153 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013154 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013155 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013156 )
13157 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013158 _res = param_with_default_var;
13159 if (_n == _children_capacity) {
13160 _children_capacity *= 2;
13161 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13162 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013163 PyErr_Format(PyExc_MemoryError, "realloc None");
13164 return NULL;
13165 }
13166 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013167 _children[_n++] = _res;
13168 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013170 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013172 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13173 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013174 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_54");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013175 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013176 return NULL;
13177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013178 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13179 PyMem_Free(_children);
13180 _PyPegen_insert_memo(p, _start_mark, _loop0_54_type, _seq);
13181 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013182}
13183
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013184// _loop0_55: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013185static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013186_loop0_55_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013187{
13188 if (p->error_indicator) {
13189 return NULL;
13190 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013191 void *_res = NULL;
13192 int _mark = p->mark;
13193 int _start_mark = p->mark;
13194 void **_children = PyMem_Malloc(sizeof(void *));
13195 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013196 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13197 return NULL;
13198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013199 ssize_t _children_capacity = 1;
13200 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013201 { // param_with_default
13202 NameDefaultPair* param_with_default_var;
13203 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013204 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013205 )
13206 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013207 _res = param_with_default_var;
13208 if (_n == _children_capacity) {
13209 _children_capacity *= 2;
13210 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13211 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013212 PyErr_Format(PyExc_MemoryError, "realloc None");
13213 return NULL;
13214 }
13215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013216 _children[_n++] = _res;
13217 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013218 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013219 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013220 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013221 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13222 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013223 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_55");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013224 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013225 return NULL;
13226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013227 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13228 PyMem_Free(_children);
13229 _PyPegen_insert_memo(p, _start_mark, _loop0_55_type, _seq);
13230 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013231}
13232
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013233// _loop1_56: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013234static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013235_loop1_56_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013236{
13237 if (p->error_indicator) {
13238 return NULL;
13239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013240 void *_res = NULL;
13241 int _mark = p->mark;
13242 int _start_mark = p->mark;
13243 void **_children = PyMem_Malloc(sizeof(void *));
13244 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013245 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13246 return NULL;
13247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013248 ssize_t _children_capacity = 1;
13249 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013250 { // param_no_default
13251 arg_ty param_no_default_var;
13252 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013253 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013254 )
13255 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013256 _res = param_no_default_var;
13257 if (_n == _children_capacity) {
13258 _children_capacity *= 2;
13259 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13260 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013261 PyErr_Format(PyExc_MemoryError, "realloc None");
13262 return NULL;
13263 }
13264 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013265 _children[_n++] = _res;
13266 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013268 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013269 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013270 if (_n == 0 || p->error_indicator) {
13271 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013272 return NULL;
13273 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013274 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13275 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013276 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_56");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013277 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013278 return NULL;
13279 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013280 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13281 PyMem_Free(_children);
13282 _PyPegen_insert_memo(p, _start_mark, _loop1_56_type, _seq);
13283 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013284}
13285
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013286// _loop0_57: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013287static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013288_loop0_57_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013289{
13290 if (p->error_indicator) {
13291 return NULL;
13292 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013293 void *_res = NULL;
13294 int _mark = p->mark;
13295 int _start_mark = p->mark;
13296 void **_children = PyMem_Malloc(sizeof(void *));
13297 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013298 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13299 return NULL;
13300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013301 ssize_t _children_capacity = 1;
13302 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013303 { // param_with_default
13304 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013305 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013306 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013307 )
13308 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013309 _res = param_with_default_var;
13310 if (_n == _children_capacity) {
13311 _children_capacity *= 2;
13312 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13313 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013314 PyErr_Format(PyExc_MemoryError, "realloc None");
13315 return NULL;
13316 }
13317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013318 _children[_n++] = _res;
13319 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013320 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013321 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013323 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13324 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013325 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_57");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013326 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013327 return NULL;
13328 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013329 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13330 PyMem_Free(_children);
13331 _PyPegen_insert_memo(p, _start_mark, _loop0_57_type, _seq);
13332 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013333}
13334
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013335// _loop1_58: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013336static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013337_loop1_58_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013338{
13339 if (p->error_indicator) {
13340 return NULL;
13341 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013342 void *_res = NULL;
13343 int _mark = p->mark;
13344 int _start_mark = p->mark;
13345 void **_children = PyMem_Malloc(sizeof(void *));
13346 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013347 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13348 return NULL;
13349 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013350 ssize_t _children_capacity = 1;
13351 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013352 { // param_with_default
13353 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013354 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013355 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013356 )
13357 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013358 _res = param_with_default_var;
13359 if (_n == _children_capacity) {
13360 _children_capacity *= 2;
13361 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13362 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013363 PyErr_Format(PyExc_MemoryError, "realloc None");
13364 return NULL;
13365 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013367 _children[_n++] = _res;
13368 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013370 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013371 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013372 if (_n == 0 || p->error_indicator) {
13373 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013374 return NULL;
13375 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013376 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13377 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013378 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_58");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013379 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013380 return NULL;
13381 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013382 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13383 PyMem_Free(_children);
13384 _PyPegen_insert_memo(p, _start_mark, _loop1_58_type, _seq);
13385 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013386}
13387
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013388// _loop1_59: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013389static asdl_seq *
13390_loop1_59_rule(Parser *p)
13391{
13392 if (p->error_indicator) {
13393 return NULL;
13394 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013395 void *_res = NULL;
13396 int _mark = p->mark;
13397 int _start_mark = p->mark;
13398 void **_children = PyMem_Malloc(sizeof(void *));
13399 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013400 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13401 return NULL;
13402 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013403 ssize_t _children_capacity = 1;
13404 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013405 { // param_no_default
13406 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013407 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013408 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013409 )
13410 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013411 _res = param_no_default_var;
13412 if (_n == _children_capacity) {
13413 _children_capacity *= 2;
13414 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13415 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013416 PyErr_Format(PyExc_MemoryError, "realloc None");
13417 return NULL;
13418 }
13419 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013420 _children[_n++] = _res;
13421 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013422 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013423 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013424 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013425 if (_n == 0 || p->error_indicator) {
13426 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013427 return NULL;
13428 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013429 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13430 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013431 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_59");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013432 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013433 return NULL;
13434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013435 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13436 PyMem_Free(_children);
13437 _PyPegen_insert_memo(p, _start_mark, _loop1_59_type, _seq);
13438 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013439}
13440
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013441// _loop1_60: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013442static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013443_loop1_60_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013444{
13445 if (p->error_indicator) {
13446 return NULL;
13447 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013448 void *_res = NULL;
13449 int _mark = p->mark;
13450 int _start_mark = p->mark;
13451 void **_children = PyMem_Malloc(sizeof(void *));
13452 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013453 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13454 return NULL;
13455 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013456 ssize_t _children_capacity = 1;
13457 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013458 { // param_no_default
13459 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013460 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013461 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013462 )
13463 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013464 _res = param_no_default_var;
13465 if (_n == _children_capacity) {
13466 _children_capacity *= 2;
13467 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13468 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013469 PyErr_Format(PyExc_MemoryError, "realloc None");
13470 return NULL;
13471 }
13472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013473 _children[_n++] = _res;
13474 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013475 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013476 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013477 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013478 if (_n == 0 || p->error_indicator) {
13479 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013480 return NULL;
13481 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013482 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13483 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013484 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_60");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013485 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013486 return NULL;
13487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013488 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13489 PyMem_Free(_children);
13490 _PyPegen_insert_memo(p, _start_mark, _loop1_60_type, _seq);
13491 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013492}
13493
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013494// _loop0_61: param_no_default
13495static asdl_seq *
13496_loop0_61_rule(Parser *p)
13497{
13498 if (p->error_indicator) {
13499 return NULL;
13500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013501 void *_res = NULL;
13502 int _mark = p->mark;
13503 int _start_mark = p->mark;
13504 void **_children = PyMem_Malloc(sizeof(void *));
13505 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013506 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13507 return NULL;
13508 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013509 ssize_t _children_capacity = 1;
13510 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013511 { // param_no_default
13512 arg_ty param_no_default_var;
13513 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013514 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013515 )
13516 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013517 _res = param_no_default_var;
13518 if (_n == _children_capacity) {
13519 _children_capacity *= 2;
13520 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13521 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013522 PyErr_Format(PyExc_MemoryError, "realloc None");
13523 return NULL;
13524 }
13525 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013526 _children[_n++] = _res;
13527 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013529 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013530 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013531 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13532 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013533 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_61");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013534 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013535 return NULL;
13536 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013537 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13538 PyMem_Free(_children);
13539 _PyPegen_insert_memo(p, _start_mark, _loop0_61_type, _seq);
13540 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013541}
13542
13543// _loop1_62: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013544static asdl_seq *
13545_loop1_62_rule(Parser *p)
13546{
13547 if (p->error_indicator) {
13548 return NULL;
13549 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013550 void *_res = NULL;
13551 int _mark = p->mark;
13552 int _start_mark = p->mark;
13553 void **_children = PyMem_Malloc(sizeof(void *));
13554 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013555 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13556 return NULL;
13557 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013558 ssize_t _children_capacity = 1;
13559 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013560 { // param_with_default
13561 NameDefaultPair* param_with_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013562 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013563 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013564 )
13565 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013566 _res = param_with_default_var;
13567 if (_n == _children_capacity) {
13568 _children_capacity *= 2;
13569 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13570 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013571 PyErr_Format(PyExc_MemoryError, "realloc None");
13572 return NULL;
13573 }
13574 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013575 _children[_n++] = _res;
13576 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013577 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013578 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013579 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013580 if (_n == 0 || p->error_indicator) {
13581 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013582 return NULL;
13583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013584 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13585 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013586 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_62");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013587 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013588 return NULL;
13589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013590 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13591 PyMem_Free(_children);
13592 _PyPegen_insert_memo(p, _start_mark, _loop1_62_type, _seq);
13593 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013594}
13595
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013596// _loop0_63: param_no_default
13597static asdl_seq *
13598_loop0_63_rule(Parser *p)
13599{
13600 if (p->error_indicator) {
13601 return NULL;
13602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013603 void *_res = NULL;
13604 int _mark = p->mark;
13605 int _start_mark = p->mark;
13606 void **_children = PyMem_Malloc(sizeof(void *));
13607 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013608 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13609 return NULL;
13610 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013611 ssize_t _children_capacity = 1;
13612 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013613 { // param_no_default
13614 arg_ty param_no_default_var;
13615 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013616 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013617 )
13618 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013619 _res = param_no_default_var;
13620 if (_n == _children_capacity) {
13621 _children_capacity *= 2;
13622 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13623 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013624 PyErr_Format(PyExc_MemoryError, "realloc None");
13625 return NULL;
13626 }
13627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013628 _children[_n++] = _res;
13629 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013630 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013631 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013632 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013633 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13634 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013635 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_63");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013636 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013637 return NULL;
13638 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013639 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13640 PyMem_Free(_children);
13641 _PyPegen_insert_memo(p, _start_mark, _loop0_63_type, _seq);
13642 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013643}
13644
13645// _loop1_64: param_with_default
13646static asdl_seq *
13647_loop1_64_rule(Parser *p)
13648{
13649 if (p->error_indicator) {
13650 return NULL;
13651 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013652 void *_res = NULL;
13653 int _mark = p->mark;
13654 int _start_mark = p->mark;
13655 void **_children = PyMem_Malloc(sizeof(void *));
13656 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013657 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13658 return NULL;
13659 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013660 ssize_t _children_capacity = 1;
13661 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013662 { // param_with_default
13663 NameDefaultPair* param_with_default_var;
13664 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013665 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013666 )
13667 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013668 _res = param_with_default_var;
13669 if (_n == _children_capacity) {
13670 _children_capacity *= 2;
13671 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13672 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013673 PyErr_Format(PyExc_MemoryError, "realloc None");
13674 return NULL;
13675 }
13676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013677 _children[_n++] = _res;
13678 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013679 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013680 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013681 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013682 if (_n == 0 || p->error_indicator) {
13683 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013684 return NULL;
13685 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013686 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13687 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013688 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_64");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013689 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013690 return NULL;
13691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013692 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13693 PyMem_Free(_children);
13694 _PyPegen_insert_memo(p, _start_mark, _loop1_64_type, _seq);
13695 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013696}
13697
13698// _loop0_65: param_maybe_default
13699static asdl_seq *
13700_loop0_65_rule(Parser *p)
13701{
13702 if (p->error_indicator) {
13703 return NULL;
13704 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013705 void *_res = NULL;
13706 int _mark = p->mark;
13707 int _start_mark = p->mark;
13708 void **_children = PyMem_Malloc(sizeof(void *));
13709 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013710 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13711 return NULL;
13712 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013713 ssize_t _children_capacity = 1;
13714 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013715 { // param_maybe_default
13716 NameDefaultPair* param_maybe_default_var;
13717 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013718 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013719 )
13720 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013721 _res = param_maybe_default_var;
13722 if (_n == _children_capacity) {
13723 _children_capacity *= 2;
13724 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13725 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013726 PyErr_Format(PyExc_MemoryError, "realloc None");
13727 return NULL;
13728 }
13729 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013730 _children[_n++] = _res;
13731 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013733 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013734 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013735 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13736 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013737 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_65");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013738 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013739 return NULL;
13740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013741 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13742 PyMem_Free(_children);
13743 _PyPegen_insert_memo(p, _start_mark, _loop0_65_type, _seq);
13744 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013745}
13746
13747// _loop1_66: param_maybe_default
13748static asdl_seq *
13749_loop1_66_rule(Parser *p)
13750{
13751 if (p->error_indicator) {
13752 return NULL;
13753 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013754 void *_res = NULL;
13755 int _mark = p->mark;
13756 int _start_mark = p->mark;
13757 void **_children = PyMem_Malloc(sizeof(void *));
13758 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013759 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13760 return NULL;
13761 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013762 ssize_t _children_capacity = 1;
13763 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013764 { // param_maybe_default
13765 NameDefaultPair* param_maybe_default_var;
13766 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013767 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013768 )
13769 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013770 _res = param_maybe_default_var;
13771 if (_n == _children_capacity) {
13772 _children_capacity *= 2;
13773 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13774 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013775 PyErr_Format(PyExc_MemoryError, "realloc None");
13776 return NULL;
13777 }
13778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013779 _children[_n++] = _res;
13780 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013781 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013782 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013783 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013784 if (_n == 0 || p->error_indicator) {
13785 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013786 return NULL;
13787 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013788 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13789 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013790 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_66");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013791 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013792 return NULL;
13793 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013794 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13795 PyMem_Free(_children);
13796 _PyPegen_insert_memo(p, _start_mark, _loop1_66_type, _seq);
13797 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013798}
13799
13800// _loop1_67: ('@' named_expression NEWLINE)
13801static asdl_seq *
13802_loop1_67_rule(Parser *p)
13803{
13804 if (p->error_indicator) {
13805 return NULL;
13806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013807 void *_res = NULL;
13808 int _mark = p->mark;
13809 int _start_mark = p->mark;
13810 void **_children = PyMem_Malloc(sizeof(void *));
13811 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013812 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13813 return NULL;
13814 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013815 ssize_t _children_capacity = 1;
13816 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013817 { // ('@' named_expression NEWLINE)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030013818 void *_tmp_137_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013819 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013820 (_tmp_137_var = _tmp_137_rule(p)) // '@' named_expression NEWLINE
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013821 )
13822 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013823 _res = _tmp_137_var;
13824 if (_n == _children_capacity) {
13825 _children_capacity *= 2;
13826 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13827 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013828 PyErr_Format(PyExc_MemoryError, "realloc None");
13829 return NULL;
13830 }
13831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013832 _children[_n++] = _res;
13833 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013834 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013835 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013837 if (_n == 0 || p->error_indicator) {
13838 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013839 return NULL;
13840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013841 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13842 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013843 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_67");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013844 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013845 return NULL;
13846 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013847 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13848 PyMem_Free(_children);
13849 _PyPegen_insert_memo(p, _start_mark, _loop1_67_type, _seq);
13850 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013851}
13852
13853// _tmp_68: '(' arguments? ')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013854static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013855_tmp_68_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013856{
13857 if (p->error_indicator) {
13858 return NULL;
13859 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013860 void * _res = NULL;
13861 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013862 { // '(' arguments? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013863 Token * _literal;
13864 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013865 void *z;
13866 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013867 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013868 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013869 (z = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013870 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013871 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013872 )
13873 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013874 _res = z;
13875 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013876 p->error_indicator = 1;
13877 return NULL;
13878 }
13879 goto done;
13880 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013881 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013882 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013883 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013884 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013885 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013886}
13887
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013888// _loop0_70: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013889static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013890_loop0_70_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013891{
13892 if (p->error_indicator) {
13893 return NULL;
13894 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013895 void *_res = NULL;
13896 int _mark = p->mark;
13897 int _start_mark = p->mark;
13898 void **_children = PyMem_Malloc(sizeof(void *));
13899 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013900 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13901 return NULL;
13902 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013903 ssize_t _children_capacity = 1;
13904 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013905 { // ',' star_expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013906 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013907 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013908 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013909 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013910 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013911 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013912 )
13913 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013914 _res = elem;
13915 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013916 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013917 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013918 return NULL;
13919 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013920 if (_n == _children_capacity) {
13921 _children_capacity *= 2;
13922 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13923 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013924 PyErr_Format(PyExc_MemoryError, "realloc None");
13925 return NULL;
13926 }
13927 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013928 _children[_n++] = _res;
13929 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013930 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013931 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013933 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13934 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013935 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_70");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013936 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013937 return NULL;
13938 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013939 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13940 PyMem_Free(_children);
13941 _PyPegen_insert_memo(p, _start_mark, _loop0_70_type, _seq);
13942 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013943}
13944
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013945// _gather_69: star_expression _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013946static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013947_gather_69_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013948{
13949 if (p->error_indicator) {
13950 return NULL;
13951 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013952 asdl_seq * _res = NULL;
13953 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013954 { // star_expression _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013955 expr_ty elem;
13956 asdl_seq * seq;
13957 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013958 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013959 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013960 (seq = _loop0_70_rule(p)) // _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013961 )
13962 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013963 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013964 goto done;
13965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013966 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013967 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013968 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013969 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013970 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013971}
13972
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013973// _loop1_71: (',' star_expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013974static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013975_loop1_71_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013976{
13977 if (p->error_indicator) {
13978 return NULL;
13979 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013980 void *_res = NULL;
13981 int _mark = p->mark;
13982 int _start_mark = p->mark;
13983 void **_children = PyMem_Malloc(sizeof(void *));
13984 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013985 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13986 return NULL;
13987 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013988 ssize_t _children_capacity = 1;
13989 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013990 { // (',' star_expression)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030013991 void *_tmp_138_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013992 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013993 (_tmp_138_var = _tmp_138_rule(p)) // ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013994 )
13995 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013996 _res = _tmp_138_var;
13997 if (_n == _children_capacity) {
13998 _children_capacity *= 2;
13999 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14000 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014001 PyErr_Format(PyExc_MemoryError, "realloc None");
14002 return NULL;
14003 }
14004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014005 _children[_n++] = _res;
14006 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014007 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014008 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014010 if (_n == 0 || p->error_indicator) {
14011 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014012 return NULL;
14013 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014014 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14015 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014016 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_71");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014017 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014018 return NULL;
14019 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014020 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14021 PyMem_Free(_children);
14022 _PyPegen_insert_memo(p, _start_mark, _loop1_71_type, _seq);
14023 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014024}
14025
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014026// _loop0_73: ',' star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014027static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014028_loop0_73_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014029{
14030 if (p->error_indicator) {
14031 return NULL;
14032 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014033 void *_res = NULL;
14034 int _mark = p->mark;
14035 int _start_mark = p->mark;
14036 void **_children = PyMem_Malloc(sizeof(void *));
14037 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014038 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14039 return NULL;
14040 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014041 ssize_t _children_capacity = 1;
14042 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014043 { // ',' star_named_expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014044 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014045 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014046 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014047 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014048 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014049 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014050 )
14051 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014052 _res = elem;
14053 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014054 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014055 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014056 return NULL;
14057 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014058 if (_n == _children_capacity) {
14059 _children_capacity *= 2;
14060 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14061 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014062 PyErr_Format(PyExc_MemoryError, "realloc None");
14063 return NULL;
14064 }
14065 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014066 _children[_n++] = _res;
14067 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014068 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014069 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014070 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014071 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14072 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014073 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_73");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014074 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014075 return NULL;
14076 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014077 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14078 PyMem_Free(_children);
14079 _PyPegen_insert_memo(p, _start_mark, _loop0_73_type, _seq);
14080 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014081}
14082
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014083// _gather_72: star_named_expression _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014084static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014085_gather_72_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014086{
14087 if (p->error_indicator) {
14088 return NULL;
14089 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014090 asdl_seq * _res = NULL;
14091 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014092 { // star_named_expression _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014093 expr_ty elem;
14094 asdl_seq * seq;
14095 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014096 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014097 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014098 (seq = _loop0_73_rule(p)) // _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014099 )
14100 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014101 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014102 goto done;
14103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014104 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014105 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014106 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014107 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014108 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014109}
14110
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014111// _loop1_74: (',' expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014112static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014113_loop1_74_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014114{
14115 if (p->error_indicator) {
14116 return NULL;
14117 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014118 void *_res = NULL;
14119 int _mark = p->mark;
14120 int _start_mark = p->mark;
14121 void **_children = PyMem_Malloc(sizeof(void *));
14122 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014123 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14124 return NULL;
14125 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014126 ssize_t _children_capacity = 1;
14127 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014128 { // (',' expression)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030014129 void *_tmp_139_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014130 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014131 (_tmp_139_var = _tmp_139_rule(p)) // ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014132 )
14133 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014134 _res = _tmp_139_var;
14135 if (_n == _children_capacity) {
14136 _children_capacity *= 2;
14137 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14138 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014139 PyErr_Format(PyExc_MemoryError, "realloc None");
14140 return NULL;
14141 }
14142 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014143 _children[_n++] = _res;
14144 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014145 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014146 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014147 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014148 if (_n == 0 || p->error_indicator) {
14149 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014150 return NULL;
14151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014152 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14153 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014154 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_74");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014155 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014156 return NULL;
14157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014158 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14159 PyMem_Free(_children);
14160 _PyPegen_insert_memo(p, _start_mark, _loop1_74_type, _seq);
14161 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014162}
14163
Guido van Rossum3941d972020-05-01 09:42:03 -070014164// _loop0_75: lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014165static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070014166_loop0_75_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014167{
14168 if (p->error_indicator) {
14169 return NULL;
14170 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014171 void *_res = NULL;
14172 int _mark = p->mark;
14173 int _start_mark = p->mark;
14174 void **_children = PyMem_Malloc(sizeof(void *));
14175 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014176 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14177 return NULL;
14178 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014179 ssize_t _children_capacity = 1;
14180 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014181 { // lambda_param_no_default
14182 arg_ty lambda_param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014183 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014184 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014185 )
14186 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014187 _res = lambda_param_no_default_var;
14188 if (_n == _children_capacity) {
14189 _children_capacity *= 2;
14190 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14191 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014192 PyErr_Format(PyExc_MemoryError, "realloc None");
14193 return NULL;
14194 }
14195 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014196 _children[_n++] = _res;
14197 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014199 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014201 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14202 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014203 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_75");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014204 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014205 return NULL;
14206 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014207 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14208 PyMem_Free(_children);
14209 _PyPegen_insert_memo(p, _start_mark, _loop0_75_type, _seq);
14210 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014211}
14212
Guido van Rossum3941d972020-05-01 09:42:03 -070014213// _loop0_76: lambda_param_with_default
14214static asdl_seq *
14215_loop0_76_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014216{
14217 if (p->error_indicator) {
14218 return NULL;
14219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014220 void *_res = NULL;
14221 int _mark = p->mark;
14222 int _start_mark = p->mark;
14223 void **_children = PyMem_Malloc(sizeof(void *));
14224 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014225 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14226 return NULL;
14227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014228 ssize_t _children_capacity = 1;
14229 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014230 { // lambda_param_with_default
14231 NameDefaultPair* lambda_param_with_default_var;
14232 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014233 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014234 )
14235 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014236 _res = lambda_param_with_default_var;
14237 if (_n == _children_capacity) {
14238 _children_capacity *= 2;
14239 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14240 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014241 PyErr_Format(PyExc_MemoryError, "realloc None");
14242 return NULL;
14243 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014244 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014245 _children[_n++] = _res;
14246 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014248 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014249 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014250 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14251 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014252 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_76");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014253 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014254 return NULL;
14255 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014256 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14257 PyMem_Free(_children);
14258 _PyPegen_insert_memo(p, _start_mark, _loop0_76_type, _seq);
14259 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014260}
14261
Guido van Rossum3941d972020-05-01 09:42:03 -070014262// _loop0_77: lambda_param_with_default
14263static asdl_seq *
14264_loop0_77_rule(Parser *p)
14265{
14266 if (p->error_indicator) {
14267 return NULL;
14268 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014269 void *_res = NULL;
14270 int _mark = p->mark;
14271 int _start_mark = p->mark;
14272 void **_children = PyMem_Malloc(sizeof(void *));
14273 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014274 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14275 return NULL;
14276 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014277 ssize_t _children_capacity = 1;
14278 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014279 { // lambda_param_with_default
14280 NameDefaultPair* lambda_param_with_default_var;
14281 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014282 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014283 )
14284 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014285 _res = lambda_param_with_default_var;
14286 if (_n == _children_capacity) {
14287 _children_capacity *= 2;
14288 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14289 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014290 PyErr_Format(PyExc_MemoryError, "realloc None");
14291 return NULL;
14292 }
14293 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014294 _children[_n++] = _res;
14295 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014296 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014297 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014298 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014299 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14300 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014301 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_77");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014302 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014303 return NULL;
14304 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014305 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14306 PyMem_Free(_children);
14307 _PyPegen_insert_memo(p, _start_mark, _loop0_77_type, _seq);
14308 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014309}
14310
14311// _loop1_78: lambda_param_no_default
14312static asdl_seq *
14313_loop1_78_rule(Parser *p)
14314{
14315 if (p->error_indicator) {
14316 return NULL;
14317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014318 void *_res = NULL;
14319 int _mark = p->mark;
14320 int _start_mark = p->mark;
14321 void **_children = PyMem_Malloc(sizeof(void *));
14322 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014323 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14324 return NULL;
14325 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014326 ssize_t _children_capacity = 1;
14327 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014328 { // lambda_param_no_default
14329 arg_ty lambda_param_no_default_var;
14330 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014331 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014332 )
14333 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014334 _res = lambda_param_no_default_var;
14335 if (_n == _children_capacity) {
14336 _children_capacity *= 2;
14337 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14338 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014339 PyErr_Format(PyExc_MemoryError, "realloc None");
14340 return NULL;
14341 }
14342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014343 _children[_n++] = _res;
14344 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014346 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014347 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014348 if (_n == 0 || p->error_indicator) {
14349 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014350 return NULL;
14351 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014352 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14353 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014354 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_78");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014355 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014356 return NULL;
14357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014358 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14359 PyMem_Free(_children);
14360 _PyPegen_insert_memo(p, _start_mark, _loop1_78_type, _seq);
14361 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014362}
14363
14364// _loop0_79: lambda_param_with_default
14365static asdl_seq *
14366_loop0_79_rule(Parser *p)
14367{
14368 if (p->error_indicator) {
14369 return NULL;
14370 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014371 void *_res = NULL;
14372 int _mark = p->mark;
14373 int _start_mark = p->mark;
14374 void **_children = PyMem_Malloc(sizeof(void *));
14375 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014376 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14377 return NULL;
14378 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014379 ssize_t _children_capacity = 1;
14380 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014381 { // lambda_param_with_default
14382 NameDefaultPair* lambda_param_with_default_var;
14383 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014384 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014385 )
14386 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014387 _res = lambda_param_with_default_var;
14388 if (_n == _children_capacity) {
14389 _children_capacity *= 2;
14390 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14391 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014392 PyErr_Format(PyExc_MemoryError, "realloc None");
14393 return NULL;
14394 }
14395 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014396 _children[_n++] = _res;
14397 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014399 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014400 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014401 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14402 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014403 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_79");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014404 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014405 return NULL;
14406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014407 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14408 PyMem_Free(_children);
14409 _PyPegen_insert_memo(p, _start_mark, _loop0_79_type, _seq);
14410 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014411}
14412
14413// _loop1_80: lambda_param_with_default
14414static asdl_seq *
14415_loop1_80_rule(Parser *p)
14416{
14417 if (p->error_indicator) {
14418 return NULL;
14419 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014420 void *_res = NULL;
14421 int _mark = p->mark;
14422 int _start_mark = p->mark;
14423 void **_children = PyMem_Malloc(sizeof(void *));
14424 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014425 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14426 return NULL;
14427 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014428 ssize_t _children_capacity = 1;
14429 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014430 { // lambda_param_with_default
14431 NameDefaultPair* lambda_param_with_default_var;
14432 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014433 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014434 )
14435 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014436 _res = lambda_param_with_default_var;
14437 if (_n == _children_capacity) {
14438 _children_capacity *= 2;
14439 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14440 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014441 PyErr_Format(PyExc_MemoryError, "realloc None");
14442 return NULL;
14443 }
14444 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014445 _children[_n++] = _res;
14446 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014447 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014448 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014449 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014450 if (_n == 0 || p->error_indicator) {
14451 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014452 return NULL;
14453 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014454 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14455 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014456 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_80");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014457 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014458 return NULL;
14459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014460 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14461 PyMem_Free(_children);
14462 _PyPegen_insert_memo(p, _start_mark, _loop1_80_type, _seq);
14463 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014464}
14465
14466// _loop1_81: lambda_param_no_default
14467static asdl_seq *
14468_loop1_81_rule(Parser *p)
14469{
14470 if (p->error_indicator) {
14471 return NULL;
14472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014473 void *_res = NULL;
14474 int _mark = p->mark;
14475 int _start_mark = p->mark;
14476 void **_children = PyMem_Malloc(sizeof(void *));
14477 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014478 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14479 return NULL;
14480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014481 ssize_t _children_capacity = 1;
14482 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014483 { // lambda_param_no_default
14484 arg_ty lambda_param_no_default_var;
14485 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014486 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014487 )
14488 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014489 _res = lambda_param_no_default_var;
14490 if (_n == _children_capacity) {
14491 _children_capacity *= 2;
14492 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14493 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014494 PyErr_Format(PyExc_MemoryError, "realloc None");
14495 return NULL;
14496 }
14497 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014498 _children[_n++] = _res;
14499 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014501 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014503 if (_n == 0 || p->error_indicator) {
14504 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014505 return NULL;
14506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014507 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14508 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014509 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_81");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014510 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014511 return NULL;
14512 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014513 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14514 PyMem_Free(_children);
14515 _PyPegen_insert_memo(p, _start_mark, _loop1_81_type, _seq);
14516 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014517}
14518
14519// _loop1_82: lambda_param_no_default
14520static asdl_seq *
14521_loop1_82_rule(Parser *p)
14522{
14523 if (p->error_indicator) {
14524 return NULL;
14525 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014526 void *_res = NULL;
14527 int _mark = p->mark;
14528 int _start_mark = p->mark;
14529 void **_children = PyMem_Malloc(sizeof(void *));
14530 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014531 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14532 return NULL;
14533 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014534 ssize_t _children_capacity = 1;
14535 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014536 { // lambda_param_no_default
14537 arg_ty lambda_param_no_default_var;
14538 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014539 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014540 )
14541 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014542 _res = lambda_param_no_default_var;
14543 if (_n == _children_capacity) {
14544 _children_capacity *= 2;
14545 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14546 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014547 PyErr_Format(PyExc_MemoryError, "realloc None");
14548 return NULL;
14549 }
14550 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014551 _children[_n++] = _res;
14552 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014553 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014554 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014555 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014556 if (_n == 0 || p->error_indicator) {
14557 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014558 return NULL;
14559 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014560 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14561 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014562 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_82");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014563 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014564 return NULL;
14565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014566 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14567 PyMem_Free(_children);
14568 _PyPegen_insert_memo(p, _start_mark, _loop1_82_type, _seq);
14569 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014570}
14571
14572// _loop0_83: lambda_param_no_default
14573static asdl_seq *
14574_loop0_83_rule(Parser *p)
14575{
14576 if (p->error_indicator) {
14577 return NULL;
14578 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014579 void *_res = NULL;
14580 int _mark = p->mark;
14581 int _start_mark = p->mark;
14582 void **_children = PyMem_Malloc(sizeof(void *));
14583 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014584 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14585 return NULL;
14586 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014587 ssize_t _children_capacity = 1;
14588 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014589 { // lambda_param_no_default
14590 arg_ty lambda_param_no_default_var;
14591 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014592 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014593 )
14594 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014595 _res = lambda_param_no_default_var;
14596 if (_n == _children_capacity) {
14597 _children_capacity *= 2;
14598 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14599 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014600 PyErr_Format(PyExc_MemoryError, "realloc None");
14601 return NULL;
14602 }
14603 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014604 _children[_n++] = _res;
14605 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014606 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014607 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014608 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014609 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14610 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014611 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_83");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014612 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014613 return NULL;
14614 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014615 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14616 PyMem_Free(_children);
14617 _PyPegen_insert_memo(p, _start_mark, _loop0_83_type, _seq);
14618 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014619}
14620
14621// _loop1_84: lambda_param_with_default
14622static asdl_seq *
14623_loop1_84_rule(Parser *p)
14624{
14625 if (p->error_indicator) {
14626 return NULL;
14627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014628 void *_res = NULL;
14629 int _mark = p->mark;
14630 int _start_mark = p->mark;
14631 void **_children = PyMem_Malloc(sizeof(void *));
14632 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014633 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14634 return NULL;
14635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014636 ssize_t _children_capacity = 1;
14637 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014638 { // lambda_param_with_default
14639 NameDefaultPair* lambda_param_with_default_var;
14640 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014641 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014642 )
14643 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014644 _res = lambda_param_with_default_var;
14645 if (_n == _children_capacity) {
14646 _children_capacity *= 2;
14647 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14648 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014649 PyErr_Format(PyExc_MemoryError, "realloc None");
14650 return NULL;
14651 }
14652 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014653 _children[_n++] = _res;
14654 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014656 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014657 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014658 if (_n == 0 || p->error_indicator) {
14659 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014660 return NULL;
14661 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014662 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14663 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014664 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_84");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014665 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014666 return NULL;
14667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014668 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14669 PyMem_Free(_children);
14670 _PyPegen_insert_memo(p, _start_mark, _loop1_84_type, _seq);
14671 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014672}
14673
14674// _loop0_85: lambda_param_no_default
14675static asdl_seq *
14676_loop0_85_rule(Parser *p)
14677{
14678 if (p->error_indicator) {
14679 return NULL;
14680 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014681 void *_res = NULL;
14682 int _mark = p->mark;
14683 int _start_mark = p->mark;
14684 void **_children = PyMem_Malloc(sizeof(void *));
14685 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014686 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14687 return NULL;
14688 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014689 ssize_t _children_capacity = 1;
14690 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014691 { // lambda_param_no_default
14692 arg_ty lambda_param_no_default_var;
14693 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014694 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014695 )
14696 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014697 _res = lambda_param_no_default_var;
14698 if (_n == _children_capacity) {
14699 _children_capacity *= 2;
14700 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14701 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014702 PyErr_Format(PyExc_MemoryError, "realloc None");
14703 return NULL;
14704 }
14705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014706 _children[_n++] = _res;
14707 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014709 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014710 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014711 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14712 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014713 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_85");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014714 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014715 return NULL;
14716 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014717 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14718 PyMem_Free(_children);
14719 _PyPegen_insert_memo(p, _start_mark, _loop0_85_type, _seq);
14720 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014721}
14722
14723// _loop1_86: lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014724static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014725_loop1_86_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014726{
14727 if (p->error_indicator) {
14728 return NULL;
14729 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014730 void *_res = NULL;
14731 int _mark = p->mark;
14732 int _start_mark = p->mark;
14733 void **_children = PyMem_Malloc(sizeof(void *));
14734 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014735 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14736 return NULL;
14737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014738 ssize_t _children_capacity = 1;
14739 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014740 { // lambda_param_with_default
14741 NameDefaultPair* lambda_param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014742 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014743 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014744 )
14745 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014746 _res = lambda_param_with_default_var;
14747 if (_n == _children_capacity) {
14748 _children_capacity *= 2;
14749 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14750 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014751 PyErr_Format(PyExc_MemoryError, "realloc None");
14752 return NULL;
14753 }
14754 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014755 _children[_n++] = _res;
14756 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014757 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014758 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014759 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014760 if (_n == 0 || p->error_indicator) {
14761 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014762 return NULL;
14763 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014764 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14765 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014766 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_86");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014767 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014768 return NULL;
14769 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014770 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14771 PyMem_Free(_children);
14772 _PyPegen_insert_memo(p, _start_mark, _loop1_86_type, _seq);
14773 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014774}
14775
Guido van Rossum3941d972020-05-01 09:42:03 -070014776// _loop0_87: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014777static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070014778_loop0_87_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014779{
14780 if (p->error_indicator) {
14781 return NULL;
14782 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014783 void *_res = NULL;
14784 int _mark = p->mark;
14785 int _start_mark = p->mark;
14786 void **_children = PyMem_Malloc(sizeof(void *));
14787 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014788 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14789 return NULL;
14790 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014791 ssize_t _children_capacity = 1;
14792 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014793 { // lambda_param_maybe_default
14794 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014795 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014796 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014797 )
14798 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014799 _res = lambda_param_maybe_default_var;
14800 if (_n == _children_capacity) {
14801 _children_capacity *= 2;
14802 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14803 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014804 PyErr_Format(PyExc_MemoryError, "realloc None");
14805 return NULL;
14806 }
14807 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014808 _children[_n++] = _res;
14809 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014810 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014811 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014812 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014813 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14814 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014815 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_87");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014816 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014817 return NULL;
14818 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014819 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14820 PyMem_Free(_children);
14821 _PyPegen_insert_memo(p, _start_mark, _loop0_87_type, _seq);
14822 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014823}
14824
Guido van Rossum3941d972020-05-01 09:42:03 -070014825// _loop1_88: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014826static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070014827_loop1_88_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014828{
14829 if (p->error_indicator) {
14830 return NULL;
14831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014832 void *_res = NULL;
14833 int _mark = p->mark;
14834 int _start_mark = p->mark;
14835 void **_children = PyMem_Malloc(sizeof(void *));
14836 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014837 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14838 return NULL;
14839 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014840 ssize_t _children_capacity = 1;
14841 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014842 { // lambda_param_maybe_default
14843 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014844 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014845 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014846 )
14847 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014848 _res = lambda_param_maybe_default_var;
14849 if (_n == _children_capacity) {
14850 _children_capacity *= 2;
14851 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14852 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014853 PyErr_Format(PyExc_MemoryError, "realloc None");
14854 return NULL;
14855 }
14856 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014857 _children[_n++] = _res;
14858 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014859 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014860 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014861 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014862 if (_n == 0 || p->error_indicator) {
14863 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014864 return NULL;
14865 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014866 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14867 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014868 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_88");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014869 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014870 return NULL;
14871 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014872 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14873 PyMem_Free(_children);
14874 _PyPegen_insert_memo(p, _start_mark, _loop1_88_type, _seq);
14875 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014876}
14877
Guido van Rossum3941d972020-05-01 09:42:03 -070014878// _loop1_89: ('or' conjunction)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014879static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070014880_loop1_89_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014881{
14882 if (p->error_indicator) {
14883 return NULL;
14884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014885 void *_res = NULL;
14886 int _mark = p->mark;
14887 int _start_mark = p->mark;
14888 void **_children = PyMem_Malloc(sizeof(void *));
14889 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014890 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14891 return NULL;
14892 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014893 ssize_t _children_capacity = 1;
14894 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014895 { // ('or' conjunction)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030014896 void *_tmp_140_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014897 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014898 (_tmp_140_var = _tmp_140_rule(p)) // 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014899 )
14900 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014901 _res = _tmp_140_var;
14902 if (_n == _children_capacity) {
14903 _children_capacity *= 2;
14904 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14905 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014906 PyErr_Format(PyExc_MemoryError, "realloc None");
14907 return NULL;
14908 }
14909 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014910 _children[_n++] = _res;
14911 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014913 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014915 if (_n == 0 || p->error_indicator) {
14916 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014917 return NULL;
14918 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014919 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14920 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014921 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_89");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014922 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014923 return NULL;
14924 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014925 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14926 PyMem_Free(_children);
14927 _PyPegen_insert_memo(p, _start_mark, _loop1_89_type, _seq);
14928 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014929}
14930
Guido van Rossum3941d972020-05-01 09:42:03 -070014931// _loop1_90: ('and' inversion)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014932static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070014933_loop1_90_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014934{
14935 if (p->error_indicator) {
14936 return NULL;
14937 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014938 void *_res = NULL;
14939 int _mark = p->mark;
14940 int _start_mark = p->mark;
14941 void **_children = PyMem_Malloc(sizeof(void *));
14942 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014943 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14944 return NULL;
14945 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014946 ssize_t _children_capacity = 1;
14947 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014948 { // ('and' inversion)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030014949 void *_tmp_141_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014950 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014951 (_tmp_141_var = _tmp_141_rule(p)) // 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014952 )
14953 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014954 _res = _tmp_141_var;
14955 if (_n == _children_capacity) {
14956 _children_capacity *= 2;
14957 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14958 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014959 PyErr_Format(PyExc_MemoryError, "realloc None");
14960 return NULL;
14961 }
14962 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014963 _children[_n++] = _res;
14964 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014966 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014967 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014968 if (_n == 0 || p->error_indicator) {
14969 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014970 return NULL;
14971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014972 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14973 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014974 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_90");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014975 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014976 return NULL;
14977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014978 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14979 PyMem_Free(_children);
14980 _PyPegen_insert_memo(p, _start_mark, _loop1_90_type, _seq);
14981 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014982}
14983
Guido van Rossum3941d972020-05-01 09:42:03 -070014984// _loop1_91: compare_op_bitwise_or_pair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014985static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070014986_loop1_91_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014987{
14988 if (p->error_indicator) {
14989 return NULL;
14990 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014991 void *_res = NULL;
14992 int _mark = p->mark;
14993 int _start_mark = p->mark;
14994 void **_children = PyMem_Malloc(sizeof(void *));
14995 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014996 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14997 return NULL;
14998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014999 ssize_t _children_capacity = 1;
15000 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015001 { // compare_op_bitwise_or_pair
15002 CmpopExprPair* compare_op_bitwise_or_pair_var;
15003 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015004 (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 +010015005 )
15006 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015007 _res = compare_op_bitwise_or_pair_var;
15008 if (_n == _children_capacity) {
15009 _children_capacity *= 2;
15010 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15011 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015012 PyErr_Format(PyExc_MemoryError, "realloc None");
15013 return NULL;
15014 }
15015 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015016 _children[_n++] = _res;
15017 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015018 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015019 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015021 if (_n == 0 || p->error_indicator) {
15022 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015023 return NULL;
15024 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015025 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15026 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015027 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_91");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015028 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015029 return NULL;
15030 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015031 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15032 PyMem_Free(_children);
15033 _PyPegen_insert_memo(p, _start_mark, _loop1_91_type, _seq);
15034 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015035}
15036
Guido van Rossum3941d972020-05-01 09:42:03 -070015037// _tmp_92: '!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010015038static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015039_tmp_92_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010015040{
15041 if (p->error_indicator) {
15042 return NULL;
15043 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015044 void * _res = NULL;
15045 int _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015046 { // '!='
Pablo Galindob796b3f2020-05-01 12:32:26 +010015047 Token * tok;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015048 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015049 (tok = _PyPegen_expect_token(p, 28)) // token='!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010015050 )
15051 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015052 _res = _PyPegen_check_barry_as_flufl ( p ) ? NULL : tok;
15053 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindo2b74c832020-04-27 18:02:07 +010015054 p->error_indicator = 1;
15055 return NULL;
15056 }
15057 goto done;
15058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015059 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015060 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015061 _res = NULL;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015062 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015063 return _res;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015064}
15065
Guido van Rossum3941d972020-05-01 09:42:03 -070015066// _loop0_94: ',' slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015067static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015068_loop0_94_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015069{
15070 if (p->error_indicator) {
15071 return NULL;
15072 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015073 void *_res = NULL;
15074 int _mark = p->mark;
15075 int _start_mark = p->mark;
15076 void **_children = PyMem_Malloc(sizeof(void *));
15077 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015078 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15079 return NULL;
15080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015081 ssize_t _children_capacity = 1;
15082 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015083 { // ',' slice
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015084 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015085 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015086 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015087 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015088 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015089 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015090 )
15091 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015092 _res = elem;
15093 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015094 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015095 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015096 return NULL;
15097 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015098 if (_n == _children_capacity) {
15099 _children_capacity *= 2;
15100 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15101 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015102 PyErr_Format(PyExc_MemoryError, "realloc None");
15103 return NULL;
15104 }
15105 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015106 _children[_n++] = _res;
15107 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015108 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015109 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015110 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015111 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15112 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015113 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_94");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015114 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015115 return NULL;
15116 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015117 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15118 PyMem_Free(_children);
15119 _PyPegen_insert_memo(p, _start_mark, _loop0_94_type, _seq);
15120 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015121}
15122
Guido van Rossum3941d972020-05-01 09:42:03 -070015123// _gather_93: slice _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015124static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015125_gather_93_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015126{
15127 if (p->error_indicator) {
15128 return NULL;
15129 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015130 asdl_seq * _res = NULL;
15131 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015132 { // slice _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015133 expr_ty elem;
15134 asdl_seq * seq;
15135 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015136 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015137 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015138 (seq = _loop0_94_rule(p)) // _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015139 )
15140 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015141 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015142 goto done;
15143 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015144 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015145 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015146 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015147 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015148 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015149}
15150
Guido van Rossum3941d972020-05-01 09:42:03 -070015151// _tmp_95: ':' expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015152static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015153_tmp_95_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015154{
15155 if (p->error_indicator) {
15156 return NULL;
15157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015158 void * _res = NULL;
15159 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015160 { // ':' expression?
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015161 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015162 void *d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015163 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015164 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015165 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015166 (d = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015167 )
15168 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015169 _res = d;
15170 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015171 p->error_indicator = 1;
15172 return NULL;
15173 }
15174 goto done;
15175 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015176 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015178 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015179 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015180 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015181}
15182
Guido van Rossum3941d972020-05-01 09:42:03 -070015183// _tmp_96: tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015184static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015185_tmp_96_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015186{
15187 if (p->error_indicator) {
15188 return NULL;
15189 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015190 void * _res = NULL;
15191 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015192 { // tuple
15193 expr_ty tuple_var;
15194 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015195 (tuple_var = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015196 )
15197 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015198 _res = tuple_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015199 goto done;
15200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015201 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015202 }
15203 { // group
15204 expr_ty group_var;
15205 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015206 (group_var = group_rule(p)) // group
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015207 )
15208 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015209 _res = group_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015210 goto done;
15211 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015212 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015213 }
15214 { // genexp
15215 expr_ty genexp_var;
15216 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015217 (genexp_var = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015218 )
15219 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015220 _res = genexp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015221 goto done;
15222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015223 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015224 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015225 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015226 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015227 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015228}
15229
Guido van Rossum3941d972020-05-01 09:42:03 -070015230// _tmp_97: list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015231static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015232_tmp_97_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015233{
15234 if (p->error_indicator) {
15235 return NULL;
15236 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015237 void * _res = NULL;
15238 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015239 { // list
15240 expr_ty list_var;
15241 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015242 (list_var = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015243 )
15244 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015245 _res = list_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015246 goto done;
15247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015248 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015249 }
15250 { // listcomp
15251 expr_ty listcomp_var;
15252 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015253 (listcomp_var = listcomp_rule(p)) // listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015254 )
15255 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015256 _res = listcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015257 goto done;
15258 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015259 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015260 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015261 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015262 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015263 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015264}
15265
Guido van Rossum3941d972020-05-01 09:42:03 -070015266// _tmp_98: dict | set | dictcomp | setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015267static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015268_tmp_98_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015269{
15270 if (p->error_indicator) {
15271 return NULL;
15272 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015273 void * _res = NULL;
15274 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015275 { // dict
15276 expr_ty dict_var;
15277 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015278 (dict_var = dict_rule(p)) // dict
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015279 )
15280 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015281 _res = dict_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015282 goto done;
15283 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015284 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015285 }
15286 { // set
15287 expr_ty set_var;
15288 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015289 (set_var = set_rule(p)) // set
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015290 )
15291 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015292 _res = set_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015293 goto done;
15294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015295 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015296 }
15297 { // dictcomp
15298 expr_ty dictcomp_var;
15299 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015300 (dictcomp_var = dictcomp_rule(p)) // dictcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015301 )
15302 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015303 _res = dictcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015304 goto done;
15305 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015306 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015307 }
15308 { // setcomp
15309 expr_ty setcomp_var;
15310 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015311 (setcomp_var = setcomp_rule(p)) // setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015312 )
15313 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015314 _res = setcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015315 goto done;
15316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015317 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015318 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015319 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015320 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015321 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015322}
15323
Guido van Rossum3941d972020-05-01 09:42:03 -070015324// _loop1_99: STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015325static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015326_loop1_99_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015327{
15328 if (p->error_indicator) {
15329 return NULL;
15330 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015331 void *_res = NULL;
15332 int _mark = p->mark;
15333 int _start_mark = p->mark;
15334 void **_children = PyMem_Malloc(sizeof(void *));
15335 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015336 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15337 return NULL;
15338 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015339 ssize_t _children_capacity = 1;
15340 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015341 { // STRING
15342 expr_ty string_var;
15343 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015344 (string_var = _PyPegen_string_token(p)) // STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015345 )
15346 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015347 _res = string_var;
15348 if (_n == _children_capacity) {
15349 _children_capacity *= 2;
15350 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15351 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015352 PyErr_Format(PyExc_MemoryError, "realloc None");
15353 return NULL;
15354 }
15355 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015356 _children[_n++] = _res;
15357 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015358 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015359 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015360 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015361 if (_n == 0 || p->error_indicator) {
15362 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015363 return NULL;
15364 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015365 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15366 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015367 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_99");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015368 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015369 return NULL;
15370 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015371 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15372 PyMem_Free(_children);
15373 _PyPegen_insert_memo(p, _start_mark, _loop1_99_type, _seq);
15374 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015375}
15376
Guido van Rossum3941d972020-05-01 09:42:03 -070015377// _tmp_100: star_named_expression ',' star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015378static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015379_tmp_100_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015380{
15381 if (p->error_indicator) {
15382 return NULL;
15383 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015384 void * _res = NULL;
15385 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015386 { // star_named_expression ',' star_named_expressions?
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015387 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015388 expr_ty y;
15389 void *z;
15390 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015391 (y = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015392 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015393 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015394 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015395 (z = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015396 )
15397 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015398 _res = _PyPegen_seq_insert_in_front ( p , y , z );
15399 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015400 p->error_indicator = 1;
15401 return NULL;
15402 }
15403 goto done;
15404 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015405 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015407 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015408 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015409 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015410}
15411
Guido van Rossum3941d972020-05-01 09:42:03 -070015412// _tmp_101: yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015413static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015414_tmp_101_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015415{
15416 if (p->error_indicator) {
15417 return NULL;
15418 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015419 void * _res = NULL;
15420 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015421 { // yield_expr
15422 expr_ty yield_expr_var;
15423 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015424 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015425 )
15426 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015427 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015428 goto done;
15429 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015430 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015431 }
15432 { // named_expression
15433 expr_ty named_expression_var;
15434 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015435 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015436 )
15437 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015438 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015439 goto done;
15440 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015441 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015442 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015443 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015444 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015445 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015446}
15447
Guido van Rossum3941d972020-05-01 09:42:03 -070015448// _loop0_103: ',' kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015449static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015450_loop0_103_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015451{
15452 if (p->error_indicator) {
15453 return NULL;
15454 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015455 void *_res = NULL;
15456 int _mark = p->mark;
15457 int _start_mark = p->mark;
15458 void **_children = PyMem_Malloc(sizeof(void *));
15459 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015460 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15461 return NULL;
15462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015463 ssize_t _children_capacity = 1;
15464 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015465 { // ',' kvpair
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015466 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015467 KeyValuePair* elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015468 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015469 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015470 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015471 (elem = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015472 )
15473 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015474 _res = elem;
15475 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015476 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015477 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015478 return NULL;
15479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015480 if (_n == _children_capacity) {
15481 _children_capacity *= 2;
15482 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15483 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015484 PyErr_Format(PyExc_MemoryError, "realloc None");
15485 return NULL;
15486 }
15487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015488 _children[_n++] = _res;
15489 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015491 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015492 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015493 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15494 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015495 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_103");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015496 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015497 return NULL;
15498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015499 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15500 PyMem_Free(_children);
15501 _PyPegen_insert_memo(p, _start_mark, _loop0_103_type, _seq);
15502 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015503}
15504
Guido van Rossum3941d972020-05-01 09:42:03 -070015505// _gather_102: kvpair _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015506static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015507_gather_102_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015508{
15509 if (p->error_indicator) {
15510 return NULL;
15511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015512 asdl_seq * _res = NULL;
15513 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015514 { // kvpair _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015515 KeyValuePair* elem;
15516 asdl_seq * seq;
15517 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015518 (elem = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015519 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015520 (seq = _loop0_103_rule(p)) // _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015521 )
15522 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015523 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015524 goto done;
15525 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015526 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015528 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015529 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015530 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015531}
15532
Guido van Rossum3941d972020-05-01 09:42:03 -070015533// _loop1_104: for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015534static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015535_loop1_104_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015536{
15537 if (p->error_indicator) {
15538 return NULL;
15539 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015540 void *_res = NULL;
15541 int _mark = p->mark;
15542 int _start_mark = p->mark;
15543 void **_children = PyMem_Malloc(sizeof(void *));
15544 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015545 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15546 return NULL;
15547 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015548 ssize_t _children_capacity = 1;
15549 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015550 { // for_if_clause
15551 comprehension_ty for_if_clause_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015552 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015553 (for_if_clause_var = for_if_clause_rule(p)) // for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015554 )
15555 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015556 _res = for_if_clause_var;
15557 if (_n == _children_capacity) {
15558 _children_capacity *= 2;
15559 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15560 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015561 PyErr_Format(PyExc_MemoryError, "realloc None");
15562 return NULL;
15563 }
15564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015565 _children[_n++] = _res;
15566 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015567 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015568 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015570 if (_n == 0 || p->error_indicator) {
15571 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015572 return NULL;
15573 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015574 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15575 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015576 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_104");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015577 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015578 return NULL;
15579 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015580 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15581 PyMem_Free(_children);
15582 _PyPegen_insert_memo(p, _start_mark, _loop1_104_type, _seq);
15583 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015584}
15585
Guido van Rossum3941d972020-05-01 09:42:03 -070015586// _loop0_105: ('if' disjunction)
Pablo Galindo2b74c832020-04-27 18:02:07 +010015587static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015588_loop0_105_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010015589{
15590 if (p->error_indicator) {
15591 return NULL;
15592 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015593 void *_res = NULL;
15594 int _mark = p->mark;
15595 int _start_mark = p->mark;
15596 void **_children = PyMem_Malloc(sizeof(void *));
15597 if (!_children) {
Pablo Galindo2b74c832020-04-27 18:02:07 +010015598 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15599 return NULL;
15600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015601 ssize_t _children_capacity = 1;
15602 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015603 { // ('if' disjunction)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015604 void *_tmp_142_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015605 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015606 (_tmp_142_var = _tmp_142_rule(p)) // 'if' disjunction
Pablo Galindo2b74c832020-04-27 18:02:07 +010015607 )
15608 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015609 _res = _tmp_142_var;
15610 if (_n == _children_capacity) {
15611 _children_capacity *= 2;
15612 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15613 if (!_children) {
Pablo Galindo2b74c832020-04-27 18:02:07 +010015614 PyErr_Format(PyExc_MemoryError, "realloc None");
15615 return NULL;
15616 }
15617 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015618 _children[_n++] = _res;
15619 _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015620 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015621 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015622 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015623 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15624 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015625 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_105");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015626 PyMem_Free(_children);
Pablo Galindo2b74c832020-04-27 18:02:07 +010015627 return NULL;
15628 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015629 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15630 PyMem_Free(_children);
15631 _PyPegen_insert_memo(p, _start_mark, _loop0_105_type, _seq);
15632 return _seq;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015633}
15634
Guido van Rossum3941d972020-05-01 09:42:03 -070015635// _loop0_106: ('if' disjunction)
Guido van Rossumc001c092020-04-30 12:12:19 -070015636static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015637_loop0_106_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070015638{
15639 if (p->error_indicator) {
15640 return NULL;
15641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015642 void *_res = NULL;
15643 int _mark = p->mark;
15644 int _start_mark = p->mark;
15645 void **_children = PyMem_Malloc(sizeof(void *));
15646 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015647 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15648 return NULL;
15649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015650 ssize_t _children_capacity = 1;
15651 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015652 { // ('if' disjunction)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030015653 void *_tmp_143_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015654 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015655 (_tmp_143_var = _tmp_143_rule(p)) // 'if' disjunction
Guido van Rossumc001c092020-04-30 12:12:19 -070015656 )
15657 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015658 _res = _tmp_143_var;
15659 if (_n == _children_capacity) {
15660 _children_capacity *= 2;
15661 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15662 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015663 PyErr_Format(PyExc_MemoryError, "realloc None");
15664 return NULL;
15665 }
15666 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015667 _children[_n++] = _res;
15668 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015669 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015670 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015671 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015672 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15673 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015674 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_106");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015675 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015676 return NULL;
15677 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015678 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15679 PyMem_Free(_children);
15680 _PyPegen_insert_memo(p, _start_mark, _loop0_106_type, _seq);
15681 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015682}
15683
Guido van Rossum3941d972020-05-01 09:42:03 -070015684// _tmp_107: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015685static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015686_tmp_107_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015687{
15688 if (p->error_indicator) {
15689 return NULL;
15690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015691 void * _res = NULL;
15692 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015693 { // ',' args
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015694 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015695 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015696 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015697 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015698 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015699 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015700 )
15701 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015702 _res = c;
15703 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015704 p->error_indicator = 1;
15705 return NULL;
15706 }
Guido van Rossumc001c092020-04-30 12:12:19 -070015707 goto done;
15708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015709 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015710 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015711 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070015712 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015713 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070015714}
15715
Guido van Rossum3941d972020-05-01 09:42:03 -070015716// _tmp_108: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015717static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015718_tmp_108_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015719{
15720 if (p->error_indicator) {
15721 return NULL;
15722 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015723 void * _res = NULL;
15724 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015725 { // ',' args
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015726 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015727 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015728 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015729 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015730 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015731 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015732 )
15733 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015734 _res = c;
15735 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015736 p->error_indicator = 1;
15737 return NULL;
15738 }
15739 goto done;
15740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015741 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015743 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015744 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015745 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015746}
15747
Guido van Rossum3941d972020-05-01 09:42:03 -070015748// _loop0_110: ',' kwarg_or_starred
15749static asdl_seq *
15750_loop0_110_rule(Parser *p)
15751{
15752 if (p->error_indicator) {
15753 return NULL;
15754 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015755 void *_res = NULL;
15756 int _mark = p->mark;
15757 int _start_mark = p->mark;
15758 void **_children = PyMem_Malloc(sizeof(void *));
15759 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015760 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15761 return NULL;
15762 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015763 ssize_t _children_capacity = 1;
15764 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070015765 { // ',' kwarg_or_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015766 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070015767 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070015768 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015769 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070015770 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015771 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070015772 )
15773 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015774 _res = elem;
15775 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015776 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015777 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070015778 return NULL;
15779 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015780 if (_n == _children_capacity) {
15781 _children_capacity *= 2;
15782 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15783 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015784 PyErr_Format(PyExc_MemoryError, "realloc None");
15785 return NULL;
15786 }
15787 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015788 _children[_n++] = _res;
15789 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015790 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015791 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015792 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015793 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15794 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015795 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_110");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015796 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070015797 return NULL;
15798 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015799 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15800 PyMem_Free(_children);
15801 _PyPegen_insert_memo(p, _start_mark, _loop0_110_type, _seq);
15802 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070015803}
15804
15805// _gather_109: kwarg_or_starred _loop0_110
15806static asdl_seq *
15807_gather_109_rule(Parser *p)
15808{
15809 if (p->error_indicator) {
15810 return NULL;
15811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015812 asdl_seq * _res = NULL;
15813 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015814 { // kwarg_or_starred _loop0_110
15815 KeywordOrStarred* elem;
15816 asdl_seq * seq;
15817 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015818 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070015819 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015820 (seq = _loop0_110_rule(p)) // _loop0_110
Guido van Rossum3941d972020-05-01 09:42:03 -070015821 )
15822 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015823 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070015824 goto done;
15825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015826 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015827 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015828 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070015829 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015830 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070015831}
15832
15833// _loop0_112: ',' kwarg_or_double_starred
15834static asdl_seq *
15835_loop0_112_rule(Parser *p)
15836{
15837 if (p->error_indicator) {
15838 return NULL;
15839 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015840 void *_res = NULL;
15841 int _mark = p->mark;
15842 int _start_mark = p->mark;
15843 void **_children = PyMem_Malloc(sizeof(void *));
15844 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015845 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15846 return NULL;
15847 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015848 ssize_t _children_capacity = 1;
15849 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070015850 { // ',' kwarg_or_double_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015851 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070015852 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070015853 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015854 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070015855 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015856 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070015857 )
15858 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015859 _res = elem;
15860 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015861 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015862 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070015863 return NULL;
15864 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015865 if (_n == _children_capacity) {
15866 _children_capacity *= 2;
15867 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15868 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015869 PyErr_Format(PyExc_MemoryError, "realloc None");
15870 return NULL;
15871 }
15872 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015873 _children[_n++] = _res;
15874 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015876 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015877 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015878 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15879 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015880 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_112");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015881 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070015882 return NULL;
15883 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015884 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15885 PyMem_Free(_children);
15886 _PyPegen_insert_memo(p, _start_mark, _loop0_112_type, _seq);
15887 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070015888}
15889
15890// _gather_111: kwarg_or_double_starred _loop0_112
15891static asdl_seq *
15892_gather_111_rule(Parser *p)
15893{
15894 if (p->error_indicator) {
15895 return NULL;
15896 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015897 asdl_seq * _res = NULL;
15898 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015899 { // kwarg_or_double_starred _loop0_112
15900 KeywordOrStarred* elem;
15901 asdl_seq * seq;
15902 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015903 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070015904 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015905 (seq = _loop0_112_rule(p)) // _loop0_112
Guido van Rossum3941d972020-05-01 09:42:03 -070015906 )
15907 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015908 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070015909 goto done;
15910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015911 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015913 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070015914 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015915 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070015916}
15917
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015918// _loop0_114: ',' kwarg_or_starred
Pablo Galindo2b74c832020-04-27 18:02:07 +010015919static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015920_loop0_114_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015921{
15922 if (p->error_indicator) {
15923 return NULL;
15924 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015925 void *_res = NULL;
15926 int _mark = p->mark;
15927 int _start_mark = p->mark;
15928 void **_children = PyMem_Malloc(sizeof(void *));
15929 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015930 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15931 return NULL;
15932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015933 ssize_t _children_capacity = 1;
15934 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070015935 { // ',' kwarg_or_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015936 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070015937 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070015938 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015939 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070015940 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015941 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070015942 )
15943 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015944 _res = elem;
15945 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070015946 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015947 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070015948 return NULL;
15949 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015950 if (_n == _children_capacity) {
15951 _children_capacity *= 2;
15952 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15953 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070015954 PyErr_Format(PyExc_MemoryError, "realloc None");
15955 return NULL;
15956 }
15957 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015958 _children[_n++] = _res;
15959 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015960 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015961 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015962 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015963 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15964 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015965 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_114");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015966 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070015967 return NULL;
15968 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015969 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15970 PyMem_Free(_children);
15971 _PyPegen_insert_memo(p, _start_mark, _loop0_114_type, _seq);
15972 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015973}
15974
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015975// _gather_113: kwarg_or_starred _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070015976static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015977_gather_113_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070015978{
15979 if (p->error_indicator) {
15980 return NULL;
15981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015982 asdl_seq * _res = NULL;
15983 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015984 { // kwarg_or_starred _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070015985 KeywordOrStarred* elem;
15986 asdl_seq * seq;
15987 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015988 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070015989 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015990 (seq = _loop0_114_rule(p)) // _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070015991 )
15992 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015993 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070015994 goto done;
15995 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015996 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015997 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015998 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070015999 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016000 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070016001}
16002
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016003// _loop0_116: ',' kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016004static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016005_loop0_116_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016006{
16007 if (p->error_indicator) {
16008 return NULL;
16009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016010 void *_res = NULL;
16011 int _mark = p->mark;
16012 int _start_mark = p->mark;
16013 void **_children = PyMem_Malloc(sizeof(void *));
16014 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016015 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16016 return NULL;
16017 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016018 ssize_t _children_capacity = 1;
16019 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070016020 { // ',' kwarg_or_double_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016021 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070016022 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070016023 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016024 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070016025 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016026 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016027 )
16028 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016029 _res = elem;
16030 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016031 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016032 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016033 return NULL;
16034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016035 if (_n == _children_capacity) {
16036 _children_capacity *= 2;
16037 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16038 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016039 PyErr_Format(PyExc_MemoryError, "realloc None");
16040 return NULL;
16041 }
16042 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016043 _children[_n++] = _res;
16044 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016046 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016048 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16049 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016050 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_116");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016051 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016052 return NULL;
16053 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016054 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16055 PyMem_Free(_children);
16056 _PyPegen_insert_memo(p, _start_mark, _loop0_116_type, _seq);
16057 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070016058}
16059
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016060// _gather_115: kwarg_or_double_starred _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070016061static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016062_gather_115_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016063{
16064 if (p->error_indicator) {
16065 return NULL;
16066 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016067 asdl_seq * _res = NULL;
16068 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016069 { // kwarg_or_double_starred _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070016070 KeywordOrStarred* elem;
16071 asdl_seq * seq;
16072 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016073 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016074 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016075 (seq = _loop0_116_rule(p)) // _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070016076 )
16077 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016078 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070016079 goto done;
16080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016081 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016083 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070016084 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016085 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070016086}
16087
Guido van Rossum3941d972020-05-01 09:42:03 -070016088// _loop0_117: (',' star_target)
Guido van Rossumc001c092020-04-30 12:12:19 -070016089static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016090_loop0_117_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016091{
16092 if (p->error_indicator) {
16093 return NULL;
16094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016095 void *_res = NULL;
16096 int _mark = p->mark;
16097 int _start_mark = p->mark;
16098 void **_children = PyMem_Malloc(sizeof(void *));
16099 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016100 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16101 return NULL;
16102 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016103 ssize_t _children_capacity = 1;
16104 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016105 { // (',' star_target)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016106 void *_tmp_144_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016107 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016108 (_tmp_144_var = _tmp_144_rule(p)) // ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016109 )
16110 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016111 _res = _tmp_144_var;
16112 if (_n == _children_capacity) {
16113 _children_capacity *= 2;
16114 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16115 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016116 PyErr_Format(PyExc_MemoryError, "realloc None");
16117 return NULL;
16118 }
16119 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016120 _children[_n++] = _res;
16121 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016122 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016123 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016124 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016125 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16126 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016127 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_117");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016128 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016129 return NULL;
16130 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016131 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16132 PyMem_Free(_children);
16133 _PyPegen_insert_memo(p, _start_mark, _loop0_117_type, _seq);
16134 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016135}
16136
Guido van Rossum3941d972020-05-01 09:42:03 -070016137// _loop0_119: ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016138static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016139_loop0_119_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016140{
16141 if (p->error_indicator) {
16142 return NULL;
16143 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016144 void *_res = NULL;
16145 int _mark = p->mark;
16146 int _start_mark = p->mark;
16147 void **_children = PyMem_Malloc(sizeof(void *));
16148 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016149 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16150 return NULL;
16151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016152 ssize_t _children_capacity = 1;
16153 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016154 { // ',' star_target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016155 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016156 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016157 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016158 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016159 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016160 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016161 )
16162 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016163 _res = elem;
16164 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016165 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016166 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016167 return NULL;
16168 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016169 if (_n == _children_capacity) {
16170 _children_capacity *= 2;
16171 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16172 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016173 PyErr_Format(PyExc_MemoryError, "realloc None");
16174 return NULL;
16175 }
16176 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016177 _children[_n++] = _res;
16178 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016179 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016180 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016181 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016182 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16183 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016184 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_119");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016185 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016186 return NULL;
16187 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016188 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16189 PyMem_Free(_children);
16190 _PyPegen_insert_memo(p, _start_mark, _loop0_119_type, _seq);
16191 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016192}
16193
Guido van Rossum3941d972020-05-01 09:42:03 -070016194// _gather_118: star_target _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016195static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016196_gather_118_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016197{
16198 if (p->error_indicator) {
16199 return NULL;
16200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016201 asdl_seq * _res = NULL;
16202 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016203 { // star_target _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016204 expr_ty elem;
16205 asdl_seq * seq;
16206 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016207 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016208 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016209 (seq = _loop0_119_rule(p)) // _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016210 )
16211 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016212 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016213 goto done;
16214 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016215 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016216 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016217 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016218 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016219 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016220}
16221
Guido van Rossum3941d972020-05-01 09:42:03 -070016222// _tmp_120: !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016223static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016224_tmp_120_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016225{
16226 if (p->error_indicator) {
16227 return NULL;
16228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016229 void * _res = NULL;
16230 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016231 { // !'*' star_target
16232 expr_ty star_target_var;
16233 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016234 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016235 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016236 (star_target_var = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016237 )
16238 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016239 _res = star_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016240 goto done;
16241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016242 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016244 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016245 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016246 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016247}
16248
Guido van Rossum3941d972020-05-01 09:42:03 -070016249// _loop0_122: ',' del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016250static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016251_loop0_122_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016252{
16253 if (p->error_indicator) {
16254 return NULL;
16255 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016256 void *_res = NULL;
16257 int _mark = p->mark;
16258 int _start_mark = p->mark;
16259 void **_children = PyMem_Malloc(sizeof(void *));
16260 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016261 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16262 return NULL;
16263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016264 ssize_t _children_capacity = 1;
16265 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016266 { // ',' del_target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016267 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016268 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016269 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016270 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016271 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016272 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016273 )
16274 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016275 _res = elem;
16276 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016277 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016278 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016279 return NULL;
16280 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016281 if (_n == _children_capacity) {
16282 _children_capacity *= 2;
16283 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16284 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016285 PyErr_Format(PyExc_MemoryError, "realloc None");
16286 return NULL;
16287 }
16288 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016289 _children[_n++] = _res;
16290 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016292 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016293 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016294 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16295 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016296 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_122");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016297 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016298 return NULL;
16299 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016300 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16301 PyMem_Free(_children);
16302 _PyPegen_insert_memo(p, _start_mark, _loop0_122_type, _seq);
16303 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016304}
16305
Guido van Rossum3941d972020-05-01 09:42:03 -070016306// _gather_121: del_target _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016307static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016308_gather_121_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016309{
16310 if (p->error_indicator) {
16311 return NULL;
16312 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016313 asdl_seq * _res = NULL;
16314 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016315 { // del_target _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016316 expr_ty elem;
16317 asdl_seq * seq;
16318 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016319 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016320 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016321 (seq = _loop0_122_rule(p)) // _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016322 )
16323 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016324 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016325 goto done;
16326 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016327 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016328 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016329 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016330 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016331 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016332}
16333
Guido van Rossum3941d972020-05-01 09:42:03 -070016334// _loop0_124: ',' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016335static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016336_loop0_124_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016337{
16338 if (p->error_indicator) {
16339 return NULL;
16340 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016341 void *_res = NULL;
16342 int _mark = p->mark;
16343 int _start_mark = p->mark;
16344 void **_children = PyMem_Malloc(sizeof(void *));
16345 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016346 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16347 return NULL;
16348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016349 ssize_t _children_capacity = 1;
16350 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016351 { // ',' target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016352 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016353 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016354 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016355 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016356 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016357 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016358 )
16359 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016360 _res = elem;
16361 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016362 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016363 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016364 return NULL;
16365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016366 if (_n == _children_capacity) {
16367 _children_capacity *= 2;
16368 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16369 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016370 PyErr_Format(PyExc_MemoryError, "realloc None");
16371 return NULL;
16372 }
16373 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016374 _children[_n++] = _res;
16375 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016376 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016377 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016378 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016379 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16380 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016381 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_124");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016382 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016383 return NULL;
16384 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016385 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16386 PyMem_Free(_children);
16387 _PyPegen_insert_memo(p, _start_mark, _loop0_124_type, _seq);
16388 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016389}
16390
Guido van Rossum3941d972020-05-01 09:42:03 -070016391// _gather_123: target _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016392static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016393_gather_123_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016394{
16395 if (p->error_indicator) {
16396 return NULL;
16397 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016398 asdl_seq * _res = NULL;
16399 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016400 { // target _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016401 expr_ty elem;
16402 asdl_seq * seq;
16403 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016404 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016405 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016406 (seq = _loop0_124_rule(p)) // _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016407 )
16408 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016409 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016410 goto done;
16411 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016412 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016413 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016414 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016415 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016416 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016417}
16418
Guido van Rossum3941d972020-05-01 09:42:03 -070016419// _tmp_125: args | expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016420static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016421_tmp_125_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016422{
16423 if (p->error_indicator) {
16424 return NULL;
16425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016426 void * _res = NULL;
16427 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016428 { // args
16429 expr_ty args_var;
16430 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016431 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016432 )
16433 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016434 _res = args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016435 goto done;
16436 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016437 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016438 }
16439 { // expression for_if_clauses
16440 expr_ty expression_var;
16441 asdl_seq* for_if_clauses_var;
16442 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016443 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016444 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016445 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016446 )
16447 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016448 _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016449 goto done;
16450 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016451 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016452 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016453 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016454 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016455 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016456}
16457
Guido van Rossum3941d972020-05-01 09:42:03 -070016458// _tmp_126: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016459static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016460_tmp_126_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016461{
16462 if (p->error_indicator) {
16463 return NULL;
16464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016465 void * _res = NULL;
16466 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016467 { // '=' annotated_rhs
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016468 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016469 expr_ty annotated_rhs_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016470 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016471 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016472 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016473 (annotated_rhs_var = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016474 )
16475 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016476 _res = _PyPegen_dummy_name(p, _literal, annotated_rhs_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016477 goto done;
16478 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016479 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016481 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016482 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016483 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016484}
16485
Guido van Rossum3941d972020-05-01 09:42:03 -070016486// _tmp_127: '=' | augassign
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016487static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016488_tmp_127_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016489{
16490 if (p->error_indicator) {
16491 return NULL;
16492 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016493 void * _res = NULL;
16494 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016495 { // '='
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016496 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016497 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016498 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016499 )
16500 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016501 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016502 goto done;
16503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016504 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016505 }
16506 { // augassign
16507 AugOperator* augassign_var;
16508 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016509 (augassign_var = augassign_rule(p)) // augassign
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016510 )
16511 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016512 _res = augassign_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016513 goto done;
16514 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016515 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016516 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016517 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016518 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016519 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016520}
16521
Guido van Rossum3941d972020-05-01 09:42:03 -070016522// _tmp_128: yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016523static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016524_tmp_128_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016525{
16526 if (p->error_indicator) {
16527 return NULL;
16528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016529 void * _res = NULL;
16530 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016531 { // yield_expr
16532 expr_ty yield_expr_var;
16533 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016534 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016535 )
16536 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016537 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016538 goto done;
16539 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016540 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016541 }
16542 { // star_expressions
16543 expr_ty star_expressions_var;
16544 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016545 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016546 )
16547 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016548 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016549 goto done;
16550 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016551 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016552 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016553 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016554 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016555 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016556}
16557
Guido van Rossum3941d972020-05-01 09:42:03 -070016558// _tmp_129: '[' | '(' | '{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016559static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016560_tmp_129_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016561{
16562 if (p->error_indicator) {
16563 return NULL;
16564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016565 void * _res = NULL;
16566 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016567 { // '['
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016568 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016569 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016570 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016571 )
16572 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016573 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016574 goto done;
16575 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016576 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016577 }
16578 { // '('
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016579 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016580 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016581 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016582 )
16583 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016584 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016585 goto done;
16586 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016587 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016588 }
16589 { // '{'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016590 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016591 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016592 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016593 )
16594 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016595 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016596 goto done;
16597 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016598 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016599 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016600 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016601 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016602 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016603}
16604
Guido van Rossum3941d972020-05-01 09:42:03 -070016605// _loop0_130: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070016606static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016607_loop0_130_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016608{
16609 if (p->error_indicator) {
16610 return NULL;
16611 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016612 void *_res = NULL;
16613 int _mark = p->mark;
16614 int _start_mark = p->mark;
16615 void **_children = PyMem_Malloc(sizeof(void *));
16616 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016617 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16618 return NULL;
16619 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016620 ssize_t _children_capacity = 1;
16621 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070016622 { // param_no_default
16623 arg_ty param_no_default_var;
16624 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016625 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016626 )
16627 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016628 _res = param_no_default_var;
16629 if (_n == _children_capacity) {
16630 _children_capacity *= 2;
16631 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16632 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016633 PyErr_Format(PyExc_MemoryError, "realloc None");
16634 return NULL;
16635 }
16636 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016637 _children[_n++] = _res;
16638 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016639 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016640 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016642 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16643 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016644 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_130");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016645 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016646 return NULL;
16647 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016648 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16649 PyMem_Free(_children);
16650 _PyPegen_insert_memo(p, _start_mark, _loop0_130_type, _seq);
16651 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016652}
16653
Guido van Rossum3941d972020-05-01 09:42:03 -070016654// _tmp_131: slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016655static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016656_tmp_131_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016657{
16658 if (p->error_indicator) {
16659 return NULL;
16660 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016661 void * _res = NULL;
16662 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016663 { // slash_with_default
16664 SlashWithDefault* slash_with_default_var;
16665 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016666 (slash_with_default_var = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016667 )
16668 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016669 _res = slash_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016670 goto done;
16671 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016672 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016673 }
Guido van Rossumc001c092020-04-30 12:12:19 -070016674 { // param_with_default+
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016675 asdl_seq * _loop1_145_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016676 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016677 (_loop1_145_var = _loop1_145_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016678 )
16679 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016680 _res = _loop1_145_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016681 goto done;
16682 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016683 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016684 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016685 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016686 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016687 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016688}
16689
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016690// _tmp_132: ')' | ',' (')' | '**')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016691static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016692_tmp_132_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016693{
16694 if (p->error_indicator) {
16695 return NULL;
16696 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016697 void * _res = NULL;
16698 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016699 { // ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016700 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016701 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016702 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016703 )
16704 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016705 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016706 goto done;
16707 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016708 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016709 }
16710 { // ',' (')' | '**')
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016711 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016712 void *_tmp_146_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016713 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016714 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016715 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016716 (_tmp_146_var = _tmp_146_rule(p)) // ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016717 )
16718 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016719 _res = _PyPegen_dummy_name(p, _literal, _tmp_146_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016720 goto done;
16721 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016722 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016723 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016724 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016725 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016726 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016727}
16728
16729// _tmp_133: ':' | ',' (':' | '**')
16730static void *
16731_tmp_133_rule(Parser *p)
16732{
16733 if (p->error_indicator) {
16734 return NULL;
16735 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016736 void * _res = NULL;
16737 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016738 { // ':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016739 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016740 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016741 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016742 )
16743 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016744 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016745 goto done;
16746 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016747 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016748 }
16749 { // ',' (':' | '**')
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016750 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016751 void *_tmp_147_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016752 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016753 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016754 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016755 (_tmp_147_var = _tmp_147_rule(p)) // ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016756 )
16757 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016758 _res = _PyPegen_dummy_name(p, _literal, _tmp_147_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016759 goto done;
16760 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016761 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016762 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016763 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016764 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016765 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016766}
16767
16768// _tmp_134: star_targets '='
16769static void *
16770_tmp_134_rule(Parser *p)
16771{
16772 if (p->error_indicator) {
16773 return NULL;
16774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016775 void * _res = NULL;
16776 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016777 { // star_targets '='
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016778 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016779 expr_ty z;
16780 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016781 (z = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016782 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016783 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016784 )
16785 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016786 _res = z;
16787 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016788 p->error_indicator = 1;
16789 return NULL;
16790 }
16791 goto done;
16792 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016793 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016794 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016795 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016796 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016797 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016798}
16799
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016800// _tmp_135: '.' | '...'
Pablo Galindo2b74c832020-04-27 18:02:07 +010016801static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016802_tmp_135_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016803{
16804 if (p->error_indicator) {
16805 return NULL;
16806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016807 void * _res = NULL;
16808 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016809 { // '.'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016810 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016811 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016812 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016813 )
16814 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016815 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016816 goto done;
16817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016818 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016819 }
16820 { // '...'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016821 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016822 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016823 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016824 )
16825 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016826 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016827 goto done;
16828 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016829 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016831 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016832 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016833 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016834}
16835
16836// _tmp_136: '.' | '...'
16837static void *
16838_tmp_136_rule(Parser *p)
16839{
16840 if (p->error_indicator) {
16841 return NULL;
16842 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016843 void * _res = NULL;
16844 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016845 { // '.'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016846 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016847 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016848 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016849 )
16850 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016851 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016852 goto done;
16853 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016854 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016855 }
16856 { // '...'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016857 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016858 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016859 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016860 )
16861 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016862 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016863 goto done;
16864 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016865 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016866 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016867 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016868 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016869 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016870}
16871
16872// _tmp_137: '@' named_expression NEWLINE
16873static void *
16874_tmp_137_rule(Parser *p)
16875{
16876 if (p->error_indicator) {
16877 return NULL;
16878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016879 void * _res = NULL;
16880 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016881 { // '@' named_expression NEWLINE
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016882 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016883 expr_ty f;
Pablo Galindob796b3f2020-05-01 12:32:26 +010016884 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016885 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016886 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016887 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016888 (f = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016889 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016890 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016891 )
16892 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016893 _res = f;
16894 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016895 p->error_indicator = 1;
16896 return NULL;
16897 }
16898 goto done;
16899 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016900 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016901 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016902 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016903 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016904 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016905}
16906
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016907// _tmp_138: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016908static void *
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016909_tmp_138_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016910{
16911 if (p->error_indicator) {
16912 return NULL;
16913 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016914 void * _res = NULL;
16915 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016916 { // ',' star_expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016917 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016918 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016919 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016920 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016921 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016922 (c = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016923 )
16924 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016925 _res = c;
16926 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016927 p->error_indicator = 1;
16928 return NULL;
16929 }
16930 goto done;
16931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016932 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016933 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016934 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016935 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016936 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016937}
16938
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016939// _tmp_139: ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016940static void *
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016941_tmp_139_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016942{
16943 if (p->error_indicator) {
16944 return NULL;
16945 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016946 void * _res = NULL;
16947 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016948 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016949 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016950 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016951 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016952 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016953 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016954 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016955 )
16956 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016957 _res = c;
16958 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016959 p->error_indicator = 1;
16960 return NULL;
16961 }
16962 goto done;
16963 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016964 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016966 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016967 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016968 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016969}
16970
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016971// _tmp_140: 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016972static void *
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016973_tmp_140_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016974{
16975 if (p->error_indicator) {
16976 return NULL;
16977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016978 void * _res = NULL;
16979 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016980 { // 'or' conjunction
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016981 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016982 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016983 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016984 (_keyword = _PyPegen_expect_token(p, 532)) // token='or'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016985 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016986 (c = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016987 )
16988 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016989 _res = c;
16990 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016991 p->error_indicator = 1;
16992 return NULL;
16993 }
16994 goto done;
16995 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016996 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016997 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016998 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016999 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017000 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017001}
17002
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017003// _tmp_141: 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017004static void *
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017005_tmp_141_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017006{
17007 if (p->error_indicator) {
17008 return NULL;
17009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017010 void * _res = NULL;
17011 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017012 { // 'and' inversion
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017013 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017014 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017015 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017016 (_keyword = _PyPegen_expect_token(p, 533)) // token='and'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017017 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017018 (c = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017019 )
17020 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017021 _res = c;
17022 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017023 p->error_indicator = 1;
17024 return NULL;
17025 }
17026 goto done;
17027 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017028 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017029 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017030 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017031 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017032 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017033}
17034
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017035// _tmp_142: 'if' disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017036static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017037_tmp_142_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017038{
17039 if (p->error_indicator) {
17040 return NULL;
17041 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017042 void * _res = NULL;
17043 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017044 { // 'if' disjunction
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017045 Token * _keyword;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017046 expr_ty z;
17047 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017048 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017049 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017050 (z = disjunction_rule(p)) // disjunction
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017051 )
17052 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017053 _res = z;
17054 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017055 p->error_indicator = 1;
17056 return NULL;
17057 }
17058 goto done;
17059 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017060 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017062 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017063 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017064 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017065}
17066
17067// _tmp_143: 'if' disjunction
17068static void *
17069_tmp_143_rule(Parser *p)
17070{
17071 if (p->error_indicator) {
17072 return NULL;
17073 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017074 void * _res = NULL;
17075 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017076 { // 'if' disjunction
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017077 Token * _keyword;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017078 expr_ty z;
17079 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017080 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017081 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017082 (z = disjunction_rule(p)) // disjunction
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017083 )
17084 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017085 _res = z;
17086 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017087 p->error_indicator = 1;
17088 return NULL;
17089 }
17090 goto done;
17091 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017092 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017094 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017095 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017096 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017097}
17098
17099// _tmp_144: ',' star_target
17100static void *
17101_tmp_144_rule(Parser *p)
17102{
17103 if (p->error_indicator) {
17104 return NULL;
17105 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017106 void * _res = NULL;
17107 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017108 { // ',' star_target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017109 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017110 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017111 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017112 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017113 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017114 (c = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017115 )
17116 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017117 _res = c;
17118 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017119 p->error_indicator = 1;
17120 return NULL;
17121 }
17122 goto done;
17123 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017124 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017125 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017126 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017127 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017128 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017129}
17130
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017131// _loop1_145: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017132static asdl_seq *
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017133_loop1_145_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070017134{
17135 if (p->error_indicator) {
17136 return NULL;
17137 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017138 void *_res = NULL;
17139 int _mark = p->mark;
17140 int _start_mark = p->mark;
17141 void **_children = PyMem_Malloc(sizeof(void *));
17142 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070017143 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
17144 return NULL;
17145 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017146 ssize_t _children_capacity = 1;
17147 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070017148 { // param_with_default
17149 NameDefaultPair* param_with_default_var;
17150 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010017151 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070017152 )
17153 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017154 _res = param_with_default_var;
17155 if (_n == _children_capacity) {
17156 _children_capacity *= 2;
17157 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17158 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070017159 PyErr_Format(PyExc_MemoryError, "realloc None");
17160 return NULL;
17161 }
17162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017163 _children[_n++] = _res;
17164 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017165 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017166 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017167 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017168 if (_n == 0 || p->error_indicator) {
17169 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070017170 return NULL;
17171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017172 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17173 if (!_seq) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017174 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_145");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017175 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070017176 return NULL;
17177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017178 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17179 PyMem_Free(_children);
17180 _PyPegen_insert_memo(p, _start_mark, _loop1_145_type, _seq);
17181 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070017182}
17183
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017184// _tmp_146: ')' | '**'
17185static void *
17186_tmp_146_rule(Parser *p)
17187{
17188 if (p->error_indicator) {
17189 return NULL;
17190 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017191 void * _res = NULL;
17192 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017193 { // ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017194 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017195 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017196 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017197 )
17198 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017199 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017200 goto done;
17201 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017202 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017203 }
17204 { // '**'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017205 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017206 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017207 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017208 )
17209 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017210 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017211 goto done;
17212 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017213 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017214 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017215 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017216 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017217 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017218}
17219
17220// _tmp_147: ':' | '**'
17221static void *
17222_tmp_147_rule(Parser *p)
17223{
17224 if (p->error_indicator) {
17225 return NULL;
17226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017227 void * _res = NULL;
17228 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017229 { // ':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017230 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017231 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017232 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017233 )
17234 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017235 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017236 goto done;
17237 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017238 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017239 }
17240 { // '**'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017241 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017242 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017243 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017244 )
17245 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017246 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017247 goto done;
17248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017249 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017250 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017251 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017252 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017253 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017254}
17255
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017256void *
17257_PyPegen_parse(Parser *p)
17258{
17259 // Initialize keywords
17260 p->keywords = reserved_keywords;
17261 p->n_keyword_lists = n_keyword_lists;
17262
17263 // Run parser
17264 void *result = NULL;
17265 if (p->start_rule == Py_file_input) {
17266 result = file_rule(p);
17267 } else if (p->start_rule == Py_single_input) {
17268 result = interactive_rule(p);
17269 } else if (p->start_rule == Py_eval_input) {
17270 result = eval_rule(p);
Guido van Rossumc001c092020-04-30 12:12:19 -070017271 } else if (p->start_rule == Py_func_type_input) {
17272 result = func_type_rule(p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017273 } else if (p->start_rule == Py_fstring_input) {
17274 result = fstring_rule(p);
17275 }
17276
17277 return result;
17278}
17279
17280// The end