blob: 75aefa4d893651766a11766eb9f96e8c0273710f [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
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +0300202#define single_target_type 1131
203#define single_subscript_attribute_target_type 1132
Guido van Rossum3941d972020-05-01 09:42:03 -0700204#define del_targets_type 1133
205#define del_target_type 1134
206#define del_t_atom_type 1135
Shantanu27c0d9b2020-05-11 14:53:58 -0700207#define del_target_end_type 1136
208#define targets_type 1137
209#define target_type 1138
210#define t_primary_type 1139 // Left-recursive
211#define t_lookahead_type 1140
212#define t_atom_type 1141
213#define incorrect_arguments_type 1142
214#define invalid_kwarg_type 1143
215#define invalid_named_expression_type 1144
216#define invalid_assignment_type 1145
217#define invalid_block_type 1146
218#define invalid_comprehension_type 1147
219#define invalid_parameters_type 1148
220#define invalid_star_etc_type 1149
221#define invalid_lambda_star_etc_type 1150
222#define invalid_double_type_comments_type 1151
223#define invalid_del_target_type 1152
Pablo Galindo275d7e12020-05-21 22:04:54 +0100224#define invalid_import_from_targets_type 1153
225#define _loop0_1_type 1154
226#define _loop0_2_type 1155
227#define _loop0_4_type 1156
228#define _gather_3_type 1157
229#define _loop0_6_type 1158
230#define _gather_5_type 1159
231#define _loop0_8_type 1160
232#define _gather_7_type 1161
233#define _loop0_10_type 1162
234#define _gather_9_type 1163
235#define _loop1_11_type 1164
236#define _loop0_13_type 1165
237#define _gather_12_type 1166
238#define _tmp_14_type 1167
239#define _tmp_15_type 1168
240#define _tmp_16_type 1169
241#define _tmp_17_type 1170
242#define _tmp_18_type 1171
243#define _tmp_19_type 1172
244#define _tmp_20_type 1173
245#define _tmp_21_type 1174
246#define _loop1_22_type 1175
247#define _tmp_23_type 1176
248#define _tmp_24_type 1177
249#define _loop0_26_type 1178
250#define _gather_25_type 1179
251#define _loop0_28_type 1180
252#define _gather_27_type 1181
253#define _tmp_29_type 1182
254#define _loop0_30_type 1183
255#define _loop1_31_type 1184
256#define _loop0_33_type 1185
257#define _gather_32_type 1186
258#define _tmp_34_type 1187
259#define _loop0_36_type 1188
260#define _gather_35_type 1189
261#define _tmp_37_type 1190
262#define _loop0_39_type 1191
263#define _gather_38_type 1192
264#define _loop0_41_type 1193
265#define _gather_40_type 1194
266#define _loop0_43_type 1195
267#define _gather_42_type 1196
268#define _loop0_45_type 1197
269#define _gather_44_type 1198
270#define _tmp_46_type 1199
271#define _loop1_47_type 1200
272#define _tmp_48_type 1201
273#define _tmp_49_type 1202
274#define _tmp_50_type 1203
275#define _tmp_51_type 1204
276#define _tmp_52_type 1205
277#define _loop0_53_type 1206
278#define _loop0_54_type 1207
279#define _loop0_55_type 1208
280#define _loop1_56_type 1209
281#define _loop0_57_type 1210
282#define _loop1_58_type 1211
283#define _loop1_59_type 1212
284#define _loop1_60_type 1213
285#define _loop0_61_type 1214
286#define _loop1_62_type 1215
287#define _loop0_63_type 1216
288#define _loop1_64_type 1217
289#define _loop0_65_type 1218
290#define _loop1_66_type 1219
291#define _loop1_67_type 1220
292#define _tmp_68_type 1221
293#define _loop0_70_type 1222
294#define _gather_69_type 1223
295#define _loop1_71_type 1224
296#define _loop0_73_type 1225
297#define _gather_72_type 1226
298#define _loop1_74_type 1227
299#define _loop0_75_type 1228
300#define _loop0_76_type 1229
301#define _loop0_77_type 1230
302#define _loop1_78_type 1231
303#define _loop0_79_type 1232
304#define _loop1_80_type 1233
305#define _loop1_81_type 1234
306#define _loop1_82_type 1235
307#define _loop0_83_type 1236
308#define _loop1_84_type 1237
309#define _loop0_85_type 1238
310#define _loop1_86_type 1239
311#define _loop0_87_type 1240
312#define _loop1_88_type 1241
313#define _loop1_89_type 1242
314#define _loop1_90_type 1243
315#define _loop1_91_type 1244
316#define _tmp_92_type 1245
317#define _loop0_94_type 1246
318#define _gather_93_type 1247
319#define _tmp_95_type 1248
320#define _tmp_96_type 1249
321#define _tmp_97_type 1250
322#define _tmp_98_type 1251
323#define _loop1_99_type 1252
324#define _tmp_100_type 1253
325#define _tmp_101_type 1254
326#define _loop0_103_type 1255
327#define _gather_102_type 1256
328#define _loop1_104_type 1257
329#define _loop0_105_type 1258
330#define _loop0_106_type 1259
331#define _tmp_107_type 1260
332#define _tmp_108_type 1261
333#define _loop0_110_type 1262
334#define _gather_109_type 1263
335#define _loop0_112_type 1264
336#define _gather_111_type 1265
337#define _loop0_114_type 1266
338#define _gather_113_type 1267
339#define _loop0_116_type 1268
340#define _gather_115_type 1269
341#define _loop0_117_type 1270
342#define _loop0_119_type 1271
343#define _gather_118_type 1272
344#define _tmp_120_type 1273
345#define _loop0_122_type 1274
346#define _gather_121_type 1275
347#define _loop0_124_type 1276
348#define _gather_123_type 1277
349#define _tmp_125_type 1278
350#define _loop0_126_type 1279
351#define _tmp_127_type 1280
352#define _tmp_128_type 1281
353#define _tmp_129_type 1282
354#define _tmp_130_type 1283
355#define _loop0_131_type 1284
356#define _tmp_132_type 1285
357#define _tmp_133_type 1286
358#define _tmp_134_type 1287
359#define _tmp_135_type 1288
360#define _tmp_136_type 1289
361#define _tmp_137_type 1290
362#define _tmp_138_type 1291
363#define _tmp_139_type 1292
364#define _tmp_140_type 1293
365#define _tmp_141_type 1294
366#define _tmp_142_type 1295
367#define _tmp_143_type 1296
368#define _tmp_144_type 1297
369#define _tmp_145_type 1298
370#define _loop1_146_type 1299
371#define _tmp_147_type 1300
372#define _tmp_148_type 1301
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100373
374static mod_ty file_rule(Parser *p);
375static mod_ty interactive_rule(Parser *p);
376static mod_ty eval_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700377static mod_ty func_type_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100378static expr_ty fstring_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700379static asdl_seq* type_expressions_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100380static asdl_seq* statements_rule(Parser *p);
381static asdl_seq* statement_rule(Parser *p);
382static asdl_seq* statement_newline_rule(Parser *p);
383static asdl_seq* simple_stmt_rule(Parser *p);
384static stmt_ty small_stmt_rule(Parser *p);
385static stmt_ty compound_stmt_rule(Parser *p);
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +0300386static stmt_ty assignment_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100387static AugOperator* augassign_rule(Parser *p);
388static stmt_ty global_stmt_rule(Parser *p);
389static stmt_ty nonlocal_stmt_rule(Parser *p);
390static stmt_ty yield_stmt_rule(Parser *p);
391static stmt_ty assert_stmt_rule(Parser *p);
392static stmt_ty del_stmt_rule(Parser *p);
393static stmt_ty import_stmt_rule(Parser *p);
394static stmt_ty import_name_rule(Parser *p);
395static stmt_ty import_from_rule(Parser *p);
396static asdl_seq* import_from_targets_rule(Parser *p);
397static asdl_seq* import_from_as_names_rule(Parser *p);
398static alias_ty import_from_as_name_rule(Parser *p);
399static asdl_seq* dotted_as_names_rule(Parser *p);
400static alias_ty dotted_as_name_rule(Parser *p);
401static expr_ty dotted_name_rule(Parser *p);
402static stmt_ty if_stmt_rule(Parser *p);
403static stmt_ty elif_stmt_rule(Parser *p);
404static asdl_seq* else_block_rule(Parser *p);
405static stmt_ty while_stmt_rule(Parser *p);
406static stmt_ty for_stmt_rule(Parser *p);
407static stmt_ty with_stmt_rule(Parser *p);
408static withitem_ty with_item_rule(Parser *p);
409static stmt_ty try_stmt_rule(Parser *p);
410static excepthandler_ty except_block_rule(Parser *p);
411static asdl_seq* finally_block_rule(Parser *p);
412static stmt_ty return_stmt_rule(Parser *p);
413static stmt_ty raise_stmt_rule(Parser *p);
414static stmt_ty function_def_rule(Parser *p);
415static stmt_ty function_def_raw_rule(Parser *p);
Pablo Galindod9552412020-05-01 16:32:09 +0100416static Token* func_type_comment_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100417static arguments_ty params_rule(Parser *p);
418static arguments_ty parameters_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700419static asdl_seq* slash_no_default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100420static SlashWithDefault* slash_with_default_rule(Parser *p);
421static StarEtc* star_etc_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100422static arg_ty kwds_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700423static arg_ty param_no_default_rule(Parser *p);
424static NameDefaultPair* param_with_default_rule(Parser *p);
425static NameDefaultPair* param_maybe_default_rule(Parser *p);
426static arg_ty param_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100427static expr_ty annotation_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700428static expr_ty default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100429static asdl_seq* decorators_rule(Parser *p);
430static stmt_ty class_def_rule(Parser *p);
431static stmt_ty class_def_raw_rule(Parser *p);
432static asdl_seq* block_rule(Parser *p);
433static asdl_seq* expressions_list_rule(Parser *p);
434static expr_ty star_expressions_rule(Parser *p);
435static expr_ty star_expression_rule(Parser *p);
436static asdl_seq* star_named_expressions_rule(Parser *p);
437static expr_ty star_named_expression_rule(Parser *p);
438static expr_ty named_expression_rule(Parser *p);
439static expr_ty annotated_rhs_rule(Parser *p);
440static expr_ty expressions_rule(Parser *p);
441static expr_ty expression_rule(Parser *p);
442static expr_ty lambdef_rule(Parser *p);
443static arguments_ty lambda_parameters_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700444static asdl_seq* lambda_slash_no_default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100445static SlashWithDefault* lambda_slash_with_default_rule(Parser *p);
446static StarEtc* lambda_star_etc_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100447static arg_ty lambda_kwds_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700448static arg_ty lambda_param_no_default_rule(Parser *p);
449static NameDefaultPair* lambda_param_with_default_rule(Parser *p);
450static NameDefaultPair* lambda_param_maybe_default_rule(Parser *p);
451static arg_ty lambda_param_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100452static expr_ty disjunction_rule(Parser *p);
453static expr_ty conjunction_rule(Parser *p);
454static expr_ty inversion_rule(Parser *p);
455static expr_ty comparison_rule(Parser *p);
456static CmpopExprPair* compare_op_bitwise_or_pair_rule(Parser *p);
457static CmpopExprPair* eq_bitwise_or_rule(Parser *p);
458static CmpopExprPair* noteq_bitwise_or_rule(Parser *p);
459static CmpopExprPair* lte_bitwise_or_rule(Parser *p);
460static CmpopExprPair* lt_bitwise_or_rule(Parser *p);
461static CmpopExprPair* gte_bitwise_or_rule(Parser *p);
462static CmpopExprPair* gt_bitwise_or_rule(Parser *p);
463static CmpopExprPair* notin_bitwise_or_rule(Parser *p);
464static CmpopExprPair* in_bitwise_or_rule(Parser *p);
465static CmpopExprPair* isnot_bitwise_or_rule(Parser *p);
466static CmpopExprPair* is_bitwise_or_rule(Parser *p);
467static expr_ty bitwise_or_rule(Parser *p);
468static expr_ty bitwise_xor_rule(Parser *p);
469static expr_ty bitwise_and_rule(Parser *p);
470static expr_ty shift_expr_rule(Parser *p);
471static expr_ty sum_rule(Parser *p);
472static expr_ty term_rule(Parser *p);
473static expr_ty factor_rule(Parser *p);
474static expr_ty power_rule(Parser *p);
475static expr_ty await_primary_rule(Parser *p);
476static expr_ty primary_rule(Parser *p);
477static expr_ty slices_rule(Parser *p);
478static expr_ty slice_rule(Parser *p);
479static expr_ty atom_rule(Parser *p);
480static expr_ty strings_rule(Parser *p);
481static expr_ty list_rule(Parser *p);
482static expr_ty listcomp_rule(Parser *p);
483static expr_ty tuple_rule(Parser *p);
484static expr_ty group_rule(Parser *p);
485static expr_ty genexp_rule(Parser *p);
486static expr_ty set_rule(Parser *p);
487static expr_ty setcomp_rule(Parser *p);
488static expr_ty dict_rule(Parser *p);
489static expr_ty dictcomp_rule(Parser *p);
490static asdl_seq* kvpairs_rule(Parser *p);
491static KeyValuePair* kvpair_rule(Parser *p);
492static asdl_seq* for_if_clauses_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300493static comprehension_ty for_if_clause_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100494static expr_ty yield_expr_rule(Parser *p);
495static expr_ty arguments_rule(Parser *p);
496static expr_ty args_rule(Parser *p);
497static asdl_seq* kwargs_rule(Parser *p);
498static expr_ty starred_expression_rule(Parser *p);
499static KeywordOrStarred* kwarg_or_starred_rule(Parser *p);
500static KeywordOrStarred* kwarg_or_double_starred_rule(Parser *p);
501static expr_ty star_targets_rule(Parser *p);
502static asdl_seq* star_targets_seq_rule(Parser *p);
503static expr_ty star_target_rule(Parser *p);
504static expr_ty star_atom_rule(Parser *p);
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +0300505static expr_ty single_target_rule(Parser *p);
506static expr_ty single_subscript_attribute_target_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100507static asdl_seq* del_targets_rule(Parser *p);
508static expr_ty del_target_rule(Parser *p);
509static expr_ty del_t_atom_rule(Parser *p);
Shantanu27c0d9b2020-05-11 14:53:58 -0700510static void *del_target_end_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100511static asdl_seq* targets_rule(Parser *p);
512static expr_ty target_rule(Parser *p);
513static expr_ty t_primary_rule(Parser *p);
514static void *t_lookahead_rule(Parser *p);
515static expr_ty t_atom_rule(Parser *p);
516static void *incorrect_arguments_rule(Parser *p);
Lysandros Nikolaou4638c642020-05-07 13:44:06 +0300517static void *invalid_kwarg_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100518static void *invalid_named_expression_rule(Parser *p);
519static void *invalid_assignment_rule(Parser *p);
520static void *invalid_block_rule(Parser *p);
521static void *invalid_comprehension_rule(Parser *p);
522static void *invalid_parameters_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300523static void *invalid_star_etc_rule(Parser *p);
524static void *invalid_lambda_star_etc_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700525static void *invalid_double_type_comments_rule(Parser *p);
Shantanu27c0d9b2020-05-11 14:53:58 -0700526static void *invalid_del_target_rule(Parser *p);
Pablo Galindo275d7e12020-05-21 22:04:54 +0100527static void *invalid_import_from_targets_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100528static asdl_seq *_loop0_1_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700529static asdl_seq *_loop0_2_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100530static asdl_seq *_loop0_4_rule(Parser *p);
531static asdl_seq *_gather_3_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700532static asdl_seq *_loop0_6_rule(Parser *p);
533static asdl_seq *_gather_5_rule(Parser *p);
534static asdl_seq *_loop0_8_rule(Parser *p);
535static asdl_seq *_gather_7_rule(Parser *p);
536static asdl_seq *_loop0_10_rule(Parser *p);
537static asdl_seq *_gather_9_rule(Parser *p);
538static asdl_seq *_loop1_11_rule(Parser *p);
539static asdl_seq *_loop0_13_rule(Parser *p);
540static asdl_seq *_gather_12_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100541static void *_tmp_14_rule(Parser *p);
542static void *_tmp_15_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700543static void *_tmp_16_rule(Parser *p);
544static void *_tmp_17_rule(Parser *p);
545static void *_tmp_18_rule(Parser *p);
546static void *_tmp_19_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100547static void *_tmp_20_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700548static void *_tmp_21_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100549static asdl_seq *_loop1_22_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700550static void *_tmp_23_rule(Parser *p);
551static void *_tmp_24_rule(Parser *p);
552static asdl_seq *_loop0_26_rule(Parser *p);
553static asdl_seq *_gather_25_rule(Parser *p);
554static asdl_seq *_loop0_28_rule(Parser *p);
555static asdl_seq *_gather_27_rule(Parser *p);
556static void *_tmp_29_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100557static asdl_seq *_loop0_30_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700558static asdl_seq *_loop1_31_rule(Parser *p);
559static asdl_seq *_loop0_33_rule(Parser *p);
560static asdl_seq *_gather_32_rule(Parser *p);
561static void *_tmp_34_rule(Parser *p);
562static asdl_seq *_loop0_36_rule(Parser *p);
563static asdl_seq *_gather_35_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100564static void *_tmp_37_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700565static asdl_seq *_loop0_39_rule(Parser *p);
566static asdl_seq *_gather_38_rule(Parser *p);
567static asdl_seq *_loop0_41_rule(Parser *p);
568static asdl_seq *_gather_40_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300569static asdl_seq *_loop0_43_rule(Parser *p);
570static asdl_seq *_gather_42_rule(Parser *p);
571static asdl_seq *_loop0_45_rule(Parser *p);
572static asdl_seq *_gather_44_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100573static void *_tmp_46_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300574static asdl_seq *_loop1_47_rule(Parser *p);
575static void *_tmp_48_rule(Parser *p);
576static void *_tmp_49_rule(Parser *p);
577static void *_tmp_50_rule(Parser *p);
578static void *_tmp_51_rule(Parser *p);
579static void *_tmp_52_rule(Parser *p);
580static asdl_seq *_loop0_53_rule(Parser *p);
581static asdl_seq *_loop0_54_rule(Parser *p);
582static asdl_seq *_loop0_55_rule(Parser *p);
583static asdl_seq *_loop1_56_rule(Parser *p);
584static asdl_seq *_loop0_57_rule(Parser *p);
585static asdl_seq *_loop1_58_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700586static asdl_seq *_loop1_59_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300587static asdl_seq *_loop1_60_rule(Parser *p);
588static asdl_seq *_loop0_61_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700589static asdl_seq *_loop1_62_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300590static asdl_seq *_loop0_63_rule(Parser *p);
591static asdl_seq *_loop1_64_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700592static asdl_seq *_loop0_65_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700593static asdl_seq *_loop1_66_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300594static asdl_seq *_loop1_67_rule(Parser *p);
595static void *_tmp_68_rule(Parser *p);
596static asdl_seq *_loop0_70_rule(Parser *p);
597static asdl_seq *_gather_69_rule(Parser *p);
598static asdl_seq *_loop1_71_rule(Parser *p);
599static asdl_seq *_loop0_73_rule(Parser *p);
600static asdl_seq *_gather_72_rule(Parser *p);
601static asdl_seq *_loop1_74_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700602static asdl_seq *_loop0_75_rule(Parser *p);
603static asdl_seq *_loop0_76_rule(Parser *p);
604static asdl_seq *_loop0_77_rule(Parser *p);
605static asdl_seq *_loop1_78_rule(Parser *p);
606static asdl_seq *_loop0_79_rule(Parser *p);
607static asdl_seq *_loop1_80_rule(Parser *p);
608static asdl_seq *_loop1_81_rule(Parser *p);
609static asdl_seq *_loop1_82_rule(Parser *p);
610static asdl_seq *_loop0_83_rule(Parser *p);
611static asdl_seq *_loop1_84_rule(Parser *p);
612static asdl_seq *_loop0_85_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300613static asdl_seq *_loop1_86_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700614static asdl_seq *_loop0_87_rule(Parser *p);
615static asdl_seq *_loop1_88_rule(Parser *p);
616static asdl_seq *_loop1_89_rule(Parser *p);
617static asdl_seq *_loop1_90_rule(Parser *p);
618static asdl_seq *_loop1_91_rule(Parser *p);
619static void *_tmp_92_rule(Parser *p);
620static asdl_seq *_loop0_94_rule(Parser *p);
621static asdl_seq *_gather_93_rule(Parser *p);
622static void *_tmp_95_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700623static void *_tmp_96_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700624static void *_tmp_97_rule(Parser *p);
625static void *_tmp_98_rule(Parser *p);
626static asdl_seq *_loop1_99_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100627static void *_tmp_100_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300628static void *_tmp_101_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700629static asdl_seq *_loop0_103_rule(Parser *p);
630static asdl_seq *_gather_102_rule(Parser *p);
631static asdl_seq *_loop1_104_rule(Parser *p);
632static asdl_seq *_loop0_105_rule(Parser *p);
633static asdl_seq *_loop0_106_rule(Parser *p);
634static void *_tmp_107_rule(Parser *p);
635static void *_tmp_108_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300636static asdl_seq *_loop0_110_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700637static asdl_seq *_gather_109_rule(Parser *p);
638static asdl_seq *_loop0_112_rule(Parser *p);
639static asdl_seq *_gather_111_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100640static asdl_seq *_loop0_114_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300641static asdl_seq *_gather_113_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100642static asdl_seq *_loop0_116_rule(Parser *p);
643static asdl_seq *_gather_115_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700644static asdl_seq *_loop0_117_rule(Parser *p);
645static asdl_seq *_loop0_119_rule(Parser *p);
646static asdl_seq *_gather_118_rule(Parser *p);
647static void *_tmp_120_rule(Parser *p);
648static asdl_seq *_loop0_122_rule(Parser *p);
649static asdl_seq *_gather_121_rule(Parser *p);
650static asdl_seq *_loop0_124_rule(Parser *p);
651static asdl_seq *_gather_123_rule(Parser *p);
652static void *_tmp_125_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300653static asdl_seq *_loop0_126_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700654static void *_tmp_127_rule(Parser *p);
655static void *_tmp_128_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100656static void *_tmp_129_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300657static void *_tmp_130_rule(Parser *p);
658static asdl_seq *_loop0_131_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100659static void *_tmp_132_rule(Parser *p);
660static void *_tmp_133_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700661static void *_tmp_134_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100662static void *_tmp_135_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700663static void *_tmp_136_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100664static void *_tmp_137_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700665static void *_tmp_138_rule(Parser *p);
666static void *_tmp_139_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300667static void *_tmp_140_rule(Parser *p);
668static void *_tmp_141_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700669static void *_tmp_142_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300670static void *_tmp_143_rule(Parser *p);
671static void *_tmp_144_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300672static void *_tmp_145_rule(Parser *p);
673static asdl_seq *_loop1_146_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300674static void *_tmp_147_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300675static void *_tmp_148_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100676
677
678// file: statements? $
679static mod_ty
680file_rule(Parser *p)
681{
682 if (p->error_indicator) {
683 return NULL;
684 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100685 mod_ty _res = NULL;
686 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100687 { // statements? $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300688 if (p->error_indicator) {
689 return NULL;
690 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100691 void *a;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100692 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100693 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100694 (a = statements_rule(p), 1) // statements?
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100695 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100696 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100697 )
698 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100699 _res = _PyPegen_make_module ( p , a );
700 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100701 p->error_indicator = 1;
702 return NULL;
703 }
704 goto done;
705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100706 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100707 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100708 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100709 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100710 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100711}
712
713// interactive: statement_newline
714static mod_ty
715interactive_rule(Parser *p)
716{
717 if (p->error_indicator) {
718 return NULL;
719 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100720 mod_ty _res = NULL;
721 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100722 { // statement_newline
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300723 if (p->error_indicator) {
724 return NULL;
725 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100726 asdl_seq* a;
727 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100728 (a = statement_newline_rule(p)) // statement_newline
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100729 )
730 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100731 _res = Interactive ( a , p -> arena );
732 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100733 p->error_indicator = 1;
734 return NULL;
735 }
736 goto done;
737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100738 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100740 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100741 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100742 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100743}
744
745// eval: expressions NEWLINE* $
746static mod_ty
747eval_rule(Parser *p)
748{
749 if (p->error_indicator) {
750 return NULL;
751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100752 mod_ty _res = NULL;
753 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100754 { // expressions NEWLINE* $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300755 if (p->error_indicator) {
756 return NULL;
757 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100758 asdl_seq * _loop0_1_var;
759 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100760 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100761 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100762 (a = expressions_rule(p)) // expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100763 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100764 (_loop0_1_var = _loop0_1_rule(p)) // NEWLINE*
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100765 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100766 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100767 )
768 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100769 _res = Expression ( a , p -> arena );
770 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100771 p->error_indicator = 1;
772 return NULL;
773 }
774 goto done;
775 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100776 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100777 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100778 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100779 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100780 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100781}
782
Guido van Rossumc001c092020-04-30 12:12:19 -0700783// func_type: '(' type_expressions? ')' '->' expression NEWLINE* $
784static mod_ty
785func_type_rule(Parser *p)
786{
787 if (p->error_indicator) {
788 return NULL;
789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100790 mod_ty _res = NULL;
791 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700792 { // '(' type_expressions? ')' '->' expression NEWLINE* $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300793 if (p->error_indicator) {
794 return NULL;
795 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100796 Token * _literal;
797 Token * _literal_1;
798 Token * _literal_2;
Guido van Rossumc001c092020-04-30 12:12:19 -0700799 asdl_seq * _loop0_2_var;
800 void *a;
801 expr_ty b;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100802 Token * endmarker_var;
Guido van Rossumc001c092020-04-30 12:12:19 -0700803 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100804 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Guido van Rossumc001c092020-04-30 12:12:19 -0700805 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100806 (a = type_expressions_rule(p), 1) // type_expressions?
Guido van Rossumc001c092020-04-30 12:12:19 -0700807 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100808 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -0700809 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100810 (_literal_2 = _PyPegen_expect_token(p, 51)) // token='->'
Guido van Rossumc001c092020-04-30 12:12:19 -0700811 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100812 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700813 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100814 (_loop0_2_var = _loop0_2_rule(p)) // NEWLINE*
Guido van Rossumc001c092020-04-30 12:12:19 -0700815 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100816 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Guido van Rossumc001c092020-04-30 12:12:19 -0700817 )
818 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100819 _res = FunctionType ( a , b , p -> arena );
820 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700821 p->error_indicator = 1;
822 return NULL;
823 }
824 goto done;
825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100826 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700827 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100828 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -0700829 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100830 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -0700831}
832
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100833// fstring: star_expressions
834static expr_ty
835fstring_rule(Parser *p)
836{
837 if (p->error_indicator) {
838 return NULL;
839 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100840 expr_ty _res = NULL;
841 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100842 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300843 if (p->error_indicator) {
844 return NULL;
845 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100846 expr_ty star_expressions_var;
847 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100848 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100849 )
850 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100851 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100852 goto done;
853 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100854 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100856 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100857 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100858 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100859}
860
Guido van Rossumc001c092020-04-30 12:12:19 -0700861// type_expressions:
862// | ','.expression+ ',' '*' expression ',' '**' expression
863// | ','.expression+ ',' '*' expression
864// | ','.expression+ ',' '**' expression
Shantanu603d3542020-05-03 22:08:14 -0700865// | '*' expression ',' '**' expression
866// | '*' expression
867// | '**' expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700868// | ','.expression+
869static asdl_seq*
870type_expressions_rule(Parser *p)
871{
872 if (p->error_indicator) {
873 return NULL;
874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100875 asdl_seq* _res = NULL;
876 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700877 { // ','.expression+ ',' '*' expression ',' '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300878 if (p->error_indicator) {
879 return NULL;
880 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100881 Token * _literal;
882 Token * _literal_1;
883 Token * _literal_2;
884 Token * _literal_3;
Guido van Rossumc001c092020-04-30 12:12:19 -0700885 asdl_seq * a;
886 expr_ty b;
887 expr_ty c;
Guido van Rossumc001c092020-04-30 12:12:19 -0700888 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100889 (a = _gather_3_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700890 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100891 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700892 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100893 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Guido van Rossumc001c092020-04-30 12:12:19 -0700894 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100895 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700896 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100897 (_literal_2 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700898 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100899 (_literal_3 = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -0700900 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100901 (c = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700902 )
903 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100904 _res = _PyPegen_seq_append_to_end ( p , CHECK ( _PyPegen_seq_append_to_end ( p , a , b ) ) , c );
905 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700906 p->error_indicator = 1;
907 return NULL;
908 }
909 goto done;
910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100911 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700912 }
913 { // ','.expression+ ',' '*' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300914 if (p->error_indicator) {
915 return NULL;
916 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100917 Token * _literal;
918 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -0700919 asdl_seq * a;
920 expr_ty b;
Guido van Rossumc001c092020-04-30 12:12:19 -0700921 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100922 (a = _gather_5_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700923 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100924 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700925 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100926 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Guido van Rossumc001c092020-04-30 12:12:19 -0700927 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100928 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700929 )
930 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100931 _res = _PyPegen_seq_append_to_end ( p , a , b );
932 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700933 p->error_indicator = 1;
934 return NULL;
935 }
936 goto done;
937 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100938 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700939 }
940 { // ','.expression+ ',' '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300941 if (p->error_indicator) {
942 return NULL;
943 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100944 Token * _literal;
945 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -0700946 asdl_seq * a;
947 expr_ty b;
Guido van Rossumc001c092020-04-30 12:12:19 -0700948 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100949 (a = _gather_7_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700950 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100951 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700952 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100953 (_literal_1 = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -0700954 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100955 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700956 )
957 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100958 _res = _PyPegen_seq_append_to_end ( p , a , b );
959 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700960 p->error_indicator = 1;
961 return NULL;
962 }
963 goto done;
964 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100965 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700966 }
Shantanu603d3542020-05-03 22:08:14 -0700967 { // '*' expression ',' '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300968 if (p->error_indicator) {
969 return NULL;
970 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100971 Token * _literal;
972 Token * _literal_1;
973 Token * _literal_2;
Shantanu603d3542020-05-03 22:08:14 -0700974 expr_ty a;
975 expr_ty b;
Shantanu603d3542020-05-03 22:08:14 -0700976 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100977 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Shantanu603d3542020-05-03 22:08:14 -0700978 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100979 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700980 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100981 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Shantanu603d3542020-05-03 22:08:14 -0700982 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100983 (_literal_2 = _PyPegen_expect_token(p, 35)) // token='**'
Shantanu603d3542020-05-03 22:08:14 -0700984 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100985 (b = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700986 )
987 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100988 _res = _PyPegen_seq_append_to_end ( p , CHECK ( _PyPegen_singleton_seq ( p , a ) ) , b );
989 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -0700990 p->error_indicator = 1;
991 return NULL;
992 }
993 goto done;
994 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100995 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -0700996 }
997 { // '*' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300998 if (p->error_indicator) {
999 return NULL;
1000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001001 Token * _literal;
Shantanu603d3542020-05-03 22:08:14 -07001002 expr_ty a;
Shantanu603d3542020-05-03 22:08:14 -07001003 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001004 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Shantanu603d3542020-05-03 22:08:14 -07001005 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001006 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -07001007 )
1008 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001009 _res = _PyPegen_singleton_seq ( p , a );
1010 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -07001011 p->error_indicator = 1;
1012 return NULL;
1013 }
1014 goto done;
1015 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001016 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -07001017 }
1018 { // '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001019 if (p->error_indicator) {
1020 return NULL;
1021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001022 Token * _literal;
Shantanu603d3542020-05-03 22:08:14 -07001023 expr_ty a;
Shantanu603d3542020-05-03 22:08:14 -07001024 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001025 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Shantanu603d3542020-05-03 22:08:14 -07001026 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001027 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -07001028 )
1029 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001030 _res = _PyPegen_singleton_seq ( p , a );
1031 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -07001032 p->error_indicator = 1;
1033 return NULL;
1034 }
1035 goto done;
1036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001037 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -07001038 }
Guido van Rossumc001c092020-04-30 12:12:19 -07001039 { // ','.expression+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001040 if (p->error_indicator) {
1041 return NULL;
1042 }
Guido van Rossumc001c092020-04-30 12:12:19 -07001043 asdl_seq * _gather_9_var;
1044 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001045 (_gather_9_var = _gather_9_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -07001046 )
1047 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001048 _res = _gather_9_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07001049 goto done;
1050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001051 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07001052 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001053 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07001054 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001055 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07001056}
1057
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001058// statements: statement+
1059static asdl_seq*
1060statements_rule(Parser *p)
1061{
1062 if (p->error_indicator) {
1063 return NULL;
1064 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001065 asdl_seq* _res = NULL;
1066 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001067 { // statement+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001068 if (p->error_indicator) {
1069 return NULL;
1070 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001071 asdl_seq * a;
1072 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001073 (a = _loop1_11_rule(p)) // statement+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001074 )
1075 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001076 _res = _PyPegen_seq_flatten ( p , a );
1077 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001078 p->error_indicator = 1;
1079 return NULL;
1080 }
1081 goto done;
1082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001083 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001084 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001085 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001086 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001087 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001088}
1089
1090// statement: compound_stmt | simple_stmt
1091static asdl_seq*
1092statement_rule(Parser *p)
1093{
1094 if (p->error_indicator) {
1095 return NULL;
1096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001097 asdl_seq* _res = NULL;
1098 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001099 { // compound_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001100 if (p->error_indicator) {
1101 return NULL;
1102 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001103 stmt_ty a;
1104 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001105 (a = compound_stmt_rule(p)) // compound_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001106 )
1107 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001108 _res = _PyPegen_singleton_seq ( p , a );
1109 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001110 p->error_indicator = 1;
1111 return NULL;
1112 }
1113 goto done;
1114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001115 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001116 }
1117 { // simple_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001118 if (p->error_indicator) {
1119 return NULL;
1120 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001121 asdl_seq* simple_stmt_var;
1122 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001123 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001124 )
1125 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001126 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001127 goto done;
1128 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001129 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001130 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001131 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001132 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001133 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001134}
1135
1136// statement_newline: compound_stmt NEWLINE | simple_stmt | NEWLINE | $
1137static asdl_seq*
1138statement_newline_rule(Parser *p)
1139{
1140 if (p->error_indicator) {
1141 return NULL;
1142 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001143 asdl_seq* _res = NULL;
1144 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001145 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1146 p->error_indicator = 1;
1147 return NULL;
1148 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001149 int _start_lineno = p->tokens[_mark]->lineno;
1150 UNUSED(_start_lineno); // Only used by EXTRA macro
1151 int _start_col_offset = p->tokens[_mark]->col_offset;
1152 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001153 { // compound_stmt NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001154 if (p->error_indicator) {
1155 return NULL;
1156 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001157 stmt_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001158 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001159 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001160 (a = compound_stmt_rule(p)) // compound_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001161 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001162 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001163 )
1164 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001165 _res = _PyPegen_singleton_seq ( p , a );
1166 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001167 p->error_indicator = 1;
1168 return NULL;
1169 }
1170 goto done;
1171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001172 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001173 }
1174 { // simple_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001175 if (p->error_indicator) {
1176 return NULL;
1177 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001178 asdl_seq* simple_stmt_var;
1179 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001180 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001181 )
1182 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001183 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001184 goto done;
1185 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001186 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001187 }
1188 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001189 if (p->error_indicator) {
1190 return NULL;
1191 }
Pablo Galindob796b3f2020-05-01 12:32:26 +01001192 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001193 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001194 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001195 )
1196 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001197 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1198 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001199 return NULL;
1200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001201 int _end_lineno = _token->end_lineno;
1202 UNUSED(_end_lineno); // Only used by EXTRA macro
1203 int _end_col_offset = _token->end_col_offset;
1204 UNUSED(_end_col_offset); // Only used by EXTRA macro
1205 _res = _PyPegen_singleton_seq ( p , CHECK ( _Py_Pass ( EXTRA ) ) );
1206 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001207 p->error_indicator = 1;
1208 return NULL;
1209 }
1210 goto done;
1211 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001212 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001213 }
1214 { // $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001215 if (p->error_indicator) {
1216 return NULL;
1217 }
Pablo Galindob796b3f2020-05-01 12:32:26 +01001218 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001219 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001220 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001221 )
1222 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001223 _res = _PyPegen_interactive_exit ( p );
1224 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001225 p->error_indicator = 1;
1226 return NULL;
1227 }
1228 goto done;
1229 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001230 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001231 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001232 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001233 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001234 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001235}
1236
1237// simple_stmt: small_stmt !';' NEWLINE | ';'.small_stmt+ ';'? NEWLINE
1238static asdl_seq*
1239simple_stmt_rule(Parser *p)
1240{
1241 if (p->error_indicator) {
1242 return NULL;
1243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001244 asdl_seq* _res = NULL;
1245 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001246 { // small_stmt !';' NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001247 if (p->error_indicator) {
1248 return NULL;
1249 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001250 stmt_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001251 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001252 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001253 (a = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001254 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001255 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 13) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001256 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001257 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001258 )
1259 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001260 _res = _PyPegen_singleton_seq ( p , a );
1261 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001262 p->error_indicator = 1;
1263 return NULL;
1264 }
1265 goto done;
1266 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001267 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001268 }
1269 { // ';'.small_stmt+ ';'? NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001270 if (p->error_indicator) {
1271 return NULL;
1272 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001273 void *_opt_var;
1274 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001275 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001276 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001277 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001278 (a = _gather_12_rule(p)) // ';'.small_stmt+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001279 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001280 (_opt_var = _PyPegen_expect_token(p, 13), 1) // ';'?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001281 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001282 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001283 )
1284 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001285 _res = a;
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 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001294 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001295 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001296 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001297}
1298
1299// small_stmt:
1300// | assignment
1301// | star_expressions
1302// | &'return' return_stmt
1303// | &('import' | 'from') import_stmt
1304// | &'raise' raise_stmt
1305// | 'pass'
1306// | &'del' del_stmt
1307// | &'yield' yield_stmt
1308// | &'assert' assert_stmt
1309// | 'break'
1310// | 'continue'
1311// | &'global' global_stmt
1312// | &'nonlocal' nonlocal_stmt
1313static stmt_ty
1314small_stmt_rule(Parser *p)
1315{
1316 if (p->error_indicator) {
1317 return NULL;
1318 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001319 stmt_ty _res = NULL;
1320 if (_PyPegen_is_memoized(p, small_stmt_type, &_res))
1321 return _res;
1322 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001323 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1324 p->error_indicator = 1;
1325 return NULL;
1326 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001327 int _start_lineno = p->tokens[_mark]->lineno;
1328 UNUSED(_start_lineno); // Only used by EXTRA macro
1329 int _start_col_offset = p->tokens[_mark]->col_offset;
1330 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001331 { // assignment
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001332 if (p->error_indicator) {
1333 return NULL;
1334 }
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +03001335 stmt_ty assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001336 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001337 (assignment_var = assignment_rule(p)) // assignment
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001338 )
1339 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001340 _res = assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001341 goto done;
1342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001343 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001344 }
1345 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001346 if (p->error_indicator) {
1347 return NULL;
1348 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001349 expr_ty e;
1350 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001351 (e = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001352 )
1353 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001354 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1355 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001356 return NULL;
1357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001358 int _end_lineno = _token->end_lineno;
1359 UNUSED(_end_lineno); // Only used by EXTRA macro
1360 int _end_col_offset = _token->end_col_offset;
1361 UNUSED(_end_col_offset); // Only used by EXTRA macro
1362 _res = _Py_Expr ( e , EXTRA );
1363 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001364 p->error_indicator = 1;
1365 return NULL;
1366 }
1367 goto done;
1368 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001369 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001370 }
1371 { // &'return' return_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001372 if (p->error_indicator) {
1373 return NULL;
1374 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001375 stmt_ty return_stmt_var;
1376 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001377 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 500) // token='return'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001378 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001379 (return_stmt_var = return_stmt_rule(p)) // return_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001380 )
1381 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001382 _res = return_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001383 goto done;
1384 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001385 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001386 }
1387 { // &('import' | 'from') import_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001388 if (p->error_indicator) {
1389 return NULL;
1390 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001391 stmt_ty import_stmt_var;
1392 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001393 _PyPegen_lookahead(1, _tmp_14_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001394 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001395 (import_stmt_var = import_stmt_rule(p)) // import_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001396 )
1397 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001398 _res = import_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001399 goto done;
1400 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001401 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001402 }
1403 { // &'raise' raise_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001404 if (p->error_indicator) {
1405 return NULL;
1406 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001407 stmt_ty raise_stmt_var;
1408 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001409 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 501) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001410 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001411 (raise_stmt_var = raise_stmt_rule(p)) // raise_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001412 )
1413 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001414 _res = raise_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001415 goto done;
1416 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001417 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001418 }
1419 { // 'pass'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001420 if (p->error_indicator) {
1421 return NULL;
1422 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001423 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001424 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001425 (_keyword = _PyPegen_expect_token(p, 502)) // token='pass'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001426 )
1427 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001428 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1429 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001430 return NULL;
1431 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001432 int _end_lineno = _token->end_lineno;
1433 UNUSED(_end_lineno); // Only used by EXTRA macro
1434 int _end_col_offset = _token->end_col_offset;
1435 UNUSED(_end_col_offset); // Only used by EXTRA macro
1436 _res = _Py_Pass ( EXTRA );
1437 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001438 p->error_indicator = 1;
1439 return NULL;
1440 }
1441 goto done;
1442 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001443 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001444 }
1445 { // &'del' del_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001446 if (p->error_indicator) {
1447 return NULL;
1448 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001449 stmt_ty del_stmt_var;
1450 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001451 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 503) // token='del'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001452 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001453 (del_stmt_var = del_stmt_rule(p)) // del_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001454 )
1455 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001456 _res = del_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001457 goto done;
1458 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001459 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001460 }
1461 { // &'yield' yield_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001462 if (p->error_indicator) {
1463 return NULL;
1464 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001465 stmt_ty yield_stmt_var;
1466 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001467 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 504) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001468 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001469 (yield_stmt_var = yield_stmt_rule(p)) // yield_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001470 )
1471 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001472 _res = yield_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001473 goto done;
1474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001475 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001476 }
1477 { // &'assert' assert_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001478 if (p->error_indicator) {
1479 return NULL;
1480 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001481 stmt_ty assert_stmt_var;
1482 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001483 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 505) // token='assert'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001484 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001485 (assert_stmt_var = assert_stmt_rule(p)) // assert_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001486 )
1487 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001488 _res = assert_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001489 goto done;
1490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001491 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001492 }
1493 { // 'break'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001494 if (p->error_indicator) {
1495 return NULL;
1496 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001497 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001498 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001499 (_keyword = _PyPegen_expect_token(p, 506)) // token='break'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001500 )
1501 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001502 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1503 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001504 return NULL;
1505 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001506 int _end_lineno = _token->end_lineno;
1507 UNUSED(_end_lineno); // Only used by EXTRA macro
1508 int _end_col_offset = _token->end_col_offset;
1509 UNUSED(_end_col_offset); // Only used by EXTRA macro
1510 _res = _Py_Break ( EXTRA );
1511 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001512 p->error_indicator = 1;
1513 return NULL;
1514 }
1515 goto done;
1516 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001517 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001518 }
1519 { // 'continue'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001520 if (p->error_indicator) {
1521 return NULL;
1522 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001523 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001524 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001525 (_keyword = _PyPegen_expect_token(p, 507)) // token='continue'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001526 )
1527 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001528 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1529 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001530 return NULL;
1531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001532 int _end_lineno = _token->end_lineno;
1533 UNUSED(_end_lineno); // Only used by EXTRA macro
1534 int _end_col_offset = _token->end_col_offset;
1535 UNUSED(_end_col_offset); // Only used by EXTRA macro
1536 _res = _Py_Continue ( EXTRA );
1537 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001538 p->error_indicator = 1;
1539 return NULL;
1540 }
1541 goto done;
1542 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001543 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001544 }
1545 { // &'global' global_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001546 if (p->error_indicator) {
1547 return NULL;
1548 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001549 stmt_ty global_stmt_var;
1550 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001551 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 508) // token='global'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001552 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001553 (global_stmt_var = global_stmt_rule(p)) // global_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001554 )
1555 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001556 _res = global_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001557 goto done;
1558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001559 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001560 }
1561 { // &'nonlocal' nonlocal_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001562 if (p->error_indicator) {
1563 return NULL;
1564 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001565 stmt_ty nonlocal_stmt_var;
1566 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001567 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 509) // token='nonlocal'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001568 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001569 (nonlocal_stmt_var = nonlocal_stmt_rule(p)) // nonlocal_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001570 )
1571 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001572 _res = nonlocal_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001573 goto done;
1574 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001575 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001576 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001577 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001578 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001579 _PyPegen_insert_memo(p, _mark, small_stmt_type, _res);
1580 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001581}
1582
1583// compound_stmt:
1584// | &('def' | '@' | ASYNC) function_def
1585// | &'if' if_stmt
1586// | &('class' | '@') class_def
1587// | &('with' | ASYNC) with_stmt
1588// | &('for' | ASYNC) for_stmt
1589// | &'try' try_stmt
1590// | &'while' while_stmt
1591static stmt_ty
1592compound_stmt_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 { // &('def' | '@' | ASYNC) function_def
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001600 if (p->error_indicator) {
1601 return NULL;
1602 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001603 stmt_ty function_def_var;
1604 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001605 _PyPegen_lookahead(1, _tmp_15_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001606 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001607 (function_def_var = function_def_rule(p)) // function_def
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001608 )
1609 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001610 _res = function_def_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001611 goto done;
1612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001613 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001614 }
1615 { // &'if' if_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001616 if (p->error_indicator) {
1617 return NULL;
1618 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001619 stmt_ty if_stmt_var;
1620 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001621 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 510) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001622 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001623 (if_stmt_var = if_stmt_rule(p)) // if_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001624 )
1625 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001626 _res = if_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001627 goto done;
1628 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001629 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001630 }
1631 { // &('class' | '@') class_def
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001632 if (p->error_indicator) {
1633 return NULL;
1634 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001635 stmt_ty class_def_var;
1636 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001637 _PyPegen_lookahead(1, _tmp_16_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001638 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001639 (class_def_var = class_def_rule(p)) // class_def
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001640 )
1641 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001642 _res = class_def_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001643 goto done;
1644 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001645 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001646 }
1647 { // &('with' | ASYNC) with_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001648 if (p->error_indicator) {
1649 return NULL;
1650 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001651 stmt_ty with_stmt_var;
1652 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001653 _PyPegen_lookahead(1, _tmp_17_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001654 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001655 (with_stmt_var = with_stmt_rule(p)) // with_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001656 )
1657 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001658 _res = with_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001659 goto done;
1660 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001661 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001662 }
1663 { // &('for' | ASYNC) for_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001664 if (p->error_indicator) {
1665 return NULL;
1666 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001667 stmt_ty for_stmt_var;
1668 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001669 _PyPegen_lookahead(1, _tmp_18_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001670 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001671 (for_stmt_var = for_stmt_rule(p)) // for_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001672 )
1673 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001674 _res = for_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001675 goto done;
1676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001677 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001678 }
1679 { // &'try' try_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001680 if (p->error_indicator) {
1681 return NULL;
1682 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001683 stmt_ty try_stmt_var;
1684 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001685 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 511) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001686 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001687 (try_stmt_var = try_stmt_rule(p)) // try_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001688 )
1689 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001690 _res = try_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001691 goto done;
1692 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001693 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001694 }
1695 { // &'while' while_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001696 if (p->error_indicator) {
1697 return NULL;
1698 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001699 stmt_ty while_stmt_var;
1700 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001701 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 512) // token='while'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001702 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001703 (while_stmt_var = while_stmt_rule(p)) // while_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001704 )
1705 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001706 _res = while_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001707 goto done;
1708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001709 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001710 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001711 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001712 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001713 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001714}
1715
1716// assignment:
1717// | NAME ':' expression ['=' annotated_rhs]
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001718// | ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
Guido van Rossumc001c092020-04-30 12:12:19 -07001719// | ((star_targets '='))+ (yield_expr | star_expressions) TYPE_COMMENT?
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001720// | single_target augassign (yield_expr | star_expressions)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001721// | invalid_assignment
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +03001722static stmt_ty
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001723assignment_rule(Parser *p)
1724{
1725 if (p->error_indicator) {
1726 return NULL;
1727 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001728 stmt_ty _res = NULL;
1729 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001730 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1731 p->error_indicator = 1;
1732 return NULL;
1733 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001734 int _start_lineno = p->tokens[_mark]->lineno;
1735 UNUSED(_start_lineno); // Only used by EXTRA macro
1736 int _start_col_offset = p->tokens[_mark]->col_offset;
1737 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001738 { // NAME ':' expression ['=' annotated_rhs]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001739 if (p->error_indicator) {
1740 return NULL;
1741 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001742 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001743 expr_ty a;
1744 expr_ty b;
1745 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001746 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001747 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001748 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001749 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001750 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001751 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001752 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001753 (c = _tmp_19_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001754 )
1755 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001756 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1757 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001758 return NULL;
1759 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001760 int _end_lineno = _token->end_lineno;
1761 UNUSED(_end_lineno); // Only used by EXTRA macro
1762 int _end_col_offset = _token->end_col_offset;
1763 UNUSED(_end_col_offset); // Only used by EXTRA macro
1764 _res = CHECK_VERSION ( 6 , "Variable annotation syntax is" , _Py_AnnAssign ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , b , c , 1 , EXTRA ) );
1765 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001766 p->error_indicator = 1;
1767 return NULL;
1768 }
1769 goto done;
1770 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001771 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001772 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001773 { // ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001774 if (p->error_indicator) {
1775 return NULL;
1776 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001777 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001778 void *a;
1779 expr_ty b;
1780 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001781 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001782 (a = _tmp_20_rule(p)) // '(' single_target ')' | single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001783 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001784 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001785 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001786 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001787 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001788 (c = _tmp_21_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001789 )
1790 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001791 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1792 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001793 return NULL;
1794 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001795 int _end_lineno = _token->end_lineno;
1796 UNUSED(_end_lineno); // Only used by EXTRA macro
1797 int _end_col_offset = _token->end_col_offset;
1798 UNUSED(_end_col_offset); // Only used by EXTRA macro
1799 _res = CHECK_VERSION ( 6 , "Variable annotations syntax is" , _Py_AnnAssign ( a , b , c , 0 , EXTRA ) );
1800 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001801 p->error_indicator = 1;
1802 return NULL;
1803 }
1804 goto done;
1805 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001806 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001807 }
Guido van Rossumc001c092020-04-30 12:12:19 -07001808 { // ((star_targets '='))+ (yield_expr | star_expressions) TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001809 if (p->error_indicator) {
1810 return NULL;
1811 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001812 asdl_seq * a;
1813 void *b;
Guido van Rossumc001c092020-04-30 12:12:19 -07001814 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001815 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001816 (a = _loop1_22_rule(p)) // ((star_targets '='))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001817 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001818 (b = _tmp_23_rule(p)) // yield_expr | star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -07001819 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001820 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001821 )
1822 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001823 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1824 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001825 return NULL;
1826 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001827 int _end_lineno = _token->end_lineno;
1828 UNUSED(_end_lineno); // Only used by EXTRA macro
1829 int _end_col_offset = _token->end_col_offset;
1830 UNUSED(_end_col_offset); // Only used by EXTRA macro
1831 _res = _Py_Assign ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
1832 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001833 p->error_indicator = 1;
1834 return NULL;
1835 }
1836 goto done;
1837 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001838 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001839 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001840 { // single_target augassign (yield_expr | star_expressions)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001841 if (p->error_indicator) {
1842 return NULL;
1843 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001844 expr_ty a;
1845 AugOperator* b;
1846 void *c;
1847 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001848 (a = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001849 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001850 (b = augassign_rule(p)) // augassign
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001851 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001852 (c = _tmp_24_rule(p)) // yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001853 )
1854 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001855 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1856 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001857 return NULL;
1858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001859 int _end_lineno = _token->end_lineno;
1860 UNUSED(_end_lineno); // Only used by EXTRA macro
1861 int _end_col_offset = _token->end_col_offset;
1862 UNUSED(_end_col_offset); // Only used by EXTRA macro
1863 _res = _Py_AugAssign ( a , b -> kind , c , EXTRA );
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 { // invalid_assignment
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001873 if (p->error_indicator) {
1874 return NULL;
1875 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001876 void *invalid_assignment_var;
1877 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001878 (invalid_assignment_var = invalid_assignment_rule(p)) // invalid_assignment
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001879 )
1880 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001881 _res = invalid_assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001882 goto done;
1883 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001884 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001885 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001886 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001887 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001888 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001889}
1890
1891// augassign:
1892// | '+='
1893// | '-='
1894// | '*='
1895// | '@='
1896// | '/='
1897// | '%='
1898// | '&='
1899// | '|='
1900// | '^='
1901// | '<<='
1902// | '>>='
1903// | '**='
1904// | '//='
1905static AugOperator*
1906augassign_rule(Parser *p)
1907{
1908 if (p->error_indicator) {
1909 return NULL;
1910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001911 AugOperator* _res = NULL;
1912 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001913 { // '+='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001914 if (p->error_indicator) {
1915 return NULL;
1916 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001917 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001918 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001919 (_literal = _PyPegen_expect_token(p, 36)) // token='+='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001920 )
1921 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001922 _res = _PyPegen_augoperator ( p , Add );
1923 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001924 p->error_indicator = 1;
1925 return NULL;
1926 }
1927 goto done;
1928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001929 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001930 }
1931 { // '-='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001932 if (p->error_indicator) {
1933 return NULL;
1934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001935 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001936 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001937 (_literal = _PyPegen_expect_token(p, 37)) // token='-='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001938 )
1939 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001940 _res = _PyPegen_augoperator ( p , Sub );
1941 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001942 p->error_indicator = 1;
1943 return NULL;
1944 }
1945 goto done;
1946 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001947 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001948 }
1949 { // '*='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001950 if (p->error_indicator) {
1951 return NULL;
1952 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001953 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001954 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001955 (_literal = _PyPegen_expect_token(p, 38)) // token='*='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001956 )
1957 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001958 _res = _PyPegen_augoperator ( p , Mult );
1959 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001960 p->error_indicator = 1;
1961 return NULL;
1962 }
1963 goto done;
1964 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001965 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001966 }
1967 { // '@='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001968 if (p->error_indicator) {
1969 return NULL;
1970 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001971 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001972 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001973 (_literal = _PyPegen_expect_token(p, 50)) // token='@='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001974 )
1975 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001976 _res = CHECK_VERSION ( 5 , "The '@' operator is" , _PyPegen_augoperator ( p , MatMult ) );
1977 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001978 p->error_indicator = 1;
1979 return NULL;
1980 }
1981 goto done;
1982 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001983 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001984 }
1985 { // '/='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001986 if (p->error_indicator) {
1987 return NULL;
1988 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001989 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001990 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001991 (_literal = _PyPegen_expect_token(p, 39)) // token='/='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001992 )
1993 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001994 _res = _PyPegen_augoperator ( p , Div );
1995 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001996 p->error_indicator = 1;
1997 return NULL;
1998 }
1999 goto done;
2000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002001 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002002 }
2003 { // '%='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002004 if (p->error_indicator) {
2005 return NULL;
2006 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002007 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002008 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002009 (_literal = _PyPegen_expect_token(p, 40)) // token='%='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002010 )
2011 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002012 _res = _PyPegen_augoperator ( p , Mod );
2013 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002014 p->error_indicator = 1;
2015 return NULL;
2016 }
2017 goto done;
2018 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002019 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002020 }
2021 { // '&='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002022 if (p->error_indicator) {
2023 return NULL;
2024 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002025 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002026 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002027 (_literal = _PyPegen_expect_token(p, 41)) // token='&='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002028 )
2029 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002030 _res = _PyPegen_augoperator ( p , BitAnd );
2031 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002032 p->error_indicator = 1;
2033 return NULL;
2034 }
2035 goto done;
2036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002037 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002038 }
2039 { // '|='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002040 if (p->error_indicator) {
2041 return NULL;
2042 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002043 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002044 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002045 (_literal = _PyPegen_expect_token(p, 42)) // token='|='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002046 )
2047 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002048 _res = _PyPegen_augoperator ( p , BitOr );
2049 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002050 p->error_indicator = 1;
2051 return NULL;
2052 }
2053 goto done;
2054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002055 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002056 }
2057 { // '^='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002058 if (p->error_indicator) {
2059 return NULL;
2060 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002061 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002062 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002063 (_literal = _PyPegen_expect_token(p, 43)) // token='^='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002064 )
2065 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002066 _res = _PyPegen_augoperator ( p , BitXor );
2067 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002068 p->error_indicator = 1;
2069 return NULL;
2070 }
2071 goto done;
2072 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002073 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002074 }
2075 { // '<<='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002076 if (p->error_indicator) {
2077 return NULL;
2078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002079 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002080 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002081 (_literal = _PyPegen_expect_token(p, 44)) // token='<<='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002082 )
2083 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002084 _res = _PyPegen_augoperator ( p , LShift );
2085 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002086 p->error_indicator = 1;
2087 return NULL;
2088 }
2089 goto done;
2090 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002091 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002092 }
2093 { // '>>='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002094 if (p->error_indicator) {
2095 return NULL;
2096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002097 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002098 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002099 (_literal = _PyPegen_expect_token(p, 45)) // token='>>='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002100 )
2101 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002102 _res = _PyPegen_augoperator ( p , RShift );
2103 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002104 p->error_indicator = 1;
2105 return NULL;
2106 }
2107 goto done;
2108 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002109 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002110 }
2111 { // '**='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002112 if (p->error_indicator) {
2113 return NULL;
2114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002115 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002116 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002117 (_literal = _PyPegen_expect_token(p, 46)) // token='**='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002118 )
2119 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002120 _res = _PyPegen_augoperator ( p , Pow );
2121 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002122 p->error_indicator = 1;
2123 return NULL;
2124 }
2125 goto done;
2126 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002127 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002128 }
2129 { // '//='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002130 if (p->error_indicator) {
2131 return NULL;
2132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002133 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002134 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002135 (_literal = _PyPegen_expect_token(p, 48)) // token='//='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002136 )
2137 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002138 _res = _PyPegen_augoperator ( p , FloorDiv );
2139 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002140 p->error_indicator = 1;
2141 return NULL;
2142 }
2143 goto done;
2144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002145 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002147 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002148 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002149 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002150}
2151
2152// global_stmt: 'global' ','.NAME+
2153static stmt_ty
2154global_stmt_rule(Parser *p)
2155{
2156 if (p->error_indicator) {
2157 return NULL;
2158 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002159 stmt_ty _res = NULL;
2160 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002161 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2162 p->error_indicator = 1;
2163 return NULL;
2164 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002165 int _start_lineno = p->tokens[_mark]->lineno;
2166 UNUSED(_start_lineno); // Only used by EXTRA macro
2167 int _start_col_offset = p->tokens[_mark]->col_offset;
2168 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002169 { // 'global' ','.NAME+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002170 if (p->error_indicator) {
2171 return NULL;
2172 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002173 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002174 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002175 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002176 (_keyword = _PyPegen_expect_token(p, 508)) // token='global'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002177 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002178 (a = _gather_25_rule(p)) // ','.NAME+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002179 )
2180 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002181 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2182 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002183 return NULL;
2184 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002185 int _end_lineno = _token->end_lineno;
2186 UNUSED(_end_lineno); // Only used by EXTRA macro
2187 int _end_col_offset = _token->end_col_offset;
2188 UNUSED(_end_col_offset); // Only used by EXTRA macro
2189 _res = _Py_Global ( CHECK ( _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2190 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002191 p->error_indicator = 1;
2192 return NULL;
2193 }
2194 goto done;
2195 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002196 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002197 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002198 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002199 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002200 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002201}
2202
2203// nonlocal_stmt: 'nonlocal' ','.NAME+
2204static stmt_ty
2205nonlocal_stmt_rule(Parser *p)
2206{
2207 if (p->error_indicator) {
2208 return NULL;
2209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002210 stmt_ty _res = NULL;
2211 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002212 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2213 p->error_indicator = 1;
2214 return NULL;
2215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002216 int _start_lineno = p->tokens[_mark]->lineno;
2217 UNUSED(_start_lineno); // Only used by EXTRA macro
2218 int _start_col_offset = p->tokens[_mark]->col_offset;
2219 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002220 { // 'nonlocal' ','.NAME+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002221 if (p->error_indicator) {
2222 return NULL;
2223 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002224 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002225 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002226 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002227 (_keyword = _PyPegen_expect_token(p, 509)) // token='nonlocal'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002228 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002229 (a = _gather_27_rule(p)) // ','.NAME+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002230 )
2231 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002232 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2233 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002234 return NULL;
2235 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002236 int _end_lineno = _token->end_lineno;
2237 UNUSED(_end_lineno); // Only used by EXTRA macro
2238 int _end_col_offset = _token->end_col_offset;
2239 UNUSED(_end_col_offset); // Only used by EXTRA macro
2240 _res = _Py_Nonlocal ( CHECK ( _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2241 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002242 p->error_indicator = 1;
2243 return NULL;
2244 }
2245 goto done;
2246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002247 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002249 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002250 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002251 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002252}
2253
2254// yield_stmt: yield_expr
2255static stmt_ty
2256yield_stmt_rule(Parser *p)
2257{
2258 if (p->error_indicator) {
2259 return NULL;
2260 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002261 stmt_ty _res = NULL;
2262 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002263 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2264 p->error_indicator = 1;
2265 return NULL;
2266 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002267 int _start_lineno = p->tokens[_mark]->lineno;
2268 UNUSED(_start_lineno); // Only used by EXTRA macro
2269 int _start_col_offset = p->tokens[_mark]->col_offset;
2270 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002271 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002272 if (p->error_indicator) {
2273 return NULL;
2274 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002275 expr_ty y;
2276 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002277 (y = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002278 )
2279 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002280 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2281 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002282 return NULL;
2283 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002284 int _end_lineno = _token->end_lineno;
2285 UNUSED(_end_lineno); // Only used by EXTRA macro
2286 int _end_col_offset = _token->end_col_offset;
2287 UNUSED(_end_col_offset); // Only used by EXTRA macro
2288 _res = _Py_Expr ( y , EXTRA );
2289 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002290 p->error_indicator = 1;
2291 return NULL;
2292 }
2293 goto done;
2294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002295 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002296 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002297 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002298 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002299 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002300}
2301
2302// assert_stmt: 'assert' expression [',' expression]
2303static stmt_ty
2304assert_stmt_rule(Parser *p)
2305{
2306 if (p->error_indicator) {
2307 return NULL;
2308 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002309 stmt_ty _res = NULL;
2310 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002311 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2312 p->error_indicator = 1;
2313 return NULL;
2314 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002315 int _start_lineno = p->tokens[_mark]->lineno;
2316 UNUSED(_start_lineno); // Only used by EXTRA macro
2317 int _start_col_offset = p->tokens[_mark]->col_offset;
2318 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002319 { // 'assert' expression [',' expression]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002320 if (p->error_indicator) {
2321 return NULL;
2322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002323 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002324 expr_ty a;
2325 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002326 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002327 (_keyword = _PyPegen_expect_token(p, 505)) // token='assert'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002328 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002329 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002330 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002331 (b = _tmp_29_rule(p), 1) // [',' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002332 )
2333 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002334 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2335 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002336 return NULL;
2337 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002338 int _end_lineno = _token->end_lineno;
2339 UNUSED(_end_lineno); // Only used by EXTRA macro
2340 int _end_col_offset = _token->end_col_offset;
2341 UNUSED(_end_col_offset); // Only used by EXTRA macro
2342 _res = _Py_Assert ( a , b , EXTRA );
2343 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002344 p->error_indicator = 1;
2345 return NULL;
2346 }
2347 goto done;
2348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002349 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002350 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002351 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002352 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002353 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002354}
2355
2356// del_stmt: 'del' del_targets
2357static stmt_ty
2358del_stmt_rule(Parser *p)
2359{
2360 if (p->error_indicator) {
2361 return NULL;
2362 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002363 stmt_ty _res = NULL;
2364 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002365 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2366 p->error_indicator = 1;
2367 return NULL;
2368 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002369 int _start_lineno = p->tokens[_mark]->lineno;
2370 UNUSED(_start_lineno); // Only used by EXTRA macro
2371 int _start_col_offset = p->tokens[_mark]->col_offset;
2372 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002373 { // 'del' del_targets
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002374 if (p->error_indicator) {
2375 return NULL;
2376 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002377 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002378 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002379 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002380 (_keyword = _PyPegen_expect_token(p, 503)) // token='del'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002381 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002382 (a = del_targets_rule(p)) // del_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002383 )
2384 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002385 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2386 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002387 return NULL;
2388 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002389 int _end_lineno = _token->end_lineno;
2390 UNUSED(_end_lineno); // Only used by EXTRA macro
2391 int _end_col_offset = _token->end_col_offset;
2392 UNUSED(_end_col_offset); // Only used by EXTRA macro
2393 _res = _Py_Delete ( a , EXTRA );
2394 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002395 p->error_indicator = 1;
2396 return NULL;
2397 }
2398 goto done;
2399 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002400 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002401 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002402 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002403 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002404 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002405}
2406
2407// import_stmt: import_name | import_from
2408static stmt_ty
2409import_stmt_rule(Parser *p)
2410{
2411 if (p->error_indicator) {
2412 return NULL;
2413 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002414 stmt_ty _res = NULL;
2415 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002416 { // import_name
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002417 if (p->error_indicator) {
2418 return NULL;
2419 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002420 stmt_ty import_name_var;
2421 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002422 (import_name_var = import_name_rule(p)) // import_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002423 )
2424 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002425 _res = import_name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002426 goto done;
2427 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002428 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002429 }
2430 { // import_from
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002431 if (p->error_indicator) {
2432 return NULL;
2433 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002434 stmt_ty import_from_var;
2435 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002436 (import_from_var = import_from_rule(p)) // import_from
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002437 )
2438 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002439 _res = import_from_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002440 goto done;
2441 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002442 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002443 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002444 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002445 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002446 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002447}
2448
2449// import_name: 'import' dotted_as_names
2450static stmt_ty
2451import_name_rule(Parser *p)
2452{
2453 if (p->error_indicator) {
2454 return NULL;
2455 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002456 stmt_ty _res = NULL;
2457 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002458 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2459 p->error_indicator = 1;
2460 return NULL;
2461 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002462 int _start_lineno = p->tokens[_mark]->lineno;
2463 UNUSED(_start_lineno); // Only used by EXTRA macro
2464 int _start_col_offset = p->tokens[_mark]->col_offset;
2465 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002466 { // 'import' dotted_as_names
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002467 if (p->error_indicator) {
2468 return NULL;
2469 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002470 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002471 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002472 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002473 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002474 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002475 (a = dotted_as_names_rule(p)) // dotted_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002476 )
2477 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002478 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2479 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002480 return NULL;
2481 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002482 int _end_lineno = _token->end_lineno;
2483 UNUSED(_end_lineno); // Only used by EXTRA macro
2484 int _end_col_offset = _token->end_col_offset;
2485 UNUSED(_end_col_offset); // Only used by EXTRA macro
2486 _res = _Py_Import ( a , EXTRA );
2487 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002488 p->error_indicator = 1;
2489 return NULL;
2490 }
2491 goto done;
2492 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002493 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002494 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002495 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002496 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002497 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002498}
2499
2500// import_from:
2501// | 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
2502// | 'from' (('.' | '...'))+ 'import' import_from_targets
2503static stmt_ty
2504import_from_rule(Parser *p)
2505{
2506 if (p->error_indicator) {
2507 return NULL;
2508 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002509 stmt_ty _res = NULL;
2510 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002511 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2512 p->error_indicator = 1;
2513 return NULL;
2514 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002515 int _start_lineno = p->tokens[_mark]->lineno;
2516 UNUSED(_start_lineno); // Only used by EXTRA macro
2517 int _start_col_offset = p->tokens[_mark]->col_offset;
2518 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002519 { // 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002520 if (p->error_indicator) {
2521 return NULL;
2522 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002523 Token * _keyword;
2524 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002525 asdl_seq * a;
2526 expr_ty b;
2527 asdl_seq* c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002528 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002529 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002530 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002531 (a = _loop0_30_rule(p)) // (('.' | '...'))*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002532 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002533 (b = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002534 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002535 (_keyword_1 = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002536 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002537 (c = import_from_targets_rule(p)) // import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002538 )
2539 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002540 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2541 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002542 return NULL;
2543 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002544 int _end_lineno = _token->end_lineno;
2545 UNUSED(_end_lineno); // Only used by EXTRA macro
2546 int _end_col_offset = _token->end_col_offset;
2547 UNUSED(_end_col_offset); // Only used by EXTRA macro
2548 _res = _Py_ImportFrom ( b -> v . Name . id , c , _PyPegen_seq_count_dots ( a ) , EXTRA );
2549 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002550 p->error_indicator = 1;
2551 return NULL;
2552 }
2553 goto done;
2554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002555 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002556 }
2557 { // 'from' (('.' | '...'))+ 'import' import_from_targets
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002558 if (p->error_indicator) {
2559 return NULL;
2560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002561 Token * _keyword;
2562 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002563 asdl_seq * a;
2564 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002565 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002566 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002567 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002568 (a = _loop1_31_rule(p)) // (('.' | '...'))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002569 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002570 (_keyword_1 = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002571 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002572 (b = import_from_targets_rule(p)) // import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002573 )
2574 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002575 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2576 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002577 return NULL;
2578 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002579 int _end_lineno = _token->end_lineno;
2580 UNUSED(_end_lineno); // Only used by EXTRA macro
2581 int _end_col_offset = _token->end_col_offset;
2582 UNUSED(_end_col_offset); // Only used by EXTRA macro
2583 _res = _Py_ImportFrom ( NULL , b , _PyPegen_seq_count_dots ( a ) , EXTRA );
2584 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002585 p->error_indicator = 1;
2586 return NULL;
2587 }
2588 goto done;
2589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002590 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002591 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002592 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002593 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002594 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002595}
2596
Pablo Galindo275d7e12020-05-21 22:04:54 +01002597// import_from_targets:
2598// | '(' import_from_as_names ','? ')'
2599// | import_from_as_names !','
2600// | '*'
2601// | invalid_import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002602static asdl_seq*
2603import_from_targets_rule(Parser *p)
2604{
2605 if (p->error_indicator) {
2606 return NULL;
2607 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002608 asdl_seq* _res = NULL;
2609 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002610 { // '(' import_from_as_names ','? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002611 if (p->error_indicator) {
2612 return NULL;
2613 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002614 Token * _literal;
2615 Token * _literal_1;
2616 void *_opt_var;
2617 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002618 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002619 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002620 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002621 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002622 (a = import_from_as_names_rule(p)) // import_from_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002623 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002624 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002625 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002626 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002627 )
2628 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002629 _res = a;
2630 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002631 p->error_indicator = 1;
2632 return NULL;
2633 }
2634 goto done;
2635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002636 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002637 }
Pablo Galindo275d7e12020-05-21 22:04:54 +01002638 { // import_from_as_names !','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002639 if (p->error_indicator) {
2640 return NULL;
2641 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002642 asdl_seq* import_from_as_names_var;
2643 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002644 (import_from_as_names_var = import_from_as_names_rule(p)) // import_from_as_names
Pablo Galindo275d7e12020-05-21 22:04:54 +01002645 &&
2646 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002647 )
2648 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002649 _res = import_from_as_names_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002650 goto done;
2651 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002652 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002653 }
2654 { // '*'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002655 if (p->error_indicator) {
2656 return NULL;
2657 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002658 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002659 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002660 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002661 )
2662 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002663 _res = _PyPegen_singleton_seq ( p , CHECK ( _PyPegen_alias_for_star ( p ) ) );
2664 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002665 p->error_indicator = 1;
2666 return NULL;
2667 }
2668 goto done;
2669 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002670 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002671 }
Pablo Galindo275d7e12020-05-21 22:04:54 +01002672 { // invalid_import_from_targets
2673 if (p->error_indicator) {
2674 return NULL;
2675 }
2676 void *invalid_import_from_targets_var;
2677 if (
2678 (invalid_import_from_targets_var = invalid_import_from_targets_rule(p)) // invalid_import_from_targets
2679 )
2680 {
2681 _res = invalid_import_from_targets_var;
2682 goto done;
2683 }
2684 p->mark = _mark;
2685 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002686 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002687 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002688 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002689}
2690
2691// import_from_as_names: ','.import_from_as_name+
2692static asdl_seq*
2693import_from_as_names_rule(Parser *p)
2694{
2695 if (p->error_indicator) {
2696 return NULL;
2697 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002698 asdl_seq* _res = NULL;
2699 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002700 { // ','.import_from_as_name+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002701 if (p->error_indicator) {
2702 return NULL;
2703 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002704 asdl_seq * a;
2705 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002706 (a = _gather_32_rule(p)) // ','.import_from_as_name+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002707 )
2708 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002709 _res = a;
2710 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002711 p->error_indicator = 1;
2712 return NULL;
2713 }
2714 goto done;
2715 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002716 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002717 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002718 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002719 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002720 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002721}
2722
2723// import_from_as_name: NAME ['as' NAME]
2724static alias_ty
2725import_from_as_name_rule(Parser *p)
2726{
2727 if (p->error_indicator) {
2728 return NULL;
2729 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002730 alias_ty _res = NULL;
2731 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002732 { // NAME ['as' NAME]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002733 if (p->error_indicator) {
2734 return NULL;
2735 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002736 expr_ty a;
2737 void *b;
2738 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002739 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002740 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002741 (b = _tmp_34_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002742 )
2743 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002744 _res = _Py_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , p -> arena );
2745 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002746 p->error_indicator = 1;
2747 return NULL;
2748 }
2749 goto done;
2750 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002751 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002752 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002753 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002754 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002755 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002756}
2757
2758// dotted_as_names: ','.dotted_as_name+
2759static asdl_seq*
2760dotted_as_names_rule(Parser *p)
2761{
2762 if (p->error_indicator) {
2763 return NULL;
2764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002765 asdl_seq* _res = NULL;
2766 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002767 { // ','.dotted_as_name+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002768 if (p->error_indicator) {
2769 return NULL;
2770 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002771 asdl_seq * a;
2772 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002773 (a = _gather_35_rule(p)) // ','.dotted_as_name+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002774 )
2775 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002776 _res = a;
2777 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002778 p->error_indicator = 1;
2779 return NULL;
2780 }
2781 goto done;
2782 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002783 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002784 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002785 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002786 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002787 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002788}
2789
2790// dotted_as_name: dotted_name ['as' NAME]
2791static alias_ty
2792dotted_as_name_rule(Parser *p)
2793{
2794 if (p->error_indicator) {
2795 return NULL;
2796 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002797 alias_ty _res = NULL;
2798 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002799 { // dotted_name ['as' NAME]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002800 if (p->error_indicator) {
2801 return NULL;
2802 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002803 expr_ty a;
2804 void *b;
2805 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002806 (a = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002807 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002808 (b = _tmp_37_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002809 )
2810 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002811 _res = _Py_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , p -> arena );
2812 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002813 p->error_indicator = 1;
2814 return NULL;
2815 }
2816 goto done;
2817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002818 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002819 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002820 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002821 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002822 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002823}
2824
2825// Left-recursive
2826// dotted_name: dotted_name '.' NAME | NAME
2827static expr_ty dotted_name_raw(Parser *);
2828static expr_ty
2829dotted_name_rule(Parser *p)
2830{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002831 expr_ty _res = NULL;
2832 if (_PyPegen_is_memoized(p, dotted_name_type, &_res))
2833 return _res;
2834 int _mark = p->mark;
2835 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002836 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002837 int tmpvar_0 = _PyPegen_update_memo(p, _mark, dotted_name_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002838 if (tmpvar_0) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002839 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002841 p->mark = _mark;
2842 void *_raw = dotted_name_raw(p);
2843 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002844 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002845 _resmark = p->mark;
2846 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002847 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002848 p->mark = _resmark;
2849 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002850}
2851static expr_ty
2852dotted_name_raw(Parser *p)
2853{
2854 if (p->error_indicator) {
2855 return NULL;
2856 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002857 expr_ty _res = NULL;
2858 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002859 { // dotted_name '.' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002860 if (p->error_indicator) {
2861 return NULL;
2862 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002863 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002864 expr_ty a;
2865 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002866 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002867 (a = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002868 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002869 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002870 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002871 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002872 )
2873 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002874 _res = _PyPegen_join_names_with_dot ( p , a , b );
2875 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002876 p->error_indicator = 1;
2877 return NULL;
2878 }
2879 goto done;
2880 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002881 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002882 }
2883 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002884 if (p->error_indicator) {
2885 return NULL;
2886 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002887 expr_ty name_var;
2888 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002889 (name_var = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002890 )
2891 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002892 _res = name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002893 goto done;
2894 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002895 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002896 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002897 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002898 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002899 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002900}
2901
2902// if_stmt:
2903// | 'if' named_expression ':' block elif_stmt
2904// | 'if' named_expression ':' block else_block?
2905static stmt_ty
2906if_stmt_rule(Parser *p)
2907{
2908 if (p->error_indicator) {
2909 return NULL;
2910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002911 stmt_ty _res = NULL;
2912 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002913 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2914 p->error_indicator = 1;
2915 return NULL;
2916 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002917 int _start_lineno = p->tokens[_mark]->lineno;
2918 UNUSED(_start_lineno); // Only used by EXTRA macro
2919 int _start_col_offset = p->tokens[_mark]->col_offset;
2920 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002921 { // 'if' named_expression ':' block elif_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002922 if (p->error_indicator) {
2923 return NULL;
2924 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002925 Token * _keyword;
2926 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002927 expr_ty a;
2928 asdl_seq* b;
2929 stmt_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002930 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002931 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002932 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002933 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002934 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002935 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002936 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002937 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002938 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002939 (c = elif_stmt_rule(p)) // elif_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002940 )
2941 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002942 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2943 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002944 return NULL;
2945 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002946 int _end_lineno = _token->end_lineno;
2947 UNUSED(_end_lineno); // Only used by EXTRA macro
2948 int _end_col_offset = _token->end_col_offset;
2949 UNUSED(_end_col_offset); // Only used by EXTRA macro
2950 _res = _Py_If ( a , b , CHECK ( _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
2951 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002952 p->error_indicator = 1;
2953 return NULL;
2954 }
2955 goto done;
2956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002957 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002958 }
2959 { // 'if' named_expression ':' block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002960 if (p->error_indicator) {
2961 return NULL;
2962 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002963 Token * _keyword;
2964 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002965 expr_ty a;
2966 asdl_seq* b;
2967 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002968 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002969 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002970 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002971 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002972 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002973 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002974 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002975 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002976 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002977 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002978 )
2979 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002980 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2981 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002982 return NULL;
2983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002984 int _end_lineno = _token->end_lineno;
2985 UNUSED(_end_lineno); // Only used by EXTRA macro
2986 int _end_col_offset = _token->end_col_offset;
2987 UNUSED(_end_col_offset); // Only used by EXTRA macro
2988 _res = _Py_If ( a , b , c , EXTRA );
2989 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002990 p->error_indicator = 1;
2991 return NULL;
2992 }
2993 goto done;
2994 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002995 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002996 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002997 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002998 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002999 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003000}
3001
3002// elif_stmt:
3003// | 'elif' named_expression ':' block elif_stmt
3004// | 'elif' named_expression ':' block else_block?
3005static stmt_ty
3006elif_stmt_rule(Parser *p)
3007{
3008 if (p->error_indicator) {
3009 return NULL;
3010 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003011 stmt_ty _res = NULL;
3012 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003013 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3014 p->error_indicator = 1;
3015 return NULL;
3016 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003017 int _start_lineno = p->tokens[_mark]->lineno;
3018 UNUSED(_start_lineno); // Only used by EXTRA macro
3019 int _start_col_offset = p->tokens[_mark]->col_offset;
3020 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003021 { // 'elif' named_expression ':' block elif_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003022 if (p->error_indicator) {
3023 return NULL;
3024 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003025 Token * _keyword;
3026 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003027 expr_ty a;
3028 asdl_seq* b;
3029 stmt_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003030 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003031 (_keyword = _PyPegen_expect_token(p, 515)) // token='elif'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003032 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003033 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003034 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003035 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003036 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003037 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003038 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003039 (c = elif_stmt_rule(p)) // elif_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003040 )
3041 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003042 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3043 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003044 return NULL;
3045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003046 int _end_lineno = _token->end_lineno;
3047 UNUSED(_end_lineno); // Only used by EXTRA macro
3048 int _end_col_offset = _token->end_col_offset;
3049 UNUSED(_end_col_offset); // Only used by EXTRA macro
3050 _res = _Py_If ( a , b , CHECK ( _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
3051 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003052 p->error_indicator = 1;
3053 return NULL;
3054 }
3055 goto done;
3056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003057 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003058 }
3059 { // 'elif' named_expression ':' block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003060 if (p->error_indicator) {
3061 return NULL;
3062 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003063 Token * _keyword;
3064 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003065 expr_ty a;
3066 asdl_seq* b;
3067 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003068 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003069 (_keyword = _PyPegen_expect_token(p, 515)) // token='elif'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003070 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003071 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003072 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003073 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003074 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003075 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003076 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003077 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003078 )
3079 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003080 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3081 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003082 return NULL;
3083 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003084 int _end_lineno = _token->end_lineno;
3085 UNUSED(_end_lineno); // Only used by EXTRA macro
3086 int _end_col_offset = _token->end_col_offset;
3087 UNUSED(_end_col_offset); // Only used by EXTRA macro
3088 _res = _Py_If ( a , b , c , EXTRA );
3089 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003090 p->error_indicator = 1;
3091 return NULL;
3092 }
3093 goto done;
3094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003095 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003097 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003098 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003099 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003100}
3101
3102// else_block: 'else' ':' block
3103static asdl_seq*
3104else_block_rule(Parser *p)
3105{
3106 if (p->error_indicator) {
3107 return NULL;
3108 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003109 asdl_seq* _res = NULL;
3110 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003111 { // 'else' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003112 if (p->error_indicator) {
3113 return NULL;
3114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003115 Token * _keyword;
3116 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003117 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003118 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003119 (_keyword = _PyPegen_expect_token(p, 516)) // token='else'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003120 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003121 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003122 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003123 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003124 )
3125 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003126 _res = b;
3127 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003128 p->error_indicator = 1;
3129 return NULL;
3130 }
3131 goto done;
3132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003133 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003134 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003135 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003136 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003137 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003138}
3139
3140// while_stmt: 'while' named_expression ':' block else_block?
3141static stmt_ty
3142while_stmt_rule(Parser *p)
3143{
3144 if (p->error_indicator) {
3145 return NULL;
3146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003147 stmt_ty _res = NULL;
3148 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003149 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3150 p->error_indicator = 1;
3151 return NULL;
3152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003153 int _start_lineno = p->tokens[_mark]->lineno;
3154 UNUSED(_start_lineno); // Only used by EXTRA macro
3155 int _start_col_offset = p->tokens[_mark]->col_offset;
3156 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003157 { // 'while' named_expression ':' block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003158 if (p->error_indicator) {
3159 return NULL;
3160 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003161 Token * _keyword;
3162 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003163 expr_ty a;
3164 asdl_seq* b;
3165 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003166 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003167 (_keyword = _PyPegen_expect_token(p, 512)) // token='while'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003168 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003169 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003170 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003171 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003172 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003173 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003174 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003175 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003176 )
3177 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003178 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3179 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003180 return NULL;
3181 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003182 int _end_lineno = _token->end_lineno;
3183 UNUSED(_end_lineno); // Only used by EXTRA macro
3184 int _end_col_offset = _token->end_col_offset;
3185 UNUSED(_end_col_offset); // Only used by EXTRA macro
3186 _res = _Py_While ( a , b , c , EXTRA );
3187 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003188 p->error_indicator = 1;
3189 return NULL;
3190 }
3191 goto done;
3192 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003193 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003194 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003195 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003196 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003197 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003198}
3199
Guido van Rossumc001c092020-04-30 12:12:19 -07003200// for_stmt:
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003201// | 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
3202// | ASYNC 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003203static stmt_ty
3204for_stmt_rule(Parser *p)
3205{
3206 if (p->error_indicator) {
3207 return NULL;
3208 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003209 stmt_ty _res = NULL;
3210 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003211 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3212 p->error_indicator = 1;
3213 return NULL;
3214 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003215 int _start_lineno = p->tokens[_mark]->lineno;
3216 UNUSED(_start_lineno); // Only used by EXTRA macro
3217 int _start_col_offset = p->tokens[_mark]->col_offset;
3218 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003219 { // 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003220 if (p->error_indicator) {
3221 return NULL;
3222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003223 Token * _keyword;
3224 Token * _keyword_1;
3225 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003226 asdl_seq* b;
3227 void *el;
3228 expr_ty ex;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003229 expr_ty t;
Guido van Rossumc001c092020-04-30 12:12:19 -07003230 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003231 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003232 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003233 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003234 (t = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003235 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003236 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003237 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003238 (ex = star_expressions_rule(p)) // star_expressions
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003239 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003240 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003241 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003242 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003243 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003244 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003245 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003246 (el = else_block_rule(p), 1) // else_block?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003247 )
3248 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003249 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3250 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003251 return NULL;
3252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003253 int _end_lineno = _token->end_lineno;
3254 UNUSED(_end_lineno); // Only used by EXTRA macro
3255 int _end_col_offset = _token->end_col_offset;
3256 UNUSED(_end_col_offset); // Only used by EXTRA macro
3257 _res = _Py_For ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
3258 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003259 p->error_indicator = 1;
3260 return NULL;
3261 }
3262 goto done;
3263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003264 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003265 }
3266 { // ASYNC 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003267 if (p->error_indicator) {
3268 return NULL;
3269 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003270 Token * _keyword;
3271 Token * _keyword_1;
3272 Token * _literal;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003273 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003274 asdl_seq* b;
3275 void *el;
3276 expr_ty ex;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003277 expr_ty t;
3278 void *tc;
3279 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003280 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003281 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003282 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003283 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003284 (t = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003285 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003286 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003287 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003288 (ex = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003289 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003290 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003291 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003292 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07003293 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003294 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003295 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003296 (el = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003297 )
3298 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003299 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3300 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003301 return NULL;
3302 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003303 int _end_lineno = _token->end_lineno;
3304 UNUSED(_end_lineno); // Only used by EXTRA macro
3305 int _end_col_offset = _token->end_col_offset;
3306 UNUSED(_end_col_offset); // Only used by EXTRA macro
3307 _res = CHECK_VERSION ( 5 , "Async for loops are" , _Py_AsyncFor ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
3308 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003309 p->error_indicator = 1;
3310 return NULL;
3311 }
3312 goto done;
3313 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003314 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003315 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003316 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003317 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003318 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003319}
3320
3321// with_stmt:
Pablo Galindo99db2a12020-05-06 22:54:34 +01003322// | 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003323// | 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindo99db2a12020-05-06 22:54:34 +01003324// | ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003325// | ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003326static stmt_ty
3327with_stmt_rule(Parser *p)
3328{
3329 if (p->error_indicator) {
3330 return NULL;
3331 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003332 stmt_ty _res = NULL;
3333 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003334 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3335 p->error_indicator = 1;
3336 return NULL;
3337 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003338 int _start_lineno = p->tokens[_mark]->lineno;
3339 UNUSED(_start_lineno); // Only used by EXTRA macro
3340 int _start_col_offset = p->tokens[_mark]->col_offset;
3341 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindo99db2a12020-05-06 22:54:34 +01003342 { // 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003343 if (p->error_indicator) {
3344 return NULL;
3345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003346 Token * _keyword;
3347 Token * _literal;
3348 Token * _literal_1;
3349 Token * _literal_2;
3350 void *_opt_var;
3351 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003352 asdl_seq * a;
3353 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003354 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003355 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003356 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003357 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003358 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003359 (a = _gather_38_rule(p)) // ','.with_item+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003360 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003361 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindo99db2a12020-05-06 22:54:34 +01003362 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003363 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003364 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003365 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003366 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003367 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003368 )
3369 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003370 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3371 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003372 return NULL;
3373 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003374 int _end_lineno = _token->end_lineno;
3375 UNUSED(_end_lineno); // Only used by EXTRA macro
3376 int _end_col_offset = _token->end_col_offset;
3377 UNUSED(_end_col_offset); // Only used by EXTRA macro
3378 _res = _Py_With ( a , b , NULL , EXTRA );
3379 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003380 p->error_indicator = 1;
3381 return NULL;
3382 }
3383 goto done;
3384 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003385 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003386 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003387 { // 'with' ','.with_item+ ':' TYPE_COMMENT? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003388 if (p->error_indicator) {
3389 return NULL;
3390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003391 Token * _keyword;
3392 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003393 asdl_seq * a;
3394 asdl_seq* b;
Guido van Rossumc001c092020-04-30 12:12:19 -07003395 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003396 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003397 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003398 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003399 (a = _gather_40_rule(p)) // ','.with_item+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003400 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003401 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003402 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003403 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07003404 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003405 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003406 )
3407 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003408 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3409 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003410 return NULL;
3411 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003412 int _end_lineno = _token->end_lineno;
3413 UNUSED(_end_lineno); // Only used by EXTRA macro
3414 int _end_col_offset = _token->end_col_offset;
3415 UNUSED(_end_col_offset); // Only used by EXTRA macro
3416 _res = _Py_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
3417 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003418 p->error_indicator = 1;
3419 return NULL;
3420 }
3421 goto done;
3422 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003423 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003424 }
Pablo Galindo99db2a12020-05-06 22:54:34 +01003425 { // ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003426 if (p->error_indicator) {
3427 return NULL;
3428 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003429 Token * _keyword;
3430 Token * _literal;
3431 Token * _literal_1;
3432 Token * _literal_2;
3433 void *_opt_var;
3434 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003435 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003436 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003437 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003438 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003439 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003440 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003441 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003442 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003443 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003444 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003445 (a = _gather_42_rule(p)) // ','.with_item+
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003446 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003447 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindo99db2a12020-05-06 22:54:34 +01003448 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003449 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003450 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003451 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003452 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003453 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003454 )
3455 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003456 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3457 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003458 return NULL;
3459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003460 int _end_lineno = _token->end_lineno;
3461 UNUSED(_end_lineno); // Only used by EXTRA macro
3462 int _end_col_offset = _token->end_col_offset;
3463 UNUSED(_end_col_offset); // Only used by EXTRA macro
3464 _res = CHECK_VERSION ( 5 , "Async with statements are" , _Py_AsyncWith ( a , b , NULL , EXTRA ) );
3465 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003466 p->error_indicator = 1;
3467 return NULL;
3468 }
3469 goto done;
3470 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003471 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003472 }
3473 { // ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003474 if (p->error_indicator) {
3475 return NULL;
3476 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003477 Token * _keyword;
3478 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003479 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003480 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003481 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003482 void *tc;
3483 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003484 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003485 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003486 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003487 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003488 (a = _gather_44_rule(p)) // ','.with_item+
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003489 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003490 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003491 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003492 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003493 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003494 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003495 )
3496 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003497 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3498 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003499 return NULL;
3500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003501 int _end_lineno = _token->end_lineno;
3502 UNUSED(_end_lineno); // Only used by EXTRA macro
3503 int _end_col_offset = _token->end_col_offset;
3504 UNUSED(_end_col_offset); // Only used by EXTRA macro
3505 _res = CHECK_VERSION ( 5 , "Async with statements are" , _Py_AsyncWith ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
3506 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003507 p->error_indicator = 1;
3508 return NULL;
3509 }
3510 goto done;
3511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003512 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003513 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003514 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003515 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003516 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003517}
3518
3519// with_item: expression ['as' target]
3520static withitem_ty
3521with_item_rule(Parser *p)
3522{
3523 if (p->error_indicator) {
3524 return NULL;
3525 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003526 withitem_ty _res = NULL;
3527 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003528 { // expression ['as' target]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003529 if (p->error_indicator) {
3530 return NULL;
3531 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003532 expr_ty e;
3533 void *o;
3534 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003535 (e = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003536 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003537 (o = _tmp_46_rule(p), 1) // ['as' target]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003538 )
3539 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003540 _res = _Py_withitem ( e , o , p -> arena );
3541 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003542 p->error_indicator = 1;
3543 return NULL;
3544 }
3545 goto done;
3546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003547 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003548 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003549 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003550 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003551 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003552}
3553
3554// try_stmt:
3555// | 'try' ':' block finally_block
3556// | 'try' ':' block except_block+ else_block? finally_block?
3557static stmt_ty
3558try_stmt_rule(Parser *p)
3559{
3560 if (p->error_indicator) {
3561 return NULL;
3562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003563 stmt_ty _res = NULL;
3564 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003565 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3566 p->error_indicator = 1;
3567 return NULL;
3568 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003569 int _start_lineno = p->tokens[_mark]->lineno;
3570 UNUSED(_start_lineno); // Only used by EXTRA macro
3571 int _start_col_offset = p->tokens[_mark]->col_offset;
3572 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003573 { // 'try' ':' block finally_block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003574 if (p->error_indicator) {
3575 return NULL;
3576 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003577 Token * _keyword;
3578 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003579 asdl_seq* b;
3580 asdl_seq* f;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003581 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003582 (_keyword = _PyPegen_expect_token(p, 511)) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003583 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003584 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003585 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003586 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003587 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003588 (f = finally_block_rule(p)) // finally_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003589 )
3590 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003591 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3592 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003593 return NULL;
3594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003595 int _end_lineno = _token->end_lineno;
3596 UNUSED(_end_lineno); // Only used by EXTRA macro
3597 int _end_col_offset = _token->end_col_offset;
3598 UNUSED(_end_col_offset); // Only used by EXTRA macro
3599 _res = _Py_Try ( b , NULL , NULL , f , EXTRA );
3600 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003601 p->error_indicator = 1;
3602 return NULL;
3603 }
3604 goto done;
3605 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003606 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003607 }
3608 { // 'try' ':' block except_block+ else_block? finally_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003609 if (p->error_indicator) {
3610 return NULL;
3611 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003612 Token * _keyword;
3613 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003614 asdl_seq* b;
3615 void *el;
3616 asdl_seq * ex;
3617 void *f;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003618 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003619 (_keyword = _PyPegen_expect_token(p, 511)) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003620 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003621 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003622 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003623 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003624 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003625 (ex = _loop1_47_rule(p)) // except_block+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003626 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003627 (el = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003628 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003629 (f = finally_block_rule(p), 1) // finally_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003630 )
3631 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003632 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3633 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003634 return NULL;
3635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003636 int _end_lineno = _token->end_lineno;
3637 UNUSED(_end_lineno); // Only used by EXTRA macro
3638 int _end_col_offset = _token->end_col_offset;
3639 UNUSED(_end_col_offset); // Only used by EXTRA macro
3640 _res = _Py_Try ( b , ex , el , f , EXTRA );
3641 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003642 p->error_indicator = 1;
3643 return NULL;
3644 }
3645 goto done;
3646 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003647 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003648 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003649 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003650 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003651 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003652}
3653
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03003654// except_block: 'except' expression ['as' NAME] ':' block | 'except' ':' block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003655static excepthandler_ty
3656except_block_rule(Parser *p)
3657{
3658 if (p->error_indicator) {
3659 return NULL;
3660 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003661 excepthandler_ty _res = NULL;
3662 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003663 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3664 p->error_indicator = 1;
3665 return NULL;
3666 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003667 int _start_lineno = p->tokens[_mark]->lineno;
3668 UNUSED(_start_lineno); // Only used by EXTRA macro
3669 int _start_col_offset = p->tokens[_mark]->col_offset;
3670 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03003671 { // 'except' expression ['as' NAME] ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003672 if (p->error_indicator) {
3673 return NULL;
3674 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003675 Token * _keyword;
3676 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003677 asdl_seq* b;
3678 expr_ty e;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003679 void *t;
3680 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003681 (_keyword = _PyPegen_expect_token(p, 520)) // token='except'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003682 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003683 (e = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003684 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03003685 (t = _tmp_48_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003686 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003687 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003688 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003689 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003690 )
3691 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003692 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3693 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003694 return NULL;
3695 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003696 int _end_lineno = _token->end_lineno;
3697 UNUSED(_end_lineno); // Only used by EXTRA macro
3698 int _end_col_offset = _token->end_col_offset;
3699 UNUSED(_end_col_offset); // Only used by EXTRA macro
3700 _res = _Py_ExceptHandler ( e , ( t ) ? ( ( expr_ty ) t ) -> v . Name . id : NULL , b , EXTRA );
3701 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003702 p->error_indicator = 1;
3703 return NULL;
3704 }
3705 goto done;
3706 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003707 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003708 }
3709 { // 'except' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003710 if (p->error_indicator) {
3711 return NULL;
3712 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003713 Token * _keyword;
3714 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003715 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003716 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003717 (_keyword = _PyPegen_expect_token(p, 520)) // token='except'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003718 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003719 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003720 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003721 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003722 )
3723 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003724 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3725 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003726 return NULL;
3727 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003728 int _end_lineno = _token->end_lineno;
3729 UNUSED(_end_lineno); // Only used by EXTRA macro
3730 int _end_col_offset = _token->end_col_offset;
3731 UNUSED(_end_col_offset); // Only used by EXTRA macro
3732 _res = _Py_ExceptHandler ( NULL , NULL , b , EXTRA );
3733 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003734 p->error_indicator = 1;
3735 return NULL;
3736 }
3737 goto done;
3738 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003739 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003741 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003742 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003743 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003744}
3745
3746// finally_block: 'finally' ':' block
3747static asdl_seq*
3748finally_block_rule(Parser *p)
3749{
3750 if (p->error_indicator) {
3751 return NULL;
3752 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003753 asdl_seq* _res = NULL;
3754 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003755 { // 'finally' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003756 if (p->error_indicator) {
3757 return NULL;
3758 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003759 Token * _keyword;
3760 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003761 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003762 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003763 (_keyword = _PyPegen_expect_token(p, 521)) // token='finally'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003764 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003765 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003766 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003767 (a = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003768 )
3769 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003770 _res = a;
3771 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003772 p->error_indicator = 1;
3773 return NULL;
3774 }
3775 goto done;
3776 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003777 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003779 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003780 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003781 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003782}
3783
3784// return_stmt: 'return' star_expressions?
3785static stmt_ty
3786return_stmt_rule(Parser *p)
3787{
3788 if (p->error_indicator) {
3789 return NULL;
3790 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003791 stmt_ty _res = NULL;
3792 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003793 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3794 p->error_indicator = 1;
3795 return NULL;
3796 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003797 int _start_lineno = p->tokens[_mark]->lineno;
3798 UNUSED(_start_lineno); // Only used by EXTRA macro
3799 int _start_col_offset = p->tokens[_mark]->col_offset;
3800 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003801 { // 'return' star_expressions?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003802 if (p->error_indicator) {
3803 return NULL;
3804 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003805 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003806 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003807 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003808 (_keyword = _PyPegen_expect_token(p, 500)) // token='return'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003809 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003810 (a = star_expressions_rule(p), 1) // star_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003811 )
3812 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003813 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3814 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003815 return NULL;
3816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003817 int _end_lineno = _token->end_lineno;
3818 UNUSED(_end_lineno); // Only used by EXTRA macro
3819 int _end_col_offset = _token->end_col_offset;
3820 UNUSED(_end_col_offset); // Only used by EXTRA macro
3821 _res = _Py_Return ( a , EXTRA );
3822 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003823 p->error_indicator = 1;
3824 return NULL;
3825 }
3826 goto done;
3827 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003828 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003829 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003830 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003831 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003832 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003833}
3834
3835// raise_stmt: 'raise' expression ['from' expression] | 'raise'
3836static stmt_ty
3837raise_stmt_rule(Parser *p)
3838{
3839 if (p->error_indicator) {
3840 return NULL;
3841 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003842 stmt_ty _res = NULL;
3843 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003844 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3845 p->error_indicator = 1;
3846 return NULL;
3847 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003848 int _start_lineno = p->tokens[_mark]->lineno;
3849 UNUSED(_start_lineno); // Only used by EXTRA macro
3850 int _start_col_offset = p->tokens[_mark]->col_offset;
3851 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003852 { // 'raise' expression ['from' expression]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003853 if (p->error_indicator) {
3854 return NULL;
3855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003856 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003857 expr_ty a;
3858 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003859 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003860 (_keyword = _PyPegen_expect_token(p, 501)) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003861 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003862 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003863 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003864 (b = _tmp_49_rule(p), 1) // ['from' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003865 )
3866 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003867 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3868 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003869 return NULL;
3870 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003871 int _end_lineno = _token->end_lineno;
3872 UNUSED(_end_lineno); // Only used by EXTRA macro
3873 int _end_col_offset = _token->end_col_offset;
3874 UNUSED(_end_col_offset); // Only used by EXTRA macro
3875 _res = _Py_Raise ( a , b , EXTRA );
3876 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003877 p->error_indicator = 1;
3878 return NULL;
3879 }
3880 goto done;
3881 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003882 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003883 }
3884 { // 'raise'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003885 if (p->error_indicator) {
3886 return NULL;
3887 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003888 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003889 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003890 (_keyword = _PyPegen_expect_token(p, 501)) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003891 )
3892 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003893 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3894 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003895 return NULL;
3896 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003897 int _end_lineno = _token->end_lineno;
3898 UNUSED(_end_lineno); // Only used by EXTRA macro
3899 int _end_col_offset = _token->end_col_offset;
3900 UNUSED(_end_col_offset); // Only used by EXTRA macro
3901 _res = _Py_Raise ( NULL , NULL , EXTRA );
3902 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003903 p->error_indicator = 1;
3904 return NULL;
3905 }
3906 goto done;
3907 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003908 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003909 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003910 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003911 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003912 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003913}
3914
3915// function_def: decorators function_def_raw | function_def_raw
3916static stmt_ty
3917function_def_rule(Parser *p)
3918{
3919 if (p->error_indicator) {
3920 return NULL;
3921 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003922 stmt_ty _res = NULL;
3923 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003924 { // decorators function_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003925 if (p->error_indicator) {
3926 return NULL;
3927 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003928 asdl_seq* d;
3929 stmt_ty f;
3930 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003931 (d = decorators_rule(p)) // decorators
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003932 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003933 (f = function_def_raw_rule(p)) // function_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003934 )
3935 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003936 _res = _PyPegen_function_def_decorators ( p , d , f );
3937 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003938 p->error_indicator = 1;
3939 return NULL;
3940 }
3941 goto done;
3942 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003943 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003944 }
3945 { // function_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003946 if (p->error_indicator) {
3947 return NULL;
3948 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003949 stmt_ty function_def_raw_var;
3950 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003951 (function_def_raw_var = function_def_raw_rule(p)) // function_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003952 )
3953 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003954 _res = function_def_raw_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003955 goto done;
3956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003957 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003958 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003959 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003960 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003961 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003962}
3963
Guido van Rossumc001c092020-04-30 12:12:19 -07003964// function_def_raw:
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003965// | 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
3966// | ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003967static stmt_ty
3968function_def_raw_rule(Parser *p)
3969{
3970 if (p->error_indicator) {
3971 return NULL;
3972 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003973 stmt_ty _res = NULL;
3974 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003975 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3976 p->error_indicator = 1;
3977 return NULL;
3978 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003979 int _start_lineno = p->tokens[_mark]->lineno;
3980 UNUSED(_start_lineno); // Only used by EXTRA macro
3981 int _start_col_offset = p->tokens[_mark]->col_offset;
3982 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003983 { // 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003984 if (p->error_indicator) {
3985 return NULL;
3986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003987 Token * _keyword;
3988 Token * _literal;
3989 Token * _literal_1;
3990 Token * _literal_2;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003991 void *a;
3992 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003993 expr_ty n;
3994 void *params;
Guido van Rossumc001c092020-04-30 12:12:19 -07003995 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003996 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003997 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003998 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003999 (n = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004000 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004001 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004002 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004003 (params = params_rule(p), 1) // params?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004004 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004005 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004006 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004007 (a = _tmp_50_rule(p), 1) // ['->' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004008 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004009 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004010 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004011 (tc = func_type_comment_rule(p), 1) // func_type_comment?
Guido van Rossumc001c092020-04-30 12:12:19 -07004012 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004013 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004014 )
4015 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004016 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4017 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004018 return NULL;
4019 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004020 int _end_lineno = _token->end_lineno;
4021 UNUSED(_end_lineno); // Only used by EXTRA macro
4022 int _end_col_offset = _token->end_col_offset;
4023 UNUSED(_end_col_offset); // Only used by EXTRA macro
4024 _res = _Py_FunctionDef ( n -> v . Name . id , ( params ) ? params : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
4025 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004026 p->error_indicator = 1;
4027 return NULL;
4028 }
4029 goto done;
4030 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004031 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004032 }
4033 { // ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004034 if (p->error_indicator) {
4035 return NULL;
4036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004037 Token * _keyword;
4038 Token * _literal;
4039 Token * _literal_1;
4040 Token * _literal_2;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004041 void *a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01004042 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004043 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004044 expr_ty n;
4045 void *params;
4046 void *tc;
4047 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004048 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004049 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004050 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004051 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004052 (n = _PyPegen_name_token(p)) // NAME
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004053 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004054 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004055 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004056 (params = params_rule(p), 1) // params?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004057 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004058 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004059 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004060 (a = _tmp_51_rule(p), 1) // ['->' expression]
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004061 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004062 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004063 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004064 (tc = func_type_comment_rule(p), 1) // func_type_comment?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004065 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004066 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004067 )
4068 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004069 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4070 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004071 return NULL;
4072 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004073 int _end_lineno = _token->end_lineno;
4074 UNUSED(_end_lineno); // Only used by EXTRA macro
4075 int _end_col_offset = _token->end_col_offset;
4076 UNUSED(_end_col_offset); // Only used by EXTRA macro
4077 _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 ) );
4078 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004079 p->error_indicator = 1;
4080 return NULL;
4081 }
4082 goto done;
4083 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004084 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004085 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004086 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004087 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004088 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004089}
4090
Guido van Rossumc001c092020-04-30 12:12:19 -07004091// func_type_comment:
4092// | NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
4093// | invalid_double_type_comments
4094// | TYPE_COMMENT
Pablo Galindod9552412020-05-01 16:32:09 +01004095static Token*
Guido van Rossumc001c092020-04-30 12:12:19 -07004096func_type_comment_rule(Parser *p)
4097{
4098 if (p->error_indicator) {
4099 return NULL;
4100 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004101 Token* _res = NULL;
4102 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004103 { // NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004104 if (p->error_indicator) {
4105 return NULL;
4106 }
Pablo Galindob796b3f2020-05-01 12:32:26 +01004107 Token * newline_var;
4108 Token * t;
Guido van Rossumc001c092020-04-30 12:12:19 -07004109 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004110 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -07004111 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004112 (t = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -07004113 &&
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004114 _PyPegen_lookahead(1, _tmp_52_rule, p)
Guido van Rossumc001c092020-04-30 12:12:19 -07004115 )
4116 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004117 _res = t;
4118 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004119 p->error_indicator = 1;
4120 return NULL;
4121 }
4122 goto done;
4123 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004124 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004125 }
4126 { // invalid_double_type_comments
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004127 if (p->error_indicator) {
4128 return NULL;
4129 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004130 void *invalid_double_type_comments_var;
4131 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004132 (invalid_double_type_comments_var = invalid_double_type_comments_rule(p)) // invalid_double_type_comments
Guido van Rossumc001c092020-04-30 12:12:19 -07004133 )
4134 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004135 _res = invalid_double_type_comments_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07004136 goto done;
4137 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004138 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004139 }
4140 { // TYPE_COMMENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004141 if (p->error_indicator) {
4142 return NULL;
4143 }
Pablo Galindob796b3f2020-05-01 12:32:26 +01004144 Token * type_comment_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07004145 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004146 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -07004147 )
4148 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004149 _res = type_comment_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07004150 goto done;
4151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004152 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004153 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004154 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07004155 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004156 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07004157}
4158
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004159// params: invalid_parameters | parameters
4160static arguments_ty
4161params_rule(Parser *p)
4162{
4163 if (p->error_indicator) {
4164 return NULL;
4165 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004166 arguments_ty _res = NULL;
4167 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004168 { // invalid_parameters
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004169 if (p->error_indicator) {
4170 return NULL;
4171 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004172 void *invalid_parameters_var;
4173 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004174 (invalid_parameters_var = invalid_parameters_rule(p)) // invalid_parameters
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004175 )
4176 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004177 _res = invalid_parameters_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004178 goto done;
4179 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004180 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004181 }
4182 { // parameters
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004183 if (p->error_indicator) {
4184 return NULL;
4185 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004186 arguments_ty parameters_var;
4187 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004188 (parameters_var = parameters_rule(p)) // parameters
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004189 )
4190 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004191 _res = parameters_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004192 goto done;
4193 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004194 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004195 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004196 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004197 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004198 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004199}
4200
4201// parameters:
Guido van Rossumc001c092020-04-30 12:12:19 -07004202// | slash_no_default param_no_default* param_with_default* star_etc?
4203// | slash_with_default param_with_default* star_etc?
4204// | param_no_default+ param_with_default* star_etc?
4205// | param_with_default+ star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004206// | star_etc
4207static arguments_ty
4208parameters_rule(Parser *p)
4209{
4210 if (p->error_indicator) {
4211 return NULL;
4212 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004213 arguments_ty _res = NULL;
4214 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004215 { // slash_no_default param_no_default* param_with_default* star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004216 if (p->error_indicator) {
4217 return NULL;
4218 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004219 asdl_seq* a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004220 asdl_seq * b;
4221 asdl_seq * c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004222 void *d;
4223 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004224 (a = slash_no_default_rule(p)) // slash_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004225 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004226 (b = _loop0_53_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004227 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004228 (c = _loop0_54_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004229 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004230 (d = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004231 )
4232 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004233 _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
4234 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004235 p->error_indicator = 1;
4236 return NULL;
4237 }
4238 goto done;
4239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004240 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004241 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004242 { // slash_with_default param_with_default* star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004243 if (p->error_indicator) {
4244 return NULL;
4245 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004246 SlashWithDefault* a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004247 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004248 void *c;
4249 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004250 (a = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004251 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004252 (b = _loop0_55_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004253 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004254 (c = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004255 )
4256 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004257 _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
4258 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004259 p->error_indicator = 1;
4260 return NULL;
4261 }
4262 goto done;
4263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004264 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004265 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004266 { // param_no_default+ param_with_default* star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004267 if (p->error_indicator) {
4268 return NULL;
4269 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004270 asdl_seq * a;
4271 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004272 void *c;
4273 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004274 (a = _loop1_56_rule(p)) // param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004275 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004276 (b = _loop0_57_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004277 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004278 (c = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004279 )
4280 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004281 _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
4282 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004283 p->error_indicator = 1;
4284 return NULL;
4285 }
4286 goto done;
4287 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004288 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004289 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004290 { // param_with_default+ star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004291 if (p->error_indicator) {
4292 return NULL;
4293 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004294 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004295 void *b;
4296 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004297 (a = _loop1_58_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004298 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004299 (b = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004300 )
4301 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004302 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
4303 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004304 p->error_indicator = 1;
4305 return NULL;
4306 }
4307 goto done;
4308 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004309 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004310 }
4311 { // star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004312 if (p->error_indicator) {
4313 return NULL;
4314 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004315 StarEtc* a;
4316 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004317 (a = star_etc_rule(p)) // star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004318 )
4319 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004320 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
4321 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004322 p->error_indicator = 1;
4323 return NULL;
4324 }
4325 goto done;
4326 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004327 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004328 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004329 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004330 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004331 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004332}
4333
Guido van Rossumc001c092020-04-30 12:12:19 -07004334// slash_no_default: param_no_default+ '/' ',' | param_no_default+ '/' &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004335static asdl_seq*
Guido van Rossumc001c092020-04-30 12:12:19 -07004336slash_no_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004337{
4338 if (p->error_indicator) {
4339 return NULL;
4340 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004341 asdl_seq* _res = NULL;
4342 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004343 { // param_no_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004344 if (p->error_indicator) {
4345 return NULL;
4346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004347 Token * _literal;
4348 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07004349 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004350 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004351 (a = _loop1_59_rule(p)) // param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004352 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004353 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004354 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004355 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004356 )
4357 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004358 _res = a;
4359 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004360 p->error_indicator = 1;
4361 return NULL;
4362 }
4363 goto done;
4364 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004365 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004366 }
4367 { // param_no_default+ '/' &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004368 if (p->error_indicator) {
4369 return NULL;
4370 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004371 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004372 asdl_seq * a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004373 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004374 (a = _loop1_60_rule(p)) // param_no_default+
Guido van Rossumc001c092020-04-30 12:12:19 -07004375 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004376 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossumc001c092020-04-30 12:12:19 -07004377 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004378 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004379 )
4380 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004381 _res = a;
4382 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004383 p->error_indicator = 1;
4384 return NULL;
4385 }
4386 goto done;
4387 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004388 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004389 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004390 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004391 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004392 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004393}
4394
Guido van Rossumc001c092020-04-30 12:12:19 -07004395// slash_with_default:
4396// | param_no_default* param_with_default+ '/' ','
4397// | param_no_default* param_with_default+ '/' &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004398static SlashWithDefault*
4399slash_with_default_rule(Parser *p)
4400{
4401 if (p->error_indicator) {
4402 return NULL;
4403 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004404 SlashWithDefault* _res = NULL;
4405 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004406 { // param_no_default* param_with_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004407 if (p->error_indicator) {
4408 return NULL;
4409 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004410 Token * _literal;
4411 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07004412 asdl_seq * a;
4413 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004414 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004415 (a = _loop0_61_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004416 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004417 (b = _loop1_62_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004418 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004419 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004420 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004421 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004422 )
4423 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004424 _res = _PyPegen_slash_with_default ( p , a , b );
4425 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004426 p->error_indicator = 1;
4427 return NULL;
4428 }
4429 goto done;
4430 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004431 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004432 }
4433 { // param_no_default* param_with_default+ '/' &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004434 if (p->error_indicator) {
4435 return NULL;
4436 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004437 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004438 asdl_seq * a;
4439 asdl_seq * b;
Guido van Rossumc001c092020-04-30 12:12:19 -07004440 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004441 (a = _loop0_63_rule(p)) // param_no_default*
Guido van Rossumc001c092020-04-30 12:12:19 -07004442 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004443 (b = _loop1_64_rule(p)) // param_with_default+
Guido van Rossumc001c092020-04-30 12:12:19 -07004444 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004445 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossumc001c092020-04-30 12:12:19 -07004446 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004447 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004448 )
4449 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004450 _res = _PyPegen_slash_with_default ( p , a , b );
4451 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004452 p->error_indicator = 1;
4453 return NULL;
4454 }
4455 goto done;
4456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004457 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004458 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004459 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004460 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004461 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004462}
4463
4464// star_etc:
Guido van Rossumc001c092020-04-30 12:12:19 -07004465// | '*' param_no_default param_maybe_default* kwds?
4466// | '*' ',' param_maybe_default+ kwds?
4467// | kwds
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004468// | invalid_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004469static StarEtc*
4470star_etc_rule(Parser *p)
4471{
4472 if (p->error_indicator) {
4473 return NULL;
4474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004475 StarEtc* _res = NULL;
4476 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004477 { // '*' param_no_default param_maybe_default* kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004478 if (p->error_indicator) {
4479 return NULL;
4480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004481 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004482 arg_ty a;
4483 asdl_seq * b;
4484 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004485 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004486 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004487 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004488 (a = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004489 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004490 (b = _loop0_65_rule(p)) // param_maybe_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004491 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004492 (c = kwds_rule(p), 1) // kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004493 )
4494 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004495 _res = _PyPegen_star_etc ( p , a , b , c );
4496 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004497 p->error_indicator = 1;
4498 return NULL;
4499 }
4500 goto done;
4501 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004502 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004503 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004504 { // '*' ',' param_maybe_default+ kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004505 if (p->error_indicator) {
4506 return NULL;
4507 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004508 Token * _literal;
4509 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004510 asdl_seq * b;
4511 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004512 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004513 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004514 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004515 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004516 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004517 (b = _loop1_66_rule(p)) // param_maybe_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004518 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004519 (c = kwds_rule(p), 1) // kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004520 )
4521 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004522 _res = _PyPegen_star_etc ( p , NULL , b , c );
4523 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004524 p->error_indicator = 1;
4525 return NULL;
4526 }
4527 goto done;
4528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004529 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004530 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004531 { // kwds
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004532 if (p->error_indicator) {
4533 return NULL;
4534 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004535 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004536 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004537 (a = kwds_rule(p)) // kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004538 )
4539 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004540 _res = _PyPegen_star_etc ( p , NULL , NULL , a );
4541 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004542 p->error_indicator = 1;
4543 return NULL;
4544 }
4545 goto done;
4546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004547 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004548 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004549 { // invalid_star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004550 if (p->error_indicator) {
4551 return NULL;
4552 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004553 void *invalid_star_etc_var;
4554 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004555 (invalid_star_etc_var = invalid_star_etc_rule(p)) // invalid_star_etc
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004556 )
4557 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004558 _res = invalid_star_etc_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004559 goto done;
4560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004561 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004563 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004564 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004565 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004566}
4567
Guido van Rossumc001c092020-04-30 12:12:19 -07004568// kwds: '**' param_no_default
4569static arg_ty
4570kwds_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004571{
4572 if (p->error_indicator) {
4573 return NULL;
4574 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004575 arg_ty _res = NULL;
4576 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004577 { // '**' param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004578 if (p->error_indicator) {
4579 return NULL;
4580 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004581 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004582 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004583 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004584 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -07004585 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004586 (a = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -07004587 )
4588 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004589 _res = a;
4590 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004591 p->error_indicator = 1;
4592 return NULL;
4593 }
4594 goto done;
4595 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004596 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004597 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004598 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07004599 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004600 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07004601}
4602
4603// param_no_default: param ',' TYPE_COMMENT? | param TYPE_COMMENT? &')'
4604static arg_ty
4605param_no_default_rule(Parser *p)
4606{
4607 if (p->error_indicator) {
4608 return NULL;
4609 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004610 arg_ty _res = NULL;
4611 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004612 { // param ',' TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004613 if (p->error_indicator) {
4614 return NULL;
4615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004616 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004617 arg_ty a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004618 void *tc;
4619 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004620 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004621 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004622 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004623 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004624 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004625 )
4626 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004627 _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
4628 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004629 p->error_indicator = 1;
4630 return NULL;
4631 }
4632 goto done;
4633 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004634 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004635 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004636 { // param TYPE_COMMENT? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004637 if (p->error_indicator) {
4638 return NULL;
4639 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004640 arg_ty a;
4641 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004642 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004643 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004644 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004645 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004646 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004647 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004648 )
4649 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004650 _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
4651 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004652 p->error_indicator = 1;
4653 return NULL;
4654 }
4655 goto done;
4656 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004657 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004658 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004659 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004660 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004661 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004662}
4663
Guido van Rossumc001c092020-04-30 12:12:19 -07004664// param_with_default: param default ',' TYPE_COMMENT? | param default TYPE_COMMENT? &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004665static NameDefaultPair*
Guido van Rossumc001c092020-04-30 12:12:19 -07004666param_with_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004667{
4668 if (p->error_indicator) {
4669 return NULL;
4670 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004671 NameDefaultPair* _res = NULL;
4672 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004673 { // param default ',' TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004674 if (p->error_indicator) {
4675 return NULL;
4676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004677 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004678 arg_ty a;
4679 expr_ty c;
Guido van Rossumc001c092020-04-30 12:12:19 -07004680 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004681 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004682 (a = param_rule(p)) // param
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004683 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004684 (c = default_rule(p)) // default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004685 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004686 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004687 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004688 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004689 )
4690 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004691 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4692 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004693 p->error_indicator = 1;
4694 return NULL;
4695 }
4696 goto done;
4697 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004698 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004699 }
4700 { // param default TYPE_COMMENT? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004701 if (p->error_indicator) {
4702 return NULL;
4703 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004704 arg_ty a;
4705 expr_ty c;
4706 void *tc;
4707 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004708 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004709 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004710 (c = default_rule(p)) // default
Guido van Rossumc001c092020-04-30 12:12:19 -07004711 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004712 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004713 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004714 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -07004715 )
4716 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004717 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4718 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004719 p->error_indicator = 1;
4720 return NULL;
4721 }
4722 goto done;
4723 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004724 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004725 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004726 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004727 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004728 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004729}
4730
Guido van Rossumc001c092020-04-30 12:12:19 -07004731// param_maybe_default:
4732// | param default? ',' TYPE_COMMENT?
4733// | param default? TYPE_COMMENT? &')'
4734static NameDefaultPair*
4735param_maybe_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004736{
4737 if (p->error_indicator) {
4738 return NULL;
4739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004740 NameDefaultPair* _res = NULL;
4741 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004742 { // param default? ',' TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004743 if (p->error_indicator) {
4744 return NULL;
4745 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004746 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004747 arg_ty a;
4748 void *c;
Guido van Rossumc001c092020-04-30 12:12:19 -07004749 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004750 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004751 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004752 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004753 (c = default_rule(p), 1) // default?
Guido van Rossumc001c092020-04-30 12:12:19 -07004754 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004755 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004756 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004757 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004758 )
4759 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004760 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4761 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004762 p->error_indicator = 1;
4763 return NULL;
4764 }
4765 goto done;
4766 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004767 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004768 }
4769 { // param default? TYPE_COMMENT? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004770 if (p->error_indicator) {
4771 return NULL;
4772 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004773 arg_ty a;
4774 void *c;
4775 void *tc;
4776 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004777 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004778 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004779 (c = default_rule(p), 1) // default?
Guido van Rossumc001c092020-04-30 12:12:19 -07004780 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004781 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004782 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004783 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -07004784 )
4785 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004786 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4787 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004788 p->error_indicator = 1;
4789 return NULL;
4790 }
4791 goto done;
4792 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004793 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004794 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004795 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004796 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004797 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004798}
4799
Guido van Rossumc001c092020-04-30 12:12:19 -07004800// param: NAME annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004801static arg_ty
Guido van Rossumc001c092020-04-30 12:12:19 -07004802param_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004803{
4804 if (p->error_indicator) {
4805 return NULL;
4806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004807 arg_ty _res = NULL;
4808 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004809 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4810 p->error_indicator = 1;
4811 return NULL;
4812 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004813 int _start_lineno = p->tokens[_mark]->lineno;
4814 UNUSED(_start_lineno); // Only used by EXTRA macro
4815 int _start_col_offset = p->tokens[_mark]->col_offset;
4816 UNUSED(_start_col_offset); // Only used by EXTRA macro
Guido van Rossumc001c092020-04-30 12:12:19 -07004817 { // NAME annotation?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004818 if (p->error_indicator) {
4819 return NULL;
4820 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004821 expr_ty a;
4822 void *b;
4823 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004824 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004825 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004826 (b = annotation_rule(p), 1) // annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004827 )
4828 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004829 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4830 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004831 return NULL;
4832 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004833 int _end_lineno = _token->end_lineno;
4834 UNUSED(_end_lineno); // Only used by EXTRA macro
4835 int _end_col_offset = _token->end_col_offset;
4836 UNUSED(_end_col_offset); // Only used by EXTRA macro
4837 _res = _Py_arg ( a -> v . Name . id , b , NULL , EXTRA );
4838 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004839 p->error_indicator = 1;
4840 return NULL;
4841 }
4842 goto done;
4843 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004844 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004845 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004846 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004847 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004848 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004849}
4850
Guido van Rossumc001c092020-04-30 12:12:19 -07004851// annotation: ':' expression
4852static expr_ty
4853annotation_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004854{
4855 if (p->error_indicator) {
4856 return NULL;
4857 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004858 expr_ty _res = NULL;
4859 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004860 { // ':' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004861 if (p->error_indicator) {
4862 return NULL;
4863 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004864 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004865 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004866 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004867 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004868 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004869 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004870 )
4871 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004872 _res = a;
4873 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004874 p->error_indicator = 1;
4875 return NULL;
4876 }
4877 goto done;
4878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004879 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004880 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004881 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004882 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004883 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004884}
4885
Guido van Rossumc001c092020-04-30 12:12:19 -07004886// default: '=' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004887static expr_ty
Guido van Rossumc001c092020-04-30 12:12:19 -07004888default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004889{
4890 if (p->error_indicator) {
4891 return NULL;
4892 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004893 expr_ty _res = NULL;
4894 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004895 { // '=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004896 if (p->error_indicator) {
4897 return NULL;
4898 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004899 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004900 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004901 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004902 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Guido van Rossumc001c092020-04-30 12:12:19 -07004903 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004904 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004905 )
4906 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004907 _res = a;
4908 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004909 p->error_indicator = 1;
4910 return NULL;
4911 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004912 goto done;
4913 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004914 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004915 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004916 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004917 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004918 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004919}
4920
4921// decorators: (('@' named_expression NEWLINE))+
4922static asdl_seq*
4923decorators_rule(Parser *p)
4924{
4925 if (p->error_indicator) {
4926 return NULL;
4927 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004928 asdl_seq* _res = NULL;
4929 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004930 { // (('@' named_expression NEWLINE))+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004931 if (p->error_indicator) {
4932 return NULL;
4933 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004934 asdl_seq * a;
4935 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004936 (a = _loop1_67_rule(p)) // (('@' named_expression NEWLINE))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004937 )
4938 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004939 _res = a;
4940 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004941 p->error_indicator = 1;
4942 return NULL;
4943 }
4944 goto done;
4945 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004946 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004947 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004948 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004949 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004950 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004951}
4952
4953// class_def: decorators class_def_raw | class_def_raw
4954static stmt_ty
4955class_def_rule(Parser *p)
4956{
4957 if (p->error_indicator) {
4958 return NULL;
4959 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004960 stmt_ty _res = NULL;
4961 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004962 { // decorators class_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004963 if (p->error_indicator) {
4964 return NULL;
4965 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004966 asdl_seq* a;
4967 stmt_ty b;
4968 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004969 (a = decorators_rule(p)) // decorators
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004970 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004971 (b = class_def_raw_rule(p)) // class_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004972 )
4973 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004974 _res = _PyPegen_class_def_decorators ( p , a , b );
4975 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004976 p->error_indicator = 1;
4977 return NULL;
4978 }
4979 goto done;
4980 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004981 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004982 }
4983 { // class_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004984 if (p->error_indicator) {
4985 return NULL;
4986 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004987 stmt_ty class_def_raw_var;
4988 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004989 (class_def_raw_var = class_def_raw_rule(p)) // class_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004990 )
4991 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004992 _res = class_def_raw_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004993 goto done;
4994 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004995 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004996 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004997 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004998 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004999 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005000}
5001
5002// class_def_raw: 'class' NAME ['(' arguments? ')'] ':' block
5003static stmt_ty
5004class_def_raw_rule(Parser *p)
5005{
5006 if (p->error_indicator) {
5007 return NULL;
5008 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005009 stmt_ty _res = NULL;
5010 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005011 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5012 p->error_indicator = 1;
5013 return NULL;
5014 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005015 int _start_lineno = p->tokens[_mark]->lineno;
5016 UNUSED(_start_lineno); // Only used by EXTRA macro
5017 int _start_col_offset = p->tokens[_mark]->col_offset;
5018 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005019 { // 'class' NAME ['(' arguments? ')'] ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005020 if (p->error_indicator) {
5021 return NULL;
5022 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005023 Token * _keyword;
5024 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005025 expr_ty a;
5026 void *b;
5027 asdl_seq* c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005028 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005029 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005030 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005031 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005032 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005033 (b = _tmp_68_rule(p), 1) // ['(' arguments? ')']
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005034 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005035 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005036 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005037 (c = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005038 )
5039 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005040 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5041 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005042 return NULL;
5043 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005044 int _end_lineno = _token->end_lineno;
5045 UNUSED(_end_lineno); // Only used by EXTRA macro
5046 int _end_col_offset = _token->end_col_offset;
5047 UNUSED(_end_col_offset); // Only used by EXTRA macro
5048 _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 );
5049 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005050 p->error_indicator = 1;
5051 return NULL;
5052 }
5053 goto done;
5054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005055 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005057 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005058 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005059 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005060}
5061
5062// block: NEWLINE INDENT statements DEDENT | simple_stmt | invalid_block
5063static asdl_seq*
5064block_rule(Parser *p)
5065{
5066 if (p->error_indicator) {
5067 return NULL;
5068 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005069 asdl_seq* _res = NULL;
5070 if (_PyPegen_is_memoized(p, block_type, &_res))
5071 return _res;
5072 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005073 { // NEWLINE INDENT statements DEDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005074 if (p->error_indicator) {
5075 return NULL;
5076 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005077 asdl_seq* a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01005078 Token * dedent_var;
5079 Token * indent_var;
5080 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005081 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005082 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005083 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005084 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005085 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005086 (a = statements_rule(p)) // statements
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005087 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005088 (dedent_var = _PyPegen_expect_token(p, DEDENT)) // token='DEDENT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005089 )
5090 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005091 _res = a;
5092 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005093 p->error_indicator = 1;
5094 return NULL;
5095 }
5096 goto done;
5097 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005098 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005099 }
5100 { // simple_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005101 if (p->error_indicator) {
5102 return NULL;
5103 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005104 asdl_seq* simple_stmt_var;
5105 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005106 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005107 )
5108 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005109 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005110 goto done;
5111 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005112 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005113 }
5114 { // invalid_block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005115 if (p->error_indicator) {
5116 return NULL;
5117 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005118 void *invalid_block_var;
5119 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005120 (invalid_block_var = invalid_block_rule(p)) // invalid_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005121 )
5122 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005123 _res = invalid_block_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005124 goto done;
5125 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005126 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005127 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005128 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005129 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005130 _PyPegen_insert_memo(p, _mark, block_type, _res);
5131 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005132}
5133
5134// expressions_list: ','.star_expression+ ','?
5135static asdl_seq*
5136expressions_list_rule(Parser *p)
5137{
5138 if (p->error_indicator) {
5139 return NULL;
5140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005141 asdl_seq* _res = NULL;
5142 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005143 { // ','.star_expression+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005144 if (p->error_indicator) {
5145 return NULL;
5146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005147 void *_opt_var;
5148 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005149 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005150 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005151 (a = _gather_69_rule(p)) // ','.star_expression+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005152 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005153 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005154 )
5155 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005156 _res = a;
5157 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005158 p->error_indicator = 1;
5159 return NULL;
5160 }
5161 goto done;
5162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005163 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005164 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005165 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005166 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005167 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005168}
5169
5170// star_expressions:
5171// | star_expression ((',' star_expression))+ ','?
5172// | star_expression ','
5173// | star_expression
5174static expr_ty
5175star_expressions_rule(Parser *p)
5176{
5177 if (p->error_indicator) {
5178 return NULL;
5179 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005180 expr_ty _res = NULL;
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 { // star_expression ((',' star_expression))+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005191 if (p->error_indicator) {
5192 return NULL;
5193 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005194 void *_opt_var;
5195 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005196 expr_ty a;
5197 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005198 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005199 (a = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005200 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005201 (b = _loop1_71_rule(p)) // ((',' star_expression))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005202 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005203 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005204 )
5205 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005206 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5207 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005208 return NULL;
5209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005210 int _end_lineno = _token->end_lineno;
5211 UNUSED(_end_lineno); // Only used by EXTRA macro
5212 int _end_col_offset = _token->end_col_offset;
5213 UNUSED(_end_col_offset); // Only used by EXTRA macro
5214 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
5215 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005216 p->error_indicator = 1;
5217 return NULL;
5218 }
5219 goto done;
5220 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005221 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005222 }
5223 { // star_expression ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005224 if (p->error_indicator) {
5225 return NULL;
5226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005227 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005228 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005229 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005230 (a = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005231 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005232 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005233 )
5234 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005235 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5236 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005237 return NULL;
5238 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005239 int _end_lineno = _token->end_lineno;
5240 UNUSED(_end_lineno); // Only used by EXTRA macro
5241 int _end_col_offset = _token->end_col_offset;
5242 UNUSED(_end_col_offset); // Only used by EXTRA macro
5243 _res = _Py_Tuple ( CHECK ( _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
5244 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005245 p->error_indicator = 1;
5246 return NULL;
5247 }
5248 goto done;
5249 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005250 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005251 }
5252 { // star_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005253 if (p->error_indicator) {
5254 return NULL;
5255 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005256 expr_ty star_expression_var;
5257 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005258 (star_expression_var = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005259 )
5260 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005261 _res = star_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005262 goto done;
5263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005264 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005266 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005267 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005268 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005269}
5270
5271// star_expression: '*' bitwise_or | expression
5272static expr_ty
5273star_expression_rule(Parser *p)
5274{
5275 if (p->error_indicator) {
5276 return NULL;
5277 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005278 expr_ty _res = NULL;
5279 if (_PyPegen_is_memoized(p, star_expression_type, &_res))
5280 return _res;
5281 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005282 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5283 p->error_indicator = 1;
5284 return NULL;
5285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005286 int _start_lineno = p->tokens[_mark]->lineno;
5287 UNUSED(_start_lineno); // Only used by EXTRA macro
5288 int _start_col_offset = p->tokens[_mark]->col_offset;
5289 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005290 { // '*' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005291 if (p->error_indicator) {
5292 return NULL;
5293 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005294 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005295 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005296 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005297 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005298 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005299 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005300 )
5301 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005302 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5303 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005304 return NULL;
5305 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005306 int _end_lineno = _token->end_lineno;
5307 UNUSED(_end_lineno); // Only used by EXTRA macro
5308 int _end_col_offset = _token->end_col_offset;
5309 UNUSED(_end_col_offset); // Only used by EXTRA macro
5310 _res = _Py_Starred ( a , Load , EXTRA );
5311 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005312 p->error_indicator = 1;
5313 return NULL;
5314 }
5315 goto done;
5316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005317 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005318 }
5319 { // expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005320 if (p->error_indicator) {
5321 return NULL;
5322 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005323 expr_ty expression_var;
5324 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005325 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005326 )
5327 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005328 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005329 goto done;
5330 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005331 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005332 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005333 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005334 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005335 _PyPegen_insert_memo(p, _mark, star_expression_type, _res);
5336 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005337}
5338
5339// star_named_expressions: ','.star_named_expression+ ','?
5340static asdl_seq*
5341star_named_expressions_rule(Parser *p)
5342{
5343 if (p->error_indicator) {
5344 return NULL;
5345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005346 asdl_seq* _res = NULL;
5347 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005348 { // ','.star_named_expression+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005349 if (p->error_indicator) {
5350 return NULL;
5351 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005352 void *_opt_var;
5353 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005354 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005355 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005356 (a = _gather_72_rule(p)) // ','.star_named_expression+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005357 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005358 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005359 )
5360 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005361 _res = a;
5362 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005363 p->error_indicator = 1;
5364 return NULL;
5365 }
5366 goto done;
5367 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005368 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005370 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005371 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005372 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005373}
5374
5375// star_named_expression: '*' bitwise_or | named_expression
5376static expr_ty
5377star_named_expression_rule(Parser *p)
5378{
5379 if (p->error_indicator) {
5380 return NULL;
5381 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005382 expr_ty _res = NULL;
5383 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005384 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5385 p->error_indicator = 1;
5386 return NULL;
5387 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005388 int _start_lineno = p->tokens[_mark]->lineno;
5389 UNUSED(_start_lineno); // Only used by EXTRA macro
5390 int _start_col_offset = p->tokens[_mark]->col_offset;
5391 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005392 { // '*' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005393 if (p->error_indicator) {
5394 return NULL;
5395 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005396 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005397 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005398 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005399 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005400 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005401 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005402 )
5403 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005404 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5405 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005406 return NULL;
5407 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005408 int _end_lineno = _token->end_lineno;
5409 UNUSED(_end_lineno); // Only used by EXTRA macro
5410 int _end_col_offset = _token->end_col_offset;
5411 UNUSED(_end_col_offset); // Only used by EXTRA macro
5412 _res = _Py_Starred ( a , Load , EXTRA );
5413 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005414 p->error_indicator = 1;
5415 return NULL;
5416 }
5417 goto done;
5418 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005419 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005420 }
5421 { // named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005422 if (p->error_indicator) {
5423 return NULL;
5424 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005425 expr_ty named_expression_var;
5426 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005427 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005428 )
5429 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005430 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005431 goto done;
5432 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005433 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005435 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005436 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005437 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005438}
5439
5440// named_expression: NAME ':=' expression | expression !':=' | invalid_named_expression
5441static expr_ty
5442named_expression_rule(Parser *p)
5443{
5444 if (p->error_indicator) {
5445 return NULL;
5446 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005447 expr_ty _res = NULL;
5448 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005449 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5450 p->error_indicator = 1;
5451 return NULL;
5452 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005453 int _start_lineno = p->tokens[_mark]->lineno;
5454 UNUSED(_start_lineno); // Only used by EXTRA macro
5455 int _start_col_offset = p->tokens[_mark]->col_offset;
5456 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005457 { // NAME ':=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005458 if (p->error_indicator) {
5459 return NULL;
5460 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005461 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005462 expr_ty a;
5463 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005464 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005465 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005466 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005467 (_literal = _PyPegen_expect_token(p, 53)) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005468 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005469 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005470 )
5471 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005472 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5473 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005474 return NULL;
5475 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005476 int _end_lineno = _token->end_lineno;
5477 UNUSED(_end_lineno); // Only used by EXTRA macro
5478 int _end_col_offset = _token->end_col_offset;
5479 UNUSED(_end_col_offset); // Only used by EXTRA macro
5480 _res = _Py_NamedExpr ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , b , EXTRA );
5481 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005482 p->error_indicator = 1;
5483 return NULL;
5484 }
5485 goto done;
5486 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005487 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005488 }
5489 { // expression !':='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005490 if (p->error_indicator) {
5491 return NULL;
5492 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005493 expr_ty expression_var;
5494 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005495 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005496 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005497 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005498 )
5499 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005500 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005501 goto done;
5502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005503 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005504 }
5505 { // invalid_named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005506 if (p->error_indicator) {
5507 return NULL;
5508 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005509 void *invalid_named_expression_var;
5510 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005511 (invalid_named_expression_var = invalid_named_expression_rule(p)) // invalid_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005512 )
5513 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005514 _res = invalid_named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005515 goto done;
5516 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005517 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005518 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005519 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005520 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005521 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005522}
5523
5524// annotated_rhs: yield_expr | star_expressions
5525static expr_ty
5526annotated_rhs_rule(Parser *p)
5527{
5528 if (p->error_indicator) {
5529 return NULL;
5530 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005531 expr_ty _res = NULL;
5532 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005533 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005534 if (p->error_indicator) {
5535 return NULL;
5536 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005537 expr_ty yield_expr_var;
5538 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005539 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005540 )
5541 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005542 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005543 goto done;
5544 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005545 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005546 }
5547 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005548 if (p->error_indicator) {
5549 return NULL;
5550 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005551 expr_ty star_expressions_var;
5552 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005553 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005554 )
5555 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005556 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005557 goto done;
5558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005559 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005561 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005562 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005563 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005564}
5565
5566// expressions: expression ((',' expression))+ ','? | expression ',' | expression
5567static expr_ty
5568expressions_rule(Parser *p)
5569{
5570 if (p->error_indicator) {
5571 return NULL;
5572 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005573 expr_ty _res = NULL;
5574 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005575 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5576 p->error_indicator = 1;
5577 return NULL;
5578 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005579 int _start_lineno = p->tokens[_mark]->lineno;
5580 UNUSED(_start_lineno); // Only used by EXTRA macro
5581 int _start_col_offset = p->tokens[_mark]->col_offset;
5582 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005583 { // expression ((',' expression))+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005584 if (p->error_indicator) {
5585 return NULL;
5586 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005587 void *_opt_var;
5588 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005589 expr_ty a;
5590 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005591 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005592 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005593 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005594 (b = _loop1_74_rule(p)) // ((',' expression))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005595 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005596 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005597 )
5598 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005599 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5600 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005601 return NULL;
5602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005603 int _end_lineno = _token->end_lineno;
5604 UNUSED(_end_lineno); // Only used by EXTRA macro
5605 int _end_col_offset = _token->end_col_offset;
5606 UNUSED(_end_col_offset); // Only used by EXTRA macro
5607 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
5608 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005609 p->error_indicator = 1;
5610 return NULL;
5611 }
5612 goto done;
5613 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005614 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005615 }
5616 { // expression ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005617 if (p->error_indicator) {
5618 return NULL;
5619 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005620 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005621 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005622 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005623 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005624 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005625 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005626 )
5627 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005628 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5629 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005630 return NULL;
5631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005632 int _end_lineno = _token->end_lineno;
5633 UNUSED(_end_lineno); // Only used by EXTRA macro
5634 int _end_col_offset = _token->end_col_offset;
5635 UNUSED(_end_col_offset); // Only used by EXTRA macro
5636 _res = _Py_Tuple ( CHECK ( _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
5637 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005638 p->error_indicator = 1;
5639 return NULL;
5640 }
5641 goto done;
5642 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005643 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005644 }
5645 { // expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005646 if (p->error_indicator) {
5647 return NULL;
5648 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005649 expr_ty expression_var;
5650 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005651 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005652 )
5653 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005654 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005655 goto done;
5656 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005657 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005658 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005659 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005660 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005661 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005662}
5663
5664// expression: disjunction 'if' disjunction 'else' expression | disjunction | lambdef
5665static expr_ty
5666expression_rule(Parser *p)
5667{
5668 if (p->error_indicator) {
5669 return NULL;
5670 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005671 expr_ty _res = NULL;
5672 if (_PyPegen_is_memoized(p, expression_type, &_res))
5673 return _res;
5674 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005675 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5676 p->error_indicator = 1;
5677 return NULL;
5678 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005679 int _start_lineno = p->tokens[_mark]->lineno;
5680 UNUSED(_start_lineno); // Only used by EXTRA macro
5681 int _start_col_offset = p->tokens[_mark]->col_offset;
5682 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005683 { // disjunction 'if' disjunction 'else' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005684 if (p->error_indicator) {
5685 return NULL;
5686 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005687 Token * _keyword;
5688 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005689 expr_ty a;
5690 expr_ty b;
5691 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005692 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005693 (a = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005694 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005695 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005696 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005697 (b = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005698 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005699 (_keyword_1 = _PyPegen_expect_token(p, 516)) // token='else'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005700 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005701 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005702 )
5703 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005704 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5705 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005706 return NULL;
5707 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005708 int _end_lineno = _token->end_lineno;
5709 UNUSED(_end_lineno); // Only used by EXTRA macro
5710 int _end_col_offset = _token->end_col_offset;
5711 UNUSED(_end_col_offset); // Only used by EXTRA macro
5712 _res = _Py_IfExp ( b , a , c , EXTRA );
5713 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005714 p->error_indicator = 1;
5715 return NULL;
5716 }
5717 goto done;
5718 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005719 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005720 }
5721 { // disjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005722 if (p->error_indicator) {
5723 return NULL;
5724 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005725 expr_ty disjunction_var;
5726 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005727 (disjunction_var = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005728 )
5729 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005730 _res = disjunction_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005731 goto done;
5732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005733 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005734 }
5735 { // lambdef
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005736 if (p->error_indicator) {
5737 return NULL;
5738 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005739 expr_ty lambdef_var;
5740 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005741 (lambdef_var = lambdef_rule(p)) // lambdef
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005742 )
5743 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005744 _res = lambdef_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005745 goto done;
5746 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005747 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005748 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005749 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005750 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005751 _PyPegen_insert_memo(p, _mark, expression_type, _res);
5752 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005753}
5754
5755// lambdef: 'lambda' lambda_parameters? ':' expression
5756static expr_ty
5757lambdef_rule(Parser *p)
5758{
5759 if (p->error_indicator) {
5760 return NULL;
5761 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005762 expr_ty _res = NULL;
5763 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005764 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5765 p->error_indicator = 1;
5766 return NULL;
5767 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005768 int _start_lineno = p->tokens[_mark]->lineno;
5769 UNUSED(_start_lineno); // Only used by EXTRA macro
5770 int _start_col_offset = p->tokens[_mark]->col_offset;
5771 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005772 { // 'lambda' lambda_parameters? ':' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005773 if (p->error_indicator) {
5774 return NULL;
5775 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005776 Token * _keyword;
5777 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005778 void *a;
5779 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005780 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005781 (_keyword = _PyPegen_expect_token(p, 524)) // token='lambda'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005782 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005783 (a = lambda_parameters_rule(p), 1) // lambda_parameters?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005784 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005785 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005786 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005787 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005788 )
5789 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005790 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5791 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005792 return NULL;
5793 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005794 int _end_lineno = _token->end_lineno;
5795 UNUSED(_end_lineno); // Only used by EXTRA macro
5796 int _end_col_offset = _token->end_col_offset;
5797 UNUSED(_end_col_offset); // Only used by EXTRA macro
5798 _res = _Py_Lambda ( ( a ) ? a : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , EXTRA );
5799 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005800 p->error_indicator = 1;
5801 return NULL;
5802 }
5803 goto done;
5804 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005805 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005807 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005808 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005809 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005810}
5811
5812// lambda_parameters:
Guido van Rossum3941d972020-05-01 09:42:03 -07005813// | lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
5814// | lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
5815// | lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
5816// | lambda_param_with_default+ lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005817// | lambda_star_etc
5818static arguments_ty
5819lambda_parameters_rule(Parser *p)
5820{
5821 if (p->error_indicator) {
5822 return NULL;
5823 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005824 arguments_ty _res = NULL;
5825 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005826 { // lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005827 if (p->error_indicator) {
5828 return NULL;
5829 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005830 asdl_seq* a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005831 asdl_seq * b;
5832 asdl_seq * c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005833 void *d;
5834 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005835 (a = lambda_slash_no_default_rule(p)) // lambda_slash_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005836 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005837 (b = _loop0_75_rule(p)) // lambda_param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005838 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005839 (c = _loop0_76_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005840 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005841 (d = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005842 )
5843 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005844 _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
5845 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005846 p->error_indicator = 1;
5847 return NULL;
5848 }
5849 goto done;
5850 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005851 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005852 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005853 { // lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005854 if (p->error_indicator) {
5855 return NULL;
5856 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005857 SlashWithDefault* a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005858 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005859 void *c;
5860 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005861 (a = lambda_slash_with_default_rule(p)) // lambda_slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005862 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005863 (b = _loop0_77_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005864 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005865 (c = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005866 )
5867 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005868 _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
5869 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005870 p->error_indicator = 1;
5871 return NULL;
5872 }
5873 goto done;
5874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005875 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005876 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005877 { // lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005878 if (p->error_indicator) {
5879 return NULL;
5880 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005881 asdl_seq * a;
5882 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005883 void *c;
5884 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005885 (a = _loop1_78_rule(p)) // lambda_param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005886 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005887 (b = _loop0_79_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005888 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005889 (c = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005890 )
5891 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005892 _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
5893 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005894 p->error_indicator = 1;
5895 return NULL;
5896 }
5897 goto done;
5898 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005899 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005900 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005901 { // lambda_param_with_default+ lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005902 if (p->error_indicator) {
5903 return NULL;
5904 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005905 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005906 void *b;
5907 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005908 (a = _loop1_80_rule(p)) // lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005909 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005910 (b = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005911 )
5912 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005913 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
5914 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005915 p->error_indicator = 1;
5916 return NULL;
5917 }
5918 goto done;
5919 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005920 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005921 }
5922 { // lambda_star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005923 if (p->error_indicator) {
5924 return NULL;
5925 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005926 StarEtc* a;
5927 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005928 (a = lambda_star_etc_rule(p)) // lambda_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005929 )
5930 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005931 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
5932 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005933 p->error_indicator = 1;
5934 return NULL;
5935 }
5936 goto done;
5937 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005938 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005939 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005940 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005941 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005942 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005943}
5944
Guido van Rossum3941d972020-05-01 09:42:03 -07005945// lambda_slash_no_default:
5946// | lambda_param_no_default+ '/' ','
5947// | lambda_param_no_default+ '/' &':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005948static asdl_seq*
Guido van Rossum3941d972020-05-01 09:42:03 -07005949lambda_slash_no_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005950{
5951 if (p->error_indicator) {
5952 return NULL;
5953 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005954 asdl_seq* _res = NULL;
5955 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005956 { // lambda_param_no_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005957 if (p->error_indicator) {
5958 return NULL;
5959 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005960 Token * _literal;
5961 Token * _literal_1;
Guido van Rossum3941d972020-05-01 09:42:03 -07005962 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005963 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005964 (a = _loop1_81_rule(p)) // lambda_param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005965 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005966 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005967 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005968 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005969 )
5970 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005971 _res = a;
5972 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005973 p->error_indicator = 1;
5974 return NULL;
5975 }
5976 goto done;
5977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005978 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005979 }
5980 { // lambda_param_no_default+ '/' &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005981 if (p->error_indicator) {
5982 return NULL;
5983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005984 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005985 asdl_seq * a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005986 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005987 (a = _loop1_82_rule(p)) // lambda_param_no_default+
Guido van Rossum3941d972020-05-01 09:42:03 -07005988 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005989 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossum3941d972020-05-01 09:42:03 -07005990 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005991 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005992 )
5993 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005994 _res = a;
5995 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005996 p->error_indicator = 1;
5997 return NULL;
5998 }
5999 goto done;
6000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006001 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006003 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006004 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006005 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006006}
6007
Guido van Rossum3941d972020-05-01 09:42:03 -07006008// lambda_slash_with_default:
6009// | lambda_param_no_default* lambda_param_with_default+ '/' ','
6010// | lambda_param_no_default* lambda_param_with_default+ '/' &':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006011static SlashWithDefault*
6012lambda_slash_with_default_rule(Parser *p)
6013{
6014 if (p->error_indicator) {
6015 return NULL;
6016 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006017 SlashWithDefault* _res = NULL;
6018 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006019 { // lambda_param_no_default* lambda_param_with_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006020 if (p->error_indicator) {
6021 return NULL;
6022 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006023 Token * _literal;
6024 Token * _literal_1;
Guido van Rossum3941d972020-05-01 09:42:03 -07006025 asdl_seq * a;
6026 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006027 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006028 (a = _loop0_83_rule(p)) // lambda_param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006029 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006030 (b = _loop1_84_rule(p)) // lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006031 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006032 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006033 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006034 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07006035 )
6036 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006037 _res = _PyPegen_slash_with_default ( p , a , b );
6038 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006039 p->error_indicator = 1;
6040 return NULL;
6041 }
6042 goto done;
6043 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006044 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006045 }
6046 { // lambda_param_no_default* lambda_param_with_default+ '/' &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006047 if (p->error_indicator) {
6048 return NULL;
6049 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006050 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07006051 asdl_seq * a;
6052 asdl_seq * b;
Guido van Rossum3941d972020-05-01 09:42:03 -07006053 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006054 (a = _loop0_85_rule(p)) // lambda_param_no_default*
Guido van Rossum3941d972020-05-01 09:42:03 -07006055 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006056 (b = _loop1_86_rule(p)) // lambda_param_with_default+
Guido van Rossum3941d972020-05-01 09:42:03 -07006057 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006058 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossum3941d972020-05-01 09:42:03 -07006059 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006060 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006061 )
6062 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006063 _res = _PyPegen_slash_with_default ( p , a , b );
6064 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006065 p->error_indicator = 1;
6066 return NULL;
6067 }
6068 goto done;
6069 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006070 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006072 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006073 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006074 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006075}
6076
6077// lambda_star_etc:
Guido van Rossum3941d972020-05-01 09:42:03 -07006078// | '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
6079// | '*' ',' lambda_param_maybe_default+ lambda_kwds?
6080// | lambda_kwds
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006081// | invalid_lambda_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006082static StarEtc*
6083lambda_star_etc_rule(Parser *p)
6084{
6085 if (p->error_indicator) {
6086 return NULL;
6087 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006088 StarEtc* _res = NULL;
6089 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006090 { // '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006091 if (p->error_indicator) {
6092 return NULL;
6093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006094 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006095 arg_ty a;
6096 asdl_seq * b;
6097 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006098 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006099 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006100 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006101 (a = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006102 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006103 (b = _loop0_87_rule(p)) // lambda_param_maybe_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006104 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006105 (c = lambda_kwds_rule(p), 1) // lambda_kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006106 )
6107 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006108 _res = _PyPegen_star_etc ( p , a , b , c );
6109 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006110 p->error_indicator = 1;
6111 return NULL;
6112 }
6113 goto done;
6114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006115 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006116 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006117 { // '*' ',' lambda_param_maybe_default+ lambda_kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006118 if (p->error_indicator) {
6119 return NULL;
6120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006121 Token * _literal;
6122 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006123 asdl_seq * b;
6124 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006125 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006126 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006127 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006128 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006129 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006130 (b = _loop1_88_rule(p)) // lambda_param_maybe_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006131 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006132 (c = lambda_kwds_rule(p), 1) // lambda_kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006133 )
6134 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006135 _res = _PyPegen_star_etc ( p , NULL , b , c );
6136 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006137 p->error_indicator = 1;
6138 return NULL;
6139 }
6140 goto done;
6141 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006142 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006143 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006144 { // lambda_kwds
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006145 if (p->error_indicator) {
6146 return NULL;
6147 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006148 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006149 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006150 (a = lambda_kwds_rule(p)) // lambda_kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006151 )
6152 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006153 _res = _PyPegen_star_etc ( p , NULL , NULL , a );
6154 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006155 p->error_indicator = 1;
6156 return NULL;
6157 }
6158 goto done;
6159 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006160 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006161 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006162 { // invalid_lambda_star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006163 if (p->error_indicator) {
6164 return NULL;
6165 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006166 void *invalid_lambda_star_etc_var;
6167 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006168 (invalid_lambda_star_etc_var = invalid_lambda_star_etc_rule(p)) // invalid_lambda_star_etc
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006169 )
6170 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006171 _res = invalid_lambda_star_etc_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006172 goto done;
6173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006174 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006175 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006176 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006177 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006178 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006179}
6180
Guido van Rossum3941d972020-05-01 09:42:03 -07006181// lambda_kwds: '**' lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006182static arg_ty
Guido van Rossum3941d972020-05-01 09:42:03 -07006183lambda_kwds_rule(Parser *p)
6184{
6185 if (p->error_indicator) {
6186 return NULL;
6187 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006188 arg_ty _res = NULL;
6189 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006190 { // '**' lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006191 if (p->error_indicator) {
6192 return NULL;
6193 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006194 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07006195 arg_ty a;
Guido van Rossum3941d972020-05-01 09:42:03 -07006196 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006197 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossum3941d972020-05-01 09:42:03 -07006198 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006199 (a = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -07006200 )
6201 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006202 _res = a;
6203 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006204 p->error_indicator = 1;
6205 return NULL;
6206 }
6207 goto done;
6208 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006209 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006210 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006211 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07006212 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006213 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07006214}
6215
6216// lambda_param_no_default: lambda_param ',' | lambda_param &':'
6217static arg_ty
6218lambda_param_no_default_rule(Parser *p)
6219{
6220 if (p->error_indicator) {
6221 return NULL;
6222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006223 arg_ty _res = NULL;
6224 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006225 { // lambda_param ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006226 if (p->error_indicator) {
6227 return NULL;
6228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006229 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07006230 arg_ty a;
Guido van Rossum3941d972020-05-01 09:42:03 -07006231 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006232 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006233 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006234 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07006235 )
6236 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006237 _res = a;
6238 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006239 p->error_indicator = 1;
6240 return NULL;
6241 }
6242 goto done;
6243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006244 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006245 }
6246 { // lambda_param &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006247 if (p->error_indicator) {
6248 return NULL;
6249 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006250 arg_ty a;
6251 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006252 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006253 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006254 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07006255 )
6256 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006257 _res = a;
6258 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006259 p->error_indicator = 1;
6260 return NULL;
6261 }
6262 goto done;
6263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006264 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006266 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07006267 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006268 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07006269}
6270
6271// lambda_param_with_default: lambda_param default ',' | lambda_param default &':'
6272static NameDefaultPair*
6273lambda_param_with_default_rule(Parser *p)
6274{
6275 if (p->error_indicator) {
6276 return NULL;
6277 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006278 NameDefaultPair* _res = NULL;
6279 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006280 { // lambda_param default ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006281 if (p->error_indicator) {
6282 return NULL;
6283 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006284 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07006285 arg_ty a;
6286 expr_ty c;
Guido van Rossum3941d972020-05-01 09:42:03 -07006287 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006288 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006289 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006290 (c = default_rule(p)) // default
Guido van Rossum3941d972020-05-01 09:42:03 -07006291 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006292 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07006293 )
6294 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006295 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
6296 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006297 p->error_indicator = 1;
6298 return NULL;
6299 }
6300 goto done;
6301 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006302 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006303 }
6304 { // lambda_param default &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006305 if (p->error_indicator) {
6306 return NULL;
6307 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006308 arg_ty a;
6309 expr_ty c;
6310 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006311 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006312 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006313 (c = default_rule(p)) // default
Guido van Rossum3941d972020-05-01 09:42:03 -07006314 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006315 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07006316 )
6317 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006318 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
6319 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006320 p->error_indicator = 1;
6321 return NULL;
6322 }
6323 goto done;
6324 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006325 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006326 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006327 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07006328 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006329 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07006330}
6331
6332// lambda_param_maybe_default: lambda_param default? ',' | lambda_param default? &':'
6333static NameDefaultPair*
6334lambda_param_maybe_default_rule(Parser *p)
6335{
6336 if (p->error_indicator) {
6337 return NULL;
6338 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006339 NameDefaultPair* _res = NULL;
6340 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006341 { // lambda_param default? ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006342 if (p->error_indicator) {
6343 return NULL;
6344 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006345 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07006346 arg_ty a;
6347 void *c;
Guido van Rossum3941d972020-05-01 09:42:03 -07006348 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006349 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006350 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006351 (c = default_rule(p), 1) // default?
Guido van Rossum3941d972020-05-01 09:42:03 -07006352 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006353 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07006354 )
6355 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006356 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
6357 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006358 p->error_indicator = 1;
6359 return NULL;
6360 }
6361 goto done;
6362 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006363 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006364 }
6365 { // lambda_param default? &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006366 if (p->error_indicator) {
6367 return NULL;
6368 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006369 arg_ty a;
6370 void *c;
6371 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006372 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006373 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006374 (c = default_rule(p), 1) // default?
Guido van Rossum3941d972020-05-01 09:42:03 -07006375 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006376 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07006377 )
6378 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006379 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
6380 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006381 p->error_indicator = 1;
6382 return NULL;
6383 }
6384 goto done;
6385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006386 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006387 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006388 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07006389 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006390 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07006391}
6392
6393// lambda_param: NAME
6394static arg_ty
6395lambda_param_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006396{
6397 if (p->error_indicator) {
6398 return NULL;
6399 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006400 arg_ty _res = NULL;
6401 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006402 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6403 p->error_indicator = 1;
6404 return NULL;
6405 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006406 int _start_lineno = p->tokens[_mark]->lineno;
6407 UNUSED(_start_lineno); // Only used by EXTRA macro
6408 int _start_col_offset = p->tokens[_mark]->col_offset;
6409 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006410 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006411 if (p->error_indicator) {
6412 return NULL;
6413 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006414 expr_ty a;
6415 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006416 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006417 )
6418 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006419 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6420 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006421 return NULL;
6422 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006423 int _end_lineno = _token->end_lineno;
6424 UNUSED(_end_lineno); // Only used by EXTRA macro
6425 int _end_col_offset = _token->end_col_offset;
6426 UNUSED(_end_col_offset); // Only used by EXTRA macro
6427 _res = _Py_arg ( a -> v . Name . id , NULL , NULL , EXTRA );
6428 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006429 p->error_indicator = 1;
6430 return NULL;
6431 }
6432 goto done;
6433 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006434 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006435 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006436 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006437 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006438 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006439}
6440
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006441// disjunction: conjunction (('or' conjunction))+ | conjunction
6442static expr_ty
6443disjunction_rule(Parser *p)
6444{
6445 if (p->error_indicator) {
6446 return NULL;
6447 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006448 expr_ty _res = NULL;
6449 if (_PyPegen_is_memoized(p, disjunction_type, &_res))
6450 return _res;
6451 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006452 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6453 p->error_indicator = 1;
6454 return NULL;
6455 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006456 int _start_lineno = p->tokens[_mark]->lineno;
6457 UNUSED(_start_lineno); // Only used by EXTRA macro
6458 int _start_col_offset = p->tokens[_mark]->col_offset;
6459 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006460 { // conjunction (('or' conjunction))+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006461 if (p->error_indicator) {
6462 return NULL;
6463 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006464 expr_ty a;
6465 asdl_seq * b;
6466 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006467 (a = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006468 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006469 (b = _loop1_89_rule(p)) // (('or' conjunction))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006470 )
6471 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006472 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6473 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006474 return NULL;
6475 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006476 int _end_lineno = _token->end_lineno;
6477 UNUSED(_end_lineno); // Only used by EXTRA macro
6478 int _end_col_offset = _token->end_col_offset;
6479 UNUSED(_end_col_offset); // Only used by EXTRA macro
6480 _res = _Py_BoolOp ( Or , CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
6481 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006482 p->error_indicator = 1;
6483 return NULL;
6484 }
6485 goto done;
6486 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006487 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006488 }
6489 { // conjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006490 if (p->error_indicator) {
6491 return NULL;
6492 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006493 expr_ty conjunction_var;
6494 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006495 (conjunction_var = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006496 )
6497 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006498 _res = conjunction_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006499 goto done;
6500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006501 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006503 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006504 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006505 _PyPegen_insert_memo(p, _mark, disjunction_type, _res);
6506 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006507}
6508
6509// conjunction: inversion (('and' inversion))+ | inversion
6510static expr_ty
6511conjunction_rule(Parser *p)
6512{
6513 if (p->error_indicator) {
6514 return NULL;
6515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006516 expr_ty _res = NULL;
6517 if (_PyPegen_is_memoized(p, conjunction_type, &_res))
6518 return _res;
6519 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006520 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6521 p->error_indicator = 1;
6522 return NULL;
6523 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006524 int _start_lineno = p->tokens[_mark]->lineno;
6525 UNUSED(_start_lineno); // Only used by EXTRA macro
6526 int _start_col_offset = p->tokens[_mark]->col_offset;
6527 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006528 { // inversion (('and' inversion))+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006529 if (p->error_indicator) {
6530 return NULL;
6531 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006532 expr_ty a;
6533 asdl_seq * b;
6534 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006535 (a = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006536 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006537 (b = _loop1_90_rule(p)) // (('and' inversion))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006538 )
6539 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006540 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6541 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006542 return NULL;
6543 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006544 int _end_lineno = _token->end_lineno;
6545 UNUSED(_end_lineno); // Only used by EXTRA macro
6546 int _end_col_offset = _token->end_col_offset;
6547 UNUSED(_end_col_offset); // Only used by EXTRA macro
6548 _res = _Py_BoolOp ( And , CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
6549 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006550 p->error_indicator = 1;
6551 return NULL;
6552 }
6553 goto done;
6554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006555 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006556 }
6557 { // inversion
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006558 if (p->error_indicator) {
6559 return NULL;
6560 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006561 expr_ty inversion_var;
6562 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006563 (inversion_var = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006564 )
6565 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006566 _res = inversion_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006567 goto done;
6568 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006569 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006571 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006572 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006573 _PyPegen_insert_memo(p, _mark, conjunction_type, _res);
6574 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006575}
6576
6577// inversion: 'not' inversion | comparison
6578static expr_ty
6579inversion_rule(Parser *p)
6580{
6581 if (p->error_indicator) {
6582 return NULL;
6583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006584 expr_ty _res = NULL;
6585 if (_PyPegen_is_memoized(p, inversion_type, &_res))
6586 return _res;
6587 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006588 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6589 p->error_indicator = 1;
6590 return NULL;
6591 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006592 int _start_lineno = p->tokens[_mark]->lineno;
6593 UNUSED(_start_lineno); // Only used by EXTRA macro
6594 int _start_col_offset = p->tokens[_mark]->col_offset;
6595 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006596 { // 'not' inversion
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006597 if (p->error_indicator) {
6598 return NULL;
6599 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006600 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006601 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006602 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006603 (_keyword = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006604 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006605 (a = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006606 )
6607 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006608 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6609 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006610 return NULL;
6611 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006612 int _end_lineno = _token->end_lineno;
6613 UNUSED(_end_lineno); // Only used by EXTRA macro
6614 int _end_col_offset = _token->end_col_offset;
6615 UNUSED(_end_col_offset); // Only used by EXTRA macro
6616 _res = _Py_UnaryOp ( Not , a , EXTRA );
6617 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006618 p->error_indicator = 1;
6619 return NULL;
6620 }
6621 goto done;
6622 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006623 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006624 }
6625 { // comparison
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006626 if (p->error_indicator) {
6627 return NULL;
6628 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006629 expr_ty comparison_var;
6630 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006631 (comparison_var = comparison_rule(p)) // comparison
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006632 )
6633 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006634 _res = comparison_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006635 goto done;
6636 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006637 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006638 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006639 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006640 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006641 _PyPegen_insert_memo(p, _mark, inversion_type, _res);
6642 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006643}
6644
6645// comparison: bitwise_or compare_op_bitwise_or_pair+ | bitwise_or
6646static expr_ty
6647comparison_rule(Parser *p)
6648{
6649 if (p->error_indicator) {
6650 return NULL;
6651 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006652 expr_ty _res = NULL;
6653 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006654 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6655 p->error_indicator = 1;
6656 return NULL;
6657 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006658 int _start_lineno = p->tokens[_mark]->lineno;
6659 UNUSED(_start_lineno); // Only used by EXTRA macro
6660 int _start_col_offset = p->tokens[_mark]->col_offset;
6661 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006662 { // bitwise_or compare_op_bitwise_or_pair+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006663 if (p->error_indicator) {
6664 return NULL;
6665 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006666 expr_ty a;
6667 asdl_seq * b;
6668 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006669 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006670 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006671 (b = _loop1_91_rule(p)) // compare_op_bitwise_or_pair+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006672 )
6673 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006674 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6675 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006676 return NULL;
6677 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006678 int _end_lineno = _token->end_lineno;
6679 UNUSED(_end_lineno); // Only used by EXTRA macro
6680 int _end_col_offset = _token->end_col_offset;
6681 UNUSED(_end_col_offset); // Only used by EXTRA macro
6682 _res = _Py_Compare ( a , CHECK ( _PyPegen_get_cmpops ( p , b ) ) , CHECK ( _PyPegen_get_exprs ( p , b ) ) , EXTRA );
6683 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006684 p->error_indicator = 1;
6685 return NULL;
6686 }
6687 goto done;
6688 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006689 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006690 }
6691 { // bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006692 if (p->error_indicator) {
6693 return NULL;
6694 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006695 expr_ty bitwise_or_var;
6696 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006697 (bitwise_or_var = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006698 )
6699 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006700 _res = bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006701 goto done;
6702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006703 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006704 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006705 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006706 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006707 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006708}
6709
6710// compare_op_bitwise_or_pair:
6711// | eq_bitwise_or
6712// | noteq_bitwise_or
6713// | lte_bitwise_or
6714// | lt_bitwise_or
6715// | gte_bitwise_or
6716// | gt_bitwise_or
6717// | notin_bitwise_or
6718// | in_bitwise_or
6719// | isnot_bitwise_or
6720// | is_bitwise_or
6721static CmpopExprPair*
6722compare_op_bitwise_or_pair_rule(Parser *p)
6723{
6724 if (p->error_indicator) {
6725 return NULL;
6726 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006727 CmpopExprPair* _res = NULL;
6728 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006729 { // eq_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006730 if (p->error_indicator) {
6731 return NULL;
6732 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006733 CmpopExprPair* eq_bitwise_or_var;
6734 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006735 (eq_bitwise_or_var = eq_bitwise_or_rule(p)) // eq_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006736 )
6737 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006738 _res = eq_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006739 goto done;
6740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006741 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006742 }
6743 { // noteq_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006744 if (p->error_indicator) {
6745 return NULL;
6746 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006747 CmpopExprPair* noteq_bitwise_or_var;
6748 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006749 (noteq_bitwise_or_var = noteq_bitwise_or_rule(p)) // noteq_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006750 )
6751 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006752 _res = noteq_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006753 goto done;
6754 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006755 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006756 }
6757 { // lte_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006758 if (p->error_indicator) {
6759 return NULL;
6760 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006761 CmpopExprPair* lte_bitwise_or_var;
6762 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006763 (lte_bitwise_or_var = lte_bitwise_or_rule(p)) // lte_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006764 )
6765 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006766 _res = lte_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006767 goto done;
6768 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006769 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006770 }
6771 { // lt_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006772 if (p->error_indicator) {
6773 return NULL;
6774 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006775 CmpopExprPair* lt_bitwise_or_var;
6776 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006777 (lt_bitwise_or_var = lt_bitwise_or_rule(p)) // lt_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006778 )
6779 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006780 _res = lt_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006781 goto done;
6782 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006783 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006784 }
6785 { // gte_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006786 if (p->error_indicator) {
6787 return NULL;
6788 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006789 CmpopExprPair* gte_bitwise_or_var;
6790 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006791 (gte_bitwise_or_var = gte_bitwise_or_rule(p)) // gte_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006792 )
6793 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006794 _res = gte_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006795 goto done;
6796 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006797 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006798 }
6799 { // gt_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006800 if (p->error_indicator) {
6801 return NULL;
6802 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006803 CmpopExprPair* gt_bitwise_or_var;
6804 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006805 (gt_bitwise_or_var = gt_bitwise_or_rule(p)) // gt_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006806 )
6807 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006808 _res = gt_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006809 goto done;
6810 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006811 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006812 }
6813 { // notin_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006814 if (p->error_indicator) {
6815 return NULL;
6816 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006817 CmpopExprPair* notin_bitwise_or_var;
6818 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006819 (notin_bitwise_or_var = notin_bitwise_or_rule(p)) // notin_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006820 )
6821 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006822 _res = notin_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006823 goto done;
6824 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006825 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006826 }
6827 { // in_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006828 if (p->error_indicator) {
6829 return NULL;
6830 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006831 CmpopExprPair* in_bitwise_or_var;
6832 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006833 (in_bitwise_or_var = in_bitwise_or_rule(p)) // in_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006834 )
6835 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006836 _res = in_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006837 goto done;
6838 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006839 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006840 }
6841 { // isnot_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006842 if (p->error_indicator) {
6843 return NULL;
6844 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006845 CmpopExprPair* isnot_bitwise_or_var;
6846 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006847 (isnot_bitwise_or_var = isnot_bitwise_or_rule(p)) // isnot_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006848 )
6849 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006850 _res = isnot_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006851 goto done;
6852 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006853 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006854 }
6855 { // is_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006856 if (p->error_indicator) {
6857 return NULL;
6858 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006859 CmpopExprPair* is_bitwise_or_var;
6860 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006861 (is_bitwise_or_var = is_bitwise_or_rule(p)) // is_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006862 )
6863 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006864 _res = is_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006865 goto done;
6866 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006867 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006868 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006869 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006870 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006871 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006872}
6873
6874// eq_bitwise_or: '==' bitwise_or
6875static CmpopExprPair*
6876eq_bitwise_or_rule(Parser *p)
6877{
6878 if (p->error_indicator) {
6879 return NULL;
6880 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006881 CmpopExprPair* _res = NULL;
6882 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006883 { // '==' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006884 if (p->error_indicator) {
6885 return NULL;
6886 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006887 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006888 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006889 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006890 (_literal = _PyPegen_expect_token(p, 27)) // token='=='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006891 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006892 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006893 )
6894 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006895 _res = _PyPegen_cmpop_expr_pair ( p , Eq , a );
6896 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006897 p->error_indicator = 1;
6898 return NULL;
6899 }
6900 goto done;
6901 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006902 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006903 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006904 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006905 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006906 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006907}
6908
Pablo Galindo2b74c832020-04-27 18:02:07 +01006909// noteq_bitwise_or: ('!=') bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006910static CmpopExprPair*
6911noteq_bitwise_or_rule(Parser *p)
6912{
6913 if (p->error_indicator) {
6914 return NULL;
6915 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006916 CmpopExprPair* _res = NULL;
6917 int _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +01006918 { // ('!=') bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006919 if (p->error_indicator) {
6920 return NULL;
6921 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006922 void *_tmp_92_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006923 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006924 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006925 (_tmp_92_var = _tmp_92_rule(p)) // '!='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006926 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006927 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006928 )
6929 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006930 _res = _PyPegen_cmpop_expr_pair ( p , NotEq , a );
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 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006939 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006940 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006941 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006942}
6943
6944// lte_bitwise_or: '<=' bitwise_or
6945static CmpopExprPair*
6946lte_bitwise_or_rule(Parser *p)
6947{
6948 if (p->error_indicator) {
6949 return NULL;
6950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006951 CmpopExprPair* _res = NULL;
6952 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006953 { // '<=' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006954 if (p->error_indicator) {
6955 return NULL;
6956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006957 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006958 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006959 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006960 (_literal = _PyPegen_expect_token(p, 29)) // token='<='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006961 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006962 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006963 )
6964 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006965 _res = _PyPegen_cmpop_expr_pair ( p , LtE , a );
6966 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006967 p->error_indicator = 1;
6968 return NULL;
6969 }
6970 goto done;
6971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006972 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006973 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006974 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006975 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006976 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006977}
6978
6979// lt_bitwise_or: '<' bitwise_or
6980static CmpopExprPair*
6981lt_bitwise_or_rule(Parser *p)
6982{
6983 if (p->error_indicator) {
6984 return NULL;
6985 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006986 CmpopExprPair* _res = NULL;
6987 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006988 { // '<' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006989 if (p->error_indicator) {
6990 return NULL;
6991 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006992 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006993 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006994 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006995 (_literal = _PyPegen_expect_token(p, 20)) // token='<'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006996 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006997 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006998 )
6999 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007000 _res = _PyPegen_cmpop_expr_pair ( p , Lt , a );
7001 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007002 p->error_indicator = 1;
7003 return NULL;
7004 }
7005 goto done;
7006 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007007 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007008 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007009 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007010 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007011 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007012}
7013
7014// gte_bitwise_or: '>=' bitwise_or
7015static CmpopExprPair*
7016gte_bitwise_or_rule(Parser *p)
7017{
7018 if (p->error_indicator) {
7019 return NULL;
7020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007021 CmpopExprPair* _res = NULL;
7022 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007023 { // '>=' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007024 if (p->error_indicator) {
7025 return NULL;
7026 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007027 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007028 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007029 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007030 (_literal = _PyPegen_expect_token(p, 30)) // token='>='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007031 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007032 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007033 )
7034 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007035 _res = _PyPegen_cmpop_expr_pair ( p , GtE , a );
7036 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007037 p->error_indicator = 1;
7038 return NULL;
7039 }
7040 goto done;
7041 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007042 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007043 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007044 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007045 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007046 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007047}
7048
7049// gt_bitwise_or: '>' bitwise_or
7050static CmpopExprPair*
7051gt_bitwise_or_rule(Parser *p)
7052{
7053 if (p->error_indicator) {
7054 return NULL;
7055 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007056 CmpopExprPair* _res = NULL;
7057 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007058 { // '>' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007059 if (p->error_indicator) {
7060 return NULL;
7061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007062 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007063 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007064 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007065 (_literal = _PyPegen_expect_token(p, 21)) // token='>'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007066 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007067 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007068 )
7069 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007070 _res = _PyPegen_cmpop_expr_pair ( p , Gt , a );
7071 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007072 p->error_indicator = 1;
7073 return NULL;
7074 }
7075 goto done;
7076 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007077 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007079 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007080 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007081 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007082}
7083
7084// notin_bitwise_or: 'not' 'in' bitwise_or
7085static CmpopExprPair*
7086notin_bitwise_or_rule(Parser *p)
7087{
7088 if (p->error_indicator) {
7089 return NULL;
7090 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007091 CmpopExprPair* _res = NULL;
7092 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007093 { // 'not' 'in' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007094 if (p->error_indicator) {
7095 return NULL;
7096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007097 Token * _keyword;
7098 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007099 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007100 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007101 (_keyword = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007102 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007103 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007104 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007105 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007106 )
7107 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007108 _res = _PyPegen_cmpop_expr_pair ( p , NotIn , a );
7109 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007110 p->error_indicator = 1;
7111 return NULL;
7112 }
7113 goto done;
7114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007115 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007116 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007117 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007118 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007119 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007120}
7121
7122// in_bitwise_or: 'in' bitwise_or
7123static CmpopExprPair*
7124in_bitwise_or_rule(Parser *p)
7125{
7126 if (p->error_indicator) {
7127 return NULL;
7128 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007129 CmpopExprPair* _res = NULL;
7130 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007131 { // 'in' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007132 if (p->error_indicator) {
7133 return NULL;
7134 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007135 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007136 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007137 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007138 (_keyword = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007139 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007140 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007141 )
7142 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007143 _res = _PyPegen_cmpop_expr_pair ( p , In , a );
7144 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007145 p->error_indicator = 1;
7146 return NULL;
7147 }
7148 goto done;
7149 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007150 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007152 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007153 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007154 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007155}
7156
7157// isnot_bitwise_or: 'is' 'not' bitwise_or
7158static CmpopExprPair*
7159isnot_bitwise_or_rule(Parser *p)
7160{
7161 if (p->error_indicator) {
7162 return NULL;
7163 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007164 CmpopExprPair* _res = NULL;
7165 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007166 { // 'is' 'not' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007167 if (p->error_indicator) {
7168 return NULL;
7169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007170 Token * _keyword;
7171 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007172 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007173 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007174 (_keyword = _PyPegen_expect_token(p, 526)) // token='is'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007175 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007176 (_keyword_1 = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007177 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007178 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007179 )
7180 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007181 _res = _PyPegen_cmpop_expr_pair ( p , IsNot , a );
7182 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007183 p->error_indicator = 1;
7184 return NULL;
7185 }
7186 goto done;
7187 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007188 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007189 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007190 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007191 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007192 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007193}
7194
7195// is_bitwise_or: 'is' bitwise_or
7196static CmpopExprPair*
7197is_bitwise_or_rule(Parser *p)
7198{
7199 if (p->error_indicator) {
7200 return NULL;
7201 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007202 CmpopExprPair* _res = NULL;
7203 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007204 { // 'is' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007205 if (p->error_indicator) {
7206 return NULL;
7207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007208 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007209 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007210 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007211 (_keyword = _PyPegen_expect_token(p, 526)) // token='is'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007212 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007213 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007214 )
7215 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007216 _res = _PyPegen_cmpop_expr_pair ( p , Is , a );
7217 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007218 p->error_indicator = 1;
7219 return NULL;
7220 }
7221 goto done;
7222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007223 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007224 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007225 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007226 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007227 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007228}
7229
7230// Left-recursive
7231// bitwise_or: bitwise_or '|' bitwise_xor | bitwise_xor
7232static expr_ty bitwise_or_raw(Parser *);
7233static expr_ty
7234bitwise_or_rule(Parser *p)
7235{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007236 expr_ty _res = NULL;
7237 if (_PyPegen_is_memoized(p, bitwise_or_type, &_res))
7238 return _res;
7239 int _mark = p->mark;
7240 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007241 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007242 int tmpvar_1 = _PyPegen_update_memo(p, _mark, bitwise_or_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007243 if (tmpvar_1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007244 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007245 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007246 p->mark = _mark;
7247 void *_raw = bitwise_or_raw(p);
7248 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007249 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007250 _resmark = p->mark;
7251 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007253 p->mark = _resmark;
7254 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007255}
7256static expr_ty
7257bitwise_or_raw(Parser *p)
7258{
7259 if (p->error_indicator) {
7260 return NULL;
7261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007262 expr_ty _res = NULL;
7263 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007264 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7265 p->error_indicator = 1;
7266 return NULL;
7267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007268 int _start_lineno = p->tokens[_mark]->lineno;
7269 UNUSED(_start_lineno); // Only used by EXTRA macro
7270 int _start_col_offset = p->tokens[_mark]->col_offset;
7271 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007272 { // bitwise_or '|' bitwise_xor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007273 if (p->error_indicator) {
7274 return NULL;
7275 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007276 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007277 expr_ty a;
7278 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007279 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007280 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007281 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007282 (_literal = _PyPegen_expect_token(p, 18)) // token='|'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007283 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007284 (b = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007285 )
7286 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007287 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7288 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007289 return NULL;
7290 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007291 int _end_lineno = _token->end_lineno;
7292 UNUSED(_end_lineno); // Only used by EXTRA macro
7293 int _end_col_offset = _token->end_col_offset;
7294 UNUSED(_end_col_offset); // Only used by EXTRA macro
7295 _res = _Py_BinOp ( a , BitOr , b , EXTRA );
7296 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007297 p->error_indicator = 1;
7298 return NULL;
7299 }
7300 goto done;
7301 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007302 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007303 }
7304 { // bitwise_xor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007305 if (p->error_indicator) {
7306 return NULL;
7307 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007308 expr_ty bitwise_xor_var;
7309 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007310 (bitwise_xor_var = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007311 )
7312 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007313 _res = bitwise_xor_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007314 goto done;
7315 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007316 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007318 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007319 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007320 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007321}
7322
7323// Left-recursive
7324// bitwise_xor: bitwise_xor '^' bitwise_and | bitwise_and
7325static expr_ty bitwise_xor_raw(Parser *);
7326static expr_ty
7327bitwise_xor_rule(Parser *p)
7328{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007329 expr_ty _res = NULL;
7330 if (_PyPegen_is_memoized(p, bitwise_xor_type, &_res))
7331 return _res;
7332 int _mark = p->mark;
7333 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007334 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007335 int tmpvar_2 = _PyPegen_update_memo(p, _mark, bitwise_xor_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007336 if (tmpvar_2) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007337 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007338 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007339 p->mark = _mark;
7340 void *_raw = bitwise_xor_raw(p);
7341 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007342 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007343 _resmark = p->mark;
7344 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007346 p->mark = _resmark;
7347 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007348}
7349static expr_ty
7350bitwise_xor_raw(Parser *p)
7351{
7352 if (p->error_indicator) {
7353 return NULL;
7354 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007355 expr_ty _res = NULL;
7356 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007357 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7358 p->error_indicator = 1;
7359 return NULL;
7360 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007361 int _start_lineno = p->tokens[_mark]->lineno;
7362 UNUSED(_start_lineno); // Only used by EXTRA macro
7363 int _start_col_offset = p->tokens[_mark]->col_offset;
7364 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007365 { // bitwise_xor '^' bitwise_and
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007366 if (p->error_indicator) {
7367 return NULL;
7368 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007369 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007370 expr_ty a;
7371 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007372 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007373 (a = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007374 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007375 (_literal = _PyPegen_expect_token(p, 32)) // token='^'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007376 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007377 (b = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007378 )
7379 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007380 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7381 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007382 return NULL;
7383 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007384 int _end_lineno = _token->end_lineno;
7385 UNUSED(_end_lineno); // Only used by EXTRA macro
7386 int _end_col_offset = _token->end_col_offset;
7387 UNUSED(_end_col_offset); // Only used by EXTRA macro
7388 _res = _Py_BinOp ( a , BitXor , b , EXTRA );
7389 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007390 p->error_indicator = 1;
7391 return NULL;
7392 }
7393 goto done;
7394 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007395 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007396 }
7397 { // bitwise_and
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007398 if (p->error_indicator) {
7399 return NULL;
7400 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007401 expr_ty bitwise_and_var;
7402 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007403 (bitwise_and_var = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007404 )
7405 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007406 _res = bitwise_and_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007407 goto done;
7408 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007409 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007410 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007411 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007412 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007413 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007414}
7415
7416// Left-recursive
7417// bitwise_and: bitwise_and '&' shift_expr | shift_expr
7418static expr_ty bitwise_and_raw(Parser *);
7419static expr_ty
7420bitwise_and_rule(Parser *p)
7421{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007422 expr_ty _res = NULL;
7423 if (_PyPegen_is_memoized(p, bitwise_and_type, &_res))
7424 return _res;
7425 int _mark = p->mark;
7426 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007427 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007428 int tmpvar_3 = _PyPegen_update_memo(p, _mark, bitwise_and_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007429 if (tmpvar_3) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007430 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007431 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007432 p->mark = _mark;
7433 void *_raw = bitwise_and_raw(p);
7434 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007435 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007436 _resmark = p->mark;
7437 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007438 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007439 p->mark = _resmark;
7440 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007441}
7442static expr_ty
7443bitwise_and_raw(Parser *p)
7444{
7445 if (p->error_indicator) {
7446 return NULL;
7447 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007448 expr_ty _res = NULL;
7449 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007450 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7451 p->error_indicator = 1;
7452 return NULL;
7453 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007454 int _start_lineno = p->tokens[_mark]->lineno;
7455 UNUSED(_start_lineno); // Only used by EXTRA macro
7456 int _start_col_offset = p->tokens[_mark]->col_offset;
7457 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007458 { // bitwise_and '&' shift_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007459 if (p->error_indicator) {
7460 return NULL;
7461 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007462 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007463 expr_ty a;
7464 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007465 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007466 (a = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007467 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007468 (_literal = _PyPegen_expect_token(p, 19)) // token='&'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007469 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007470 (b = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007471 )
7472 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007473 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7474 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007475 return NULL;
7476 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007477 int _end_lineno = _token->end_lineno;
7478 UNUSED(_end_lineno); // Only used by EXTRA macro
7479 int _end_col_offset = _token->end_col_offset;
7480 UNUSED(_end_col_offset); // Only used by EXTRA macro
7481 _res = _Py_BinOp ( a , BitAnd , b , EXTRA );
7482 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007483 p->error_indicator = 1;
7484 return NULL;
7485 }
7486 goto done;
7487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007488 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007489 }
7490 { // shift_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007491 if (p->error_indicator) {
7492 return NULL;
7493 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007494 expr_ty shift_expr_var;
7495 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007496 (shift_expr_var = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007497 )
7498 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007499 _res = shift_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007500 goto done;
7501 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007502 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007504 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007505 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007506 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007507}
7508
7509// Left-recursive
7510// shift_expr: shift_expr '<<' sum | shift_expr '>>' sum | sum
7511static expr_ty shift_expr_raw(Parser *);
7512static expr_ty
7513shift_expr_rule(Parser *p)
7514{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007515 expr_ty _res = NULL;
7516 if (_PyPegen_is_memoized(p, shift_expr_type, &_res))
7517 return _res;
7518 int _mark = p->mark;
7519 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007520 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007521 int tmpvar_4 = _PyPegen_update_memo(p, _mark, shift_expr_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007522 if (tmpvar_4) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007523 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007524 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007525 p->mark = _mark;
7526 void *_raw = shift_expr_raw(p);
7527 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007528 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007529 _resmark = p->mark;
7530 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007532 p->mark = _resmark;
7533 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007534}
7535static expr_ty
7536shift_expr_raw(Parser *p)
7537{
7538 if (p->error_indicator) {
7539 return NULL;
7540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007541 expr_ty _res = NULL;
7542 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007543 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7544 p->error_indicator = 1;
7545 return NULL;
7546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007547 int _start_lineno = p->tokens[_mark]->lineno;
7548 UNUSED(_start_lineno); // Only used by EXTRA macro
7549 int _start_col_offset = p->tokens[_mark]->col_offset;
7550 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007551 { // shift_expr '<<' sum
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007552 if (p->error_indicator) {
7553 return NULL;
7554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007555 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007556 expr_ty a;
7557 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007558 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007559 (a = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007560 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007561 (_literal = _PyPegen_expect_token(p, 33)) // token='<<'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007562 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007563 (b = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007564 )
7565 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007566 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7567 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007568 return NULL;
7569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007570 int _end_lineno = _token->end_lineno;
7571 UNUSED(_end_lineno); // Only used by EXTRA macro
7572 int _end_col_offset = _token->end_col_offset;
7573 UNUSED(_end_col_offset); // Only used by EXTRA macro
7574 _res = _Py_BinOp ( a , LShift , b , EXTRA );
7575 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007576 p->error_indicator = 1;
7577 return NULL;
7578 }
7579 goto done;
7580 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007581 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007582 }
7583 { // shift_expr '>>' sum
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007584 if (p->error_indicator) {
7585 return NULL;
7586 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007587 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007588 expr_ty a;
7589 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007590 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007591 (a = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007592 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007593 (_literal = _PyPegen_expect_token(p, 34)) // token='>>'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007594 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007595 (b = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007596 )
7597 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007598 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7599 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007600 return NULL;
7601 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007602 int _end_lineno = _token->end_lineno;
7603 UNUSED(_end_lineno); // Only used by EXTRA macro
7604 int _end_col_offset = _token->end_col_offset;
7605 UNUSED(_end_col_offset); // Only used by EXTRA macro
7606 _res = _Py_BinOp ( a , RShift , b , EXTRA );
7607 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007608 p->error_indicator = 1;
7609 return NULL;
7610 }
7611 goto done;
7612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007613 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007614 }
7615 { // sum
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007616 if (p->error_indicator) {
7617 return NULL;
7618 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007619 expr_ty sum_var;
7620 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007621 (sum_var = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007622 )
7623 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007624 _res = sum_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007625 goto done;
7626 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007627 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007628 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007629 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007630 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007631 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007632}
7633
7634// Left-recursive
7635// sum: sum '+' term | sum '-' term | term
7636static expr_ty sum_raw(Parser *);
7637static expr_ty
7638sum_rule(Parser *p)
7639{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007640 expr_ty _res = NULL;
7641 if (_PyPegen_is_memoized(p, sum_type, &_res))
7642 return _res;
7643 int _mark = p->mark;
7644 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007645 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007646 int tmpvar_5 = _PyPegen_update_memo(p, _mark, sum_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007647 if (tmpvar_5) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007648 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007650 p->mark = _mark;
7651 void *_raw = sum_raw(p);
7652 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007653 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007654 _resmark = p->mark;
7655 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007656 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007657 p->mark = _resmark;
7658 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007659}
7660static expr_ty
7661sum_raw(Parser *p)
7662{
7663 if (p->error_indicator) {
7664 return NULL;
7665 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007666 expr_ty _res = NULL;
7667 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007668 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7669 p->error_indicator = 1;
7670 return NULL;
7671 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007672 int _start_lineno = p->tokens[_mark]->lineno;
7673 UNUSED(_start_lineno); // Only used by EXTRA macro
7674 int _start_col_offset = p->tokens[_mark]->col_offset;
7675 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007676 { // sum '+' term
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007677 if (p->error_indicator) {
7678 return NULL;
7679 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007680 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007681 expr_ty a;
7682 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007683 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007684 (a = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007685 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007686 (_literal = _PyPegen_expect_token(p, 14)) // token='+'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007687 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007688 (b = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007689 )
7690 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007691 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7692 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007693 return NULL;
7694 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007695 int _end_lineno = _token->end_lineno;
7696 UNUSED(_end_lineno); // Only used by EXTRA macro
7697 int _end_col_offset = _token->end_col_offset;
7698 UNUSED(_end_col_offset); // Only used by EXTRA macro
7699 _res = _Py_BinOp ( a , Add , b , EXTRA );
7700 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007701 p->error_indicator = 1;
7702 return NULL;
7703 }
7704 goto done;
7705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007706 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007707 }
7708 { // sum '-' term
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007709 if (p->error_indicator) {
7710 return NULL;
7711 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007712 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007713 expr_ty a;
7714 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007715 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007716 (a = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007717 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007718 (_literal = _PyPegen_expect_token(p, 15)) // token='-'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007719 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007720 (b = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007721 )
7722 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007723 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7724 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007725 return NULL;
7726 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007727 int _end_lineno = _token->end_lineno;
7728 UNUSED(_end_lineno); // Only used by EXTRA macro
7729 int _end_col_offset = _token->end_col_offset;
7730 UNUSED(_end_col_offset); // Only used by EXTRA macro
7731 _res = _Py_BinOp ( a , Sub , b , EXTRA );
7732 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007733 p->error_indicator = 1;
7734 return NULL;
7735 }
7736 goto done;
7737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007738 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007739 }
7740 { // term
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007741 if (p->error_indicator) {
7742 return NULL;
7743 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007744 expr_ty term_var;
7745 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007746 (term_var = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007747 )
7748 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007749 _res = term_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007750 goto done;
7751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007752 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007753 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007754 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007755 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007756 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007757}
7758
7759// Left-recursive
7760// term:
7761// | term '*' factor
7762// | term '/' factor
7763// | term '//' factor
7764// | term '%' factor
7765// | term '@' factor
7766// | factor
7767static expr_ty term_raw(Parser *);
7768static expr_ty
7769term_rule(Parser *p)
7770{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007771 expr_ty _res = NULL;
7772 if (_PyPegen_is_memoized(p, term_type, &_res))
7773 return _res;
7774 int _mark = p->mark;
7775 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007776 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007777 int tmpvar_6 = _PyPegen_update_memo(p, _mark, term_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007778 if (tmpvar_6) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007779 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007781 p->mark = _mark;
7782 void *_raw = term_raw(p);
7783 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007784 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007785 _resmark = p->mark;
7786 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007787 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007788 p->mark = _resmark;
7789 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007790}
7791static expr_ty
7792term_raw(Parser *p)
7793{
7794 if (p->error_indicator) {
7795 return NULL;
7796 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007797 expr_ty _res = NULL;
7798 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007799 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7800 p->error_indicator = 1;
7801 return NULL;
7802 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007803 int _start_lineno = p->tokens[_mark]->lineno;
7804 UNUSED(_start_lineno); // Only used by EXTRA macro
7805 int _start_col_offset = p->tokens[_mark]->col_offset;
7806 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007807 { // term '*' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007808 if (p->error_indicator) {
7809 return NULL;
7810 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007811 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007812 expr_ty a;
7813 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007814 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007815 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007816 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007817 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007818 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007819 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007820 )
7821 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007822 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7823 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007824 return NULL;
7825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007826 int _end_lineno = _token->end_lineno;
7827 UNUSED(_end_lineno); // Only used by EXTRA macro
7828 int _end_col_offset = _token->end_col_offset;
7829 UNUSED(_end_col_offset); // Only used by EXTRA macro
7830 _res = _Py_BinOp ( a , Mult , b , EXTRA );
7831 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007832 p->error_indicator = 1;
7833 return NULL;
7834 }
7835 goto done;
7836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007837 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007838 }
7839 { // term '/' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007840 if (p->error_indicator) {
7841 return NULL;
7842 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007843 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007844 expr_ty a;
7845 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007846 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007847 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007848 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007849 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007850 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007851 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007852 )
7853 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007854 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7855 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007856 return NULL;
7857 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007858 int _end_lineno = _token->end_lineno;
7859 UNUSED(_end_lineno); // Only used by EXTRA macro
7860 int _end_col_offset = _token->end_col_offset;
7861 UNUSED(_end_col_offset); // Only used by EXTRA macro
7862 _res = _Py_BinOp ( a , Div , b , EXTRA );
7863 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007864 p->error_indicator = 1;
7865 return NULL;
7866 }
7867 goto done;
7868 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007869 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007870 }
7871 { // term '//' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007872 if (p->error_indicator) {
7873 return NULL;
7874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007875 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007876 expr_ty a;
7877 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007878 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007879 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007880 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007881 (_literal = _PyPegen_expect_token(p, 47)) // token='//'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007882 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007883 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007884 )
7885 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007886 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7887 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007888 return NULL;
7889 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007890 int _end_lineno = _token->end_lineno;
7891 UNUSED(_end_lineno); // Only used by EXTRA macro
7892 int _end_col_offset = _token->end_col_offset;
7893 UNUSED(_end_col_offset); // Only used by EXTRA macro
7894 _res = _Py_BinOp ( a , FloorDiv , b , EXTRA );
7895 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007896 p->error_indicator = 1;
7897 return NULL;
7898 }
7899 goto done;
7900 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007901 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007902 }
7903 { // term '%' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007904 if (p->error_indicator) {
7905 return NULL;
7906 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007907 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007908 expr_ty a;
7909 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007910 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007911 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007912 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007913 (_literal = _PyPegen_expect_token(p, 24)) // token='%'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007914 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007915 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007916 )
7917 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007918 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7919 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007920 return NULL;
7921 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007922 int _end_lineno = _token->end_lineno;
7923 UNUSED(_end_lineno); // Only used by EXTRA macro
7924 int _end_col_offset = _token->end_col_offset;
7925 UNUSED(_end_col_offset); // Only used by EXTRA macro
7926 _res = _Py_BinOp ( a , Mod , b , EXTRA );
7927 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007928 p->error_indicator = 1;
7929 return NULL;
7930 }
7931 goto done;
7932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007933 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007934 }
7935 { // term '@' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007936 if (p->error_indicator) {
7937 return NULL;
7938 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007939 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007940 expr_ty a;
7941 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007942 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007943 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007944 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007945 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007946 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007947 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007948 )
7949 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007950 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7951 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007952 return NULL;
7953 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007954 int _end_lineno = _token->end_lineno;
7955 UNUSED(_end_lineno); // Only used by EXTRA macro
7956 int _end_col_offset = _token->end_col_offset;
7957 UNUSED(_end_col_offset); // Only used by EXTRA macro
7958 _res = CHECK_VERSION ( 5 , "The '@' operator is" , _Py_BinOp ( a , MatMult , b , EXTRA ) );
7959 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007960 p->error_indicator = 1;
7961 return NULL;
7962 }
7963 goto done;
7964 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007965 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007966 }
7967 { // factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007968 if (p->error_indicator) {
7969 return NULL;
7970 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007971 expr_ty factor_var;
7972 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007973 (factor_var = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007974 )
7975 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007976 _res = factor_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007977 goto done;
7978 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007979 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007980 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007981 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007982 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007983 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007984}
7985
7986// factor: '+' factor | '-' factor | '~' factor | power
7987static expr_ty
7988factor_rule(Parser *p)
7989{
7990 if (p->error_indicator) {
7991 return NULL;
7992 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007993 expr_ty _res = NULL;
7994 if (_PyPegen_is_memoized(p, factor_type, &_res))
7995 return _res;
7996 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007997 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7998 p->error_indicator = 1;
7999 return NULL;
8000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008001 int _start_lineno = p->tokens[_mark]->lineno;
8002 UNUSED(_start_lineno); // Only used by EXTRA macro
8003 int _start_col_offset = p->tokens[_mark]->col_offset;
8004 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008005 { // '+' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008006 if (p->error_indicator) {
8007 return NULL;
8008 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008009 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008010 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008011 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008012 (_literal = _PyPegen_expect_token(p, 14)) // token='+'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008013 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008014 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008015 )
8016 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008017 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8018 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008019 return NULL;
8020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008021 int _end_lineno = _token->end_lineno;
8022 UNUSED(_end_lineno); // Only used by EXTRA macro
8023 int _end_col_offset = _token->end_col_offset;
8024 UNUSED(_end_col_offset); // Only used by EXTRA macro
8025 _res = _Py_UnaryOp ( UAdd , a , EXTRA );
8026 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008027 p->error_indicator = 1;
8028 return NULL;
8029 }
8030 goto done;
8031 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008032 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008033 }
8034 { // '-' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008035 if (p->error_indicator) {
8036 return NULL;
8037 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008038 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008039 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008040 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008041 (_literal = _PyPegen_expect_token(p, 15)) // token='-'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008042 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008043 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008044 )
8045 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008046 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8047 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008048 return NULL;
8049 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008050 int _end_lineno = _token->end_lineno;
8051 UNUSED(_end_lineno); // Only used by EXTRA macro
8052 int _end_col_offset = _token->end_col_offset;
8053 UNUSED(_end_col_offset); // Only used by EXTRA macro
8054 _res = _Py_UnaryOp ( USub , a , EXTRA );
8055 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008056 p->error_indicator = 1;
8057 return NULL;
8058 }
8059 goto done;
8060 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008061 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008062 }
8063 { // '~' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008064 if (p->error_indicator) {
8065 return NULL;
8066 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008067 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008068 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008069 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008070 (_literal = _PyPegen_expect_token(p, 31)) // token='~'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008071 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008072 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008073 )
8074 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008075 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8076 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008077 return NULL;
8078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008079 int _end_lineno = _token->end_lineno;
8080 UNUSED(_end_lineno); // Only used by EXTRA macro
8081 int _end_col_offset = _token->end_col_offset;
8082 UNUSED(_end_col_offset); // Only used by EXTRA macro
8083 _res = _Py_UnaryOp ( Invert , a , EXTRA );
8084 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008085 p->error_indicator = 1;
8086 return NULL;
8087 }
8088 goto done;
8089 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008090 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008091 }
8092 { // power
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008093 if (p->error_indicator) {
8094 return NULL;
8095 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008096 expr_ty power_var;
8097 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008098 (power_var = power_rule(p)) // power
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008099 )
8100 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008101 _res = power_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008102 goto done;
8103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008104 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008105 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008106 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008107 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008108 _PyPegen_insert_memo(p, _mark, factor_type, _res);
8109 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008110}
8111
8112// power: await_primary '**' factor | await_primary
8113static expr_ty
8114power_rule(Parser *p)
8115{
8116 if (p->error_indicator) {
8117 return NULL;
8118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008119 expr_ty _res = NULL;
8120 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008121 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8122 p->error_indicator = 1;
8123 return NULL;
8124 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008125 int _start_lineno = p->tokens[_mark]->lineno;
8126 UNUSED(_start_lineno); // Only used by EXTRA macro
8127 int _start_col_offset = p->tokens[_mark]->col_offset;
8128 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008129 { // await_primary '**' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008130 if (p->error_indicator) {
8131 return NULL;
8132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008133 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008134 expr_ty a;
8135 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008136 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008137 (a = await_primary_rule(p)) // await_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008138 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008139 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008140 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008141 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008142 )
8143 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008144 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8145 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008146 return NULL;
8147 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008148 int _end_lineno = _token->end_lineno;
8149 UNUSED(_end_lineno); // Only used by EXTRA macro
8150 int _end_col_offset = _token->end_col_offset;
8151 UNUSED(_end_col_offset); // Only used by EXTRA macro
8152 _res = _Py_BinOp ( a , Pow , b , EXTRA );
8153 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008154 p->error_indicator = 1;
8155 return NULL;
8156 }
8157 goto done;
8158 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008159 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008160 }
8161 { // await_primary
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008162 if (p->error_indicator) {
8163 return NULL;
8164 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008165 expr_ty await_primary_var;
8166 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008167 (await_primary_var = await_primary_rule(p)) // await_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008168 )
8169 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008170 _res = await_primary_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008171 goto done;
8172 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008173 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008174 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008175 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008176 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008177 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008178}
8179
8180// await_primary: AWAIT primary | primary
8181static expr_ty
8182await_primary_rule(Parser *p)
8183{
8184 if (p->error_indicator) {
8185 return NULL;
8186 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008187 expr_ty _res = NULL;
8188 if (_PyPegen_is_memoized(p, await_primary_type, &_res))
8189 return _res;
8190 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008191 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8192 p->error_indicator = 1;
8193 return NULL;
8194 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008195 int _start_lineno = p->tokens[_mark]->lineno;
8196 UNUSED(_start_lineno); // Only used by EXTRA macro
8197 int _start_col_offset = p->tokens[_mark]->col_offset;
8198 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008199 { // AWAIT primary
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008200 if (p->error_indicator) {
8201 return NULL;
8202 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008203 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01008204 Token * await_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008205 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008206 (await_var = _PyPegen_expect_token(p, AWAIT)) // token='AWAIT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008207 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008208 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008209 )
8210 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008211 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8212 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008213 return NULL;
8214 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008215 int _end_lineno = _token->end_lineno;
8216 UNUSED(_end_lineno); // Only used by EXTRA macro
8217 int _end_col_offset = _token->end_col_offset;
8218 UNUSED(_end_col_offset); // Only used by EXTRA macro
8219 _res = CHECK_VERSION ( 5 , "Await expressions are" , _Py_Await ( a , EXTRA ) );
8220 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008221 p->error_indicator = 1;
8222 return NULL;
8223 }
8224 goto done;
8225 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008226 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008227 }
8228 { // primary
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008229 if (p->error_indicator) {
8230 return NULL;
8231 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008232 expr_ty primary_var;
8233 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008234 (primary_var = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008235 )
8236 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008237 _res = primary_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008238 goto done;
8239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008240 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008242 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008243 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008244 _PyPegen_insert_memo(p, _mark, await_primary_type, _res);
8245 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008246}
8247
8248// Left-recursive
8249// primary:
8250// | primary '.' NAME
8251// | primary genexp
8252// | primary '(' arguments? ')'
8253// | primary '[' slices ']'
8254// | atom
8255static expr_ty primary_raw(Parser *);
8256static expr_ty
8257primary_rule(Parser *p)
8258{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008259 expr_ty _res = NULL;
8260 if (_PyPegen_is_memoized(p, primary_type, &_res))
8261 return _res;
8262 int _mark = p->mark;
8263 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008264 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008265 int tmpvar_7 = _PyPegen_update_memo(p, _mark, primary_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008266 if (tmpvar_7) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008267 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008268 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008269 p->mark = _mark;
8270 void *_raw = primary_raw(p);
8271 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008272 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008273 _resmark = p->mark;
8274 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008275 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008276 p->mark = _resmark;
8277 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008278}
8279static expr_ty
8280primary_raw(Parser *p)
8281{
8282 if (p->error_indicator) {
8283 return NULL;
8284 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008285 expr_ty _res = NULL;
8286 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008287 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8288 p->error_indicator = 1;
8289 return NULL;
8290 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008291 int _start_lineno = p->tokens[_mark]->lineno;
8292 UNUSED(_start_lineno); // Only used by EXTRA macro
8293 int _start_col_offset = p->tokens[_mark]->col_offset;
8294 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008295 { // primary '.' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008296 if (p->error_indicator) {
8297 return NULL;
8298 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008299 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008300 expr_ty a;
8301 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008302 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008303 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008304 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008305 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008306 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008307 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008308 )
8309 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008310 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8311 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008312 return NULL;
8313 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008314 int _end_lineno = _token->end_lineno;
8315 UNUSED(_end_lineno); // Only used by EXTRA macro
8316 int _end_col_offset = _token->end_col_offset;
8317 UNUSED(_end_col_offset); // Only used by EXTRA macro
8318 _res = _Py_Attribute ( a , b -> v . Name . id , Load , EXTRA );
8319 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008320 p->error_indicator = 1;
8321 return NULL;
8322 }
8323 goto done;
8324 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008325 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008326 }
8327 { // primary genexp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008328 if (p->error_indicator) {
8329 return NULL;
8330 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008331 expr_ty a;
8332 expr_ty b;
8333 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008334 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008335 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008336 (b = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008337 )
8338 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008339 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8340 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008341 return NULL;
8342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008343 int _end_lineno = _token->end_lineno;
8344 UNUSED(_end_lineno); // Only used by EXTRA macro
8345 int _end_col_offset = _token->end_col_offset;
8346 UNUSED(_end_col_offset); // Only used by EXTRA macro
8347 _res = _Py_Call ( a , CHECK ( _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
8348 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008349 p->error_indicator = 1;
8350 return NULL;
8351 }
8352 goto done;
8353 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008354 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008355 }
8356 { // primary '(' arguments? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008357 if (p->error_indicator) {
8358 return NULL;
8359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008360 Token * _literal;
8361 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008362 expr_ty a;
8363 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008364 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008365 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008366 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008367 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008368 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008369 (b = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008370 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008371 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008372 )
8373 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008374 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8375 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008376 return NULL;
8377 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008378 int _end_lineno = _token->end_lineno;
8379 UNUSED(_end_lineno); // Only used by EXTRA macro
8380 int _end_col_offset = _token->end_col_offset;
8381 UNUSED(_end_col_offset); // Only used by EXTRA macro
8382 _res = _Py_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
8383 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008384 p->error_indicator = 1;
8385 return NULL;
8386 }
8387 goto done;
8388 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008389 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008390 }
8391 { // primary '[' slices ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008392 if (p->error_indicator) {
8393 return NULL;
8394 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008395 Token * _literal;
8396 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008397 expr_ty a;
8398 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008399 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008400 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008401 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008402 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008403 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008404 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008405 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008406 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008407 )
8408 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008409 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8410 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008411 return NULL;
8412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008413 int _end_lineno = _token->end_lineno;
8414 UNUSED(_end_lineno); // Only used by EXTRA macro
8415 int _end_col_offset = _token->end_col_offset;
8416 UNUSED(_end_col_offset); // Only used by EXTRA macro
8417 _res = _Py_Subscript ( a , b , Load , EXTRA );
8418 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008419 p->error_indicator = 1;
8420 return NULL;
8421 }
8422 goto done;
8423 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008424 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008425 }
8426 { // atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008427 if (p->error_indicator) {
8428 return NULL;
8429 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008430 expr_ty atom_var;
8431 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008432 (atom_var = atom_rule(p)) // atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008433 )
8434 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008435 _res = atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008436 goto done;
8437 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008438 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008440 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008441 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008442 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008443}
8444
8445// slices: slice !',' | ','.slice+ ','?
8446static expr_ty
8447slices_rule(Parser *p)
8448{
8449 if (p->error_indicator) {
8450 return NULL;
8451 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008452 expr_ty _res = NULL;
8453 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008454 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8455 p->error_indicator = 1;
8456 return NULL;
8457 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008458 int _start_lineno = p->tokens[_mark]->lineno;
8459 UNUSED(_start_lineno); // Only used by EXTRA macro
8460 int _start_col_offset = p->tokens[_mark]->col_offset;
8461 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008462 { // slice !','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008463 if (p->error_indicator) {
8464 return NULL;
8465 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008466 expr_ty a;
8467 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008468 (a = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008469 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008470 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008471 )
8472 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008473 _res = a;
8474 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008475 p->error_indicator = 1;
8476 return NULL;
8477 }
8478 goto done;
8479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008480 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008481 }
8482 { // ','.slice+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008483 if (p->error_indicator) {
8484 return NULL;
8485 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008486 void *_opt_var;
8487 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008488 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008489 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008490 (a = _gather_93_rule(p)) // ','.slice+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008491 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008492 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008493 )
8494 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008495 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8496 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008497 return NULL;
8498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008499 int _end_lineno = _token->end_lineno;
8500 UNUSED(_end_lineno); // Only used by EXTRA macro
8501 int _end_col_offset = _token->end_col_offset;
8502 UNUSED(_end_col_offset); // Only used by EXTRA macro
8503 _res = _Py_Tuple ( a , Load , EXTRA );
8504 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008505 p->error_indicator = 1;
8506 return NULL;
8507 }
8508 goto done;
8509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008510 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008512 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008513 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008514 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008515}
8516
8517// slice: expression? ':' expression? [':' expression?] | expression
8518static expr_ty
8519slice_rule(Parser *p)
8520{
8521 if (p->error_indicator) {
8522 return NULL;
8523 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008524 expr_ty _res = NULL;
8525 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008526 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8527 p->error_indicator = 1;
8528 return NULL;
8529 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008530 int _start_lineno = p->tokens[_mark]->lineno;
8531 UNUSED(_start_lineno); // Only used by EXTRA macro
8532 int _start_col_offset = p->tokens[_mark]->col_offset;
8533 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008534 { // expression? ':' expression? [':' expression?]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008535 if (p->error_indicator) {
8536 return NULL;
8537 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008538 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008539 void *a;
8540 void *b;
8541 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008542 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008543 (a = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008544 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008545 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008546 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008547 (b = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008548 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008549 (c = _tmp_95_rule(p), 1) // [':' expression?]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008550 )
8551 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008552 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8553 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008554 return NULL;
8555 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008556 int _end_lineno = _token->end_lineno;
8557 UNUSED(_end_lineno); // Only used by EXTRA macro
8558 int _end_col_offset = _token->end_col_offset;
8559 UNUSED(_end_col_offset); // Only used by EXTRA macro
8560 _res = _Py_Slice ( a , b , c , EXTRA );
8561 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008562 p->error_indicator = 1;
8563 return NULL;
8564 }
8565 goto done;
8566 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008567 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008568 }
8569 { // expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008570 if (p->error_indicator) {
8571 return NULL;
8572 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008573 expr_ty a;
8574 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008575 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008576 )
8577 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008578 _res = a;
8579 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008580 p->error_indicator = 1;
8581 return NULL;
8582 }
8583 goto done;
8584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008585 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008586 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008587 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008588 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008589 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008590}
8591
8592// atom:
8593// | NAME
8594// | 'True'
8595// | 'False'
8596// | 'None'
8597// | '__new_parser__'
8598// | &STRING strings
8599// | NUMBER
8600// | &'(' (tuple | group | genexp)
8601// | &'[' (list | listcomp)
8602// | &'{' (dict | set | dictcomp | setcomp)
8603// | '...'
8604static expr_ty
8605atom_rule(Parser *p)
8606{
8607 if (p->error_indicator) {
8608 return NULL;
8609 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008610 expr_ty _res = NULL;
8611 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008612 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8613 p->error_indicator = 1;
8614 return NULL;
8615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008616 int _start_lineno = p->tokens[_mark]->lineno;
8617 UNUSED(_start_lineno); // Only used by EXTRA macro
8618 int _start_col_offset = p->tokens[_mark]->col_offset;
8619 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008620 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008621 if (p->error_indicator) {
8622 return NULL;
8623 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008624 expr_ty name_var;
8625 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008626 (name_var = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008627 )
8628 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008629 _res = name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008630 goto done;
8631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008632 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008633 }
8634 { // 'True'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008635 if (p->error_indicator) {
8636 return NULL;
8637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008638 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008639 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008640 (_keyword = _PyPegen_expect_token(p, 527)) // token='True'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008641 )
8642 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008643 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8644 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008645 return NULL;
8646 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008647 int _end_lineno = _token->end_lineno;
8648 UNUSED(_end_lineno); // Only used by EXTRA macro
8649 int _end_col_offset = _token->end_col_offset;
8650 UNUSED(_end_col_offset); // Only used by EXTRA macro
8651 _res = _Py_Constant ( Py_True , NULL , EXTRA );
8652 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008653 p->error_indicator = 1;
8654 return NULL;
8655 }
8656 goto done;
8657 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008658 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008659 }
8660 { // 'False'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008661 if (p->error_indicator) {
8662 return NULL;
8663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008664 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008665 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008666 (_keyword = _PyPegen_expect_token(p, 528)) // token='False'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008667 )
8668 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008669 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8670 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008671 return NULL;
8672 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008673 int _end_lineno = _token->end_lineno;
8674 UNUSED(_end_lineno); // Only used by EXTRA macro
8675 int _end_col_offset = _token->end_col_offset;
8676 UNUSED(_end_col_offset); // Only used by EXTRA macro
8677 _res = _Py_Constant ( Py_False , NULL , EXTRA );
8678 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008679 p->error_indicator = 1;
8680 return NULL;
8681 }
8682 goto done;
8683 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008684 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008685 }
8686 { // 'None'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008687 if (p->error_indicator) {
8688 return NULL;
8689 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008690 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008691 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008692 (_keyword = _PyPegen_expect_token(p, 529)) // token='None'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008693 )
8694 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008695 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8696 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008697 return NULL;
8698 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008699 int _end_lineno = _token->end_lineno;
8700 UNUSED(_end_lineno); // Only used by EXTRA macro
8701 int _end_col_offset = _token->end_col_offset;
8702 UNUSED(_end_col_offset); // Only used by EXTRA macro
8703 _res = _Py_Constant ( Py_None , NULL , EXTRA );
8704 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008705 p->error_indicator = 1;
8706 return NULL;
8707 }
8708 goto done;
8709 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008710 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008711 }
8712 { // '__new_parser__'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008713 if (p->error_indicator) {
8714 return NULL;
8715 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008716 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008717 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008718 (_keyword = _PyPegen_expect_token(p, 530)) // token='__new_parser__'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008719 )
8720 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008721 _res = RAISE_SYNTAX_ERROR ( "You found it!" );
8722 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008723 p->error_indicator = 1;
8724 return NULL;
8725 }
8726 goto done;
8727 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008728 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008729 }
8730 { // &STRING strings
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008731 if (p->error_indicator) {
8732 return NULL;
8733 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008734 expr_ty strings_var;
8735 if (
8736 _PyPegen_lookahead(1, _PyPegen_string_token, p)
8737 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008738 (strings_var = strings_rule(p)) // strings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008739 )
8740 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008741 _res = strings_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008742 goto done;
8743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008744 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008745 }
8746 { // NUMBER
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008747 if (p->error_indicator) {
8748 return NULL;
8749 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008750 expr_ty number_var;
8751 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008752 (number_var = _PyPegen_number_token(p)) // NUMBER
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008753 )
8754 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008755 _res = number_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008756 goto done;
8757 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008758 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008759 }
8760 { // &'(' (tuple | group | genexp)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008761 if (p->error_indicator) {
8762 return NULL;
8763 }
Guido van Rossum3941d972020-05-01 09:42:03 -07008764 void *_tmp_96_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008765 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008766 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008767 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008768 (_tmp_96_var = _tmp_96_rule(p)) // tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008769 )
8770 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008771 _res = _tmp_96_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008772 goto done;
8773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008774 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008775 }
Pablo Galindo2b74c832020-04-27 18:02:07 +01008776 { // &'[' (list | listcomp)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008777 if (p->error_indicator) {
8778 return NULL;
8779 }
Guido van Rossum3941d972020-05-01 09:42:03 -07008780 void *_tmp_97_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008781 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008782 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008783 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008784 (_tmp_97_var = _tmp_97_rule(p)) // list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008785 )
8786 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008787 _res = _tmp_97_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008788 goto done;
8789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008790 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008791 }
Pablo Galindo2b74c832020-04-27 18:02:07 +01008792 { // &'{' (dict | set | dictcomp | setcomp)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008793 if (p->error_indicator) {
8794 return NULL;
8795 }
Guido van Rossum3941d972020-05-01 09:42:03 -07008796 void *_tmp_98_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008797 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008798 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25) // token='{'
Pablo Galindo2b74c832020-04-27 18:02:07 +01008799 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008800 (_tmp_98_var = _tmp_98_rule(p)) // dict | set | dictcomp | setcomp
Pablo Galindo2b74c832020-04-27 18:02:07 +01008801 )
8802 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008803 _res = _tmp_98_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008804 goto done;
8805 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008806 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008807 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008808 { // '...'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008809 if (p->error_indicator) {
8810 return NULL;
8811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008812 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008813 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008814 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008815 )
8816 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008817 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8818 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008819 return NULL;
8820 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008821 int _end_lineno = _token->end_lineno;
8822 UNUSED(_end_lineno); // Only used by EXTRA macro
8823 int _end_col_offset = _token->end_col_offset;
8824 UNUSED(_end_col_offset); // Only used by EXTRA macro
8825 _res = _Py_Constant ( Py_Ellipsis , NULL , EXTRA );
8826 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008827 p->error_indicator = 1;
8828 return NULL;
8829 }
8830 goto done;
8831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008832 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008834 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008835 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008836 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008837}
8838
8839// strings: STRING+
8840static expr_ty
8841strings_rule(Parser *p)
8842{
8843 if (p->error_indicator) {
8844 return NULL;
8845 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008846 expr_ty _res = NULL;
8847 if (_PyPegen_is_memoized(p, strings_type, &_res))
8848 return _res;
8849 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008850 { // STRING+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008851 if (p->error_indicator) {
8852 return NULL;
8853 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008854 asdl_seq * a;
8855 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008856 (a = _loop1_99_rule(p)) // STRING+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008857 )
8858 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008859 _res = _PyPegen_concatenate_strings ( p , a );
8860 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008861 p->error_indicator = 1;
8862 return NULL;
8863 }
8864 goto done;
8865 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008866 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008867 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008868 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008869 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008870 _PyPegen_insert_memo(p, _mark, strings_type, _res);
8871 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008872}
8873
8874// list: '[' star_named_expressions? ']'
8875static expr_ty
8876list_rule(Parser *p)
8877{
8878 if (p->error_indicator) {
8879 return NULL;
8880 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008881 expr_ty _res = NULL;
8882 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008883 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8884 p->error_indicator = 1;
8885 return NULL;
8886 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008887 int _start_lineno = p->tokens[_mark]->lineno;
8888 UNUSED(_start_lineno); // Only used by EXTRA macro
8889 int _start_col_offset = p->tokens[_mark]->col_offset;
8890 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008891 { // '[' star_named_expressions? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008892 if (p->error_indicator) {
8893 return NULL;
8894 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008895 Token * _literal;
8896 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008897 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008898 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008899 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008900 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008901 (a = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008902 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008903 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008904 )
8905 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008906 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8907 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008908 return NULL;
8909 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008910 int _end_lineno = _token->end_lineno;
8911 UNUSED(_end_lineno); // Only used by EXTRA macro
8912 int _end_col_offset = _token->end_col_offset;
8913 UNUSED(_end_col_offset); // Only used by EXTRA macro
8914 _res = _Py_List ( a , Load , EXTRA );
8915 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008916 p->error_indicator = 1;
8917 return NULL;
8918 }
8919 goto done;
8920 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008921 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008922 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008923 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008924 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008925 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008926}
8927
8928// listcomp: '[' named_expression for_if_clauses ']' | invalid_comprehension
8929static expr_ty
8930listcomp_rule(Parser *p)
8931{
8932 if (p->error_indicator) {
8933 return NULL;
8934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008935 expr_ty _res = NULL;
8936 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008937 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8938 p->error_indicator = 1;
8939 return NULL;
8940 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008941 int _start_lineno = p->tokens[_mark]->lineno;
8942 UNUSED(_start_lineno); // Only used by EXTRA macro
8943 int _start_col_offset = p->tokens[_mark]->col_offset;
8944 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008945 { // '[' named_expression for_if_clauses ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008946 if (p->error_indicator) {
8947 return NULL;
8948 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008949 Token * _literal;
8950 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008951 expr_ty a;
8952 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008953 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008954 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008955 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008956 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008957 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008958 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008959 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008960 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008961 )
8962 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008963 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8964 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008965 return NULL;
8966 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008967 int _end_lineno = _token->end_lineno;
8968 UNUSED(_end_lineno); // Only used by EXTRA macro
8969 int _end_col_offset = _token->end_col_offset;
8970 UNUSED(_end_col_offset); // Only used by EXTRA macro
8971 _res = _Py_ListComp ( a , b , EXTRA );
8972 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008973 p->error_indicator = 1;
8974 return NULL;
8975 }
8976 goto done;
8977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008978 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008979 }
8980 { // invalid_comprehension
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008981 if (p->error_indicator) {
8982 return NULL;
8983 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008984 void *invalid_comprehension_var;
8985 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008986 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008987 )
8988 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008989 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008990 goto done;
8991 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008992 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008993 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008994 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008995 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008996 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008997}
8998
8999// tuple: '(' [star_named_expression ',' star_named_expressions?] ')'
9000static expr_ty
9001tuple_rule(Parser *p)
9002{
9003 if (p->error_indicator) {
9004 return NULL;
9005 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009006 expr_ty _res = NULL;
9007 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009008 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9009 p->error_indicator = 1;
9010 return NULL;
9011 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009012 int _start_lineno = p->tokens[_mark]->lineno;
9013 UNUSED(_start_lineno); // Only used by EXTRA macro
9014 int _start_col_offset = p->tokens[_mark]->col_offset;
9015 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009016 { // '(' [star_named_expression ',' star_named_expressions?] ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009017 if (p->error_indicator) {
9018 return NULL;
9019 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009020 Token * _literal;
9021 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009022 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009023 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009024 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009025 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009026 (a = _tmp_100_rule(p), 1) // [star_named_expression ',' star_named_expressions?]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009027 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009028 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009029 )
9030 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009031 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9032 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009033 return NULL;
9034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009035 int _end_lineno = _token->end_lineno;
9036 UNUSED(_end_lineno); // Only used by EXTRA macro
9037 int _end_col_offset = _token->end_col_offset;
9038 UNUSED(_end_col_offset); // Only used by EXTRA macro
9039 _res = _Py_Tuple ( a , Load , EXTRA );
9040 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009041 p->error_indicator = 1;
9042 return NULL;
9043 }
9044 goto done;
9045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009046 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009048 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009049 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009050 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009051}
9052
9053// group: '(' (yield_expr | named_expression) ')'
9054static expr_ty
9055group_rule(Parser *p)
9056{
9057 if (p->error_indicator) {
9058 return NULL;
9059 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009060 expr_ty _res = NULL;
9061 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009062 { // '(' (yield_expr | named_expression) ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009063 if (p->error_indicator) {
9064 return NULL;
9065 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009066 Token * _literal;
9067 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009068 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009069 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009070 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009071 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009072 (a = _tmp_101_rule(p)) // yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009073 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009074 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009075 )
9076 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009077 _res = a;
9078 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009079 p->error_indicator = 1;
9080 return NULL;
9081 }
9082 goto done;
9083 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009084 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009085 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009086 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009087 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009088 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009089}
9090
9091// genexp: '(' expression for_if_clauses ')' | invalid_comprehension
9092static expr_ty
9093genexp_rule(Parser *p)
9094{
9095 if (p->error_indicator) {
9096 return NULL;
9097 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009098 expr_ty _res = NULL;
9099 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009100 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9101 p->error_indicator = 1;
9102 return NULL;
9103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009104 int _start_lineno = p->tokens[_mark]->lineno;
9105 UNUSED(_start_lineno); // Only used by EXTRA macro
9106 int _start_col_offset = p->tokens[_mark]->col_offset;
9107 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009108 { // '(' expression for_if_clauses ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009109 if (p->error_indicator) {
9110 return NULL;
9111 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009112 Token * _literal;
9113 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009114 expr_ty a;
9115 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009116 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009117 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009118 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009119 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009120 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009121 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009122 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009123 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009124 )
9125 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009126 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9127 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009128 return NULL;
9129 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009130 int _end_lineno = _token->end_lineno;
9131 UNUSED(_end_lineno); // Only used by EXTRA macro
9132 int _end_col_offset = _token->end_col_offset;
9133 UNUSED(_end_col_offset); // Only used by EXTRA macro
9134 _res = _Py_GeneratorExp ( a , b , EXTRA );
9135 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009136 p->error_indicator = 1;
9137 return NULL;
9138 }
9139 goto done;
9140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009141 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009142 }
9143 { // invalid_comprehension
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009144 if (p->error_indicator) {
9145 return NULL;
9146 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009147 void *invalid_comprehension_var;
9148 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009149 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009150 )
9151 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009152 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009153 goto done;
9154 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009155 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009156 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009157 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009158 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009159 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009160}
9161
9162// set: '{' expressions_list '}'
9163static expr_ty
9164set_rule(Parser *p)
9165{
9166 if (p->error_indicator) {
9167 return NULL;
9168 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009169 expr_ty _res = NULL;
9170 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009171 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9172 p->error_indicator = 1;
9173 return NULL;
9174 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009175 int _start_lineno = p->tokens[_mark]->lineno;
9176 UNUSED(_start_lineno); // Only used by EXTRA macro
9177 int _start_col_offset = p->tokens[_mark]->col_offset;
9178 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009179 { // '{' expressions_list '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009180 if (p->error_indicator) {
9181 return NULL;
9182 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009183 Token * _literal;
9184 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009185 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009186 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009187 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009188 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009189 (a = expressions_list_rule(p)) // expressions_list
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009190 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009191 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009192 )
9193 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009194 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9195 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009196 return NULL;
9197 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009198 int _end_lineno = _token->end_lineno;
9199 UNUSED(_end_lineno); // Only used by EXTRA macro
9200 int _end_col_offset = _token->end_col_offset;
9201 UNUSED(_end_col_offset); // Only used by EXTRA macro
9202 _res = _Py_Set ( a , EXTRA );
9203 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009204 p->error_indicator = 1;
9205 return NULL;
9206 }
9207 goto done;
9208 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009209 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009210 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009211 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009212 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009213 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009214}
9215
9216// setcomp: '{' expression for_if_clauses '}' | invalid_comprehension
9217static expr_ty
9218setcomp_rule(Parser *p)
9219{
9220 if (p->error_indicator) {
9221 return NULL;
9222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009223 expr_ty _res = NULL;
9224 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009225 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9226 p->error_indicator = 1;
9227 return NULL;
9228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009229 int _start_lineno = p->tokens[_mark]->lineno;
9230 UNUSED(_start_lineno); // Only used by EXTRA macro
9231 int _start_col_offset = p->tokens[_mark]->col_offset;
9232 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009233 { // '{' expression for_if_clauses '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009234 if (p->error_indicator) {
9235 return NULL;
9236 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009237 Token * _literal;
9238 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009239 expr_ty a;
9240 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009241 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009242 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009243 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009244 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009245 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009246 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009247 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009248 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009249 )
9250 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009251 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9252 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009253 return NULL;
9254 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009255 int _end_lineno = _token->end_lineno;
9256 UNUSED(_end_lineno); // Only used by EXTRA macro
9257 int _end_col_offset = _token->end_col_offset;
9258 UNUSED(_end_col_offset); // Only used by EXTRA macro
9259 _res = _Py_SetComp ( a , b , EXTRA );
9260 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009261 p->error_indicator = 1;
9262 return NULL;
9263 }
9264 goto done;
9265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009266 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009267 }
9268 { // invalid_comprehension
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009269 if (p->error_indicator) {
9270 return NULL;
9271 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009272 void *invalid_comprehension_var;
9273 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009274 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009275 )
9276 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009277 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009278 goto done;
9279 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009280 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009281 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009282 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009283 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009284 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009285}
9286
9287// dict: '{' kvpairs? '}'
9288static expr_ty
9289dict_rule(Parser *p)
9290{
9291 if (p->error_indicator) {
9292 return NULL;
9293 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009294 expr_ty _res = NULL;
9295 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009296 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9297 p->error_indicator = 1;
9298 return NULL;
9299 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009300 int _start_lineno = p->tokens[_mark]->lineno;
9301 UNUSED(_start_lineno); // Only used by EXTRA macro
9302 int _start_col_offset = p->tokens[_mark]->col_offset;
9303 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009304 { // '{' kvpairs? '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009305 if (p->error_indicator) {
9306 return NULL;
9307 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009308 Token * _literal;
9309 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009310 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009311 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009312 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009313 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009314 (a = kvpairs_rule(p), 1) // kvpairs?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009315 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009316 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009317 )
9318 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009319 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9320 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009321 return NULL;
9322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009323 int _end_lineno = _token->end_lineno;
9324 UNUSED(_end_lineno); // Only used by EXTRA macro
9325 int _end_col_offset = _token->end_col_offset;
9326 UNUSED(_end_col_offset); // Only used by EXTRA macro
9327 _res = _Py_Dict ( CHECK ( _PyPegen_get_keys ( p , a ) ) , CHECK ( _PyPegen_get_values ( p , a ) ) , EXTRA );
9328 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009329 p->error_indicator = 1;
9330 return NULL;
9331 }
9332 goto done;
9333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009334 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009335 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009336 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009337 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009338 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009339}
9340
9341// dictcomp: '{' kvpair for_if_clauses '}'
9342static expr_ty
9343dictcomp_rule(Parser *p)
9344{
9345 if (p->error_indicator) {
9346 return NULL;
9347 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009348 expr_ty _res = NULL;
9349 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009350 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9351 p->error_indicator = 1;
9352 return NULL;
9353 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009354 int _start_lineno = p->tokens[_mark]->lineno;
9355 UNUSED(_start_lineno); // Only used by EXTRA macro
9356 int _start_col_offset = p->tokens[_mark]->col_offset;
9357 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009358 { // '{' kvpair for_if_clauses '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009359 if (p->error_indicator) {
9360 return NULL;
9361 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009362 Token * _literal;
9363 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009364 KeyValuePair* a;
9365 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009366 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009367 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009368 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009369 (a = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009370 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009371 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009372 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009373 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009374 )
9375 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009376 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9377 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009378 return NULL;
9379 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009380 int _end_lineno = _token->end_lineno;
9381 UNUSED(_end_lineno); // Only used by EXTRA macro
9382 int _end_col_offset = _token->end_col_offset;
9383 UNUSED(_end_col_offset); // Only used by EXTRA macro
9384 _res = _Py_DictComp ( a -> key , a -> value , b , EXTRA );
9385 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009386 p->error_indicator = 1;
9387 return NULL;
9388 }
9389 goto done;
9390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009391 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009393 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009394 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009395 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009396}
9397
9398// kvpairs: ','.kvpair+ ','?
9399static asdl_seq*
9400kvpairs_rule(Parser *p)
9401{
9402 if (p->error_indicator) {
9403 return NULL;
9404 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009405 asdl_seq* _res = NULL;
9406 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009407 { // ','.kvpair+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009408 if (p->error_indicator) {
9409 return NULL;
9410 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009411 void *_opt_var;
9412 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009413 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009414 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009415 (a = _gather_102_rule(p)) // ','.kvpair+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009416 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009417 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009418 )
9419 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009420 _res = a;
9421 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009422 p->error_indicator = 1;
9423 return NULL;
9424 }
9425 goto done;
9426 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009427 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009428 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009429 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009430 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009431 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009432}
9433
9434// kvpair: '**' bitwise_or | expression ':' expression
9435static KeyValuePair*
9436kvpair_rule(Parser *p)
9437{
9438 if (p->error_indicator) {
9439 return NULL;
9440 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009441 KeyValuePair* _res = NULL;
9442 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009443 { // '**' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009444 if (p->error_indicator) {
9445 return NULL;
9446 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009447 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009448 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009449 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009450 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009451 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009452 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009453 )
9454 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009455 _res = _PyPegen_key_value_pair ( p , NULL , a );
9456 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009457 p->error_indicator = 1;
9458 return NULL;
9459 }
9460 goto done;
9461 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009462 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009463 }
9464 { // expression ':' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009465 if (p->error_indicator) {
9466 return NULL;
9467 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009468 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009469 expr_ty a;
9470 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009471 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009472 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009473 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009474 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009475 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009476 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009477 )
9478 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009479 _res = _PyPegen_key_value_pair ( p , a , b );
9480 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009481 p->error_indicator = 1;
9482 return NULL;
9483 }
9484 goto done;
9485 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009486 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009488 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009489 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009490 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009491}
9492
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009493// for_if_clauses: for_if_clause+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009494static asdl_seq*
9495for_if_clauses_rule(Parser *p)
9496{
9497 if (p->error_indicator) {
9498 return NULL;
9499 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009500 asdl_seq* _res = NULL;
9501 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009502 { // for_if_clause+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009503 if (p->error_indicator) {
9504 return NULL;
9505 }
Guido van Rossum3941d972020-05-01 09:42:03 -07009506 asdl_seq * _loop1_104_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009507 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009508 (_loop1_104_var = _loop1_104_rule(p)) // for_if_clause+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009509 )
9510 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009511 _res = _loop1_104_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009512 goto done;
9513 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009514 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009516 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009517 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009518 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009519}
9520
9521// for_if_clause:
9522// | ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*
9523// | 'for' star_targets 'in' disjunction (('if' disjunction))*
9524static comprehension_ty
9525for_if_clause_rule(Parser *p)
9526{
9527 if (p->error_indicator) {
9528 return NULL;
9529 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009530 comprehension_ty _res = NULL;
9531 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009532 { // ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009533 if (p->error_indicator) {
9534 return NULL;
9535 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009536 Token * _keyword;
9537 Token * _keyword_1;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009538 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01009539 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009540 expr_ty b;
9541 asdl_seq * c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009542 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009543 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009544 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009545 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009546 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009547 (a = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009548 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009549 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009550 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009551 (b = disjunction_rule(p)) // disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009552 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009553 (c = _loop0_105_rule(p)) // (('if' disjunction))*
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009554 )
9555 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009556 _res = CHECK_VERSION ( 6 , "Async comprehensions are" , _Py_comprehension ( a , b , c , 1 , p -> arena ) );
9557 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009558 p->error_indicator = 1;
9559 return NULL;
9560 }
9561 goto done;
9562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009563 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009564 }
9565 { // 'for' star_targets 'in' disjunction (('if' disjunction))*
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009566 if (p->error_indicator) {
9567 return NULL;
9568 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009569 Token * _keyword;
9570 Token * _keyword_1;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009571 expr_ty a;
9572 expr_ty b;
9573 asdl_seq * c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009574 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009575 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009576 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009577 (a = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009578 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009579 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009580 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009581 (b = disjunction_rule(p)) // disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009582 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009583 (c = _loop0_106_rule(p)) // (('if' disjunction))*
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009584 )
9585 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009586 _res = _Py_comprehension ( a , b , c , 0 , p -> arena );
9587 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009588 p->error_indicator = 1;
9589 return NULL;
9590 }
9591 goto done;
9592 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009593 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009595 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009596 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009597 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009598}
9599
9600// yield_expr: 'yield' 'from' expression | 'yield' star_expressions?
9601static expr_ty
9602yield_expr_rule(Parser *p)
9603{
9604 if (p->error_indicator) {
9605 return NULL;
9606 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009607 expr_ty _res = NULL;
9608 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009609 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9610 p->error_indicator = 1;
9611 return NULL;
9612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009613 int _start_lineno = p->tokens[_mark]->lineno;
9614 UNUSED(_start_lineno); // Only used by EXTRA macro
9615 int _start_col_offset = p->tokens[_mark]->col_offset;
9616 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009617 { // 'yield' 'from' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009618 if (p->error_indicator) {
9619 return NULL;
9620 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009621 Token * _keyword;
9622 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009623 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009624 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009625 (_keyword = _PyPegen_expect_token(p, 504)) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009626 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009627 (_keyword_1 = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009628 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009629 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009630 )
9631 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009632 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9633 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009634 return NULL;
9635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009636 int _end_lineno = _token->end_lineno;
9637 UNUSED(_end_lineno); // Only used by EXTRA macro
9638 int _end_col_offset = _token->end_col_offset;
9639 UNUSED(_end_col_offset); // Only used by EXTRA macro
9640 _res = _Py_YieldFrom ( a , EXTRA );
9641 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009642 p->error_indicator = 1;
9643 return NULL;
9644 }
9645 goto done;
9646 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009647 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009648 }
9649 { // 'yield' star_expressions?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009650 if (p->error_indicator) {
9651 return NULL;
9652 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009653 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009654 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009655 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009656 (_keyword = _PyPegen_expect_token(p, 504)) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009657 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009658 (a = star_expressions_rule(p), 1) // star_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009659 )
9660 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009661 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9662 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009663 return NULL;
9664 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009665 int _end_lineno = _token->end_lineno;
9666 UNUSED(_end_lineno); // Only used by EXTRA macro
9667 int _end_col_offset = _token->end_col_offset;
9668 UNUSED(_end_col_offset); // Only used by EXTRA macro
9669 _res = _Py_Yield ( a , EXTRA );
9670 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009671 p->error_indicator = 1;
9672 return NULL;
9673 }
9674 goto done;
9675 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009676 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009677 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009678 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009679 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009680 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009681}
9682
9683// arguments: args ','? &')' | incorrect_arguments
9684static expr_ty
9685arguments_rule(Parser *p)
9686{
9687 if (p->error_indicator) {
9688 return NULL;
9689 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009690 expr_ty _res = NULL;
9691 if (_PyPegen_is_memoized(p, arguments_type, &_res))
9692 return _res;
9693 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009694 { // args ','? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009695 if (p->error_indicator) {
9696 return NULL;
9697 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009698 void *_opt_var;
9699 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009700 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009701 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009702 (a = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009703 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009704 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009705 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009706 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009707 )
9708 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009709 _res = a;
9710 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009711 p->error_indicator = 1;
9712 return NULL;
9713 }
9714 goto done;
9715 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009716 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009717 }
9718 { // incorrect_arguments
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009719 if (p->error_indicator) {
9720 return NULL;
9721 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009722 void *incorrect_arguments_var;
9723 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009724 (incorrect_arguments_var = incorrect_arguments_rule(p)) // incorrect_arguments
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009725 )
9726 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009727 _res = incorrect_arguments_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009728 goto done;
9729 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009730 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009731 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009732 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009733 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009734 _PyPegen_insert_memo(p, _mark, arguments_type, _res);
9735 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009736}
9737
9738// args: starred_expression [',' args] | kwargs | named_expression [',' args]
9739static expr_ty
9740args_rule(Parser *p)
9741{
9742 if (p->error_indicator) {
9743 return NULL;
9744 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009745 expr_ty _res = NULL;
9746 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009747 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9748 p->error_indicator = 1;
9749 return NULL;
9750 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009751 int _start_lineno = p->tokens[_mark]->lineno;
9752 UNUSED(_start_lineno); // Only used by EXTRA macro
9753 int _start_col_offset = p->tokens[_mark]->col_offset;
9754 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009755 { // starred_expression [',' args]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009756 if (p->error_indicator) {
9757 return NULL;
9758 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009759 expr_ty a;
9760 void *b;
9761 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009762 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009763 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009764 (b = _tmp_107_rule(p), 1) // [',' args]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009765 )
9766 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009767 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9768 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009769 return NULL;
9770 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009771 int _end_lineno = _token->end_lineno;
9772 UNUSED(_end_lineno); // Only used by EXTRA macro
9773 int _end_col_offset = _token->end_col_offset;
9774 UNUSED(_end_col_offset); // Only used by EXTRA macro
9775 _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 );
9776 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009777 p->error_indicator = 1;
9778 return NULL;
9779 }
9780 goto done;
9781 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009782 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009783 }
9784 { // kwargs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009785 if (p->error_indicator) {
9786 return NULL;
9787 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009788 asdl_seq* a;
9789 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009790 (a = kwargs_rule(p)) // kwargs
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009791 )
9792 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009793 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9794 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009795 return NULL;
9796 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009797 int _end_lineno = _token->end_lineno;
9798 UNUSED(_end_lineno); // Only used by EXTRA macro
9799 int _end_col_offset = _token->end_col_offset;
9800 UNUSED(_end_col_offset); // Only used by EXTRA macro
9801 _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 );
9802 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009803 p->error_indicator = 1;
9804 return NULL;
9805 }
9806 goto done;
9807 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009808 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009809 }
9810 { // named_expression [',' args]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009811 if (p->error_indicator) {
9812 return NULL;
9813 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009814 expr_ty a;
9815 void *b;
9816 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009817 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009818 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009819 (b = _tmp_108_rule(p), 1) // [',' args]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009820 )
9821 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009822 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9823 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009824 return NULL;
9825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009826 int _end_lineno = _token->end_lineno;
9827 UNUSED(_end_lineno); // Only used by EXTRA macro
9828 int _end_col_offset = _token->end_col_offset;
9829 UNUSED(_end_col_offset); // Only used by EXTRA macro
9830 _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 );
9831 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009832 p->error_indicator = 1;
9833 return NULL;
9834 }
9835 goto done;
9836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009837 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009838 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009839 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009840 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009841 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009842}
9843
9844// kwargs:
9845// | ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
9846// | ','.kwarg_or_starred+
9847// | ','.kwarg_or_double_starred+
9848static asdl_seq*
9849kwargs_rule(Parser *p)
9850{
9851 if (p->error_indicator) {
9852 return NULL;
9853 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009854 asdl_seq* _res = NULL;
9855 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009856 { // ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009857 if (p->error_indicator) {
9858 return NULL;
9859 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009860 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009861 asdl_seq * a;
9862 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009863 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009864 (a = _gather_109_rule(p)) // ','.kwarg_or_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009865 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009866 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009867 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009868 (b = _gather_111_rule(p)) // ','.kwarg_or_double_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009869 )
9870 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009871 _res = _PyPegen_join_sequences ( p , a , b );
9872 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009873 p->error_indicator = 1;
9874 return NULL;
9875 }
9876 goto done;
9877 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009878 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009879 }
9880 { // ','.kwarg_or_starred+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009881 if (p->error_indicator) {
9882 return NULL;
9883 }
Guido van Rossum3941d972020-05-01 09:42:03 -07009884 asdl_seq * _gather_113_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009885 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009886 (_gather_113_var = _gather_113_rule(p)) // ','.kwarg_or_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009887 )
9888 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009889 _res = _gather_113_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009890 goto done;
9891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009892 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009893 }
9894 { // ','.kwarg_or_double_starred+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009895 if (p->error_indicator) {
9896 return NULL;
9897 }
Guido van Rossum3941d972020-05-01 09:42:03 -07009898 asdl_seq * _gather_115_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009899 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009900 (_gather_115_var = _gather_115_rule(p)) // ','.kwarg_or_double_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009901 )
9902 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009903 _res = _gather_115_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009904 goto done;
9905 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009906 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009907 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009908 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009909 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009910 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009911}
9912
9913// starred_expression: '*' expression
9914static expr_ty
9915starred_expression_rule(Parser *p)
9916{
9917 if (p->error_indicator) {
9918 return NULL;
9919 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009920 expr_ty _res = NULL;
9921 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009922 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9923 p->error_indicator = 1;
9924 return NULL;
9925 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009926 int _start_lineno = p->tokens[_mark]->lineno;
9927 UNUSED(_start_lineno); // Only used by EXTRA macro
9928 int _start_col_offset = p->tokens[_mark]->col_offset;
9929 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009930 { // '*' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009931 if (p->error_indicator) {
9932 return NULL;
9933 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009934 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009935 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009936 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009937 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009938 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009939 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009940 )
9941 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009942 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9943 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009944 return NULL;
9945 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009946 int _end_lineno = _token->end_lineno;
9947 UNUSED(_end_lineno); // Only used by EXTRA macro
9948 int _end_col_offset = _token->end_col_offset;
9949 UNUSED(_end_col_offset); // Only used by EXTRA macro
9950 _res = _Py_Starred ( a , Load , EXTRA );
9951 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009952 p->error_indicator = 1;
9953 return NULL;
9954 }
9955 goto done;
9956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009957 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009958 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009959 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009960 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009961 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009962}
9963
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009964// kwarg_or_starred: NAME '=' expression | starred_expression | invalid_kwarg
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009965static KeywordOrStarred*
9966kwarg_or_starred_rule(Parser *p)
9967{
9968 if (p->error_indicator) {
9969 return NULL;
9970 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009971 KeywordOrStarred* _res = NULL;
9972 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009973 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9974 p->error_indicator = 1;
9975 return NULL;
9976 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009977 int _start_lineno = p->tokens[_mark]->lineno;
9978 UNUSED(_start_lineno); // Only used by EXTRA macro
9979 int _start_col_offset = p->tokens[_mark]->col_offset;
9980 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009981 { // NAME '=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009982 if (p->error_indicator) {
9983 return NULL;
9984 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009985 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009986 expr_ty a;
9987 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009988 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009989 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009990 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009991 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009992 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009993 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009994 )
9995 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009996 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9997 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009998 return NULL;
9999 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010000 int _end_lineno = _token->end_lineno;
10001 UNUSED(_end_lineno); // Only used by EXTRA macro
10002 int _end_col_offset = _token->end_col_offset;
10003 UNUSED(_end_col_offset); // Only used by EXTRA macro
10004 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
10005 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010006 p->error_indicator = 1;
10007 return NULL;
10008 }
10009 goto done;
10010 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010011 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010012 }
10013 { // starred_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010014 if (p->error_indicator) {
10015 return NULL;
10016 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010017 expr_ty a;
10018 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010019 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010020 )
10021 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010022 _res = _PyPegen_keyword_or_starred ( p , a , 0 );
10023 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010024 p->error_indicator = 1;
10025 return NULL;
10026 }
10027 goto done;
10028 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010029 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010030 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010031 { // invalid_kwarg
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010032 if (p->error_indicator) {
10033 return NULL;
10034 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010035 void *invalid_kwarg_var;
10036 if (
10037 (invalid_kwarg_var = invalid_kwarg_rule(p)) // invalid_kwarg
10038 )
10039 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010040 _res = invalid_kwarg_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010041 goto done;
10042 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010043 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010044 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010045 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010046 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010047 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010048}
10049
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010050// kwarg_or_double_starred: NAME '=' expression | '**' expression | invalid_kwarg
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010051static KeywordOrStarred*
10052kwarg_or_double_starred_rule(Parser *p)
10053{
10054 if (p->error_indicator) {
10055 return NULL;
10056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010057 KeywordOrStarred* _res = NULL;
10058 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010059 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10060 p->error_indicator = 1;
10061 return NULL;
10062 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010063 int _start_lineno = p->tokens[_mark]->lineno;
10064 UNUSED(_start_lineno); // Only used by EXTRA macro
10065 int _start_col_offset = p->tokens[_mark]->col_offset;
10066 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010067 { // NAME '=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010068 if (p->error_indicator) {
10069 return NULL;
10070 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010071 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010072 expr_ty a;
10073 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010074 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010075 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010076 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010077 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010078 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010079 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010080 )
10081 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010082 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10083 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010084 return NULL;
10085 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010086 int _end_lineno = _token->end_lineno;
10087 UNUSED(_end_lineno); // Only used by EXTRA macro
10088 int _end_col_offset = _token->end_col_offset;
10089 UNUSED(_end_col_offset); // Only used by EXTRA macro
10090 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
10091 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010092 p->error_indicator = 1;
10093 return NULL;
10094 }
10095 goto done;
10096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010097 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010098 }
10099 { // '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010100 if (p->error_indicator) {
10101 return NULL;
10102 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010103 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010104 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010105 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010106 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010107 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010108 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010109 )
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 = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( NULL , a , EXTRA ) ) , 1 );
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 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010128 { // invalid_kwarg
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010129 if (p->error_indicator) {
10130 return NULL;
10131 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010132 void *invalid_kwarg_var;
10133 if (
10134 (invalid_kwarg_var = invalid_kwarg_rule(p)) // invalid_kwarg
10135 )
10136 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010137 _res = invalid_kwarg_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010138 goto done;
10139 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010140 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010141 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010142 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010143 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010144 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010145}
10146
10147// star_targets: star_target !',' | star_target ((',' star_target))* ','?
10148static expr_ty
10149star_targets_rule(Parser *p)
10150{
10151 if (p->error_indicator) {
10152 return NULL;
10153 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010154 expr_ty _res = NULL;
10155 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010156 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10157 p->error_indicator = 1;
10158 return NULL;
10159 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010160 int _start_lineno = p->tokens[_mark]->lineno;
10161 UNUSED(_start_lineno); // Only used by EXTRA macro
10162 int _start_col_offset = p->tokens[_mark]->col_offset;
10163 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010164 { // star_target !','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010165 if (p->error_indicator) {
10166 return NULL;
10167 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010168 expr_ty a;
10169 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010170 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010171 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010172 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010173 )
10174 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010175 _res = a;
10176 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010177 p->error_indicator = 1;
10178 return NULL;
10179 }
10180 goto done;
10181 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010182 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010183 }
10184 { // star_target ((',' star_target))* ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010185 if (p->error_indicator) {
10186 return NULL;
10187 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010188 void *_opt_var;
10189 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010190 expr_ty a;
10191 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010192 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010193 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010194 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010195 (b = _loop0_117_rule(p)) // ((',' star_target))*
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010196 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010197 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010198 )
10199 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010200 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10201 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010202 return NULL;
10203 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010204 int _end_lineno = _token->end_lineno;
10205 UNUSED(_end_lineno); // Only used by EXTRA macro
10206 int _end_col_offset = _token->end_col_offset;
10207 UNUSED(_end_col_offset); // Only used by EXTRA macro
10208 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Store , EXTRA );
10209 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010210 p->error_indicator = 1;
10211 return NULL;
10212 }
10213 goto done;
10214 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010215 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010216 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010217 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010218 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010219 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010220}
10221
10222// star_targets_seq: ','.star_target+ ','?
10223static asdl_seq*
10224star_targets_seq_rule(Parser *p)
10225{
10226 if (p->error_indicator) {
10227 return NULL;
10228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010229 asdl_seq* _res = NULL;
10230 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010231 { // ','.star_target+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010232 if (p->error_indicator) {
10233 return NULL;
10234 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010235 void *_opt_var;
10236 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010237 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010238 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010239 (a = _gather_118_rule(p)) // ','.star_target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010240 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010241 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010242 )
10243 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010244 _res = a;
10245 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010246 p->error_indicator = 1;
10247 return NULL;
10248 }
10249 goto done;
10250 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010251 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010253 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010254 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010255 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010256}
10257
10258// star_target:
10259// | '*' (!'*' star_target)
10260// | t_primary '.' NAME !t_lookahead
10261// | t_primary '[' slices ']' !t_lookahead
10262// | star_atom
10263static expr_ty
10264star_target_rule(Parser *p)
10265{
10266 if (p->error_indicator) {
10267 return NULL;
10268 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010269 expr_ty _res = NULL;
10270 if (_PyPegen_is_memoized(p, star_target_type, &_res))
10271 return _res;
10272 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010273 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10274 p->error_indicator = 1;
10275 return NULL;
10276 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010277 int _start_lineno = p->tokens[_mark]->lineno;
10278 UNUSED(_start_lineno); // Only used by EXTRA macro
10279 int _start_col_offset = p->tokens[_mark]->col_offset;
10280 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010281 { // '*' (!'*' star_target)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010282 if (p->error_indicator) {
10283 return NULL;
10284 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010285 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010286 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010287 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010288 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010289 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010290 (a = _tmp_120_rule(p)) // !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010291 )
10292 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010293 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10294 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010295 return NULL;
10296 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010297 int _end_lineno = _token->end_lineno;
10298 UNUSED(_end_lineno); // Only used by EXTRA macro
10299 int _end_col_offset = _token->end_col_offset;
10300 UNUSED(_end_col_offset); // Only used by EXTRA macro
10301 _res = _Py_Starred ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , Store , EXTRA );
10302 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010303 p->error_indicator = 1;
10304 return NULL;
10305 }
10306 goto done;
10307 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010308 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010309 }
10310 { // t_primary '.' NAME !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010311 if (p->error_indicator) {
10312 return NULL;
10313 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010314 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010315 expr_ty a;
10316 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010317 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010318 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010319 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010320 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010321 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010322 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010323 &&
10324 _PyPegen_lookahead(0, t_lookahead_rule, p)
10325 )
10326 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010327 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10328 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010329 return NULL;
10330 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010331 int _end_lineno = _token->end_lineno;
10332 UNUSED(_end_lineno); // Only used by EXTRA macro
10333 int _end_col_offset = _token->end_col_offset;
10334 UNUSED(_end_col_offset); // Only used by EXTRA macro
10335 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
10336 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010337 p->error_indicator = 1;
10338 return NULL;
10339 }
10340 goto done;
10341 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010342 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010343 }
10344 { // t_primary '[' slices ']' !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010345 if (p->error_indicator) {
10346 return NULL;
10347 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010348 Token * _literal;
10349 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010350 expr_ty a;
10351 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010352 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010353 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010354 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010355 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010356 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010357 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010358 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010359 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010360 &&
10361 _PyPegen_lookahead(0, t_lookahead_rule, p)
10362 )
10363 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010364 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10365 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010366 return NULL;
10367 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010368 int _end_lineno = _token->end_lineno;
10369 UNUSED(_end_lineno); // Only used by EXTRA macro
10370 int _end_col_offset = _token->end_col_offset;
10371 UNUSED(_end_col_offset); // Only used by EXTRA macro
10372 _res = _Py_Subscript ( a , b , Store , EXTRA );
10373 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010374 p->error_indicator = 1;
10375 return NULL;
10376 }
10377 goto done;
10378 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010379 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010380 }
10381 { // star_atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010382 if (p->error_indicator) {
10383 return NULL;
10384 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010385 expr_ty star_atom_var;
10386 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010387 (star_atom_var = star_atom_rule(p)) // star_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010388 )
10389 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010390 _res = star_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010391 goto done;
10392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010393 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010394 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010395 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010396 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010397 _PyPegen_insert_memo(p, _mark, star_target_type, _res);
10398 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010399}
10400
10401// star_atom:
10402// | NAME
10403// | '(' star_target ')'
10404// | '(' star_targets_seq? ')'
10405// | '[' star_targets_seq? ']'
10406static expr_ty
10407star_atom_rule(Parser *p)
10408{
10409 if (p->error_indicator) {
10410 return NULL;
10411 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010412 expr_ty _res = NULL;
10413 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010414 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10415 p->error_indicator = 1;
10416 return NULL;
10417 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010418 int _start_lineno = p->tokens[_mark]->lineno;
10419 UNUSED(_start_lineno); // Only used by EXTRA macro
10420 int _start_col_offset = p->tokens[_mark]->col_offset;
10421 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010422 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010423 if (p->error_indicator) {
10424 return NULL;
10425 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010426 expr_ty a;
10427 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010428 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010429 )
10430 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010431 _res = _PyPegen_set_expr_context ( p , a , Store );
10432 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010433 p->error_indicator = 1;
10434 return NULL;
10435 }
10436 goto done;
10437 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010438 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010439 }
10440 { // '(' star_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010441 if (p->error_indicator) {
10442 return NULL;
10443 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010444 Token * _literal;
10445 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010446 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010447 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010448 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010449 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010450 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010451 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010452 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010453 )
10454 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010455 _res = _PyPegen_set_expr_context ( p , a , Store );
10456 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010457 p->error_indicator = 1;
10458 return NULL;
10459 }
10460 goto done;
10461 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010462 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010463 }
10464 { // '(' star_targets_seq? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010465 if (p->error_indicator) {
10466 return NULL;
10467 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010468 Token * _literal;
10469 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010470 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010471 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010472 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010473 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010474 (a = star_targets_seq_rule(p), 1) // star_targets_seq?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010475 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010476 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010477 )
10478 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010479 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10480 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010481 return NULL;
10482 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010483 int _end_lineno = _token->end_lineno;
10484 UNUSED(_end_lineno); // Only used by EXTRA macro
10485 int _end_col_offset = _token->end_col_offset;
10486 UNUSED(_end_col_offset); // Only used by EXTRA macro
10487 _res = _Py_Tuple ( a , Store , EXTRA );
10488 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010489 p->error_indicator = 1;
10490 return NULL;
10491 }
10492 goto done;
10493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010494 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010495 }
10496 { // '[' star_targets_seq? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010497 if (p->error_indicator) {
10498 return NULL;
10499 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010500 Token * _literal;
10501 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010502 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010503 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010504 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010505 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010506 (a = star_targets_seq_rule(p), 1) // star_targets_seq?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010507 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010508 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010509 )
10510 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010511 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10512 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010513 return NULL;
10514 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010515 int _end_lineno = _token->end_lineno;
10516 UNUSED(_end_lineno); // Only used by EXTRA macro
10517 int _end_col_offset = _token->end_col_offset;
10518 UNUSED(_end_col_offset); // Only used by EXTRA macro
10519 _res = _Py_List ( a , Store , EXTRA );
10520 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010521 p->error_indicator = 1;
10522 return NULL;
10523 }
10524 goto done;
10525 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010526 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010528 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010529 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010530 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010531}
10532
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010533// single_target: single_subscript_attribute_target | NAME | '(' single_target ')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010534static expr_ty
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010535single_target_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010536{
10537 if (p->error_indicator) {
10538 return NULL;
10539 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010540 expr_ty _res = NULL;
10541 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010542 { // single_subscript_attribute_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010543 if (p->error_indicator) {
10544 return NULL;
10545 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010546 expr_ty single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010547 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010548 (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p)) // single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010549 )
10550 {
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010551 _res = single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010552 goto done;
10553 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010554 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010555 }
10556 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010557 if (p->error_indicator) {
10558 return NULL;
10559 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010560 expr_ty a;
10561 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010562 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010563 )
10564 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010565 _res = _PyPegen_set_expr_context ( p , a , Store );
10566 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010567 p->error_indicator = 1;
10568 return NULL;
10569 }
10570 goto done;
10571 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010572 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010573 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010574 { // '(' single_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010575 if (p->error_indicator) {
10576 return NULL;
10577 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010578 Token * _literal;
10579 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010580 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010581 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010582 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010583 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010584 (a = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010585 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010586 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010587 )
10588 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010589 _res = a;
10590 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010591 p->error_indicator = 1;
10592 return NULL;
10593 }
10594 goto done;
10595 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010596 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010597 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010598 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010599 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010600 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010601}
10602
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010603// single_subscript_attribute_target:
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010604// | t_primary '.' NAME !t_lookahead
10605// | t_primary '[' slices ']' !t_lookahead
10606static expr_ty
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010607single_subscript_attribute_target_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010608{
10609 if (p->error_indicator) {
10610 return NULL;
10611 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010612 expr_ty _res = NULL;
10613 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010614 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10615 p->error_indicator = 1;
10616 return NULL;
10617 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010618 int _start_lineno = p->tokens[_mark]->lineno;
10619 UNUSED(_start_lineno); // Only used by EXTRA macro
10620 int _start_col_offset = p->tokens[_mark]->col_offset;
10621 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010622 { // t_primary '.' NAME !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010623 if (p->error_indicator) {
10624 return NULL;
10625 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010626 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010627 expr_ty a;
10628 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010629 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010630 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010631 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010632 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010633 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010634 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010635 &&
10636 _PyPegen_lookahead(0, t_lookahead_rule, p)
10637 )
10638 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010639 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10640 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010641 return NULL;
10642 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010643 int _end_lineno = _token->end_lineno;
10644 UNUSED(_end_lineno); // Only used by EXTRA macro
10645 int _end_col_offset = _token->end_col_offset;
10646 UNUSED(_end_col_offset); // Only used by EXTRA macro
10647 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
10648 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010649 p->error_indicator = 1;
10650 return NULL;
10651 }
10652 goto done;
10653 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010654 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010655 }
10656 { // t_primary '[' slices ']' !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010657 if (p->error_indicator) {
10658 return NULL;
10659 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010660 Token * _literal;
10661 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010662 expr_ty a;
10663 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010664 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010665 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010666 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010667 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010668 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010669 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010670 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010671 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010672 &&
10673 _PyPegen_lookahead(0, t_lookahead_rule, p)
10674 )
10675 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010676 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10677 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010678 return NULL;
10679 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010680 int _end_lineno = _token->end_lineno;
10681 UNUSED(_end_lineno); // Only used by EXTRA macro
10682 int _end_col_offset = _token->end_col_offset;
10683 UNUSED(_end_col_offset); // Only used by EXTRA macro
10684 _res = _Py_Subscript ( a , b , Store , EXTRA );
10685 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010686 p->error_indicator = 1;
10687 return NULL;
10688 }
10689 goto done;
10690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010691 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010692 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010693 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010694 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010695 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010696}
10697
10698// del_targets: ','.del_target+ ','?
10699static asdl_seq*
10700del_targets_rule(Parser *p)
10701{
10702 if (p->error_indicator) {
10703 return NULL;
10704 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010705 asdl_seq* _res = NULL;
10706 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010707 { // ','.del_target+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010708 if (p->error_indicator) {
10709 return NULL;
10710 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010711 void *_opt_var;
10712 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010713 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010714 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010715 (a = _gather_121_rule(p)) // ','.del_target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010716 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010717 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010718 )
10719 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010720 _res = a;
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 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010729 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010730 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010731 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010732}
10733
10734// del_target:
Shantanu27c0d9b2020-05-11 14:53:58 -070010735// | t_primary '.' NAME &del_target_end
10736// | t_primary '[' slices ']' &del_target_end
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010737// | del_t_atom
10738static expr_ty
10739del_target_rule(Parser *p)
10740{
10741 if (p->error_indicator) {
10742 return NULL;
10743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010744 expr_ty _res = NULL;
10745 if (_PyPegen_is_memoized(p, del_target_type, &_res))
10746 return _res;
10747 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010748 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10749 p->error_indicator = 1;
10750 return NULL;
10751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010752 int _start_lineno = p->tokens[_mark]->lineno;
10753 UNUSED(_start_lineno); // Only used by EXTRA macro
10754 int _start_col_offset = p->tokens[_mark]->col_offset;
10755 UNUSED(_start_col_offset); // Only used by EXTRA macro
Shantanu27c0d9b2020-05-11 14:53:58 -070010756 { // t_primary '.' NAME &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010757 if (p->error_indicator) {
10758 return NULL;
10759 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010760 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010761 expr_ty a;
10762 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010763 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010764 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010765 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010766 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010767 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010768 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010769 &&
Shantanu27c0d9b2020-05-11 14:53:58 -070010770 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010771 )
10772 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010773 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10774 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010775 return NULL;
10776 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010777 int _end_lineno = _token->end_lineno;
10778 UNUSED(_end_lineno); // Only used by EXTRA macro
10779 int _end_col_offset = _token->end_col_offset;
10780 UNUSED(_end_col_offset); // Only used by EXTRA macro
10781 _res = _Py_Attribute ( a , b -> v . Name . id , Del , EXTRA );
10782 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010783 p->error_indicator = 1;
10784 return NULL;
10785 }
10786 goto done;
10787 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010788 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010789 }
Shantanu27c0d9b2020-05-11 14:53:58 -070010790 { // t_primary '[' slices ']' &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010791 if (p->error_indicator) {
10792 return NULL;
10793 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010794 Token * _literal;
10795 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010796 expr_ty a;
10797 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010798 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010799 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010800 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010801 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010802 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010803 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010804 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010805 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010806 &&
Shantanu27c0d9b2020-05-11 14:53:58 -070010807 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010808 )
10809 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010810 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10811 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010812 return NULL;
10813 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010814 int _end_lineno = _token->end_lineno;
10815 UNUSED(_end_lineno); // Only used by EXTRA macro
10816 int _end_col_offset = _token->end_col_offset;
10817 UNUSED(_end_col_offset); // Only used by EXTRA macro
10818 _res = _Py_Subscript ( a , b , Del , EXTRA );
10819 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010820 p->error_indicator = 1;
10821 return NULL;
10822 }
10823 goto done;
10824 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010825 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010826 }
10827 { // del_t_atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010828 if (p->error_indicator) {
10829 return NULL;
10830 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010831 expr_ty del_t_atom_var;
10832 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010833 (del_t_atom_var = del_t_atom_rule(p)) // del_t_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010834 )
10835 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010836 _res = del_t_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010837 goto done;
10838 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010839 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010841 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010842 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010843 _PyPegen_insert_memo(p, _mark, del_target_type, _res);
10844 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010845}
10846
Shantanu27c0d9b2020-05-11 14:53:58 -070010847// del_t_atom:
10848// | NAME &del_target_end
10849// | '(' del_target ')'
10850// | '(' del_targets? ')'
10851// | '[' del_targets? ']'
10852// | invalid_del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010853static expr_ty
10854del_t_atom_rule(Parser *p)
10855{
10856 if (p->error_indicator) {
10857 return NULL;
10858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010859 expr_ty _res = NULL;
10860 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010861 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10862 p->error_indicator = 1;
10863 return NULL;
10864 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010865 int _start_lineno = p->tokens[_mark]->lineno;
10866 UNUSED(_start_lineno); // Only used by EXTRA macro
10867 int _start_col_offset = p->tokens[_mark]->col_offset;
10868 UNUSED(_start_col_offset); // Only used by EXTRA macro
Shantanu27c0d9b2020-05-11 14:53:58 -070010869 { // NAME &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010870 if (p->error_indicator) {
10871 return NULL;
10872 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010873 expr_ty a;
10874 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010875 (a = _PyPegen_name_token(p)) // NAME
Shantanu27c0d9b2020-05-11 14:53:58 -070010876 &&
10877 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010878 )
10879 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010880 _res = _PyPegen_set_expr_context ( p , a , Del );
10881 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010882 p->error_indicator = 1;
10883 return NULL;
10884 }
10885 goto done;
10886 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010887 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010888 }
10889 { // '(' del_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010890 if (p->error_indicator) {
10891 return NULL;
10892 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010893 Token * _literal;
10894 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010895 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010896 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010897 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010898 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010899 (a = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010900 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010901 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010902 )
10903 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010904 _res = _PyPegen_set_expr_context ( p , a , Del );
10905 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010906 p->error_indicator = 1;
10907 return NULL;
10908 }
10909 goto done;
10910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010911 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010912 }
10913 { // '(' del_targets? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010914 if (p->error_indicator) {
10915 return NULL;
10916 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010917 Token * _literal;
10918 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010919 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010920 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010921 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010922 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010923 (a = del_targets_rule(p), 1) // del_targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010924 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010925 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010926 )
10927 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010928 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10929 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010930 return NULL;
10931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010932 int _end_lineno = _token->end_lineno;
10933 UNUSED(_end_lineno); // Only used by EXTRA macro
10934 int _end_col_offset = _token->end_col_offset;
10935 UNUSED(_end_col_offset); // Only used by EXTRA macro
10936 _res = _Py_Tuple ( a , Del , EXTRA );
10937 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010938 p->error_indicator = 1;
10939 return NULL;
10940 }
10941 goto done;
10942 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010943 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010944 }
10945 { // '[' del_targets? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010946 if (p->error_indicator) {
10947 return NULL;
10948 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010949 Token * _literal;
10950 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010951 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010952 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010953 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010954 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010955 (a = del_targets_rule(p), 1) // del_targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010956 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010957 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010958 )
10959 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010960 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10961 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010962 return NULL;
10963 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010964 int _end_lineno = _token->end_lineno;
10965 UNUSED(_end_lineno); // Only used by EXTRA macro
10966 int _end_col_offset = _token->end_col_offset;
10967 UNUSED(_end_col_offset); // Only used by EXTRA macro
10968 _res = _Py_List ( a , Del , EXTRA );
10969 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010970 p->error_indicator = 1;
10971 return NULL;
10972 }
10973 goto done;
10974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010975 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010976 }
Shantanu27c0d9b2020-05-11 14:53:58 -070010977 { // invalid_del_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010978 if (p->error_indicator) {
10979 return NULL;
10980 }
Shantanu27c0d9b2020-05-11 14:53:58 -070010981 void *invalid_del_target_var;
10982 if (
10983 (invalid_del_target_var = invalid_del_target_rule(p)) // invalid_del_target
10984 )
10985 {
10986 _res = invalid_del_target_var;
10987 goto done;
10988 }
10989 p->mark = _mark;
10990 }
10991 _res = NULL;
10992 done:
10993 return _res;
10994}
10995
10996// del_target_end: ')' | ']' | ',' | ';' | NEWLINE
10997static void *
10998del_target_end_rule(Parser *p)
10999{
11000 if (p->error_indicator) {
11001 return NULL;
11002 }
11003 void * _res = NULL;
11004 int _mark = p->mark;
11005 { // ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011006 if (p->error_indicator) {
11007 return NULL;
11008 }
Shantanu27c0d9b2020-05-11 14:53:58 -070011009 Token * _literal;
11010 if (
11011 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
11012 )
11013 {
11014 _res = _literal;
11015 goto done;
11016 }
11017 p->mark = _mark;
11018 }
11019 { // ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011020 if (p->error_indicator) {
11021 return NULL;
11022 }
Shantanu27c0d9b2020-05-11 14:53:58 -070011023 Token * _literal;
11024 if (
11025 (_literal = _PyPegen_expect_token(p, 10)) // token=']'
11026 )
11027 {
11028 _res = _literal;
11029 goto done;
11030 }
11031 p->mark = _mark;
11032 }
11033 { // ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011034 if (p->error_indicator) {
11035 return NULL;
11036 }
Shantanu27c0d9b2020-05-11 14:53:58 -070011037 Token * _literal;
11038 if (
11039 (_literal = _PyPegen_expect_token(p, 12)) // token=','
11040 )
11041 {
11042 _res = _literal;
11043 goto done;
11044 }
11045 p->mark = _mark;
11046 }
11047 { // ';'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011048 if (p->error_indicator) {
11049 return NULL;
11050 }
Shantanu27c0d9b2020-05-11 14:53:58 -070011051 Token * _literal;
11052 if (
11053 (_literal = _PyPegen_expect_token(p, 13)) // token=';'
11054 )
11055 {
11056 _res = _literal;
11057 goto done;
11058 }
11059 p->mark = _mark;
11060 }
11061 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011062 if (p->error_indicator) {
11063 return NULL;
11064 }
Shantanu27c0d9b2020-05-11 14:53:58 -070011065 Token * newline_var;
11066 if (
11067 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
11068 )
11069 {
11070 _res = newline_var;
11071 goto done;
11072 }
11073 p->mark = _mark;
11074 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011075 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011076 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011077 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011078}
11079
11080// targets: ','.target+ ','?
11081static asdl_seq*
11082targets_rule(Parser *p)
11083{
11084 if (p->error_indicator) {
11085 return NULL;
11086 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011087 asdl_seq* _res = NULL;
11088 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011089 { // ','.target+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011090 if (p->error_indicator) {
11091 return NULL;
11092 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011093 void *_opt_var;
11094 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011095 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011096 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011097 (a = _gather_123_rule(p)) // ','.target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011098 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011099 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011100 )
11101 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011102 _res = a;
11103 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011104 p->error_indicator = 1;
11105 return NULL;
11106 }
11107 goto done;
11108 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011109 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011110 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011111 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011112 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011113 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011114}
11115
11116// target:
11117// | t_primary '.' NAME !t_lookahead
11118// | t_primary '[' slices ']' !t_lookahead
11119// | t_atom
11120static expr_ty
11121target_rule(Parser *p)
11122{
11123 if (p->error_indicator) {
11124 return NULL;
11125 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011126 expr_ty _res = NULL;
11127 if (_PyPegen_is_memoized(p, target_type, &_res))
11128 return _res;
11129 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011130 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11131 p->error_indicator = 1;
11132 return NULL;
11133 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011134 int _start_lineno = p->tokens[_mark]->lineno;
11135 UNUSED(_start_lineno); // Only used by EXTRA macro
11136 int _start_col_offset = p->tokens[_mark]->col_offset;
11137 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011138 { // t_primary '.' NAME !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011139 if (p->error_indicator) {
11140 return NULL;
11141 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011142 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011143 expr_ty a;
11144 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011145 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011146 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011147 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011148 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011149 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011150 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011151 &&
11152 _PyPegen_lookahead(0, t_lookahead_rule, p)
11153 )
11154 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011155 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11156 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011157 return NULL;
11158 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011159 int _end_lineno = _token->end_lineno;
11160 UNUSED(_end_lineno); // Only used by EXTRA macro
11161 int _end_col_offset = _token->end_col_offset;
11162 UNUSED(_end_col_offset); // Only used by EXTRA macro
11163 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
11164 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011165 p->error_indicator = 1;
11166 return NULL;
11167 }
11168 goto done;
11169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011170 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011171 }
11172 { // t_primary '[' slices ']' !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011173 if (p->error_indicator) {
11174 return NULL;
11175 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011176 Token * _literal;
11177 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011178 expr_ty a;
11179 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011180 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011181 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011182 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011183 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011184 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011185 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011186 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011187 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011188 &&
11189 _PyPegen_lookahead(0, t_lookahead_rule, p)
11190 )
11191 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011192 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11193 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011194 return NULL;
11195 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011196 int _end_lineno = _token->end_lineno;
11197 UNUSED(_end_lineno); // Only used by EXTRA macro
11198 int _end_col_offset = _token->end_col_offset;
11199 UNUSED(_end_col_offset); // Only used by EXTRA macro
11200 _res = _Py_Subscript ( a , b , Store , EXTRA );
11201 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011202 p->error_indicator = 1;
11203 return NULL;
11204 }
11205 goto done;
11206 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011207 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011208 }
11209 { // t_atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011210 if (p->error_indicator) {
11211 return NULL;
11212 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011213 expr_ty t_atom_var;
11214 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011215 (t_atom_var = t_atom_rule(p)) // t_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011216 )
11217 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011218 _res = t_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011219 goto done;
11220 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011221 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011223 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011224 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011225 _PyPegen_insert_memo(p, _mark, target_type, _res);
11226 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011227}
11228
11229// Left-recursive
11230// t_primary:
11231// | t_primary '.' NAME &t_lookahead
11232// | t_primary '[' slices ']' &t_lookahead
11233// | t_primary genexp &t_lookahead
11234// | t_primary '(' arguments? ')' &t_lookahead
11235// | atom &t_lookahead
11236static expr_ty t_primary_raw(Parser *);
11237static expr_ty
11238t_primary_rule(Parser *p)
11239{
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011240 expr_ty _res = NULL;
11241 if (_PyPegen_is_memoized(p, t_primary_type, &_res))
11242 return _res;
11243 int _mark = p->mark;
11244 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011245 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011246 int tmpvar_8 = _PyPegen_update_memo(p, _mark, t_primary_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011247 if (tmpvar_8) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011248 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011249 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011250 p->mark = _mark;
11251 void *_raw = t_primary_raw(p);
11252 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011253 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011254 _resmark = p->mark;
11255 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011256 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011257 p->mark = _resmark;
11258 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011259}
11260static expr_ty
11261t_primary_raw(Parser *p)
11262{
11263 if (p->error_indicator) {
11264 return NULL;
11265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011266 expr_ty _res = NULL;
11267 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011268 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11269 p->error_indicator = 1;
11270 return NULL;
11271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011272 int _start_lineno = p->tokens[_mark]->lineno;
11273 UNUSED(_start_lineno); // Only used by EXTRA macro
11274 int _start_col_offset = p->tokens[_mark]->col_offset;
11275 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011276 { // t_primary '.' NAME &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011277 if (p->error_indicator) {
11278 return NULL;
11279 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011280 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011281 expr_ty a;
11282 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011283 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011284 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011285 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011286 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011287 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011288 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011289 &&
11290 _PyPegen_lookahead(1, t_lookahead_rule, p)
11291 )
11292 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011293 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11294 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011295 return NULL;
11296 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011297 int _end_lineno = _token->end_lineno;
11298 UNUSED(_end_lineno); // Only used by EXTRA macro
11299 int _end_col_offset = _token->end_col_offset;
11300 UNUSED(_end_col_offset); // Only used by EXTRA macro
11301 _res = _Py_Attribute ( a , b -> v . Name . id , Load , EXTRA );
11302 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011303 p->error_indicator = 1;
11304 return NULL;
11305 }
11306 goto done;
11307 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011308 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011309 }
11310 { // t_primary '[' slices ']' &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011311 if (p->error_indicator) {
11312 return NULL;
11313 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011314 Token * _literal;
11315 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011316 expr_ty a;
11317 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011318 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011319 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011320 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011321 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011322 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011323 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011324 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011325 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011326 &&
11327 _PyPegen_lookahead(1, t_lookahead_rule, p)
11328 )
11329 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011330 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11331 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011332 return NULL;
11333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011334 int _end_lineno = _token->end_lineno;
11335 UNUSED(_end_lineno); // Only used by EXTRA macro
11336 int _end_col_offset = _token->end_col_offset;
11337 UNUSED(_end_col_offset); // Only used by EXTRA macro
11338 _res = _Py_Subscript ( a , b , Load , EXTRA );
11339 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011340 p->error_indicator = 1;
11341 return NULL;
11342 }
11343 goto done;
11344 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011345 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011346 }
11347 { // t_primary genexp &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011348 if (p->error_indicator) {
11349 return NULL;
11350 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011351 expr_ty a;
11352 expr_ty b;
11353 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011354 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011355 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011356 (b = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011357 &&
11358 _PyPegen_lookahead(1, t_lookahead_rule, p)
11359 )
11360 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011361 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11362 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011363 return NULL;
11364 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011365 int _end_lineno = _token->end_lineno;
11366 UNUSED(_end_lineno); // Only used by EXTRA macro
11367 int _end_col_offset = _token->end_col_offset;
11368 UNUSED(_end_col_offset); // Only used by EXTRA macro
11369 _res = _Py_Call ( a , CHECK ( _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
11370 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011371 p->error_indicator = 1;
11372 return NULL;
11373 }
11374 goto done;
11375 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011376 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011377 }
11378 { // t_primary '(' arguments? ')' &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011379 if (p->error_indicator) {
11380 return NULL;
11381 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011382 Token * _literal;
11383 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011384 expr_ty a;
11385 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011386 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011387 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011388 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011389 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011390 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011391 (b = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011392 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011393 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011394 &&
11395 _PyPegen_lookahead(1, t_lookahead_rule, p)
11396 )
11397 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011398 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11399 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011400 return NULL;
11401 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011402 int _end_lineno = _token->end_lineno;
11403 UNUSED(_end_lineno); // Only used by EXTRA macro
11404 int _end_col_offset = _token->end_col_offset;
11405 UNUSED(_end_col_offset); // Only used by EXTRA macro
11406 _res = _Py_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
11407 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011408 p->error_indicator = 1;
11409 return NULL;
11410 }
11411 goto done;
11412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011413 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011414 }
11415 { // atom &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011416 if (p->error_indicator) {
11417 return NULL;
11418 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011419 expr_ty a;
11420 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011421 (a = atom_rule(p)) // atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011422 &&
11423 _PyPegen_lookahead(1, t_lookahead_rule, p)
11424 )
11425 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011426 _res = a;
11427 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011428 p->error_indicator = 1;
11429 return NULL;
11430 }
11431 goto done;
11432 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011433 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011435 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011436 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011437 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011438}
11439
11440// t_lookahead: '(' | '[' | '.'
11441static void *
11442t_lookahead_rule(Parser *p)
11443{
11444 if (p->error_indicator) {
11445 return NULL;
11446 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011447 void * _res = NULL;
11448 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011449 { // '('
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011450 if (p->error_indicator) {
11451 return NULL;
11452 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011453 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011454 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011455 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011456 )
11457 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011458 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011459 goto done;
11460 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011461 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011462 }
11463 { // '['
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011464 if (p->error_indicator) {
11465 return NULL;
11466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011467 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011468 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011469 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011470 )
11471 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011472 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011473 goto done;
11474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011475 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011476 }
11477 { // '.'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011478 if (p->error_indicator) {
11479 return NULL;
11480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011481 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011482 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011483 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011484 )
11485 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011486 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011487 goto done;
11488 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011489 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011491 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011492 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011493 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011494}
11495
11496// t_atom: NAME | '(' target ')' | '(' targets? ')' | '[' targets? ']'
11497static expr_ty
11498t_atom_rule(Parser *p)
11499{
11500 if (p->error_indicator) {
11501 return NULL;
11502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011503 expr_ty _res = NULL;
11504 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011505 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11506 p->error_indicator = 1;
11507 return NULL;
11508 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011509 int _start_lineno = p->tokens[_mark]->lineno;
11510 UNUSED(_start_lineno); // Only used by EXTRA macro
11511 int _start_col_offset = p->tokens[_mark]->col_offset;
11512 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011513 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011514 if (p->error_indicator) {
11515 return NULL;
11516 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011517 expr_ty a;
11518 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011519 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011520 )
11521 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011522 _res = _PyPegen_set_expr_context ( p , a , Store );
11523 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011524 p->error_indicator = 1;
11525 return NULL;
11526 }
11527 goto done;
11528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011529 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011530 }
11531 { // '(' target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011532 if (p->error_indicator) {
11533 return NULL;
11534 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011535 Token * _literal;
11536 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011537 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011538 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011539 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011540 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011541 (a = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011542 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011543 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011544 )
11545 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011546 _res = _PyPegen_set_expr_context ( p , a , Store );
11547 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011548 p->error_indicator = 1;
11549 return NULL;
11550 }
11551 goto done;
11552 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011553 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011554 }
11555 { // '(' targets? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011556 if (p->error_indicator) {
11557 return NULL;
11558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011559 Token * _literal;
11560 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011561 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011562 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011563 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011564 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011565 (b = targets_rule(p), 1) // targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011566 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011567 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011568 )
11569 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011570 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11571 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011572 return NULL;
11573 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011574 int _end_lineno = _token->end_lineno;
11575 UNUSED(_end_lineno); // Only used by EXTRA macro
11576 int _end_col_offset = _token->end_col_offset;
11577 UNUSED(_end_col_offset); // Only used by EXTRA macro
11578 _res = _Py_Tuple ( b , Store , EXTRA );
11579 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011580 p->error_indicator = 1;
11581 return NULL;
11582 }
11583 goto done;
11584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011585 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011586 }
11587 { // '[' targets? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011588 if (p->error_indicator) {
11589 return NULL;
11590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011591 Token * _literal;
11592 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011593 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011594 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011595 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011596 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011597 (b = targets_rule(p), 1) // targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011598 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011599 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011600 )
11601 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011602 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11603 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011604 return NULL;
11605 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011606 int _end_lineno = _token->end_lineno;
11607 UNUSED(_end_lineno); // Only used by EXTRA macro
11608 int _end_col_offset = _token->end_col_offset;
11609 UNUSED(_end_col_offset); // Only used by EXTRA macro
11610 _res = _Py_List ( b , Store , EXTRA );
11611 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011612 p->error_indicator = 1;
11613 return NULL;
11614 }
11615 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
11624// incorrect_arguments:
11625// | args ',' '*'
11626// | expression for_if_clauses ',' [args | expression for_if_clauses]
11627// | args ',' args
11628static void *
11629incorrect_arguments_rule(Parser *p)
11630{
11631 if (p->error_indicator) {
11632 return NULL;
11633 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011634 void * _res = NULL;
11635 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011636 { // args ',' '*'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011637 if (p->error_indicator) {
11638 return NULL;
11639 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011640 Token * _literal;
11641 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011642 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011643 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011644 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011645 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011646 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011647 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011648 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011649 )
11650 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011651 _res = RAISE_SYNTAX_ERROR ( "iterable argument unpacking follows keyword argument unpacking" );
11652 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011653 p->error_indicator = 1;
11654 return NULL;
11655 }
11656 goto done;
11657 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011658 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011659 }
11660 { // expression for_if_clauses ',' [args | expression for_if_clauses]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011661 if (p->error_indicator) {
11662 return NULL;
11663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011664 Token * _literal;
11665 void *_opt_var;
11666 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011667 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011668 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011669 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011670 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011671 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011672 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011673 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011674 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011675 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011676 (_opt_var = _tmp_125_rule(p), 1) // [args | expression for_if_clauses]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011677 )
11678 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011679 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "Generator expression must be parenthesized" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011680 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011681 p->error_indicator = 1;
11682 return NULL;
11683 }
11684 goto done;
11685 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011686 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011687 }
11688 { // args ',' args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011689 if (p->error_indicator) {
11690 return NULL;
11691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011692 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011693 expr_ty a;
11694 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011695 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011696 (a = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011697 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011698 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011699 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011700 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011701 )
11702 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011703 _res = _PyPegen_arguments_parsing_error ( p , a );
11704 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011705 p->error_indicator = 1;
11706 return NULL;
11707 }
11708 goto done;
11709 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011710 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011711 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011712 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011713 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011714 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011715}
11716
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011717// invalid_kwarg: expression '='
11718static void *
11719invalid_kwarg_rule(Parser *p)
11720{
11721 if (p->error_indicator) {
11722 return NULL;
11723 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011724 void * _res = NULL;
11725 int _mark = p->mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011726 { // expression '='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011727 if (p->error_indicator) {
11728 return NULL;
11729 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011730 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011731 expr_ty a;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011732 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011733 (a = expression_rule(p)) // expression
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011734 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011735 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011736 )
11737 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011738 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression cannot contain assignment, perhaps you meant \"==\"?" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011739 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011740 p->error_indicator = 1;
11741 return NULL;
11742 }
11743 goto done;
11744 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011745 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011746 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011747 _res = NULL;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011748 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011749 return _res;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011750}
11751
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011752// invalid_named_expression: expression ':=' expression
11753static void *
11754invalid_named_expression_rule(Parser *p)
11755{
11756 if (p->error_indicator) {
11757 return NULL;
11758 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011759 void * _res = NULL;
11760 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011761 { // expression ':=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011762 if (p->error_indicator) {
11763 return NULL;
11764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011765 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011766 expr_ty a;
11767 expr_ty expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011768 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011769 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011770 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011771 (_literal = _PyPegen_expect_token(p, 53)) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011772 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011773 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011774 )
11775 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011776 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use assignment expressions with %s" , _PyPegen_get_expr_name ( a ) );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011777 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011778 p->error_indicator = 1;
11779 return NULL;
11780 }
11781 goto done;
11782 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011783 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011784 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011785 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011786 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011787 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011788}
11789
11790// invalid_assignment:
11791// | list ':'
11792// | tuple ':'
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011793// | star_named_expression ',' star_named_expressions* ':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011794// | expression ':' expression ['=' annotated_rhs]
Pablo Galindo16ab0702020-05-15 02:04:52 +010011795// | star_expressions '=' (yield_expr | star_expressions)
11796// | star_expressions augassign (yield_expr | star_expressions)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011797static void *
11798invalid_assignment_rule(Parser *p)
11799{
11800 if (p->error_indicator) {
11801 return NULL;
11802 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011803 void * _res = NULL;
11804 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011805 { // list ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011806 if (p->error_indicator) {
11807 return NULL;
11808 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011809 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011810 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011811 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011812 (a = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011813 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011814 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011815 )
11816 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011817 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not list) can be annotated" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011818 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011819 p->error_indicator = 1;
11820 return NULL;
11821 }
11822 goto done;
11823 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011824 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011825 }
11826 { // tuple ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011827 if (p->error_indicator) {
11828 return NULL;
11829 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011830 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011831 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011832 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011833 (a = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011834 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011835 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011836 )
11837 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011838 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
11839 if (_res == NULL && PyErr_Occurred()) {
11840 p->error_indicator = 1;
11841 return NULL;
11842 }
11843 goto done;
11844 }
11845 p->mark = _mark;
11846 }
11847 { // star_named_expression ',' star_named_expressions* ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011848 if (p->error_indicator) {
11849 return NULL;
11850 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011851 Token * _literal;
11852 Token * _literal_1;
11853 asdl_seq * _loop0_126_var;
11854 expr_ty a;
11855 if (
11856 (a = star_named_expression_rule(p)) // star_named_expression
11857 &&
11858 (_literal = _PyPegen_expect_token(p, 12)) // token=','
11859 &&
11860 (_loop0_126_var = _loop0_126_rule(p)) // star_named_expressions*
11861 &&
11862 (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':'
11863 )
11864 {
11865 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011866 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011867 p->error_indicator = 1;
11868 return NULL;
11869 }
11870 goto done;
11871 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011872 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011873 }
11874 { // expression ':' expression ['=' annotated_rhs]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011875 if (p->error_indicator) {
11876 return NULL;
11877 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011878 Token * _literal;
11879 void *_opt_var;
11880 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011881 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011882 expr_ty expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011883 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011884 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011885 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011886 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011887 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011888 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011889 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011890 (_opt_var = _tmp_127_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011891 )
11892 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011893 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "illegal target for annotation" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011894 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011895 p->error_indicator = 1;
11896 return NULL;
11897 }
11898 goto done;
11899 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011900 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011901 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010011902 { // star_expressions '=' (yield_expr | star_expressions)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011903 if (p->error_indicator) {
11904 return NULL;
11905 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010011906 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070011907 void *_tmp_128_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011908 expr_ty a;
11909 if (
Pablo Galindo16ab0702020-05-15 02:04:52 +010011910 (a = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011911 &&
Pablo Galindo16ab0702020-05-15 02:04:52 +010011912 (_literal = _PyPegen_expect_token(p, 22)) // token='='
11913 &&
11914 (_tmp_128_var = _tmp_128_rule(p)) // yield_expr | star_expressions
11915 )
11916 {
11917 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( _PyPegen_get_invalid_target ( a ) , "cannot assign to %s" , _PyPegen_get_expr_name ( _PyPegen_get_invalid_target ( a ) ) );
11918 if (_res == NULL && PyErr_Occurred()) {
11919 p->error_indicator = 1;
11920 return NULL;
11921 }
11922 goto done;
11923 }
11924 p->mark = _mark;
11925 }
11926 { // star_expressions augassign (yield_expr | star_expressions)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011927 if (p->error_indicator) {
11928 return NULL;
11929 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010011930 void *_tmp_129_var;
11931 expr_ty a;
11932 AugOperator* augassign_var;
11933 if (
11934 (a = star_expressions_rule(p)) // star_expressions
11935 &&
11936 (augassign_var = augassign_rule(p)) // augassign
Pablo Galindo2b74c832020-04-27 18:02:07 +010011937 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011938 (_tmp_129_var = _tmp_129_rule(p)) // yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011939 )
11940 {
Pablo Galindo16ab0702020-05-15 02:04:52 +010011941 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "'%s' is an illegal expression for augmented assignment" , _PyPegen_get_expr_name ( a ) );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011942 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011943 p->error_indicator = 1;
11944 return NULL;
11945 }
11946 goto done;
11947 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011948 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011949 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011950 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011951 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011952 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011953}
11954
11955// invalid_block: NEWLINE !INDENT
11956static void *
11957invalid_block_rule(Parser *p)
11958{
11959 if (p->error_indicator) {
11960 return NULL;
11961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011962 void * _res = NULL;
11963 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011964 { // NEWLINE !INDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011965 if (p->error_indicator) {
11966 return NULL;
11967 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010011968 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011969 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011970 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011971 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011972 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT) // token=INDENT
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011973 )
11974 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011975 _res = RAISE_INDENTATION_ERROR ( "expected an indented block" );
11976 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011977 p->error_indicator = 1;
11978 return NULL;
11979 }
11980 goto done;
11981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011982 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011984 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011985 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011986 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011987}
11988
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011989// invalid_comprehension: ('[' | '(' | '{') starred_expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011990static void *
11991invalid_comprehension_rule(Parser *p)
11992{
11993 if (p->error_indicator) {
11994 return NULL;
11995 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011996 void * _res = NULL;
11997 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011998 { // ('[' | '(' | '{') starred_expression for_if_clauses
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011999 if (p->error_indicator) {
12000 return NULL;
12001 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012002 void *_tmp_130_var;
12003 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012004 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012005 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012006 (_tmp_130_var = _tmp_130_rule(p)) // '[' | '(' | '{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012007 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012008 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012009 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012010 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012011 )
12012 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012013 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "iterable unpacking cannot be used in comprehension" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012014 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012015 p->error_indicator = 1;
12016 return NULL;
12017 }
12018 goto done;
12019 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012020 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012022 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012023 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012024 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012025}
12026
12027// invalid_parameters:
Guido van Rossumc001c092020-04-30 12:12:19 -070012028// | param_no_default* (slash_with_default | param_with_default+) param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012029static void *
12030invalid_parameters_rule(Parser *p)
12031{
12032 if (p->error_indicator) {
12033 return NULL;
12034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012035 void * _res = NULL;
12036 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012037 { // param_no_default* (slash_with_default | param_with_default+) param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012038 if (p->error_indicator) {
12039 return NULL;
12040 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012041 asdl_seq * _loop0_131_var;
12042 void *_tmp_132_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012043 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012044 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012045 (_loop0_131_var = _loop0_131_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012046 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012047 (_tmp_132_var = _tmp_132_rule(p)) // slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012048 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012049 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012050 )
12051 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012052 _res = RAISE_SYNTAX_ERROR ( "non-default argument follows default argument" );
12053 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012054 p->error_indicator = 1;
12055 return NULL;
12056 }
12057 goto done;
12058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012059 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012060 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012061 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012062 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012063 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012064}
12065
Lysandros Nikolaou75b863a2020-05-18 22:14:47 +030012066// invalid_star_etc: '*' (')' | ',' (')' | '**')) | '*' ',' TYPE_COMMENT
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012067static void *
12068invalid_star_etc_rule(Parser *p)
12069{
12070 if (p->error_indicator) {
12071 return NULL;
12072 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012073 void * _res = NULL;
12074 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012075 { // '*' (')' | ',' (')' | '**'))
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012076 if (p->error_indicator) {
12077 return NULL;
12078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012079 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012080 void *_tmp_133_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012081 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012082 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012083 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012084 (_tmp_133_var = _tmp_133_rule(p)) // ')' | ',' (')' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012085 )
12086 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012087 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
12088 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012089 p->error_indicator = 1;
12090 return NULL;
12091 }
12092 goto done;
12093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012094 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012095 }
Lysandros Nikolaou75b863a2020-05-18 22:14:47 +030012096 { // '*' ',' TYPE_COMMENT
Pablo Galindoced4e5c2020-05-18 22:47:51 +010012097 if (p->error_indicator) {
12098 return NULL;
12099 }
Lysandros Nikolaou75b863a2020-05-18 22:14:47 +030012100 Token * _literal;
12101 Token * _literal_1;
12102 Token * type_comment_var;
12103 if (
12104 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
12105 &&
12106 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
12107 &&
12108 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
12109 )
12110 {
12111 _res = RAISE_SYNTAX_ERROR ( "bare * has associated type comment" );
12112 if (_res == NULL && PyErr_Occurred()) {
12113 p->error_indicator = 1;
12114 return NULL;
12115 }
12116 goto done;
12117 }
12118 p->mark = _mark;
12119 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012120 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012121 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012122 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012123}
12124
12125// invalid_lambda_star_etc: '*' (':' | ',' (':' | '**'))
12126static void *
12127invalid_lambda_star_etc_rule(Parser *p)
12128{
12129 if (p->error_indicator) {
12130 return NULL;
12131 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012132 void * _res = NULL;
12133 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012134 { // '*' (':' | ',' (':' | '**'))
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012135 if (p->error_indicator) {
12136 return NULL;
12137 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012138 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012139 void *_tmp_134_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012140 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012141 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012142 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012143 (_tmp_134_var = _tmp_134_rule(p)) // ':' | ',' (':' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012144 )
12145 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012146 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
12147 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012148 p->error_indicator = 1;
12149 return NULL;
12150 }
12151 goto done;
12152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012153 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012154 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012155 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012156 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012157 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012158}
12159
Guido van Rossumc001c092020-04-30 12:12:19 -070012160// invalid_double_type_comments: TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
12161static void *
12162invalid_double_type_comments_rule(Parser *p)
12163{
12164 if (p->error_indicator) {
12165 return NULL;
12166 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012167 void * _res = NULL;
12168 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012169 { // TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012170 if (p->error_indicator) {
12171 return NULL;
12172 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010012173 Token * indent_var;
12174 Token * newline_var;
12175 Token * newline_var_1;
12176 Token * type_comment_var;
12177 Token * type_comment_var_1;
Guido van Rossumc001c092020-04-30 12:12:19 -070012178 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012179 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070012180 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012181 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070012182 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012183 (type_comment_var_1 = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070012184 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012185 (newline_var_1 = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070012186 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012187 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070012188 )
12189 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012190 _res = RAISE_SYNTAX_ERROR ( "Cannot have two type comments on def" );
12191 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012192 p->error_indicator = 1;
12193 return NULL;
12194 }
12195 goto done;
12196 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012197 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012199 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012200 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012201 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012202}
12203
Shantanu27c0d9b2020-05-11 14:53:58 -070012204// invalid_del_target: star_expression &del_target_end
12205static void *
12206invalid_del_target_rule(Parser *p)
12207{
12208 if (p->error_indicator) {
12209 return NULL;
12210 }
12211 void * _res = NULL;
12212 int _mark = p->mark;
12213 { // star_expression &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012214 if (p->error_indicator) {
12215 return NULL;
12216 }
Shantanu27c0d9b2020-05-11 14:53:58 -070012217 expr_ty a;
12218 if (
12219 (a = star_expression_rule(p)) // star_expression
12220 &&
12221 _PyPegen_lookahead(1, del_target_end_rule, p)
12222 )
12223 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012224 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot delete %s" , _PyPegen_get_expr_name ( a ) );
Shantanu27c0d9b2020-05-11 14:53:58 -070012225 if (_res == NULL && PyErr_Occurred()) {
12226 p->error_indicator = 1;
12227 return NULL;
12228 }
12229 goto done;
12230 }
12231 p->mark = _mark;
12232 }
12233 _res = NULL;
12234 done:
12235 return _res;
12236}
12237
Pablo Galindo275d7e12020-05-21 22:04:54 +010012238// invalid_import_from_targets: import_from_as_names ','
12239static void *
12240invalid_import_from_targets_rule(Parser *p)
12241{
12242 if (p->error_indicator) {
12243 return NULL;
12244 }
12245 void * _res = NULL;
12246 int _mark = p->mark;
12247 { // import_from_as_names ','
12248 if (p->error_indicator) {
12249 return NULL;
12250 }
12251 Token * _literal;
12252 asdl_seq* import_from_as_names_var;
12253 if (
12254 (import_from_as_names_var = import_from_as_names_rule(p)) // import_from_as_names
12255 &&
12256 (_literal = _PyPegen_expect_token(p, 12)) // token=','
12257 )
12258 {
12259 _res = RAISE_SYNTAX_ERROR ( "trailing comma not allowed without surrounding parentheses" );
12260 if (_res == NULL && PyErr_Occurred()) {
12261 p->error_indicator = 1;
12262 return NULL;
12263 }
12264 goto done;
12265 }
12266 p->mark = _mark;
12267 }
12268 _res = NULL;
12269 done:
12270 return _res;
12271}
12272
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012273// _loop0_1: NEWLINE
12274static asdl_seq *
12275_loop0_1_rule(Parser *p)
12276{
12277 if (p->error_indicator) {
12278 return NULL;
12279 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012280 void *_res = NULL;
12281 int _mark = p->mark;
12282 int _start_mark = p->mark;
12283 void **_children = PyMem_Malloc(sizeof(void *));
12284 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012285 p->error_indicator = 1;
12286 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012287 return NULL;
12288 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012289 ssize_t _children_capacity = 1;
12290 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012291 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012292 if (p->error_indicator) {
12293 return NULL;
12294 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010012295 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012296 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010012297 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012298 )
12299 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012300 _res = newline_var;
12301 if (_n == _children_capacity) {
12302 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012303 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12304 if (!_new_children) {
12305 p->error_indicator = 1;
12306 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012307 return NULL;
12308 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012309 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012310 }
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) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012318 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012319 p->error_indicator = 1;
12320 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012321 return NULL;
12322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012323 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12324 PyMem_Free(_children);
12325 _PyPegen_insert_memo(p, _start_mark, _loop0_1_type, _seq);
12326 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012327}
12328
Guido van Rossumc001c092020-04-30 12:12:19 -070012329// _loop0_2: NEWLINE
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012330static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012331_loop0_2_rule(Parser *p)
12332{
12333 if (p->error_indicator) {
12334 return NULL;
12335 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012336 void *_res = NULL;
12337 int _mark = p->mark;
12338 int _start_mark = p->mark;
12339 void **_children = PyMem_Malloc(sizeof(void *));
12340 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012341 p->error_indicator = 1;
12342 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012343 return NULL;
12344 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012345 ssize_t _children_capacity = 1;
12346 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012347 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012348 if (p->error_indicator) {
12349 return NULL;
12350 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010012351 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012352 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010012353 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070012354 )
12355 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012356 _res = newline_var;
12357 if (_n == _children_capacity) {
12358 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012359 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12360 if (!_new_children) {
12361 p->error_indicator = 1;
12362 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012363 return NULL;
12364 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012365 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012367 _children[_n++] = _res;
12368 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012370 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012371 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012372 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12373 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012374 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012375 p->error_indicator = 1;
12376 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012377 return NULL;
12378 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012379 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12380 PyMem_Free(_children);
12381 _PyPegen_insert_memo(p, _start_mark, _loop0_2_type, _seq);
12382 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012383}
12384
12385// _loop0_4: ',' expression
12386static asdl_seq *
12387_loop0_4_rule(Parser *p)
12388{
12389 if (p->error_indicator) {
12390 return NULL;
12391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012392 void *_res = NULL;
12393 int _mark = p->mark;
12394 int _start_mark = p->mark;
12395 void **_children = PyMem_Malloc(sizeof(void *));
12396 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012397 p->error_indicator = 1;
12398 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012399 return NULL;
12400 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012401 ssize_t _children_capacity = 1;
12402 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012403 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012404 if (p->error_indicator) {
12405 return NULL;
12406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012407 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012408 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012409 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012410 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012411 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012412 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012413 )
12414 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012415 _res = elem;
12416 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012417 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012418 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012419 return NULL;
12420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012421 if (_n == _children_capacity) {
12422 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012423 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12424 if (!_new_children) {
12425 p->error_indicator = 1;
12426 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012427 return NULL;
12428 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012429 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012430 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012431 _children[_n++] = _res;
12432 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012433 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012434 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012435 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012436 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12437 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012438 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012439 p->error_indicator = 1;
12440 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012441 return NULL;
12442 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012443 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12444 PyMem_Free(_children);
12445 _PyPegen_insert_memo(p, _start_mark, _loop0_4_type, _seq);
12446 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012447}
12448
12449// _gather_3: expression _loop0_4
12450static asdl_seq *
12451_gather_3_rule(Parser *p)
12452{
12453 if (p->error_indicator) {
12454 return NULL;
12455 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012456 asdl_seq * _res = NULL;
12457 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012458 { // expression _loop0_4
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012459 if (p->error_indicator) {
12460 return NULL;
12461 }
Guido van Rossumc001c092020-04-30 12:12:19 -070012462 expr_ty elem;
12463 asdl_seq * seq;
12464 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012465 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012466 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012467 (seq = _loop0_4_rule(p)) // _loop0_4
Guido van Rossumc001c092020-04-30 12:12:19 -070012468 )
12469 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012470 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012471 goto done;
12472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012473 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012475 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012476 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012477 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012478}
12479
12480// _loop0_6: ',' expression
12481static asdl_seq *
12482_loop0_6_rule(Parser *p)
12483{
12484 if (p->error_indicator) {
12485 return NULL;
12486 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012487 void *_res = NULL;
12488 int _mark = p->mark;
12489 int _start_mark = p->mark;
12490 void **_children = PyMem_Malloc(sizeof(void *));
12491 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012492 p->error_indicator = 1;
12493 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012494 return NULL;
12495 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012496 ssize_t _children_capacity = 1;
12497 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012498 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012499 if (p->error_indicator) {
12500 return NULL;
12501 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012502 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012503 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012504 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012505 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012506 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012507 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012508 )
12509 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012510 _res = elem;
12511 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012512 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012513 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012514 return NULL;
12515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012516 if (_n == _children_capacity) {
12517 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012518 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12519 if (!_new_children) {
12520 p->error_indicator = 1;
12521 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012522 return NULL;
12523 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012524 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012525 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012526 _children[_n++] = _res;
12527 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012529 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012530 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012531 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12532 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012533 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012534 p->error_indicator = 1;
12535 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012536 return NULL;
12537 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012538 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12539 PyMem_Free(_children);
12540 _PyPegen_insert_memo(p, _start_mark, _loop0_6_type, _seq);
12541 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012542}
12543
12544// _gather_5: expression _loop0_6
12545static asdl_seq *
12546_gather_5_rule(Parser *p)
12547{
12548 if (p->error_indicator) {
12549 return NULL;
12550 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012551 asdl_seq * _res = NULL;
12552 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012553 { // expression _loop0_6
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012554 if (p->error_indicator) {
12555 return NULL;
12556 }
Guido van Rossumc001c092020-04-30 12:12:19 -070012557 expr_ty elem;
12558 asdl_seq * seq;
12559 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012560 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012561 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012562 (seq = _loop0_6_rule(p)) // _loop0_6
Guido van Rossumc001c092020-04-30 12:12:19 -070012563 )
12564 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012565 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012566 goto done;
12567 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012568 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012570 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012571 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012572 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012573}
12574
12575// _loop0_8: ',' expression
12576static asdl_seq *
12577_loop0_8_rule(Parser *p)
12578{
12579 if (p->error_indicator) {
12580 return NULL;
12581 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012582 void *_res = NULL;
12583 int _mark = p->mark;
12584 int _start_mark = p->mark;
12585 void **_children = PyMem_Malloc(sizeof(void *));
12586 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012587 p->error_indicator = 1;
12588 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012589 return NULL;
12590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012591 ssize_t _children_capacity = 1;
12592 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012593 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012594 if (p->error_indicator) {
12595 return NULL;
12596 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012597 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012598 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012599 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012600 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012601 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012602 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012603 )
12604 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012605 _res = elem;
12606 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012607 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012608 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012609 return NULL;
12610 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012611 if (_n == _children_capacity) {
12612 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012613 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12614 if (!_new_children) {
12615 p->error_indicator = 1;
12616 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012617 return NULL;
12618 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012619 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012620 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012621 _children[_n++] = _res;
12622 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012623 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012624 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012625 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012626 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12627 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012628 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012629 p->error_indicator = 1;
12630 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012631 return NULL;
12632 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012633 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12634 PyMem_Free(_children);
12635 _PyPegen_insert_memo(p, _start_mark, _loop0_8_type, _seq);
12636 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012637}
12638
12639// _gather_7: expression _loop0_8
12640static asdl_seq *
12641_gather_7_rule(Parser *p)
12642{
12643 if (p->error_indicator) {
12644 return NULL;
12645 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012646 asdl_seq * _res = NULL;
12647 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012648 { // expression _loop0_8
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012649 if (p->error_indicator) {
12650 return NULL;
12651 }
Guido van Rossumc001c092020-04-30 12:12:19 -070012652 expr_ty elem;
12653 asdl_seq * seq;
12654 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012655 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012656 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012657 (seq = _loop0_8_rule(p)) // _loop0_8
Guido van Rossumc001c092020-04-30 12:12:19 -070012658 )
12659 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012660 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012661 goto done;
12662 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012663 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012664 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012665 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012666 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012667 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012668}
12669
12670// _loop0_10: ',' expression
12671static asdl_seq *
12672_loop0_10_rule(Parser *p)
12673{
12674 if (p->error_indicator) {
12675 return NULL;
12676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012677 void *_res = NULL;
12678 int _mark = p->mark;
12679 int _start_mark = p->mark;
12680 void **_children = PyMem_Malloc(sizeof(void *));
12681 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012682 p->error_indicator = 1;
12683 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012684 return NULL;
12685 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012686 ssize_t _children_capacity = 1;
12687 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012688 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012689 if (p->error_indicator) {
12690 return NULL;
12691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012692 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012693 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012694 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012695 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012696 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012697 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012698 )
12699 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012700 _res = elem;
12701 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012702 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012703 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012704 return NULL;
12705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012706 if (_n == _children_capacity) {
12707 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012708 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12709 if (!_new_children) {
12710 p->error_indicator = 1;
12711 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012712 return NULL;
12713 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012714 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012715 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012716 _children[_n++] = _res;
12717 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012718 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012719 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012720 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012721 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12722 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012723 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012724 p->error_indicator = 1;
12725 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012726 return NULL;
12727 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012728 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12729 PyMem_Free(_children);
12730 _PyPegen_insert_memo(p, _start_mark, _loop0_10_type, _seq);
12731 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012732}
12733
12734// _gather_9: expression _loop0_10
12735static asdl_seq *
12736_gather_9_rule(Parser *p)
12737{
12738 if (p->error_indicator) {
12739 return NULL;
12740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012741 asdl_seq * _res = NULL;
12742 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012743 { // expression _loop0_10
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012744 if (p->error_indicator) {
12745 return NULL;
12746 }
Guido van Rossumc001c092020-04-30 12:12:19 -070012747 expr_ty elem;
12748 asdl_seq * seq;
12749 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012750 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012751 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012752 (seq = _loop0_10_rule(p)) // _loop0_10
Guido van Rossumc001c092020-04-30 12:12:19 -070012753 )
12754 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012755 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012756 goto done;
12757 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012758 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012759 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012760 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012761 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012762 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012763}
12764
12765// _loop1_11: statement
12766static asdl_seq *
12767_loop1_11_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012768{
12769 if (p->error_indicator) {
12770 return NULL;
12771 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012772 void *_res = NULL;
12773 int _mark = p->mark;
12774 int _start_mark = p->mark;
12775 void **_children = PyMem_Malloc(sizeof(void *));
12776 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012777 p->error_indicator = 1;
12778 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012779 return NULL;
12780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012781 ssize_t _children_capacity = 1;
12782 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012783 { // statement
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012784 if (p->error_indicator) {
12785 return NULL;
12786 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012787 asdl_seq* statement_var;
12788 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010012789 (statement_var = statement_rule(p)) // statement
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012790 )
12791 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012792 _res = statement_var;
12793 if (_n == _children_capacity) {
12794 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012795 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12796 if (!_new_children) {
12797 p->error_indicator = 1;
12798 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012799 return NULL;
12800 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012801 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012802 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012803 _children[_n++] = _res;
12804 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012805 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012806 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012807 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012808 if (_n == 0 || p->error_indicator) {
12809 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012810 return NULL;
12811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012812 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12813 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012814 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012815 p->error_indicator = 1;
12816 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012817 return NULL;
12818 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012819 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12820 PyMem_Free(_children);
12821 _PyPegen_insert_memo(p, _start_mark, _loop1_11_type, _seq);
12822 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012823}
12824
Guido van Rossumc001c092020-04-30 12:12:19 -070012825// _loop0_13: ';' small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012826static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012827_loop0_13_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012828{
12829 if (p->error_indicator) {
12830 return NULL;
12831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012832 void *_res = NULL;
12833 int _mark = p->mark;
12834 int _start_mark = p->mark;
12835 void **_children = PyMem_Malloc(sizeof(void *));
12836 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012837 p->error_indicator = 1;
12838 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012839 return NULL;
12840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012841 ssize_t _children_capacity = 1;
12842 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012843 { // ';' small_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012844 if (p->error_indicator) {
12845 return NULL;
12846 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012847 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012848 stmt_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012849 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012850 (_literal = _PyPegen_expect_token(p, 13)) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012851 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012852 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012853 )
12854 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012855 _res = elem;
12856 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012857 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012858 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012859 return NULL;
12860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012861 if (_n == _children_capacity) {
12862 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012863 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12864 if (!_new_children) {
12865 p->error_indicator = 1;
12866 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012867 return NULL;
12868 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012869 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012870 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012871 _children[_n++] = _res;
12872 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012873 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012874 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012876 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12877 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012878 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012879 p->error_indicator = 1;
12880 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012881 return NULL;
12882 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012883 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12884 PyMem_Free(_children);
12885 _PyPegen_insert_memo(p, _start_mark, _loop0_13_type, _seq);
12886 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012887}
12888
Guido van Rossumc001c092020-04-30 12:12:19 -070012889// _gather_12: small_stmt _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012890static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012891_gather_12_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012892{
12893 if (p->error_indicator) {
12894 return NULL;
12895 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012896 asdl_seq * _res = NULL;
12897 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012898 { // small_stmt _loop0_13
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012899 if (p->error_indicator) {
12900 return NULL;
12901 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012902 stmt_ty elem;
12903 asdl_seq * seq;
12904 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012905 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012906 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012907 (seq = _loop0_13_rule(p)) // _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012908 )
12909 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012910 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012911 goto done;
12912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012913 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012915 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012916 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012917 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012918}
12919
Guido van Rossumc001c092020-04-30 12:12:19 -070012920// _tmp_14: 'import' | 'from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012921static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070012922_tmp_14_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012923{
12924 if (p->error_indicator) {
12925 return NULL;
12926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012927 void * _res = NULL;
12928 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012929 { // 'import'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012930 if (p->error_indicator) {
12931 return NULL;
12932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012933 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012934 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012935 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012936 )
12937 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012938 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012939 goto done;
12940 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012941 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012942 }
12943 { // 'from'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012944 if (p->error_indicator) {
12945 return NULL;
12946 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012947 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012948 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012949 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012950 )
12951 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012952 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012953 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
Guido van Rossumc001c092020-04-30 12:12:19 -070012962// _tmp_15: 'def' | '@' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012963static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070012964_tmp_15_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 { // 'def'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012972 if (p->error_indicator) {
12973 return NULL;
12974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012975 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012976 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012977 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012978 )
12979 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012980 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012981 goto done;
12982 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012983 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012984 }
12985 { // '@'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012986 if (p->error_indicator) {
12987 return NULL;
12988 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012989 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012990 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012991 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012992 )
12993 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012994 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012995 goto done;
12996 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012997 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012998 }
12999 { // ASYNC
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013000 if (p->error_indicator) {
13001 return NULL;
13002 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010013003 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013004 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013005 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013006 )
13007 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013008 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013009 goto done;
13010 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013011 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013013 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013014 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013015 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013016}
13017
Guido van Rossumc001c092020-04-30 12:12:19 -070013018// _tmp_16: 'class' | '@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013019static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013020_tmp_16_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013021{
13022 if (p->error_indicator) {
13023 return NULL;
13024 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013025 void * _res = NULL;
13026 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013027 { // 'class'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013028 if (p->error_indicator) {
13029 return NULL;
13030 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013031 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013032 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013033 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013034 )
13035 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013036 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013037 goto done;
13038 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013039 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013040 }
13041 { // '@'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013042 if (p->error_indicator) {
13043 return NULL;
13044 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013045 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013046 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013047 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013048 )
13049 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013050 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013051 goto done;
13052 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013053 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013055 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013056 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013057 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013058}
13059
Guido van Rossumc001c092020-04-30 12:12:19 -070013060// _tmp_17: 'with' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013061static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013062_tmp_17_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013063{
13064 if (p->error_indicator) {
13065 return NULL;
13066 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013067 void * _res = NULL;
13068 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013069 { // 'with'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013070 if (p->error_indicator) {
13071 return NULL;
13072 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013073 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013074 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013075 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013076 )
13077 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013078 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013079 goto done;
13080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013081 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013082 }
13083 { // ASYNC
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013084 if (p->error_indicator) {
13085 return NULL;
13086 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010013087 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013088 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013089 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013090 )
13091 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013092 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013093 goto done;
13094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013095 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013097 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013098 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013099 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013100}
13101
Guido van Rossumc001c092020-04-30 12:12:19 -070013102// _tmp_18: 'for' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013103static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013104_tmp_18_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013105{
13106 if (p->error_indicator) {
13107 return NULL;
13108 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013109 void * _res = NULL;
13110 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013111 { // 'for'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013112 if (p->error_indicator) {
13113 return NULL;
13114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013115 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013116 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013117 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013118 )
13119 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013120 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013121 goto done;
13122 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013123 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013124 }
13125 { // ASYNC
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013126 if (p->error_indicator) {
13127 return NULL;
13128 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010013129 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013130 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013131 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013132 )
13133 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013134 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013135 goto done;
13136 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013137 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013138 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013139 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013140 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013141 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013142}
13143
Guido van Rossumc001c092020-04-30 12:12:19 -070013144// _tmp_19: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013145static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013146_tmp_19_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013147{
13148 if (p->error_indicator) {
13149 return NULL;
13150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013151 void * _res = NULL;
13152 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013153 { // '=' annotated_rhs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013154 if (p->error_indicator) {
13155 return NULL;
13156 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013157 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013158 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013159 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013160 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013161 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013162 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013163 )
13164 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013165 _res = d;
13166 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013167 p->error_indicator = 1;
13168 return NULL;
13169 }
13170 goto done;
13171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013172 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013174 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013175 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013176 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013177}
13178
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013179// _tmp_20: '(' single_target ')' | single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013180static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013181_tmp_20_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013182{
13183 if (p->error_indicator) {
13184 return NULL;
13185 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013186 void * _res = NULL;
13187 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013188 { // '(' single_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013189 if (p->error_indicator) {
13190 return NULL;
13191 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013192 Token * _literal;
13193 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013194 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013195 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013196 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013197 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013198 (b = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013199 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013200 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013201 )
13202 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013203 _res = b;
13204 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013205 p->error_indicator = 1;
13206 return NULL;
13207 }
13208 goto done;
13209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013210 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013211 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013212 { // single_subscript_attribute_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013213 if (p->error_indicator) {
13214 return NULL;
13215 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013216 expr_ty single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013217 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013218 (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p)) // single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013219 )
13220 {
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013221 _res = single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013222 goto done;
13223 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013224 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013225 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013226 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013227 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013228 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013229}
13230
Guido van Rossumc001c092020-04-30 12:12:19 -070013231// _tmp_21: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013232static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013233_tmp_21_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013234{
13235 if (p->error_indicator) {
13236 return NULL;
13237 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013238 void * _res = NULL;
13239 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013240 { // '=' annotated_rhs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013241 if (p->error_indicator) {
13242 return NULL;
13243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013244 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013245 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013246 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013247 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013248 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013249 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013250 )
13251 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013252 _res = d;
13253 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013254 p->error_indicator = 1;
13255 return NULL;
13256 }
13257 goto done;
13258 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013259 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013260 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013261 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013262 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013263 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013264}
13265
Guido van Rossumc001c092020-04-30 12:12:19 -070013266// _loop1_22: (star_targets '=')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013267static asdl_seq *
13268_loop1_22_rule(Parser *p)
13269{
13270 if (p->error_indicator) {
13271 return NULL;
13272 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013273 void *_res = NULL;
13274 int _mark = p->mark;
13275 int _start_mark = p->mark;
13276 void **_children = PyMem_Malloc(sizeof(void *));
13277 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013278 p->error_indicator = 1;
13279 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013280 return NULL;
13281 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013282 ssize_t _children_capacity = 1;
13283 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013284 { // (star_targets '=')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013285 if (p->error_indicator) {
13286 return NULL;
13287 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013288 void *_tmp_135_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013289 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013290 (_tmp_135_var = _tmp_135_rule(p)) // star_targets '='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013291 )
13292 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013293 _res = _tmp_135_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013294 if (_n == _children_capacity) {
13295 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013296 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13297 if (!_new_children) {
13298 p->error_indicator = 1;
13299 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013300 return NULL;
13301 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013302 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013303 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013304 _children[_n++] = _res;
13305 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013306 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013307 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013308 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013309 if (_n == 0 || p->error_indicator) {
13310 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013311 return NULL;
13312 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013313 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13314 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013315 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013316 p->error_indicator = 1;
13317 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013318 return NULL;
13319 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013320 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13321 PyMem_Free(_children);
13322 _PyPegen_insert_memo(p, _start_mark, _loop1_22_type, _seq);
13323 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013324}
13325
Guido van Rossumc001c092020-04-30 12:12:19 -070013326// _tmp_23: yield_expr | star_expressions
13327static void *
13328_tmp_23_rule(Parser *p)
13329{
13330 if (p->error_indicator) {
13331 return NULL;
13332 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013333 void * _res = NULL;
13334 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013335 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013336 if (p->error_indicator) {
13337 return NULL;
13338 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013339 expr_ty yield_expr_var;
13340 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013341 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070013342 )
13343 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013344 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013345 goto done;
13346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013347 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013348 }
13349 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013350 if (p->error_indicator) {
13351 return NULL;
13352 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013353 expr_ty star_expressions_var;
13354 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013355 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070013356 )
13357 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013358 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013359 goto done;
13360 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013361 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013362 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013363 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013364 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013365 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013366}
13367
13368// _tmp_24: yield_expr | star_expressions
13369static void *
13370_tmp_24_rule(Parser *p)
13371{
13372 if (p->error_indicator) {
13373 return NULL;
13374 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013375 void * _res = NULL;
13376 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013377 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013378 if (p->error_indicator) {
13379 return NULL;
13380 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013381 expr_ty yield_expr_var;
13382 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013383 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070013384 )
13385 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013386 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013387 goto done;
13388 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013389 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013390 }
13391 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013392 if (p->error_indicator) {
13393 return NULL;
13394 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013395 expr_ty star_expressions_var;
13396 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013397 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070013398 )
13399 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013400 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013401 goto done;
13402 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013403 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013404 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013405 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013406 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013407 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013408}
13409
13410// _loop0_26: ',' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013411static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070013412_loop0_26_rule(Parser *p)
13413{
13414 if (p->error_indicator) {
13415 return NULL;
13416 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013417 void *_res = NULL;
13418 int _mark = p->mark;
13419 int _start_mark = p->mark;
13420 void **_children = PyMem_Malloc(sizeof(void *));
13421 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013422 p->error_indicator = 1;
13423 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013424 return NULL;
13425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013426 ssize_t _children_capacity = 1;
13427 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013428 { // ',' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013429 if (p->error_indicator) {
13430 return NULL;
13431 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013432 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070013433 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070013434 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013435 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070013436 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013437 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070013438 )
13439 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013440 _res = elem;
13441 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013442 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013443 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013444 return NULL;
13445 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013446 if (_n == _children_capacity) {
13447 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013448 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13449 if (!_new_children) {
13450 p->error_indicator = 1;
13451 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013452 return NULL;
13453 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013454 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013455 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013456 _children[_n++] = _res;
13457 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013458 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013459 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013460 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013461 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13462 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013463 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013464 p->error_indicator = 1;
13465 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013466 return NULL;
13467 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013468 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13469 PyMem_Free(_children);
13470 _PyPegen_insert_memo(p, _start_mark, _loop0_26_type, _seq);
13471 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013472}
13473
13474// _gather_25: NAME _loop0_26
13475static asdl_seq *
13476_gather_25_rule(Parser *p)
13477{
13478 if (p->error_indicator) {
13479 return NULL;
13480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013481 asdl_seq * _res = NULL;
13482 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013483 { // NAME _loop0_26
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013484 if (p->error_indicator) {
13485 return NULL;
13486 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013487 expr_ty elem;
13488 asdl_seq * seq;
13489 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013490 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070013491 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013492 (seq = _loop0_26_rule(p)) // _loop0_26
Guido van Rossumc001c092020-04-30 12:12:19 -070013493 )
13494 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013495 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070013496 goto done;
13497 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013498 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013499 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013500 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013501 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013502 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013503}
13504
13505// _loop0_28: ',' NAME
13506static asdl_seq *
13507_loop0_28_rule(Parser *p)
13508{
13509 if (p->error_indicator) {
13510 return NULL;
13511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013512 void *_res = NULL;
13513 int _mark = p->mark;
13514 int _start_mark = p->mark;
13515 void **_children = PyMem_Malloc(sizeof(void *));
13516 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013517 p->error_indicator = 1;
13518 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013519 return NULL;
13520 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013521 ssize_t _children_capacity = 1;
13522 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013523 { // ',' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013524 if (p->error_indicator) {
13525 return NULL;
13526 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013527 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070013528 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070013529 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013530 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070013531 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013532 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070013533 )
13534 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013535 _res = elem;
13536 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013537 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013538 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013539 return NULL;
13540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013541 if (_n == _children_capacity) {
13542 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013543 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13544 if (!_new_children) {
13545 p->error_indicator = 1;
13546 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013547 return NULL;
13548 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013549 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013550 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013551 _children[_n++] = _res;
13552 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013553 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013554 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013555 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013556 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13557 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013558 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013559 p->error_indicator = 1;
13560 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013561 return NULL;
13562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013563 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13564 PyMem_Free(_children);
13565 _PyPegen_insert_memo(p, _start_mark, _loop0_28_type, _seq);
13566 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013567}
13568
13569// _gather_27: NAME _loop0_28
13570static asdl_seq *
13571_gather_27_rule(Parser *p)
13572{
13573 if (p->error_indicator) {
13574 return NULL;
13575 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013576 asdl_seq * _res = NULL;
13577 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013578 { // NAME _loop0_28
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013579 if (p->error_indicator) {
13580 return NULL;
13581 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013582 expr_ty elem;
13583 asdl_seq * seq;
13584 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013585 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070013586 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013587 (seq = _loop0_28_rule(p)) // _loop0_28
Guido van Rossumc001c092020-04-30 12:12:19 -070013588 )
13589 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013590 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070013591 goto done;
13592 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013593 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013595 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013596 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013597 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013598}
13599
13600// _tmp_29: ',' expression
13601static void *
13602_tmp_29_rule(Parser *p)
13603{
13604 if (p->error_indicator) {
13605 return NULL;
13606 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013607 void * _res = NULL;
13608 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013609 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013610 if (p->error_indicator) {
13611 return NULL;
13612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013613 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070013614 expr_ty z;
13615 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013616 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070013617 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013618 (z = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070013619 )
13620 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013621 _res = z;
13622 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013623 p->error_indicator = 1;
13624 return NULL;
13625 }
13626 goto done;
13627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013628 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013629 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013630 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013631 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013632 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013633}
13634
13635// _loop0_30: ('.' | '...')
13636static asdl_seq *
13637_loop0_30_rule(Parser *p)
13638{
13639 if (p->error_indicator) {
13640 return NULL;
13641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013642 void *_res = NULL;
13643 int _mark = p->mark;
13644 int _start_mark = p->mark;
13645 void **_children = PyMem_Malloc(sizeof(void *));
13646 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013647 p->error_indicator = 1;
13648 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013649 return NULL;
13650 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013651 ssize_t _children_capacity = 1;
13652 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013653 { // ('.' | '...')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013654 if (p->error_indicator) {
13655 return NULL;
13656 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013657 void *_tmp_136_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013658 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013659 (_tmp_136_var = _tmp_136_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070013660 )
13661 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013662 _res = _tmp_136_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013663 if (_n == _children_capacity) {
13664 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013665 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13666 if (!_new_children) {
13667 p->error_indicator = 1;
13668 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013669 return NULL;
13670 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013671 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013672 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013673 _children[_n++] = _res;
13674 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013675 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013676 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013677 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013678 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13679 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013680 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013681 p->error_indicator = 1;
13682 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013683 return NULL;
13684 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013685 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13686 PyMem_Free(_children);
13687 _PyPegen_insert_memo(p, _start_mark, _loop0_30_type, _seq);
13688 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013689}
13690
13691// _loop1_31: ('.' | '...')
13692static asdl_seq *
13693_loop1_31_rule(Parser *p)
13694{
13695 if (p->error_indicator) {
13696 return NULL;
13697 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013698 void *_res = NULL;
13699 int _mark = p->mark;
13700 int _start_mark = p->mark;
13701 void **_children = PyMem_Malloc(sizeof(void *));
13702 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013703 p->error_indicator = 1;
13704 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013705 return NULL;
13706 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013707 ssize_t _children_capacity = 1;
13708 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013709 { // ('.' | '...')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013710 if (p->error_indicator) {
13711 return NULL;
13712 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013713 void *_tmp_137_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013714 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013715 (_tmp_137_var = _tmp_137_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070013716 )
13717 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013718 _res = _tmp_137_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013719 if (_n == _children_capacity) {
13720 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013721 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13722 if (!_new_children) {
13723 p->error_indicator = 1;
13724 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013725 return NULL;
13726 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013727 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013728 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013729 _children[_n++] = _res;
13730 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013731 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013732 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013733 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013734 if (_n == 0 || p->error_indicator) {
13735 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013736 return NULL;
13737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013738 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13739 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013740 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013741 p->error_indicator = 1;
13742 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013743 return NULL;
13744 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013745 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13746 PyMem_Free(_children);
13747 _PyPegen_insert_memo(p, _start_mark, _loop1_31_type, _seq);
13748 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013749}
13750
13751// _loop0_33: ',' import_from_as_name
13752static asdl_seq *
13753_loop0_33_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013754{
13755 if (p->error_indicator) {
13756 return NULL;
13757 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013758 void *_res = NULL;
13759 int _mark = p->mark;
13760 int _start_mark = p->mark;
13761 void **_children = PyMem_Malloc(sizeof(void *));
13762 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013763 p->error_indicator = 1;
13764 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013765 return NULL;
13766 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013767 ssize_t _children_capacity = 1;
13768 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013769 { // ',' import_from_as_name
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013770 if (p->error_indicator) {
13771 return NULL;
13772 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013773 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013774 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013775 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013776 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013777 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013778 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013779 )
13780 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013781 _res = elem;
13782 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013783 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013784 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013785 return NULL;
13786 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013787 if (_n == _children_capacity) {
13788 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013789 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13790 if (!_new_children) {
13791 p->error_indicator = 1;
13792 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013793 return NULL;
13794 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013795 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013796 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013797 _children[_n++] = _res;
13798 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013799 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013800 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013801 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013802 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13803 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013804 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013805 p->error_indicator = 1;
13806 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013807 return NULL;
13808 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013809 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13810 PyMem_Free(_children);
13811 _PyPegen_insert_memo(p, _start_mark, _loop0_33_type, _seq);
13812 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013813}
13814
Guido van Rossumc001c092020-04-30 12:12:19 -070013815// _gather_32: import_from_as_name _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013816static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070013817_gather_32_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013818{
13819 if (p->error_indicator) {
13820 return NULL;
13821 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013822 asdl_seq * _res = NULL;
13823 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013824 { // import_from_as_name _loop0_33
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013825 if (p->error_indicator) {
13826 return NULL;
13827 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013828 alias_ty elem;
13829 asdl_seq * seq;
13830 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013831 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013832 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013833 (seq = _loop0_33_rule(p)) // _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013834 )
13835 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013836 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013837 goto done;
13838 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013839 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013841 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013842 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013843 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013844}
13845
Guido van Rossumc001c092020-04-30 12:12:19 -070013846// _tmp_34: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013847static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013848_tmp_34_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013849{
13850 if (p->error_indicator) {
13851 return NULL;
13852 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013853 void * _res = NULL;
13854 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013855 { // 'as' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013856 if (p->error_indicator) {
13857 return NULL;
13858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013859 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013860 expr_ty z;
13861 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013862 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013863 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013864 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013865 )
13866 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013867 _res = z;
13868 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013869 p->error_indicator = 1;
13870 return NULL;
13871 }
13872 goto done;
13873 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013874 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013876 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013877 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013878 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013879}
13880
Guido van Rossumc001c092020-04-30 12:12:19 -070013881// _loop0_36: ',' dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013882static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070013883_loop0_36_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013884{
13885 if (p->error_indicator) {
13886 return NULL;
13887 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013888 void *_res = NULL;
13889 int _mark = p->mark;
13890 int _start_mark = p->mark;
13891 void **_children = PyMem_Malloc(sizeof(void *));
13892 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013893 p->error_indicator = 1;
13894 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013895 return NULL;
13896 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013897 ssize_t _children_capacity = 1;
13898 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013899 { // ',' dotted_as_name
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013900 if (p->error_indicator) {
13901 return NULL;
13902 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013903 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013904 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013905 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013906 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013907 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013908 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013909 )
13910 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013911 _res = elem;
13912 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013913 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013914 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013915 return NULL;
13916 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013917 if (_n == _children_capacity) {
13918 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013919 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13920 if (!_new_children) {
13921 p->error_indicator = 1;
13922 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013923 return NULL;
13924 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013925 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013927 _children[_n++] = _res;
13928 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013929 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013930 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013932 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13933 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013934 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013935 p->error_indicator = 1;
13936 PyErr_NoMemory();
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_36_type, _seq);
13942 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013943}
13944
Guido van Rossumc001c092020-04-30 12:12:19 -070013945// _gather_35: dotted_as_name _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013946static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070013947_gather_35_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;
Guido van Rossumc001c092020-04-30 12:12:19 -070013954 { // dotted_as_name _loop0_36
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013955 if (p->error_indicator) {
13956 return NULL;
13957 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013958 alias_ty elem;
13959 asdl_seq * seq;
13960 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013961 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013962 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013963 (seq = _loop0_36_rule(p)) // _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013964 )
13965 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013966 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013967 goto done;
13968 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013969 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013970 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013971 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013972 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013973 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013974}
13975
Guido van Rossumc001c092020-04-30 12:12:19 -070013976// _tmp_37: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013977static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013978_tmp_37_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013979{
13980 if (p->error_indicator) {
13981 return NULL;
13982 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013983 void * _res = NULL;
13984 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013985 { // 'as' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013986 if (p->error_indicator) {
13987 return NULL;
13988 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013989 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013990 expr_ty z;
13991 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013992 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013993 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013994 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013995 )
13996 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013997 _res = z;
13998 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013999 p->error_indicator = 1;
14000 return NULL;
14001 }
14002 goto done;
14003 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014004 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014005 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014006 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014007 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014008 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014009}
14010
Guido van Rossumc001c092020-04-30 12:12:19 -070014011// _loop0_39: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014012static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070014013_loop0_39_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014014{
14015 if (p->error_indicator) {
14016 return NULL;
14017 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014018 void *_res = NULL;
14019 int _mark = p->mark;
14020 int _start_mark = p->mark;
14021 void **_children = PyMem_Malloc(sizeof(void *));
14022 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014023 p->error_indicator = 1;
14024 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014025 return NULL;
14026 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014027 ssize_t _children_capacity = 1;
14028 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014029 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014030 if (p->error_indicator) {
14031 return NULL;
14032 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014033 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014034 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014035 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014036 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014037 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014038 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014039 )
14040 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014041 _res = elem;
14042 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014043 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014044 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014045 return NULL;
14046 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014047 if (_n == _children_capacity) {
14048 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014049 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14050 if (!_new_children) {
14051 p->error_indicator = 1;
14052 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014053 return NULL;
14054 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014055 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014057 _children[_n++] = _res;
14058 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014059 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014060 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014062 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14063 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014064 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014065 p->error_indicator = 1;
14066 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014067 return NULL;
14068 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014069 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14070 PyMem_Free(_children);
14071 _PyPegen_insert_memo(p, _start_mark, _loop0_39_type, _seq);
14072 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014073}
14074
Guido van Rossumc001c092020-04-30 12:12:19 -070014075// _gather_38: with_item _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014076static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070014077_gather_38_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014078{
14079 if (p->error_indicator) {
14080 return NULL;
14081 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014082 asdl_seq * _res = NULL;
14083 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014084 { // with_item _loop0_39
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014085 if (p->error_indicator) {
14086 return NULL;
14087 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014088 withitem_ty elem;
14089 asdl_seq * seq;
14090 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014091 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014092 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014093 (seq = _loop0_39_rule(p)) // _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014094 )
14095 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014096 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014097 goto done;
14098 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014099 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014100 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014101 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014102 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014103 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014104}
14105
Guido van Rossumc001c092020-04-30 12:12:19 -070014106// _loop0_41: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014107static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070014108_loop0_41_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014109{
14110 if (p->error_indicator) {
14111 return NULL;
14112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014113 void *_res = NULL;
14114 int _mark = p->mark;
14115 int _start_mark = p->mark;
14116 void **_children = PyMem_Malloc(sizeof(void *));
14117 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014118 p->error_indicator = 1;
14119 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014120 return NULL;
14121 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014122 ssize_t _children_capacity = 1;
14123 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014124 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014125 if (p->error_indicator) {
14126 return NULL;
14127 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014128 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014129 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014130 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014131 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014132 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014133 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014134 )
14135 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014136 _res = elem;
14137 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014138 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014139 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014140 return NULL;
14141 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014142 if (_n == _children_capacity) {
14143 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014144 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14145 if (!_new_children) {
14146 p->error_indicator = 1;
14147 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014148 return NULL;
14149 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014150 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014152 _children[_n++] = _res;
14153 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014154 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014155 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014156 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014157 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14158 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014159 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014160 p->error_indicator = 1;
14161 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014162 return NULL;
14163 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014164 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14165 PyMem_Free(_children);
14166 _PyPegen_insert_memo(p, _start_mark, _loop0_41_type, _seq);
14167 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014168}
14169
Guido van Rossumc001c092020-04-30 12:12:19 -070014170// _gather_40: with_item _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014171static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070014172_gather_40_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014173{
14174 if (p->error_indicator) {
14175 return NULL;
14176 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014177 asdl_seq * _res = NULL;
14178 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014179 { // with_item _loop0_41
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014180 if (p->error_indicator) {
14181 return NULL;
14182 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014183 withitem_ty elem;
14184 asdl_seq * seq;
14185 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014186 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014187 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014188 (seq = _loop0_41_rule(p)) // _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014189 )
14190 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014191 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014192 goto done;
14193 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014194 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014195 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014196 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014197 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014198 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014199}
14200
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014201// _loop0_43: ',' with_item
14202static asdl_seq *
14203_loop0_43_rule(Parser *p)
14204{
14205 if (p->error_indicator) {
14206 return NULL;
14207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014208 void *_res = NULL;
14209 int _mark = p->mark;
14210 int _start_mark = p->mark;
14211 void **_children = PyMem_Malloc(sizeof(void *));
14212 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014213 p->error_indicator = 1;
14214 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014215 return NULL;
14216 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014217 ssize_t _children_capacity = 1;
14218 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014219 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014220 if (p->error_indicator) {
14221 return NULL;
14222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014223 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014224 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014225 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014226 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014227 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014228 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014229 )
14230 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014231 _res = elem;
14232 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014233 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014234 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014235 return NULL;
14236 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014237 if (_n == _children_capacity) {
14238 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014239 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14240 if (!_new_children) {
14241 p->error_indicator = 1;
14242 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014243 return NULL;
14244 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014245 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014247 _children[_n++] = _res;
14248 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014249 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014250 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014252 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14253 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014254 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014255 p->error_indicator = 1;
14256 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014257 return NULL;
14258 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014259 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14260 PyMem_Free(_children);
14261 _PyPegen_insert_memo(p, _start_mark, _loop0_43_type, _seq);
14262 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014263}
14264
14265// _gather_42: with_item _loop0_43
14266static asdl_seq *
14267_gather_42_rule(Parser *p)
14268{
14269 if (p->error_indicator) {
14270 return NULL;
14271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014272 asdl_seq * _res = NULL;
14273 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014274 { // with_item _loop0_43
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014275 if (p->error_indicator) {
14276 return NULL;
14277 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014278 withitem_ty elem;
14279 asdl_seq * seq;
14280 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014281 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014282 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014283 (seq = _loop0_43_rule(p)) // _loop0_43
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014284 )
14285 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014286 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014287 goto done;
14288 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014289 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014290 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014291 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014292 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014293 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014294}
14295
14296// _loop0_45: ',' with_item
14297static asdl_seq *
14298_loop0_45_rule(Parser *p)
14299{
14300 if (p->error_indicator) {
14301 return NULL;
14302 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014303 void *_res = NULL;
14304 int _mark = p->mark;
14305 int _start_mark = p->mark;
14306 void **_children = PyMem_Malloc(sizeof(void *));
14307 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014308 p->error_indicator = 1;
14309 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014310 return NULL;
14311 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014312 ssize_t _children_capacity = 1;
14313 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014314 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014315 if (p->error_indicator) {
14316 return NULL;
14317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014318 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014319 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014320 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014321 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014322 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014323 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014324 )
14325 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014326 _res = elem;
14327 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014328 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014329 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014330 return NULL;
14331 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014332 if (_n == _children_capacity) {
14333 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014334 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14335 if (!_new_children) {
14336 p->error_indicator = 1;
14337 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014338 return NULL;
14339 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014340 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014341 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014342 _children[_n++] = _res;
14343 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014344 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014345 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014347 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14348 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014349 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014350 p->error_indicator = 1;
14351 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014352 return NULL;
14353 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014354 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14355 PyMem_Free(_children);
14356 _PyPegen_insert_memo(p, _start_mark, _loop0_45_type, _seq);
14357 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014358}
14359
14360// _gather_44: with_item _loop0_45
14361static asdl_seq *
14362_gather_44_rule(Parser *p)
14363{
14364 if (p->error_indicator) {
14365 return NULL;
14366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014367 asdl_seq * _res = NULL;
14368 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014369 { // with_item _loop0_45
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014370 if (p->error_indicator) {
14371 return NULL;
14372 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014373 withitem_ty elem;
14374 asdl_seq * seq;
14375 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014376 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014377 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014378 (seq = _loop0_45_rule(p)) // _loop0_45
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014379 )
14380 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014381 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014382 goto done;
14383 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014384 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014386 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014387 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014388 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014389}
14390
14391// _tmp_46: 'as' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014392static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014393_tmp_46_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014394{
14395 if (p->error_indicator) {
14396 return NULL;
14397 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014398 void * _res = NULL;
14399 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014400 { // 'as' target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014401 if (p->error_indicator) {
14402 return NULL;
14403 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014404 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014405 expr_ty t;
14406 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014407 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014408 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014409 (t = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014410 )
14411 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014412 _res = t;
14413 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014414 p->error_indicator = 1;
14415 return NULL;
14416 }
14417 goto done;
14418 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014419 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014421 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014422 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014423 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014424}
14425
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014426// _loop1_47: except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014427static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014428_loop1_47_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014429{
14430 if (p->error_indicator) {
14431 return NULL;
14432 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014433 void *_res = NULL;
14434 int _mark = p->mark;
14435 int _start_mark = p->mark;
14436 void **_children = PyMem_Malloc(sizeof(void *));
14437 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014438 p->error_indicator = 1;
14439 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014440 return NULL;
14441 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014442 ssize_t _children_capacity = 1;
14443 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014444 { // except_block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014445 if (p->error_indicator) {
14446 return NULL;
14447 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014448 excepthandler_ty except_block_var;
14449 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014450 (except_block_var = except_block_rule(p)) // except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014451 )
14452 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014453 _res = except_block_var;
14454 if (_n == _children_capacity) {
14455 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014456 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14457 if (!_new_children) {
14458 p->error_indicator = 1;
14459 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014460 return NULL;
14461 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014462 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014463 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014464 _children[_n++] = _res;
14465 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014467 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014469 if (_n == 0 || p->error_indicator) {
14470 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014471 return NULL;
14472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014473 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14474 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014475 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014476 p->error_indicator = 1;
14477 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014478 return NULL;
14479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014480 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14481 PyMem_Free(_children);
14482 _PyPegen_insert_memo(p, _start_mark, _loop1_47_type, _seq);
14483 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014484}
14485
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030014486// _tmp_48: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014487static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014488_tmp_48_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014489{
14490 if (p->error_indicator) {
14491 return NULL;
14492 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014493 void * _res = NULL;
14494 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030014495 { // 'as' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014496 if (p->error_indicator) {
14497 return NULL;
14498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014499 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014500 expr_ty z;
14501 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014502 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014503 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030014504 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014505 )
14506 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014507 _res = z;
14508 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014509 p->error_indicator = 1;
14510 return NULL;
14511 }
14512 goto done;
14513 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014514 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014516 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014517 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014518 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014519}
14520
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014521// _tmp_49: 'from' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014522static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014523_tmp_49_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014524{
14525 if (p->error_indicator) {
14526 return NULL;
14527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014528 void * _res = NULL;
14529 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014530 { // 'from' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014531 if (p->error_indicator) {
14532 return NULL;
14533 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014534 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014535 expr_ty z;
14536 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014537 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014538 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014539 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014540 )
14541 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014542 _res = z;
14543 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014544 p->error_indicator = 1;
14545 return NULL;
14546 }
14547 goto done;
14548 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014549 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014550 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014551 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014552 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014553 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014554}
14555
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014556// _tmp_50: '->' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014557static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014558_tmp_50_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014559{
14560 if (p->error_indicator) {
14561 return NULL;
14562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014563 void * _res = NULL;
14564 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014565 { // '->' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014566 if (p->error_indicator) {
14567 return NULL;
14568 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014569 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070014570 expr_ty z;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014571 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014572 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014573 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014574 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014575 )
14576 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014577 _res = z;
14578 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014579 p->error_indicator = 1;
14580 return NULL;
14581 }
14582 goto done;
14583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014584 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014586 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014587 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014588 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014589}
14590
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014591// _tmp_51: '->' expression
Guido van Rossumc001c092020-04-30 12:12:19 -070014592static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014593_tmp_51_rule(Parser *p)
14594{
14595 if (p->error_indicator) {
14596 return NULL;
14597 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014598 void * _res = NULL;
14599 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014600 { // '->' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014601 if (p->error_indicator) {
14602 return NULL;
14603 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014604 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014605 expr_ty z;
14606 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014607 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014608 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014609 (z = expression_rule(p)) // expression
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014610 )
14611 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014612 _res = z;
14613 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014614 p->error_indicator = 1;
14615 return NULL;
14616 }
14617 goto done;
14618 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014619 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014620 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014621 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014622 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014623 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014624}
14625
14626// _tmp_52: NEWLINE INDENT
14627static void *
14628_tmp_52_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070014629{
14630 if (p->error_indicator) {
14631 return NULL;
14632 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014633 void * _res = NULL;
14634 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014635 { // NEWLINE INDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014636 if (p->error_indicator) {
14637 return NULL;
14638 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010014639 Token * indent_var;
14640 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070014641 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014642 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070014643 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014644 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070014645 )
14646 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014647 _res = _PyPegen_dummy_name(p, newline_var, indent_var);
Guido van Rossumc001c092020-04-30 12:12:19 -070014648 goto done;
14649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014650 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014651 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014652 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070014653 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014654 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070014655}
14656
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014657// _loop0_53: param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014658static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014659_loop0_53_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014660{
14661 if (p->error_indicator) {
14662 return NULL;
14663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014664 void *_res = NULL;
14665 int _mark = p->mark;
14666 int _start_mark = p->mark;
14667 void **_children = PyMem_Malloc(sizeof(void *));
14668 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014669 p->error_indicator = 1;
14670 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014671 return NULL;
14672 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014673 ssize_t _children_capacity = 1;
14674 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014675 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014676 if (p->error_indicator) {
14677 return NULL;
14678 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014679 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014680 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014681 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014682 )
14683 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014684 _res = param_no_default_var;
14685 if (_n == _children_capacity) {
14686 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014687 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14688 if (!_new_children) {
14689 p->error_indicator = 1;
14690 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014691 return NULL;
14692 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014693 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014694 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014695 _children[_n++] = _res;
14696 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014697 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014698 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014699 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014700 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14701 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014702 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014703 p->error_indicator = 1;
14704 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014705 return NULL;
14706 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014707 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14708 PyMem_Free(_children);
14709 _PyPegen_insert_memo(p, _start_mark, _loop0_53_type, _seq);
14710 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014711}
14712
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014713// _loop0_54: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014714static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014715_loop0_54_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014716{
14717 if (p->error_indicator) {
14718 return NULL;
14719 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014720 void *_res = NULL;
14721 int _mark = p->mark;
14722 int _start_mark = p->mark;
14723 void **_children = PyMem_Malloc(sizeof(void *));
14724 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014725 p->error_indicator = 1;
14726 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014727 return NULL;
14728 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014729 ssize_t _children_capacity = 1;
14730 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014731 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014732 if (p->error_indicator) {
14733 return NULL;
14734 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014735 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014736 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014737 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014738 )
14739 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014740 _res = param_with_default_var;
14741 if (_n == _children_capacity) {
14742 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014743 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14744 if (!_new_children) {
14745 p->error_indicator = 1;
14746 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014747 return NULL;
14748 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014749 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070014750 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014751 _children[_n++] = _res;
14752 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014753 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014754 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014755 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014756 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14757 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014758 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014759 p->error_indicator = 1;
14760 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014761 return NULL;
14762 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014763 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14764 PyMem_Free(_children);
14765 _PyPegen_insert_memo(p, _start_mark, _loop0_54_type, _seq);
14766 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070014767}
14768
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014769// _loop0_55: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014770static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014771_loop0_55_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070014772{
14773 if (p->error_indicator) {
14774 return NULL;
14775 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014776 void *_res = NULL;
14777 int _mark = p->mark;
14778 int _start_mark = p->mark;
14779 void **_children = PyMem_Malloc(sizeof(void *));
14780 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014781 p->error_indicator = 1;
14782 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014783 return NULL;
14784 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014785 ssize_t _children_capacity = 1;
14786 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014787 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014788 if (p->error_indicator) {
14789 return NULL;
14790 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014791 NameDefaultPair* param_with_default_var;
14792 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014793 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014794 )
14795 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014796 _res = param_with_default_var;
14797 if (_n == _children_capacity) {
14798 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014799 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14800 if (!_new_children) {
14801 p->error_indicator = 1;
14802 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014803 return NULL;
14804 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014805 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070014806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014807 _children[_n++] = _res;
14808 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014809 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014810 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014812 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14813 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014814 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014815 p->error_indicator = 1;
14816 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014817 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_55_type, _seq);
14822 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070014823}
14824
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014825// _loop1_56: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014826static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014827_loop1_56_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070014828{
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) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014837 p->error_indicator = 1;
14838 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014839 return NULL;
14840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014841 ssize_t _children_capacity = 1;
14842 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014843 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014844 if (p->error_indicator) {
14845 return NULL;
14846 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014847 arg_ty param_no_default_var;
14848 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014849 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014850 )
14851 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014852 _res = param_no_default_var;
14853 if (_n == _children_capacity) {
14854 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014855 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14856 if (!_new_children) {
14857 p->error_indicator = 1;
14858 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014859 return NULL;
14860 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014861 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014862 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014863 _children[_n++] = _res;
14864 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014865 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014866 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014867 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014868 if (_n == 0 || p->error_indicator) {
14869 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014870 return NULL;
14871 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014872 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14873 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014874 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014875 p->error_indicator = 1;
14876 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014877 return NULL;
14878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014879 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14880 PyMem_Free(_children);
14881 _PyPegen_insert_memo(p, _start_mark, _loop1_56_type, _seq);
14882 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014883}
14884
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014885// _loop0_57: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014886static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014887_loop0_57_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014888{
14889 if (p->error_indicator) {
14890 return NULL;
14891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014892 void *_res = NULL;
14893 int _mark = p->mark;
14894 int _start_mark = p->mark;
14895 void **_children = PyMem_Malloc(sizeof(void *));
14896 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014897 p->error_indicator = 1;
14898 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014899 return NULL;
14900 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014901 ssize_t _children_capacity = 1;
14902 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014903 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014904 if (p->error_indicator) {
14905 return NULL;
14906 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014907 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014908 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014909 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014910 )
14911 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014912 _res = param_with_default_var;
14913 if (_n == _children_capacity) {
14914 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014915 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14916 if (!_new_children) {
14917 p->error_indicator = 1;
14918 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014919 return NULL;
14920 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014921 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014922 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014923 _children[_n++] = _res;
14924 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014925 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014926 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014927 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014928 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14929 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014930 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014931 p->error_indicator = 1;
14932 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014933 return NULL;
14934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014935 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14936 PyMem_Free(_children);
14937 _PyPegen_insert_memo(p, _start_mark, _loop0_57_type, _seq);
14938 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014939}
14940
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014941// _loop1_58: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014942static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014943_loop1_58_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014944{
14945 if (p->error_indicator) {
14946 return NULL;
14947 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014948 void *_res = NULL;
14949 int _mark = p->mark;
14950 int _start_mark = p->mark;
14951 void **_children = PyMem_Malloc(sizeof(void *));
14952 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014953 p->error_indicator = 1;
14954 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014955 return NULL;
14956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014957 ssize_t _children_capacity = 1;
14958 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014959 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014960 if (p->error_indicator) {
14961 return NULL;
14962 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014963 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014964 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014965 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014966 )
14967 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014968 _res = param_with_default_var;
14969 if (_n == _children_capacity) {
14970 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014971 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14972 if (!_new_children) {
14973 p->error_indicator = 1;
14974 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014975 return NULL;
14976 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014977 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014978 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014979 _children[_n++] = _res;
14980 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014982 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014984 if (_n == 0 || p->error_indicator) {
14985 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070014986 return NULL;
14987 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014988 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14989 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014990 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014991 p->error_indicator = 1;
14992 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014993 return NULL;
14994 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014995 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14996 PyMem_Free(_children);
14997 _PyPegen_insert_memo(p, _start_mark, _loop1_58_type, _seq);
14998 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070014999}
15000
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015001// _loop1_59: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015002static asdl_seq *
15003_loop1_59_rule(Parser *p)
15004{
15005 if (p->error_indicator) {
15006 return NULL;
15007 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015008 void *_res = NULL;
15009 int _mark = p->mark;
15010 int _start_mark = p->mark;
15011 void **_children = PyMem_Malloc(sizeof(void *));
15012 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015013 p->error_indicator = 1;
15014 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015015 return NULL;
15016 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015017 ssize_t _children_capacity = 1;
15018 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015019 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015020 if (p->error_indicator) {
15021 return NULL;
15022 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015023 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070015024 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015025 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015026 )
15027 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015028 _res = param_no_default_var;
15029 if (_n == _children_capacity) {
15030 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015031 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15032 if (!_new_children) {
15033 p->error_indicator = 1;
15034 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015035 return NULL;
15036 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015037 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070015038 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015039 _children[_n++] = _res;
15040 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015041 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015042 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015043 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015044 if (_n == 0 || p->error_indicator) {
15045 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070015046 return NULL;
15047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015048 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15049 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015050 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015051 p->error_indicator = 1;
15052 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015053 return NULL;
15054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015055 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15056 PyMem_Free(_children);
15057 _PyPegen_insert_memo(p, _start_mark, _loop1_59_type, _seq);
15058 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015059}
15060
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015061// _loop1_60: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015062static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015063_loop1_60_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070015064{
15065 if (p->error_indicator) {
15066 return NULL;
15067 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015068 void *_res = NULL;
15069 int _mark = p->mark;
15070 int _start_mark = p->mark;
15071 void **_children = PyMem_Malloc(sizeof(void *));
15072 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015073 p->error_indicator = 1;
15074 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015075 return NULL;
15076 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015077 ssize_t _children_capacity = 1;
15078 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015079 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015080 if (p->error_indicator) {
15081 return NULL;
15082 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015083 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070015084 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015085 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015086 )
15087 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015088 _res = param_no_default_var;
15089 if (_n == _children_capacity) {
15090 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015091 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15092 if (!_new_children) {
15093 p->error_indicator = 1;
15094 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015095 return NULL;
15096 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015097 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070015098 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015099 _children[_n++] = _res;
15100 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015102 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015104 if (_n == 0 || p->error_indicator) {
15105 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070015106 return NULL;
15107 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015108 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15109 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015110 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015111 p->error_indicator = 1;
15112 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015113 return NULL;
15114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015115 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15116 PyMem_Free(_children);
15117 _PyPegen_insert_memo(p, _start_mark, _loop1_60_type, _seq);
15118 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015119}
15120
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015121// _loop0_61: param_no_default
15122static asdl_seq *
15123_loop0_61_rule(Parser *p)
15124{
15125 if (p->error_indicator) {
15126 return NULL;
15127 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015128 void *_res = NULL;
15129 int _mark = p->mark;
15130 int _start_mark = p->mark;
15131 void **_children = PyMem_Malloc(sizeof(void *));
15132 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015133 p->error_indicator = 1;
15134 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015135 return NULL;
15136 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015137 ssize_t _children_capacity = 1;
15138 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015139 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015140 if (p->error_indicator) {
15141 return NULL;
15142 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015143 arg_ty param_no_default_var;
15144 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015145 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015146 )
15147 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015148 _res = param_no_default_var;
15149 if (_n == _children_capacity) {
15150 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015151 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15152 if (!_new_children) {
15153 p->error_indicator = 1;
15154 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015155 return NULL;
15156 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015157 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015158 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015159 _children[_n++] = _res;
15160 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015161 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015162 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015163 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015164 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15165 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015166 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015167 p->error_indicator = 1;
15168 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015169 return NULL;
15170 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015171 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15172 PyMem_Free(_children);
15173 _PyPegen_insert_memo(p, _start_mark, _loop0_61_type, _seq);
15174 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015175}
15176
15177// _loop1_62: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015178static asdl_seq *
15179_loop1_62_rule(Parser *p)
15180{
15181 if (p->error_indicator) {
15182 return NULL;
15183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015184 void *_res = NULL;
15185 int _mark = p->mark;
15186 int _start_mark = p->mark;
15187 void **_children = PyMem_Malloc(sizeof(void *));
15188 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015189 p->error_indicator = 1;
15190 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015191 return NULL;
15192 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015193 ssize_t _children_capacity = 1;
15194 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015195 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015196 if (p->error_indicator) {
15197 return NULL;
15198 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015199 NameDefaultPair* param_with_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070015200 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015201 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015202 )
15203 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015204 _res = param_with_default_var;
15205 if (_n == _children_capacity) {
15206 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015207 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15208 if (!_new_children) {
15209 p->error_indicator = 1;
15210 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015211 return NULL;
15212 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015213 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070015214 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015215 _children[_n++] = _res;
15216 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015218 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015220 if (_n == 0 || p->error_indicator) {
15221 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070015222 return NULL;
15223 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015224 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15225 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015226 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015227 p->error_indicator = 1;
15228 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015229 return NULL;
15230 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015231 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15232 PyMem_Free(_children);
15233 _PyPegen_insert_memo(p, _start_mark, _loop1_62_type, _seq);
15234 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015235}
15236
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015237// _loop0_63: param_no_default
15238static asdl_seq *
15239_loop0_63_rule(Parser *p)
15240{
15241 if (p->error_indicator) {
15242 return NULL;
15243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015244 void *_res = NULL;
15245 int _mark = p->mark;
15246 int _start_mark = p->mark;
15247 void **_children = PyMem_Malloc(sizeof(void *));
15248 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015249 p->error_indicator = 1;
15250 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015251 return NULL;
15252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015253 ssize_t _children_capacity = 1;
15254 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015255 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015256 if (p->error_indicator) {
15257 return NULL;
15258 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015259 arg_ty param_no_default_var;
15260 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015261 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015262 )
15263 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015264 _res = param_no_default_var;
15265 if (_n == _children_capacity) {
15266 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015267 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15268 if (!_new_children) {
15269 p->error_indicator = 1;
15270 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015271 return NULL;
15272 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015273 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015274 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015275 _children[_n++] = _res;
15276 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015277 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015278 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015279 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015280 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15281 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015282 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015283 p->error_indicator = 1;
15284 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015285 return NULL;
15286 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015287 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15288 PyMem_Free(_children);
15289 _PyPegen_insert_memo(p, _start_mark, _loop0_63_type, _seq);
15290 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015291}
15292
15293// _loop1_64: param_with_default
15294static asdl_seq *
15295_loop1_64_rule(Parser *p)
15296{
15297 if (p->error_indicator) {
15298 return NULL;
15299 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015300 void *_res = NULL;
15301 int _mark = p->mark;
15302 int _start_mark = p->mark;
15303 void **_children = PyMem_Malloc(sizeof(void *));
15304 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015305 p->error_indicator = 1;
15306 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015307 return NULL;
15308 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015309 ssize_t _children_capacity = 1;
15310 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015311 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015312 if (p->error_indicator) {
15313 return NULL;
15314 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015315 NameDefaultPair* param_with_default_var;
15316 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015317 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015318 )
15319 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015320 _res = param_with_default_var;
15321 if (_n == _children_capacity) {
15322 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015323 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15324 if (!_new_children) {
15325 p->error_indicator = 1;
15326 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015327 return NULL;
15328 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015329 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015330 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015331 _children[_n++] = _res;
15332 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015334 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015335 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015336 if (_n == 0 || p->error_indicator) {
15337 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015338 return NULL;
15339 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015340 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15341 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015342 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015343 p->error_indicator = 1;
15344 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015345 return NULL;
15346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015347 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15348 PyMem_Free(_children);
15349 _PyPegen_insert_memo(p, _start_mark, _loop1_64_type, _seq);
15350 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015351}
15352
15353// _loop0_65: param_maybe_default
15354static asdl_seq *
15355_loop0_65_rule(Parser *p)
15356{
15357 if (p->error_indicator) {
15358 return NULL;
15359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015360 void *_res = NULL;
15361 int _mark = p->mark;
15362 int _start_mark = p->mark;
15363 void **_children = PyMem_Malloc(sizeof(void *));
15364 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015365 p->error_indicator = 1;
15366 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015367 return NULL;
15368 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015369 ssize_t _children_capacity = 1;
15370 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015371 { // param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015372 if (p->error_indicator) {
15373 return NULL;
15374 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015375 NameDefaultPair* param_maybe_default_var;
15376 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015377 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015378 )
15379 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015380 _res = param_maybe_default_var;
15381 if (_n == _children_capacity) {
15382 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015383 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15384 if (!_new_children) {
15385 p->error_indicator = 1;
15386 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015387 return NULL;
15388 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015389 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015391 _children[_n++] = _res;
15392 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015394 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015395 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015396 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15397 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015398 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015399 p->error_indicator = 1;
15400 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015401 return NULL;
15402 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015403 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15404 PyMem_Free(_children);
15405 _PyPegen_insert_memo(p, _start_mark, _loop0_65_type, _seq);
15406 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015407}
15408
15409// _loop1_66: param_maybe_default
15410static asdl_seq *
15411_loop1_66_rule(Parser *p)
15412{
15413 if (p->error_indicator) {
15414 return NULL;
15415 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015416 void *_res = NULL;
15417 int _mark = p->mark;
15418 int _start_mark = p->mark;
15419 void **_children = PyMem_Malloc(sizeof(void *));
15420 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015421 p->error_indicator = 1;
15422 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015423 return NULL;
15424 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015425 ssize_t _children_capacity = 1;
15426 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015427 { // param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015428 if (p->error_indicator) {
15429 return NULL;
15430 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015431 NameDefaultPair* param_maybe_default_var;
15432 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015433 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015434 )
15435 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015436 _res = param_maybe_default_var;
15437 if (_n == _children_capacity) {
15438 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015439 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15440 if (!_new_children) {
15441 p->error_indicator = 1;
15442 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015443 return NULL;
15444 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015445 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015446 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015447 _children[_n++] = _res;
15448 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015449 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015450 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015451 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015452 if (_n == 0 || p->error_indicator) {
15453 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015454 return NULL;
15455 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015456 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15457 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015458 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015459 p->error_indicator = 1;
15460 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015461 return NULL;
15462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015463 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15464 PyMem_Free(_children);
15465 _PyPegen_insert_memo(p, _start_mark, _loop1_66_type, _seq);
15466 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015467}
15468
15469// _loop1_67: ('@' named_expression NEWLINE)
15470static asdl_seq *
15471_loop1_67_rule(Parser *p)
15472{
15473 if (p->error_indicator) {
15474 return NULL;
15475 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015476 void *_res = NULL;
15477 int _mark = p->mark;
15478 int _start_mark = p->mark;
15479 void **_children = PyMem_Malloc(sizeof(void *));
15480 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015481 p->error_indicator = 1;
15482 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015483 return NULL;
15484 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015485 ssize_t _children_capacity = 1;
15486 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015487 { // ('@' named_expression NEWLINE)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015488 if (p->error_indicator) {
15489 return NULL;
15490 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015491 void *_tmp_138_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015492 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015493 (_tmp_138_var = _tmp_138_rule(p)) // '@' named_expression NEWLINE
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015494 )
15495 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015496 _res = _tmp_138_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015497 if (_n == _children_capacity) {
15498 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015499 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15500 if (!_new_children) {
15501 p->error_indicator = 1;
15502 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015503 return NULL;
15504 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015505 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015507 _children[_n++] = _res;
15508 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015510 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015512 if (_n == 0 || p->error_indicator) {
15513 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015514 return NULL;
15515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015516 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15517 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015518 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015519 p->error_indicator = 1;
15520 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015521 return NULL;
15522 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015523 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15524 PyMem_Free(_children);
15525 _PyPegen_insert_memo(p, _start_mark, _loop1_67_type, _seq);
15526 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015527}
15528
15529// _tmp_68: '(' arguments? ')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015530static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015531_tmp_68_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015532{
15533 if (p->error_indicator) {
15534 return NULL;
15535 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015536 void * _res = NULL;
15537 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015538 { // '(' arguments? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015539 if (p->error_indicator) {
15540 return NULL;
15541 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015542 Token * _literal;
15543 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015544 void *z;
15545 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015546 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015547 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015548 (z = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015549 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015550 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015551 )
15552 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015553 _res = z;
15554 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015555 p->error_indicator = 1;
15556 return NULL;
15557 }
15558 goto done;
15559 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015560 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015561 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015562 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015563 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015564 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015565}
15566
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015567// _loop0_70: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015568static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015569_loop0_70_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015570{
15571 if (p->error_indicator) {
15572 return NULL;
15573 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015574 void *_res = NULL;
15575 int _mark = p->mark;
15576 int _start_mark = p->mark;
15577 void **_children = PyMem_Malloc(sizeof(void *));
15578 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015579 p->error_indicator = 1;
15580 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015581 return NULL;
15582 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015583 ssize_t _children_capacity = 1;
15584 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015585 { // ',' star_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015586 if (p->error_indicator) {
15587 return NULL;
15588 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015589 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015590 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015591 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015592 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015593 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015594 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015595 )
15596 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015597 _res = elem;
15598 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015599 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015600 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015601 return NULL;
15602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015603 if (_n == _children_capacity) {
15604 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015605 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15606 if (!_new_children) {
15607 p->error_indicator = 1;
15608 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015609 return NULL;
15610 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015611 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015613 _children[_n++] = _res;
15614 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015616 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015617 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015618 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15619 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015620 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015621 p->error_indicator = 1;
15622 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015623 return NULL;
15624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015625 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15626 PyMem_Free(_children);
15627 _PyPegen_insert_memo(p, _start_mark, _loop0_70_type, _seq);
15628 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015629}
15630
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015631// _gather_69: star_expression _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015632static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015633_gather_69_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015634{
15635 if (p->error_indicator) {
15636 return NULL;
15637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015638 asdl_seq * _res = NULL;
15639 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015640 { // star_expression _loop0_70
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015641 if (p->error_indicator) {
15642 return NULL;
15643 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015644 expr_ty elem;
15645 asdl_seq * seq;
15646 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015647 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015648 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015649 (seq = _loop0_70_rule(p)) // _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015650 )
15651 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015652 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015653 goto done;
15654 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015655 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015656 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015657 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015658 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015659 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015660}
15661
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015662// _loop1_71: (',' star_expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015663static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015664_loop1_71_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015665{
15666 if (p->error_indicator) {
15667 return NULL;
15668 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015669 void *_res = NULL;
15670 int _mark = p->mark;
15671 int _start_mark = p->mark;
15672 void **_children = PyMem_Malloc(sizeof(void *));
15673 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015674 p->error_indicator = 1;
15675 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015676 return NULL;
15677 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015678 ssize_t _children_capacity = 1;
15679 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015680 { // (',' star_expression)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015681 if (p->error_indicator) {
15682 return NULL;
15683 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015684 void *_tmp_139_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015685 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015686 (_tmp_139_var = _tmp_139_rule(p)) // ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015687 )
15688 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015689 _res = _tmp_139_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015690 if (_n == _children_capacity) {
15691 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015692 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15693 if (!_new_children) {
15694 p->error_indicator = 1;
15695 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015696 return NULL;
15697 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015698 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015699 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015700 _children[_n++] = _res;
15701 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015703 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015704 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015705 if (_n == 0 || p->error_indicator) {
15706 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015707 return NULL;
15708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015709 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15710 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015711 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015712 p->error_indicator = 1;
15713 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015714 return NULL;
15715 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015716 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15717 PyMem_Free(_children);
15718 _PyPegen_insert_memo(p, _start_mark, _loop1_71_type, _seq);
15719 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015720}
15721
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015722// _loop0_73: ',' star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015723static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015724_loop0_73_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015725{
15726 if (p->error_indicator) {
15727 return NULL;
15728 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015729 void *_res = NULL;
15730 int _mark = p->mark;
15731 int _start_mark = p->mark;
15732 void **_children = PyMem_Malloc(sizeof(void *));
15733 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015734 p->error_indicator = 1;
15735 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015736 return NULL;
15737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015738 ssize_t _children_capacity = 1;
15739 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015740 { // ',' star_named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015741 if (p->error_indicator) {
15742 return NULL;
15743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015744 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015745 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015746 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015747 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015748 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015749 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015750 )
15751 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015752 _res = elem;
15753 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015754 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015755 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015756 return NULL;
15757 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015758 if (_n == _children_capacity) {
15759 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015760 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15761 if (!_new_children) {
15762 p->error_indicator = 1;
15763 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015764 return NULL;
15765 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015766 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015767 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015768 _children[_n++] = _res;
15769 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015770 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015771 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015772 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015773 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15774 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015775 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015776 p->error_indicator = 1;
15777 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015778 return NULL;
15779 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015780 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15781 PyMem_Free(_children);
15782 _PyPegen_insert_memo(p, _start_mark, _loop0_73_type, _seq);
15783 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015784}
15785
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015786// _gather_72: star_named_expression _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015787static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015788_gather_72_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015789{
15790 if (p->error_indicator) {
15791 return NULL;
15792 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015793 asdl_seq * _res = NULL;
15794 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015795 { // star_named_expression _loop0_73
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015796 if (p->error_indicator) {
15797 return NULL;
15798 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015799 expr_ty elem;
15800 asdl_seq * seq;
15801 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015802 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015803 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015804 (seq = _loop0_73_rule(p)) // _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015805 )
15806 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015807 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015808 goto done;
15809 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015810 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015812 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015813 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015814 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015815}
15816
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015817// _loop1_74: (',' expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015818static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015819_loop1_74_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015820{
15821 if (p->error_indicator) {
15822 return NULL;
15823 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015824 void *_res = NULL;
15825 int _mark = p->mark;
15826 int _start_mark = p->mark;
15827 void **_children = PyMem_Malloc(sizeof(void *));
15828 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015829 p->error_indicator = 1;
15830 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015831 return NULL;
15832 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015833 ssize_t _children_capacity = 1;
15834 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015835 { // (',' expression)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015836 if (p->error_indicator) {
15837 return NULL;
15838 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015839 void *_tmp_140_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015840 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015841 (_tmp_140_var = _tmp_140_rule(p)) // ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015842 )
15843 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015844 _res = _tmp_140_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015845 if (_n == _children_capacity) {
15846 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015847 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15848 if (!_new_children) {
15849 p->error_indicator = 1;
15850 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015851 return NULL;
15852 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015853 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015854 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015855 _children[_n++] = _res;
15856 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015857 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015858 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015859 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015860 if (_n == 0 || p->error_indicator) {
15861 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015862 return NULL;
15863 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015864 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15865 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015866 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015867 p->error_indicator = 1;
15868 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015869 return NULL;
15870 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015871 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15872 PyMem_Free(_children);
15873 _PyPegen_insert_memo(p, _start_mark, _loop1_74_type, _seq);
15874 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015875}
15876
Guido van Rossum3941d972020-05-01 09:42:03 -070015877// _loop0_75: lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015878static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015879_loop0_75_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015880{
15881 if (p->error_indicator) {
15882 return NULL;
15883 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015884 void *_res = NULL;
15885 int _mark = p->mark;
15886 int _start_mark = p->mark;
15887 void **_children = PyMem_Malloc(sizeof(void *));
15888 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015889 p->error_indicator = 1;
15890 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015891 return NULL;
15892 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015893 ssize_t _children_capacity = 1;
15894 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070015895 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015896 if (p->error_indicator) {
15897 return NULL;
15898 }
Guido van Rossum3941d972020-05-01 09:42:03 -070015899 arg_ty lambda_param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015900 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015901 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015902 )
15903 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015904 _res = lambda_param_no_default_var;
15905 if (_n == _children_capacity) {
15906 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015907 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15908 if (!_new_children) {
15909 p->error_indicator = 1;
15910 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015911 return NULL;
15912 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015913 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015915 _children[_n++] = _res;
15916 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015917 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015918 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015919 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015920 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15921 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015922 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015923 p->error_indicator = 1;
15924 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015925 return NULL;
15926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015927 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15928 PyMem_Free(_children);
15929 _PyPegen_insert_memo(p, _start_mark, _loop0_75_type, _seq);
15930 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015931}
15932
Guido van Rossum3941d972020-05-01 09:42:03 -070015933// _loop0_76: lambda_param_with_default
15934static asdl_seq *
15935_loop0_76_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015936{
15937 if (p->error_indicator) {
15938 return NULL;
15939 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015940 void *_res = NULL;
15941 int _mark = p->mark;
15942 int _start_mark = p->mark;
15943 void **_children = PyMem_Malloc(sizeof(void *));
15944 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015945 p->error_indicator = 1;
15946 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070015947 return NULL;
15948 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015949 ssize_t _children_capacity = 1;
15950 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070015951 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015952 if (p->error_indicator) {
15953 return NULL;
15954 }
Guido van Rossum3941d972020-05-01 09:42:03 -070015955 NameDefaultPair* lambda_param_with_default_var;
15956 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015957 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015958 )
15959 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015960 _res = lambda_param_with_default_var;
15961 if (_n == _children_capacity) {
15962 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015963 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15964 if (!_new_children) {
15965 p->error_indicator = 1;
15966 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070015967 return NULL;
15968 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015969 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015970 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015971 _children[_n++] = _res;
15972 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015973 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015974 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015975 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015976 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15977 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015978 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015979 p->error_indicator = 1;
15980 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070015981 return NULL;
15982 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015983 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15984 PyMem_Free(_children);
15985 _PyPegen_insert_memo(p, _start_mark, _loop0_76_type, _seq);
15986 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015987}
15988
Guido van Rossum3941d972020-05-01 09:42:03 -070015989// _loop0_77: lambda_param_with_default
15990static asdl_seq *
15991_loop0_77_rule(Parser *p)
15992{
15993 if (p->error_indicator) {
15994 return NULL;
15995 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015996 void *_res = NULL;
15997 int _mark = p->mark;
15998 int _start_mark = p->mark;
15999 void **_children = PyMem_Malloc(sizeof(void *));
16000 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016001 p->error_indicator = 1;
16002 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016003 return NULL;
16004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016005 ssize_t _children_capacity = 1;
16006 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016007 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016008 if (p->error_indicator) {
16009 return NULL;
16010 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016011 NameDefaultPair* lambda_param_with_default_var;
16012 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016013 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016014 )
16015 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016016 _res = lambda_param_with_default_var;
16017 if (_n == _children_capacity) {
16018 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016019 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16020 if (!_new_children) {
16021 p->error_indicator = 1;
16022 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016023 return NULL;
16024 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016025 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016026 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016027 _children[_n++] = _res;
16028 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016029 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016030 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016031 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016032 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16033 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016034 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016035 p->error_indicator = 1;
16036 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016037 return NULL;
16038 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016039 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16040 PyMem_Free(_children);
16041 _PyPegen_insert_memo(p, _start_mark, _loop0_77_type, _seq);
16042 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016043}
16044
16045// _loop1_78: lambda_param_no_default
16046static asdl_seq *
16047_loop1_78_rule(Parser *p)
16048{
16049 if (p->error_indicator) {
16050 return NULL;
16051 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016052 void *_res = NULL;
16053 int _mark = p->mark;
16054 int _start_mark = p->mark;
16055 void **_children = PyMem_Malloc(sizeof(void *));
16056 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016057 p->error_indicator = 1;
16058 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016059 return NULL;
16060 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016061 ssize_t _children_capacity = 1;
16062 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016063 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016064 if (p->error_indicator) {
16065 return NULL;
16066 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016067 arg_ty lambda_param_no_default_var;
16068 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016069 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016070 )
16071 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016072 _res = lambda_param_no_default_var;
16073 if (_n == _children_capacity) {
16074 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016075 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16076 if (!_new_children) {
16077 p->error_indicator = 1;
16078 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016079 return NULL;
16080 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016081 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016083 _children[_n++] = _res;
16084 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016085 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016086 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016087 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016088 if (_n == 0 || p->error_indicator) {
16089 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016090 return NULL;
16091 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016092 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16093 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016094 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016095 p->error_indicator = 1;
16096 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016097 return NULL;
16098 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016099 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16100 PyMem_Free(_children);
16101 _PyPegen_insert_memo(p, _start_mark, _loop1_78_type, _seq);
16102 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016103}
16104
16105// _loop0_79: lambda_param_with_default
16106static asdl_seq *
16107_loop0_79_rule(Parser *p)
16108{
16109 if (p->error_indicator) {
16110 return NULL;
16111 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016112 void *_res = NULL;
16113 int _mark = p->mark;
16114 int _start_mark = p->mark;
16115 void **_children = PyMem_Malloc(sizeof(void *));
16116 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016117 p->error_indicator = 1;
16118 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016119 return NULL;
16120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016121 ssize_t _children_capacity = 1;
16122 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016123 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016124 if (p->error_indicator) {
16125 return NULL;
16126 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016127 NameDefaultPair* lambda_param_with_default_var;
16128 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016129 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016130 )
16131 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016132 _res = lambda_param_with_default_var;
16133 if (_n == _children_capacity) {
16134 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016135 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16136 if (!_new_children) {
16137 p->error_indicator = 1;
16138 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016139 return NULL;
16140 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016141 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016142 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016143 _children[_n++] = _res;
16144 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016145 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016146 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016147 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016148 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16149 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016150 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016151 p->error_indicator = 1;
16152 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016153 return NULL;
16154 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016155 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16156 PyMem_Free(_children);
16157 _PyPegen_insert_memo(p, _start_mark, _loop0_79_type, _seq);
16158 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016159}
16160
16161// _loop1_80: lambda_param_with_default
16162static asdl_seq *
16163_loop1_80_rule(Parser *p)
16164{
16165 if (p->error_indicator) {
16166 return NULL;
16167 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016168 void *_res = NULL;
16169 int _mark = p->mark;
16170 int _start_mark = p->mark;
16171 void **_children = PyMem_Malloc(sizeof(void *));
16172 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016173 p->error_indicator = 1;
16174 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016175 return NULL;
16176 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016177 ssize_t _children_capacity = 1;
16178 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016179 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016180 if (p->error_indicator) {
16181 return NULL;
16182 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016183 NameDefaultPair* lambda_param_with_default_var;
16184 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016185 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016186 )
16187 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016188 _res = lambda_param_with_default_var;
16189 if (_n == _children_capacity) {
16190 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016191 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16192 if (!_new_children) {
16193 p->error_indicator = 1;
16194 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016195 return NULL;
16196 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016197 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016199 _children[_n++] = _res;
16200 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016201 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016202 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016203 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016204 if (_n == 0 || p->error_indicator) {
16205 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016206 return NULL;
16207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016208 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16209 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016210 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016211 p->error_indicator = 1;
16212 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016213 return NULL;
16214 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016215 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16216 PyMem_Free(_children);
16217 _PyPegen_insert_memo(p, _start_mark, _loop1_80_type, _seq);
16218 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016219}
16220
16221// _loop1_81: lambda_param_no_default
16222static asdl_seq *
16223_loop1_81_rule(Parser *p)
16224{
16225 if (p->error_indicator) {
16226 return NULL;
16227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016228 void *_res = NULL;
16229 int _mark = p->mark;
16230 int _start_mark = p->mark;
16231 void **_children = PyMem_Malloc(sizeof(void *));
16232 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016233 p->error_indicator = 1;
16234 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016235 return NULL;
16236 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016237 ssize_t _children_capacity = 1;
16238 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016239 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016240 if (p->error_indicator) {
16241 return NULL;
16242 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016243 arg_ty lambda_param_no_default_var;
16244 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016245 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016246 )
16247 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016248 _res = lambda_param_no_default_var;
16249 if (_n == _children_capacity) {
16250 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016251 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16252 if (!_new_children) {
16253 p->error_indicator = 1;
16254 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016255 return NULL;
16256 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016257 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016258 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016259 _children[_n++] = _res;
16260 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016262 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016264 if (_n == 0 || p->error_indicator) {
16265 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016266 return NULL;
16267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016268 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16269 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016270 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016271 p->error_indicator = 1;
16272 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016273 return NULL;
16274 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016275 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16276 PyMem_Free(_children);
16277 _PyPegen_insert_memo(p, _start_mark, _loop1_81_type, _seq);
16278 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016279}
16280
16281// _loop1_82: lambda_param_no_default
16282static asdl_seq *
16283_loop1_82_rule(Parser *p)
16284{
16285 if (p->error_indicator) {
16286 return NULL;
16287 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016288 void *_res = NULL;
16289 int _mark = p->mark;
16290 int _start_mark = p->mark;
16291 void **_children = PyMem_Malloc(sizeof(void *));
16292 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016293 p->error_indicator = 1;
16294 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016295 return NULL;
16296 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016297 ssize_t _children_capacity = 1;
16298 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016299 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016300 if (p->error_indicator) {
16301 return NULL;
16302 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016303 arg_ty lambda_param_no_default_var;
16304 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016305 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016306 )
16307 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016308 _res = lambda_param_no_default_var;
16309 if (_n == _children_capacity) {
16310 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016311 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16312 if (!_new_children) {
16313 p->error_indicator = 1;
16314 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016315 return NULL;
16316 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016317 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016318 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016319 _children[_n++] = _res;
16320 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016321 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016322 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016324 if (_n == 0 || p->error_indicator) {
16325 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016326 return NULL;
16327 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016328 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16329 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016330 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016331 p->error_indicator = 1;
16332 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016333 return NULL;
16334 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016335 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16336 PyMem_Free(_children);
16337 _PyPegen_insert_memo(p, _start_mark, _loop1_82_type, _seq);
16338 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016339}
16340
16341// _loop0_83: lambda_param_no_default
16342static asdl_seq *
16343_loop0_83_rule(Parser *p)
16344{
16345 if (p->error_indicator) {
16346 return NULL;
16347 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016348 void *_res = NULL;
16349 int _mark = p->mark;
16350 int _start_mark = p->mark;
16351 void **_children = PyMem_Malloc(sizeof(void *));
16352 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016353 p->error_indicator = 1;
16354 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016355 return NULL;
16356 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016357 ssize_t _children_capacity = 1;
16358 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016359 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016360 if (p->error_indicator) {
16361 return NULL;
16362 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016363 arg_ty lambda_param_no_default_var;
16364 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016365 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016366 )
16367 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016368 _res = lambda_param_no_default_var;
16369 if (_n == _children_capacity) {
16370 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016371 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16372 if (!_new_children) {
16373 p->error_indicator = 1;
16374 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016375 return NULL;
16376 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016377 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016378 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016379 _children[_n++] = _res;
16380 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016381 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016382 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016383 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016384 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16385 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016386 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016387 p->error_indicator = 1;
16388 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016389 return NULL;
16390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016391 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16392 PyMem_Free(_children);
16393 _PyPegen_insert_memo(p, _start_mark, _loop0_83_type, _seq);
16394 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016395}
16396
16397// _loop1_84: lambda_param_with_default
16398static asdl_seq *
16399_loop1_84_rule(Parser *p)
16400{
16401 if (p->error_indicator) {
16402 return NULL;
16403 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016404 void *_res = NULL;
16405 int _mark = p->mark;
16406 int _start_mark = p->mark;
16407 void **_children = PyMem_Malloc(sizeof(void *));
16408 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016409 p->error_indicator = 1;
16410 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016411 return NULL;
16412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016413 ssize_t _children_capacity = 1;
16414 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016415 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016416 if (p->error_indicator) {
16417 return NULL;
16418 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016419 NameDefaultPair* lambda_param_with_default_var;
16420 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016421 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016422 )
16423 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016424 _res = lambda_param_with_default_var;
16425 if (_n == _children_capacity) {
16426 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016427 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16428 if (!_new_children) {
16429 p->error_indicator = 1;
16430 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016431 return NULL;
16432 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016433 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016435 _children[_n++] = _res;
16436 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016437 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016438 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016440 if (_n == 0 || p->error_indicator) {
16441 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016442 return NULL;
16443 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016444 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16445 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016446 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016447 p->error_indicator = 1;
16448 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016449 return NULL;
16450 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016451 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16452 PyMem_Free(_children);
16453 _PyPegen_insert_memo(p, _start_mark, _loop1_84_type, _seq);
16454 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016455}
16456
16457// _loop0_85: lambda_param_no_default
16458static asdl_seq *
16459_loop0_85_rule(Parser *p)
16460{
16461 if (p->error_indicator) {
16462 return NULL;
16463 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016464 void *_res = NULL;
16465 int _mark = p->mark;
16466 int _start_mark = p->mark;
16467 void **_children = PyMem_Malloc(sizeof(void *));
16468 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016469 p->error_indicator = 1;
16470 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016471 return NULL;
16472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016473 ssize_t _children_capacity = 1;
16474 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016475 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016476 if (p->error_indicator) {
16477 return NULL;
16478 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016479 arg_ty lambda_param_no_default_var;
16480 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016481 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016482 )
16483 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016484 _res = lambda_param_no_default_var;
16485 if (_n == _children_capacity) {
16486 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016487 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16488 if (!_new_children) {
16489 p->error_indicator = 1;
16490 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016491 return NULL;
16492 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016493 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016494 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016495 _children[_n++] = _res;
16496 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016497 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016498 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016499 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016500 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16501 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016502 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016503 p->error_indicator = 1;
16504 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016505 return NULL;
16506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016507 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16508 PyMem_Free(_children);
16509 _PyPegen_insert_memo(p, _start_mark, _loop0_85_type, _seq);
16510 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016511}
16512
16513// _loop1_86: lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016514static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016515_loop1_86_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016516{
16517 if (p->error_indicator) {
16518 return NULL;
16519 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016520 void *_res = NULL;
16521 int _mark = p->mark;
16522 int _start_mark = p->mark;
16523 void **_children = PyMem_Malloc(sizeof(void *));
16524 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016525 p->error_indicator = 1;
16526 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016527 return NULL;
16528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016529 ssize_t _children_capacity = 1;
16530 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016531 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016532 if (p->error_indicator) {
16533 return NULL;
16534 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016535 NameDefaultPair* lambda_param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016536 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016537 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016538 )
16539 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016540 _res = lambda_param_with_default_var;
16541 if (_n == _children_capacity) {
16542 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016543 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16544 if (!_new_children) {
16545 p->error_indicator = 1;
16546 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016547 return NULL;
16548 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016549 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016550 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016551 _children[_n++] = _res;
16552 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016553 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016554 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016555 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016556 if (_n == 0 || p->error_indicator) {
16557 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016558 return NULL;
16559 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016560 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16561 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016562 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016563 p->error_indicator = 1;
16564 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016565 return NULL;
16566 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016567 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16568 PyMem_Free(_children);
16569 _PyPegen_insert_memo(p, _start_mark, _loop1_86_type, _seq);
16570 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016571}
16572
Guido van Rossum3941d972020-05-01 09:42:03 -070016573// _loop0_87: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016574static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016575_loop0_87_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016576{
16577 if (p->error_indicator) {
16578 return NULL;
16579 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016580 void *_res = NULL;
16581 int _mark = p->mark;
16582 int _start_mark = p->mark;
16583 void **_children = PyMem_Malloc(sizeof(void *));
16584 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016585 p->error_indicator = 1;
16586 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016587 return NULL;
16588 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016589 ssize_t _children_capacity = 1;
16590 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016591 { // lambda_param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016592 if (p->error_indicator) {
16593 return NULL;
16594 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016595 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016596 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016597 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016598 )
16599 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016600 _res = lambda_param_maybe_default_var;
16601 if (_n == _children_capacity) {
16602 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016603 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16604 if (!_new_children) {
16605 p->error_indicator = 1;
16606 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016607 return NULL;
16608 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016609 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016610 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016611 _children[_n++] = _res;
16612 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016613 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016614 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016616 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16617 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016618 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016619 p->error_indicator = 1;
16620 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016621 return NULL;
16622 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016623 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16624 PyMem_Free(_children);
16625 _PyPegen_insert_memo(p, _start_mark, _loop0_87_type, _seq);
16626 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016627}
16628
Guido van Rossum3941d972020-05-01 09:42:03 -070016629// _loop1_88: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016630static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016631_loop1_88_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016632{
16633 if (p->error_indicator) {
16634 return NULL;
16635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016636 void *_res = NULL;
16637 int _mark = p->mark;
16638 int _start_mark = p->mark;
16639 void **_children = PyMem_Malloc(sizeof(void *));
16640 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016641 p->error_indicator = 1;
16642 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016643 return NULL;
16644 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016645 ssize_t _children_capacity = 1;
16646 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016647 { // lambda_param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016648 if (p->error_indicator) {
16649 return NULL;
16650 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016651 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016652 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016653 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016654 )
16655 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016656 _res = lambda_param_maybe_default_var;
16657 if (_n == _children_capacity) {
16658 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016659 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16660 if (!_new_children) {
16661 p->error_indicator = 1;
16662 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016663 return NULL;
16664 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016665 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016666 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016667 _children[_n++] = _res;
16668 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016669 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016670 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016671 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016672 if (_n == 0 || p->error_indicator) {
16673 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016674 return NULL;
16675 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016676 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16677 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016678 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016679 p->error_indicator = 1;
16680 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016681 return NULL;
16682 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016683 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16684 PyMem_Free(_children);
16685 _PyPegen_insert_memo(p, _start_mark, _loop1_88_type, _seq);
16686 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016687}
16688
Guido van Rossum3941d972020-05-01 09:42:03 -070016689// _loop1_89: ('or' conjunction)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016690static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016691_loop1_89_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016692{
16693 if (p->error_indicator) {
16694 return NULL;
16695 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016696 void *_res = NULL;
16697 int _mark = p->mark;
16698 int _start_mark = p->mark;
16699 void **_children = PyMem_Malloc(sizeof(void *));
16700 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016701 p->error_indicator = 1;
16702 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016703 return NULL;
16704 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016705 ssize_t _children_capacity = 1;
16706 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016707 { // ('or' conjunction)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016708 if (p->error_indicator) {
16709 return NULL;
16710 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016711 void *_tmp_141_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016712 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016713 (_tmp_141_var = _tmp_141_rule(p)) // 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016714 )
16715 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016716 _res = _tmp_141_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016717 if (_n == _children_capacity) {
16718 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016719 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16720 if (!_new_children) {
16721 p->error_indicator = 1;
16722 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016723 return NULL;
16724 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016725 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016726 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016727 _children[_n++] = _res;
16728 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016729 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016730 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016731 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016732 if (_n == 0 || p->error_indicator) {
16733 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016734 return NULL;
16735 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016736 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16737 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016738 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016739 p->error_indicator = 1;
16740 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016741 return NULL;
16742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016743 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16744 PyMem_Free(_children);
16745 _PyPegen_insert_memo(p, _start_mark, _loop1_89_type, _seq);
16746 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016747}
16748
Guido van Rossum3941d972020-05-01 09:42:03 -070016749// _loop1_90: ('and' inversion)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016750static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016751_loop1_90_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016752{
16753 if (p->error_indicator) {
16754 return NULL;
16755 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016756 void *_res = NULL;
16757 int _mark = p->mark;
16758 int _start_mark = p->mark;
16759 void **_children = PyMem_Malloc(sizeof(void *));
16760 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016761 p->error_indicator = 1;
16762 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016763 return NULL;
16764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016765 ssize_t _children_capacity = 1;
16766 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016767 { // ('and' inversion)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016768 if (p->error_indicator) {
16769 return NULL;
16770 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016771 void *_tmp_142_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016772 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016773 (_tmp_142_var = _tmp_142_rule(p)) // 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016774 )
16775 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016776 _res = _tmp_142_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016777 if (_n == _children_capacity) {
16778 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016779 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16780 if (!_new_children) {
16781 p->error_indicator = 1;
16782 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016783 return NULL;
16784 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016785 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016786 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016787 _children[_n++] = _res;
16788 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016790 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016792 if (_n == 0 || p->error_indicator) {
16793 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016794 return NULL;
16795 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016796 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16797 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016798 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016799 p->error_indicator = 1;
16800 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016801 return NULL;
16802 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016803 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16804 PyMem_Free(_children);
16805 _PyPegen_insert_memo(p, _start_mark, _loop1_90_type, _seq);
16806 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016807}
16808
Guido van Rossum3941d972020-05-01 09:42:03 -070016809// _loop1_91: compare_op_bitwise_or_pair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016810static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016811_loop1_91_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016812{
16813 if (p->error_indicator) {
16814 return NULL;
16815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016816 void *_res = NULL;
16817 int _mark = p->mark;
16818 int _start_mark = p->mark;
16819 void **_children = PyMem_Malloc(sizeof(void *));
16820 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016821 p->error_indicator = 1;
16822 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016823 return NULL;
16824 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016825 ssize_t _children_capacity = 1;
16826 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016827 { // compare_op_bitwise_or_pair
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016828 if (p->error_indicator) {
16829 return NULL;
16830 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016831 CmpopExprPair* compare_op_bitwise_or_pair_var;
16832 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016833 (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 +010016834 )
16835 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016836 _res = compare_op_bitwise_or_pair_var;
16837 if (_n == _children_capacity) {
16838 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016839 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16840 if (!_new_children) {
16841 p->error_indicator = 1;
16842 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016843 return NULL;
16844 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016845 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016846 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016847 _children[_n++] = _res;
16848 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016849 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016850 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016852 if (_n == 0 || p->error_indicator) {
16853 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016854 return NULL;
16855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016856 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16857 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016858 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016859 p->error_indicator = 1;
16860 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016861 return NULL;
16862 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016863 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16864 PyMem_Free(_children);
16865 _PyPegen_insert_memo(p, _start_mark, _loop1_91_type, _seq);
16866 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016867}
16868
Guido van Rossum3941d972020-05-01 09:42:03 -070016869// _tmp_92: '!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010016870static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016871_tmp_92_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010016872{
16873 if (p->error_indicator) {
16874 return NULL;
16875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016876 void * _res = NULL;
16877 int _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016878 { // '!='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016879 if (p->error_indicator) {
16880 return NULL;
16881 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010016882 Token * tok;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016883 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016884 (tok = _PyPegen_expect_token(p, 28)) // token='!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010016885 )
16886 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016887 _res = _PyPegen_check_barry_as_flufl ( p ) ? NULL : tok;
16888 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindo2b74c832020-04-27 18:02:07 +010016889 p->error_indicator = 1;
16890 return NULL;
16891 }
16892 goto done;
16893 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016894 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016895 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016896 _res = NULL;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016897 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016898 return _res;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016899}
16900
Guido van Rossum3941d972020-05-01 09:42:03 -070016901// _loop0_94: ',' slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016902static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016903_loop0_94_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016904{
16905 if (p->error_indicator) {
16906 return NULL;
16907 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016908 void *_res = NULL;
16909 int _mark = p->mark;
16910 int _start_mark = p->mark;
16911 void **_children = PyMem_Malloc(sizeof(void *));
16912 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016913 p->error_indicator = 1;
16914 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016915 return NULL;
16916 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016917 ssize_t _children_capacity = 1;
16918 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016919 { // ',' slice
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016920 if (p->error_indicator) {
16921 return NULL;
16922 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016923 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016924 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016925 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016926 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016927 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016928 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016929 )
16930 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016931 _res = elem;
16932 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016933 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016934 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016935 return NULL;
16936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016937 if (_n == _children_capacity) {
16938 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016939 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16940 if (!_new_children) {
16941 p->error_indicator = 1;
16942 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016943 return NULL;
16944 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016945 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016946 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016947 _children[_n++] = _res;
16948 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016949 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016950 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016951 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016952 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16953 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016954 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016955 p->error_indicator = 1;
16956 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016957 return NULL;
16958 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016959 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16960 PyMem_Free(_children);
16961 _PyPegen_insert_memo(p, _start_mark, _loop0_94_type, _seq);
16962 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016963}
16964
Guido van Rossum3941d972020-05-01 09:42:03 -070016965// _gather_93: slice _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016966static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016967_gather_93_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016968{
16969 if (p->error_indicator) {
16970 return NULL;
16971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016972 asdl_seq * _res = NULL;
16973 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016974 { // slice _loop0_94
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016975 if (p->error_indicator) {
16976 return NULL;
16977 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016978 expr_ty elem;
16979 asdl_seq * seq;
16980 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016981 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016982 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016983 (seq = _loop0_94_rule(p)) // _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016984 )
16985 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016986 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016987 goto done;
16988 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016989 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016990 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016991 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016992 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016993 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016994}
16995
Guido van Rossum3941d972020-05-01 09:42:03 -070016996// _tmp_95: ':' expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016997static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016998_tmp_95_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016999{
17000 if (p->error_indicator) {
17001 return NULL;
17002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017003 void * _res = NULL;
17004 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017005 { // ':' expression?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017006 if (p->error_indicator) {
17007 return NULL;
17008 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017009 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017010 void *d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017011 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017012 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017013 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017014 (d = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017015 )
17016 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017017 _res = d;
17018 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017019 p->error_indicator = 1;
17020 return NULL;
17021 }
17022 goto done;
17023 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017024 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017025 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017026 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017027 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017028 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017029}
17030
Guido van Rossum3941d972020-05-01 09:42:03 -070017031// _tmp_96: tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017032static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017033_tmp_96_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017034{
17035 if (p->error_indicator) {
17036 return NULL;
17037 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017038 void * _res = NULL;
17039 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017040 { // tuple
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017041 if (p->error_indicator) {
17042 return NULL;
17043 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017044 expr_ty tuple_var;
17045 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017046 (tuple_var = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017047 )
17048 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017049 _res = tuple_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017050 goto done;
17051 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017052 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017053 }
17054 { // group
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017055 if (p->error_indicator) {
17056 return NULL;
17057 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017058 expr_ty group_var;
17059 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017060 (group_var = group_rule(p)) // group
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017061 )
17062 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017063 _res = group_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017064 goto done;
17065 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017066 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017067 }
17068 { // genexp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017069 if (p->error_indicator) {
17070 return NULL;
17071 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017072 expr_ty genexp_var;
17073 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017074 (genexp_var = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017075 )
17076 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017077 _res = genexp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017078 goto done;
17079 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017080 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017081 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017082 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017083 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017084 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017085}
17086
Guido van Rossum3941d972020-05-01 09:42:03 -070017087// _tmp_97: list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017088static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017089_tmp_97_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017090{
17091 if (p->error_indicator) {
17092 return NULL;
17093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017094 void * _res = NULL;
17095 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017096 { // list
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017097 if (p->error_indicator) {
17098 return NULL;
17099 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017100 expr_ty list_var;
17101 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017102 (list_var = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017103 )
17104 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017105 _res = list_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017106 goto done;
17107 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017108 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017109 }
17110 { // listcomp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017111 if (p->error_indicator) {
17112 return NULL;
17113 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017114 expr_ty listcomp_var;
17115 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017116 (listcomp_var = listcomp_rule(p)) // listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017117 )
17118 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017119 _res = listcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017120 goto done;
17121 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017122 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017123 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017124 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017125 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017126 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017127}
17128
Guido van Rossum3941d972020-05-01 09:42:03 -070017129// _tmp_98: dict | set | dictcomp | setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017130static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017131_tmp_98_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017132{
17133 if (p->error_indicator) {
17134 return NULL;
17135 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017136 void * _res = NULL;
17137 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017138 { // dict
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017139 if (p->error_indicator) {
17140 return NULL;
17141 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017142 expr_ty dict_var;
17143 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017144 (dict_var = dict_rule(p)) // dict
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017145 )
17146 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017147 _res = dict_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017148 goto done;
17149 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017150 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017151 }
17152 { // set
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017153 if (p->error_indicator) {
17154 return NULL;
17155 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017156 expr_ty set_var;
17157 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017158 (set_var = set_rule(p)) // set
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017159 )
17160 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017161 _res = set_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017162 goto done;
17163 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017164 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017165 }
17166 { // dictcomp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017167 if (p->error_indicator) {
17168 return NULL;
17169 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017170 expr_ty dictcomp_var;
17171 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017172 (dictcomp_var = dictcomp_rule(p)) // dictcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017173 )
17174 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017175 _res = dictcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017176 goto done;
17177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017178 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017179 }
17180 { // setcomp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017181 if (p->error_indicator) {
17182 return NULL;
17183 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017184 expr_ty setcomp_var;
17185 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017186 (setcomp_var = setcomp_rule(p)) // setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017187 )
17188 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017189 _res = setcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017190 goto done;
17191 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017192 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017193 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017194 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017195 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017196 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017197}
17198
Guido van Rossum3941d972020-05-01 09:42:03 -070017199// _loop1_99: STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017200static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017201_loop1_99_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017202{
17203 if (p->error_indicator) {
17204 return NULL;
17205 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017206 void *_res = NULL;
17207 int _mark = p->mark;
17208 int _start_mark = p->mark;
17209 void **_children = PyMem_Malloc(sizeof(void *));
17210 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017211 p->error_indicator = 1;
17212 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017213 return NULL;
17214 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017215 ssize_t _children_capacity = 1;
17216 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017217 { // STRING
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017218 if (p->error_indicator) {
17219 return NULL;
17220 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017221 expr_ty string_var;
17222 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010017223 (string_var = _PyPegen_string_token(p)) // STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017224 )
17225 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017226 _res = string_var;
17227 if (_n == _children_capacity) {
17228 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017229 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17230 if (!_new_children) {
17231 p->error_indicator = 1;
17232 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017233 return NULL;
17234 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017235 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017236 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017237 _children[_n++] = _res;
17238 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017240 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017242 if (_n == 0 || p->error_indicator) {
17243 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017244 return NULL;
17245 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017246 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17247 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017248 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017249 p->error_indicator = 1;
17250 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017251 return NULL;
17252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017253 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17254 PyMem_Free(_children);
17255 _PyPegen_insert_memo(p, _start_mark, _loop1_99_type, _seq);
17256 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017257}
17258
Guido van Rossum3941d972020-05-01 09:42:03 -070017259// _tmp_100: star_named_expression ',' star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017260static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017261_tmp_100_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017262{
17263 if (p->error_indicator) {
17264 return NULL;
17265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017266 void * _res = NULL;
17267 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017268 { // star_named_expression ',' star_named_expressions?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017269 if (p->error_indicator) {
17270 return NULL;
17271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017272 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017273 expr_ty y;
17274 void *z;
17275 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017276 (y = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017277 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017278 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017279 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017280 (z = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017281 )
17282 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017283 _res = _PyPegen_seq_insert_in_front ( p , y , z );
17284 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017285 p->error_indicator = 1;
17286 return NULL;
17287 }
17288 goto done;
17289 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017290 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017292 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017293 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017294 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017295}
17296
Guido van Rossum3941d972020-05-01 09:42:03 -070017297// _tmp_101: yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017298static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017299_tmp_101_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017300{
17301 if (p->error_indicator) {
17302 return NULL;
17303 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017304 void * _res = NULL;
17305 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017306 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017307 if (p->error_indicator) {
17308 return NULL;
17309 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017310 expr_ty yield_expr_var;
17311 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017312 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017313 )
17314 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017315 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017316 goto done;
17317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017318 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017319 }
17320 { // named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017321 if (p->error_indicator) {
17322 return NULL;
17323 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017324 expr_ty named_expression_var;
17325 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017326 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017327 )
17328 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017329 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017330 goto done;
17331 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017332 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017334 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017335 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017336 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017337}
17338
Guido van Rossum3941d972020-05-01 09:42:03 -070017339// _loop0_103: ',' kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017340static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017341_loop0_103_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017342{
17343 if (p->error_indicator) {
17344 return NULL;
17345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017346 void *_res = NULL;
17347 int _mark = p->mark;
17348 int _start_mark = p->mark;
17349 void **_children = PyMem_Malloc(sizeof(void *));
17350 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017351 p->error_indicator = 1;
17352 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017353 return NULL;
17354 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017355 ssize_t _children_capacity = 1;
17356 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017357 { // ',' kvpair
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017358 if (p->error_indicator) {
17359 return NULL;
17360 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017361 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017362 KeyValuePair* elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017363 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017364 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017365 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017366 (elem = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017367 )
17368 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017369 _res = elem;
17370 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017371 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017372 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017373 return NULL;
17374 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017375 if (_n == _children_capacity) {
17376 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017377 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17378 if (!_new_children) {
17379 p->error_indicator = 1;
17380 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017381 return NULL;
17382 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017383 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017384 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017385 _children[_n++] = _res;
17386 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017387 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017388 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017389 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017390 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17391 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017392 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017393 p->error_indicator = 1;
17394 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017395 return NULL;
17396 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017397 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17398 PyMem_Free(_children);
17399 _PyPegen_insert_memo(p, _start_mark, _loop0_103_type, _seq);
17400 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017401}
17402
Guido van Rossum3941d972020-05-01 09:42:03 -070017403// _gather_102: kvpair _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017404static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017405_gather_102_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017406{
17407 if (p->error_indicator) {
17408 return NULL;
17409 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017410 asdl_seq * _res = NULL;
17411 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017412 { // kvpair _loop0_103
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017413 if (p->error_indicator) {
17414 return NULL;
17415 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017416 KeyValuePair* elem;
17417 asdl_seq * seq;
17418 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017419 (elem = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017420 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017421 (seq = _loop0_103_rule(p)) // _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017422 )
17423 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017424 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017425 goto done;
17426 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017427 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017428 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017429 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017430 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017431 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017432}
17433
Guido van Rossum3941d972020-05-01 09:42:03 -070017434// _loop1_104: for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017435static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017436_loop1_104_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017437{
17438 if (p->error_indicator) {
17439 return NULL;
17440 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017441 void *_res = NULL;
17442 int _mark = p->mark;
17443 int _start_mark = p->mark;
17444 void **_children = PyMem_Malloc(sizeof(void *));
17445 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017446 p->error_indicator = 1;
17447 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017448 return NULL;
17449 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017450 ssize_t _children_capacity = 1;
17451 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017452 { // for_if_clause
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017453 if (p->error_indicator) {
17454 return NULL;
17455 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017456 comprehension_ty for_if_clause_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017457 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010017458 (for_if_clause_var = for_if_clause_rule(p)) // for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017459 )
17460 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017461 _res = for_if_clause_var;
17462 if (_n == _children_capacity) {
17463 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017464 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17465 if (!_new_children) {
17466 p->error_indicator = 1;
17467 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017468 return NULL;
17469 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017470 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017471 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017472 _children[_n++] = _res;
17473 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017475 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017476 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017477 if (_n == 0 || p->error_indicator) {
17478 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017479 return NULL;
17480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017481 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17482 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017483 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017484 p->error_indicator = 1;
17485 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017486 return NULL;
17487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017488 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17489 PyMem_Free(_children);
17490 _PyPegen_insert_memo(p, _start_mark, _loop1_104_type, _seq);
17491 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017492}
17493
Guido van Rossum3941d972020-05-01 09:42:03 -070017494// _loop0_105: ('if' disjunction)
Pablo Galindo2b74c832020-04-27 18:02:07 +010017495static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017496_loop0_105_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010017497{
17498 if (p->error_indicator) {
17499 return NULL;
17500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017501 void *_res = NULL;
17502 int _mark = p->mark;
17503 int _start_mark = p->mark;
17504 void **_children = PyMem_Malloc(sizeof(void *));
17505 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017506 p->error_indicator = 1;
17507 PyErr_NoMemory();
Pablo Galindo2b74c832020-04-27 18:02:07 +010017508 return NULL;
17509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017510 ssize_t _children_capacity = 1;
17511 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017512 { // ('if' disjunction)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017513 if (p->error_indicator) {
17514 return NULL;
17515 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017516 void *_tmp_143_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017517 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017518 (_tmp_143_var = _tmp_143_rule(p)) // 'if' disjunction
Pablo Galindo2b74c832020-04-27 18:02:07 +010017519 )
17520 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017521 _res = _tmp_143_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017522 if (_n == _children_capacity) {
17523 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017524 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17525 if (!_new_children) {
17526 p->error_indicator = 1;
17527 PyErr_NoMemory();
Pablo Galindo2b74c832020-04-27 18:02:07 +010017528 return NULL;
17529 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017530 _children = _new_children;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017532 _children[_n++] = _res;
17533 _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017534 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017535 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017536 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017537 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17538 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017539 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017540 p->error_indicator = 1;
17541 PyErr_NoMemory();
Pablo Galindo2b74c832020-04-27 18:02:07 +010017542 return NULL;
17543 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017544 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17545 PyMem_Free(_children);
17546 _PyPegen_insert_memo(p, _start_mark, _loop0_105_type, _seq);
17547 return _seq;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017548}
17549
Guido van Rossum3941d972020-05-01 09:42:03 -070017550// _loop0_106: ('if' disjunction)
Guido van Rossumc001c092020-04-30 12:12:19 -070017551static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017552_loop0_106_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070017553{
17554 if (p->error_indicator) {
17555 return NULL;
17556 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017557 void *_res = NULL;
17558 int _mark = p->mark;
17559 int _start_mark = p->mark;
17560 void **_children = PyMem_Malloc(sizeof(void *));
17561 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017562 p->error_indicator = 1;
17563 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017564 return NULL;
17565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017566 ssize_t _children_capacity = 1;
17567 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017568 { // ('if' disjunction)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017569 if (p->error_indicator) {
17570 return NULL;
17571 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017572 void *_tmp_144_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017573 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017574 (_tmp_144_var = _tmp_144_rule(p)) // 'if' disjunction
Guido van Rossumc001c092020-04-30 12:12:19 -070017575 )
17576 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017577 _res = _tmp_144_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017578 if (_n == _children_capacity) {
17579 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017580 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17581 if (!_new_children) {
17582 p->error_indicator = 1;
17583 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017584 return NULL;
17585 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017586 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017587 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017588 _children[_n++] = _res;
17589 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017591 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017592 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017593 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17594 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017595 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017596 p->error_indicator = 1;
17597 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017598 return NULL;
17599 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017600 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17601 PyMem_Free(_children);
17602 _PyPegen_insert_memo(p, _start_mark, _loop0_106_type, _seq);
17603 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017604}
17605
Guido van Rossum3941d972020-05-01 09:42:03 -070017606// _tmp_107: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017607static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017608_tmp_107_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017609{
17610 if (p->error_indicator) {
17611 return NULL;
17612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017613 void * _res = NULL;
17614 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017615 { // ',' args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017616 if (p->error_indicator) {
17617 return NULL;
17618 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017619 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017620 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017621 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017622 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017623 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017624 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017625 )
17626 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017627 _res = c;
17628 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017629 p->error_indicator = 1;
17630 return NULL;
17631 }
Guido van Rossumc001c092020-04-30 12:12:19 -070017632 goto done;
17633 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017634 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017636 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070017637 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017638 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070017639}
17640
Guido van Rossum3941d972020-05-01 09:42:03 -070017641// _tmp_108: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017642static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017643_tmp_108_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017644{
17645 if (p->error_indicator) {
17646 return NULL;
17647 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017648 void * _res = NULL;
17649 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017650 { // ',' args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017651 if (p->error_indicator) {
17652 return NULL;
17653 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017654 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017655 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017656 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017657 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017658 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017659 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017660 )
17661 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017662 _res = c;
17663 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017664 p->error_indicator = 1;
17665 return NULL;
17666 }
17667 goto done;
17668 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017669 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017670 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017671 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017672 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017673 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017674}
17675
Guido van Rossum3941d972020-05-01 09:42:03 -070017676// _loop0_110: ',' kwarg_or_starred
17677static asdl_seq *
17678_loop0_110_rule(Parser *p)
17679{
17680 if (p->error_indicator) {
17681 return NULL;
17682 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017683 void *_res = NULL;
17684 int _mark = p->mark;
17685 int _start_mark = p->mark;
17686 void **_children = PyMem_Malloc(sizeof(void *));
17687 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017688 p->error_indicator = 1;
17689 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017690 return NULL;
17691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017692 ssize_t _children_capacity = 1;
17693 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070017694 { // ',' kwarg_or_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017695 if (p->error_indicator) {
17696 return NULL;
17697 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017698 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070017699 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070017700 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017701 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070017702 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017703 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070017704 )
17705 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017706 _res = elem;
17707 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070017708 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017709 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070017710 return NULL;
17711 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017712 if (_n == _children_capacity) {
17713 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017714 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17715 if (!_new_children) {
17716 p->error_indicator = 1;
17717 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017718 return NULL;
17719 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017720 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070017721 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017722 _children[_n++] = _res;
17723 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017724 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017725 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017726 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017727 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17728 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017729 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017730 p->error_indicator = 1;
17731 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017732 return NULL;
17733 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017734 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17735 PyMem_Free(_children);
17736 _PyPegen_insert_memo(p, _start_mark, _loop0_110_type, _seq);
17737 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070017738}
17739
17740// _gather_109: kwarg_or_starred _loop0_110
17741static asdl_seq *
17742_gather_109_rule(Parser *p)
17743{
17744 if (p->error_indicator) {
17745 return NULL;
17746 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017747 asdl_seq * _res = NULL;
17748 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017749 { // kwarg_or_starred _loop0_110
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017750 if (p->error_indicator) {
17751 return NULL;
17752 }
Guido van Rossum3941d972020-05-01 09:42:03 -070017753 KeywordOrStarred* elem;
17754 asdl_seq * seq;
17755 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017756 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070017757 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017758 (seq = _loop0_110_rule(p)) // _loop0_110
Guido van Rossum3941d972020-05-01 09:42:03 -070017759 )
17760 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017761 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070017762 goto done;
17763 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017764 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017765 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017766 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070017767 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017768 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070017769}
17770
17771// _loop0_112: ',' kwarg_or_double_starred
17772static asdl_seq *
17773_loop0_112_rule(Parser *p)
17774{
17775 if (p->error_indicator) {
17776 return NULL;
17777 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017778 void *_res = NULL;
17779 int _mark = p->mark;
17780 int _start_mark = p->mark;
17781 void **_children = PyMem_Malloc(sizeof(void *));
17782 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017783 p->error_indicator = 1;
17784 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017785 return NULL;
17786 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017787 ssize_t _children_capacity = 1;
17788 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070017789 { // ',' kwarg_or_double_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017790 if (p->error_indicator) {
17791 return NULL;
17792 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017793 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070017794 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070017795 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017796 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070017797 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017798 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070017799 )
17800 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017801 _res = elem;
17802 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070017803 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017804 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070017805 return NULL;
17806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017807 if (_n == _children_capacity) {
17808 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017809 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17810 if (!_new_children) {
17811 p->error_indicator = 1;
17812 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017813 return NULL;
17814 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017815 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070017816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017817 _children[_n++] = _res;
17818 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017819 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017820 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017821 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017822 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17823 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017824 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017825 p->error_indicator = 1;
17826 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017827 return NULL;
17828 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017829 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17830 PyMem_Free(_children);
17831 _PyPegen_insert_memo(p, _start_mark, _loop0_112_type, _seq);
17832 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070017833}
17834
17835// _gather_111: kwarg_or_double_starred _loop0_112
17836static asdl_seq *
17837_gather_111_rule(Parser *p)
17838{
17839 if (p->error_indicator) {
17840 return NULL;
17841 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017842 asdl_seq * _res = NULL;
17843 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017844 { // kwarg_or_double_starred _loop0_112
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017845 if (p->error_indicator) {
17846 return NULL;
17847 }
Guido van Rossum3941d972020-05-01 09:42:03 -070017848 KeywordOrStarred* elem;
17849 asdl_seq * seq;
17850 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017851 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070017852 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017853 (seq = _loop0_112_rule(p)) // _loop0_112
Guido van Rossum3941d972020-05-01 09:42:03 -070017854 )
17855 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017856 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070017857 goto done;
17858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017859 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017861 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070017862 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017863 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070017864}
17865
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017866// _loop0_114: ',' kwarg_or_starred
Pablo Galindo2b74c832020-04-27 18:02:07 +010017867static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017868_loop0_114_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017869{
17870 if (p->error_indicator) {
17871 return NULL;
17872 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017873 void *_res = NULL;
17874 int _mark = p->mark;
17875 int _start_mark = p->mark;
17876 void **_children = PyMem_Malloc(sizeof(void *));
17877 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017878 p->error_indicator = 1;
17879 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017880 return NULL;
17881 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017882 ssize_t _children_capacity = 1;
17883 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070017884 { // ',' kwarg_or_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017885 if (p->error_indicator) {
17886 return NULL;
17887 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017888 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070017889 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070017890 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017891 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070017892 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017893 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070017894 )
17895 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017896 _res = elem;
17897 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070017898 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017899 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070017900 return NULL;
17901 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017902 if (_n == _children_capacity) {
17903 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017904 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17905 if (!_new_children) {
17906 p->error_indicator = 1;
17907 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070017908 return NULL;
17909 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017910 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070017911 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017912 _children[_n++] = _res;
17913 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017915 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017916 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017917 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17918 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017919 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017920 p->error_indicator = 1;
17921 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070017922 return NULL;
17923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017924 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17925 PyMem_Free(_children);
17926 _PyPegen_insert_memo(p, _start_mark, _loop0_114_type, _seq);
17927 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070017928}
17929
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017930// _gather_113: kwarg_or_starred _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070017931static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017932_gather_113_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070017933{
17934 if (p->error_indicator) {
17935 return NULL;
17936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017937 asdl_seq * _res = NULL;
17938 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017939 { // kwarg_or_starred _loop0_114
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017940 if (p->error_indicator) {
17941 return NULL;
17942 }
Guido van Rossumc001c092020-04-30 12:12:19 -070017943 KeywordOrStarred* elem;
17944 asdl_seq * seq;
17945 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017946 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070017947 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017948 (seq = _loop0_114_rule(p)) // _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070017949 )
17950 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017951 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070017952 goto done;
17953 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017954 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017955 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017956 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070017957 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017958 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070017959}
17960
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017961// _loop0_116: ',' kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070017962static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017963_loop0_116_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070017964{
17965 if (p->error_indicator) {
17966 return NULL;
17967 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017968 void *_res = NULL;
17969 int _mark = p->mark;
17970 int _start_mark = p->mark;
17971 void **_children = PyMem_Malloc(sizeof(void *));
17972 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017973 p->error_indicator = 1;
17974 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070017975 return NULL;
17976 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017977 ssize_t _children_capacity = 1;
17978 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070017979 { // ',' kwarg_or_double_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017980 if (p->error_indicator) {
17981 return NULL;
17982 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017983 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070017984 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070017985 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017986 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070017987 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017988 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070017989 )
17990 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017991 _res = elem;
17992 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070017993 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017994 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070017995 return NULL;
17996 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017997 if (_n == _children_capacity) {
17998 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017999 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18000 if (!_new_children) {
18001 p->error_indicator = 1;
18002 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018003 return NULL;
18004 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018005 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070018006 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018007 _children[_n++] = _res;
18008 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018010 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018011 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018012 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18013 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018014 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018015 p->error_indicator = 1;
18016 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018017 return NULL;
18018 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018019 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18020 PyMem_Free(_children);
18021 _PyPegen_insert_memo(p, _start_mark, _loop0_116_type, _seq);
18022 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070018023}
18024
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018025// _gather_115: kwarg_or_double_starred _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070018026static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018027_gather_115_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070018028{
18029 if (p->error_indicator) {
18030 return NULL;
18031 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018032 asdl_seq * _res = NULL;
18033 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018034 { // kwarg_or_double_starred _loop0_116
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018035 if (p->error_indicator) {
18036 return NULL;
18037 }
Guido van Rossumc001c092020-04-30 12:12:19 -070018038 KeywordOrStarred* elem;
18039 asdl_seq * seq;
18040 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018041 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070018042 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018043 (seq = _loop0_116_rule(p)) // _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070018044 )
18045 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018046 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070018047 goto done;
18048 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018049 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070018050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018051 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070018052 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018053 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070018054}
18055
Guido van Rossum3941d972020-05-01 09:42:03 -070018056// _loop0_117: (',' star_target)
Guido van Rossumc001c092020-04-30 12:12:19 -070018057static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018058_loop0_117_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018059{
18060 if (p->error_indicator) {
18061 return NULL;
18062 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018063 void *_res = NULL;
18064 int _mark = p->mark;
18065 int _start_mark = p->mark;
18066 void **_children = PyMem_Malloc(sizeof(void *));
18067 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018068 p->error_indicator = 1;
18069 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018070 return NULL;
18071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018072 ssize_t _children_capacity = 1;
18073 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018074 { // (',' star_target)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018075 if (p->error_indicator) {
18076 return NULL;
18077 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018078 void *_tmp_145_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018079 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018080 (_tmp_145_var = _tmp_145_rule(p)) // ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018081 )
18082 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018083 _res = _tmp_145_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018084 if (_n == _children_capacity) {
18085 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018086 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18087 if (!_new_children) {
18088 p->error_indicator = 1;
18089 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018090 return NULL;
18091 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018092 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018094 _children[_n++] = _res;
18095 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018097 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018098 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018099 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18100 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018101 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018102 p->error_indicator = 1;
18103 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018104 return NULL;
18105 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018106 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18107 PyMem_Free(_children);
18108 _PyPegen_insert_memo(p, _start_mark, _loop0_117_type, _seq);
18109 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018110}
18111
Guido van Rossum3941d972020-05-01 09:42:03 -070018112// _loop0_119: ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018113static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018114_loop0_119_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070018115{
18116 if (p->error_indicator) {
18117 return NULL;
18118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018119 void *_res = NULL;
18120 int _mark = p->mark;
18121 int _start_mark = p->mark;
18122 void **_children = PyMem_Malloc(sizeof(void *));
18123 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018124 p->error_indicator = 1;
18125 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018126 return NULL;
18127 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018128 ssize_t _children_capacity = 1;
18129 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018130 { // ',' star_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018131 if (p->error_indicator) {
18132 return NULL;
18133 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018134 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018135 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018136 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018137 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018138 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018139 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018140 )
18141 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018142 _res = elem;
18143 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018144 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018145 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018146 return NULL;
18147 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018148 if (_n == _children_capacity) {
18149 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018150 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18151 if (!_new_children) {
18152 p->error_indicator = 1;
18153 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018154 return NULL;
18155 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018156 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018158 _children[_n++] = _res;
18159 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018160 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018161 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018163 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18164 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018165 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018166 p->error_indicator = 1;
18167 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018168 return NULL;
18169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018170 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18171 PyMem_Free(_children);
18172 _PyPegen_insert_memo(p, _start_mark, _loop0_119_type, _seq);
18173 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018174}
18175
Guido van Rossum3941d972020-05-01 09:42:03 -070018176// _gather_118: star_target _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018177static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018178_gather_118_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018179{
18180 if (p->error_indicator) {
18181 return NULL;
18182 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018183 asdl_seq * _res = NULL;
18184 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070018185 { // star_target _loop0_119
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018186 if (p->error_indicator) {
18187 return NULL;
18188 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018189 expr_ty elem;
18190 asdl_seq * seq;
18191 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018192 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018193 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018194 (seq = _loop0_119_rule(p)) // _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018195 )
18196 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018197 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018198 goto done;
18199 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018200 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018201 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018202 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018203 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018204 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018205}
18206
Guido van Rossum3941d972020-05-01 09:42:03 -070018207// _tmp_120: !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018208static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070018209_tmp_120_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018210{
18211 if (p->error_indicator) {
18212 return NULL;
18213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018214 void * _res = NULL;
18215 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018216 { // !'*' star_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018217 if (p->error_indicator) {
18218 return NULL;
18219 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018220 expr_ty star_target_var;
18221 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018222 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018223 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018224 (star_target_var = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018225 )
18226 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018227 _res = star_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018228 goto done;
18229 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018230 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018231 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018232 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018233 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018234 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018235}
18236
Guido van Rossum3941d972020-05-01 09:42:03 -070018237// _loop0_122: ',' del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018238static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018239_loop0_122_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018240{
18241 if (p->error_indicator) {
18242 return NULL;
18243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018244 void *_res = NULL;
18245 int _mark = p->mark;
18246 int _start_mark = p->mark;
18247 void **_children = PyMem_Malloc(sizeof(void *));
18248 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018249 p->error_indicator = 1;
18250 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018251 return NULL;
18252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018253 ssize_t _children_capacity = 1;
18254 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018255 { // ',' del_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018256 if (p->error_indicator) {
18257 return NULL;
18258 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018259 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018260 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018261 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018262 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018263 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018264 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018265 )
18266 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018267 _res = elem;
18268 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018269 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018270 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018271 return NULL;
18272 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018273 if (_n == _children_capacity) {
18274 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018275 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18276 if (!_new_children) {
18277 p->error_indicator = 1;
18278 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018279 return NULL;
18280 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018281 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018282 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018283 _children[_n++] = _res;
18284 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018286 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018287 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018288 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18289 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018290 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018291 p->error_indicator = 1;
18292 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018293 return NULL;
18294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018295 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18296 PyMem_Free(_children);
18297 _PyPegen_insert_memo(p, _start_mark, _loop0_122_type, _seq);
18298 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018299}
18300
Guido van Rossum3941d972020-05-01 09:42:03 -070018301// _gather_121: del_target _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018302static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018303_gather_121_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018304{
18305 if (p->error_indicator) {
18306 return NULL;
18307 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018308 asdl_seq * _res = NULL;
18309 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070018310 { // del_target _loop0_122
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018311 if (p->error_indicator) {
18312 return NULL;
18313 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018314 expr_ty elem;
18315 asdl_seq * seq;
18316 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018317 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018318 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018319 (seq = _loop0_122_rule(p)) // _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018320 )
18321 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018322 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018323 goto done;
18324 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018325 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018326 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018327 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018328 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018329 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018330}
18331
Guido van Rossum3941d972020-05-01 09:42:03 -070018332// _loop0_124: ',' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018333static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018334_loop0_124_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018335{
18336 if (p->error_indicator) {
18337 return NULL;
18338 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018339 void *_res = NULL;
18340 int _mark = p->mark;
18341 int _start_mark = p->mark;
18342 void **_children = PyMem_Malloc(sizeof(void *));
18343 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018344 p->error_indicator = 1;
18345 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018346 return NULL;
18347 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018348 ssize_t _children_capacity = 1;
18349 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018350 { // ',' target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018351 if (p->error_indicator) {
18352 return NULL;
18353 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018354 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018355 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018356 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018357 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018358 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018359 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018360 )
18361 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018362 _res = elem;
18363 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018364 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018365 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018366 return NULL;
18367 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018368 if (_n == _children_capacity) {
18369 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018370 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18371 if (!_new_children) {
18372 p->error_indicator = 1;
18373 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018374 return NULL;
18375 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018376 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018377 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018378 _children[_n++] = _res;
18379 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018380 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018381 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018383 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18384 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018385 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018386 p->error_indicator = 1;
18387 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018388 return NULL;
18389 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018390 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18391 PyMem_Free(_children);
18392 _PyPegen_insert_memo(p, _start_mark, _loop0_124_type, _seq);
18393 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018394}
18395
Guido van Rossum3941d972020-05-01 09:42:03 -070018396// _gather_123: target _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018397static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018398_gather_123_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018399{
18400 if (p->error_indicator) {
18401 return NULL;
18402 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018403 asdl_seq * _res = NULL;
18404 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070018405 { // target _loop0_124
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018406 if (p->error_indicator) {
18407 return NULL;
18408 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018409 expr_ty elem;
18410 asdl_seq * seq;
18411 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018412 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018413 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018414 (seq = _loop0_124_rule(p)) // _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018415 )
18416 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018417 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018418 goto done;
18419 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018420 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018421 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018422 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018423 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018424 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018425}
18426
Guido van Rossum3941d972020-05-01 09:42:03 -070018427// _tmp_125: args | expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018428static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070018429_tmp_125_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018430{
18431 if (p->error_indicator) {
18432 return NULL;
18433 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018434 void * _res = NULL;
18435 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018436 { // args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018437 if (p->error_indicator) {
18438 return NULL;
18439 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018440 expr_ty args_var;
18441 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018442 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018443 )
18444 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018445 _res = args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018446 goto done;
18447 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018448 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018449 }
18450 { // expression for_if_clauses
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018451 if (p->error_indicator) {
18452 return NULL;
18453 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018454 expr_ty expression_var;
18455 asdl_seq* for_if_clauses_var;
18456 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018457 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018458 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018459 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018460 )
18461 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018462 _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018463 goto done;
18464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018465 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018467 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018468 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018469 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018470}
18471
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018472// _loop0_126: star_named_expressions
18473static asdl_seq *
18474_loop0_126_rule(Parser *p)
18475{
18476 if (p->error_indicator) {
18477 return NULL;
18478 }
18479 void *_res = NULL;
18480 int _mark = p->mark;
18481 int _start_mark = p->mark;
18482 void **_children = PyMem_Malloc(sizeof(void *));
18483 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018484 p->error_indicator = 1;
18485 PyErr_NoMemory();
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018486 return NULL;
18487 }
18488 ssize_t _children_capacity = 1;
18489 ssize_t _n = 0;
18490 { // star_named_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018491 if (p->error_indicator) {
18492 return NULL;
18493 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018494 asdl_seq* star_named_expressions_var;
18495 while (
18496 (star_named_expressions_var = star_named_expressions_rule(p)) // star_named_expressions
18497 )
18498 {
18499 _res = star_named_expressions_var;
18500 if (_n == _children_capacity) {
18501 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018502 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18503 if (!_new_children) {
18504 p->error_indicator = 1;
18505 PyErr_NoMemory();
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018506 return NULL;
18507 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018508 _children = _new_children;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018509 }
18510 _children[_n++] = _res;
18511 _mark = p->mark;
18512 }
18513 p->mark = _mark;
18514 }
18515 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18516 if (!_seq) {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018517 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018518 p->error_indicator = 1;
18519 PyErr_NoMemory();
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018520 return NULL;
18521 }
18522 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18523 PyMem_Free(_children);
18524 _PyPegen_insert_memo(p, _start_mark, _loop0_126_type, _seq);
18525 return _seq;
18526}
18527
18528// _tmp_127: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018529static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018530_tmp_127_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018531{
18532 if (p->error_indicator) {
18533 return NULL;
18534 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018535 void * _res = NULL;
18536 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018537 { // '=' annotated_rhs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018538 if (p->error_indicator) {
18539 return NULL;
18540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018541 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018542 expr_ty annotated_rhs_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018543 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018544 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018545 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018546 (annotated_rhs_var = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018547 )
18548 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018549 _res = _PyPegen_dummy_name(p, _literal, annotated_rhs_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018550 goto done;
18551 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018552 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018553 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018554 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018555 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018556 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018557}
18558
Pablo Galindo16ab0702020-05-15 02:04:52 +010018559// _tmp_128: yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018560static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018561_tmp_128_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018562{
18563 if (p->error_indicator) {
18564 return NULL;
18565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018566 void * _res = NULL;
18567 int _mark = p->mark;
Pablo Galindo16ab0702020-05-15 02:04:52 +010018568 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018569 if (p->error_indicator) {
18570 return NULL;
18571 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010018572 expr_ty yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018573 if (
Pablo Galindo16ab0702020-05-15 02:04:52 +010018574 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018575 )
18576 {
Pablo Galindo16ab0702020-05-15 02:04:52 +010018577 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018578 goto done;
18579 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018580 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018581 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010018582 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018583 if (p->error_indicator) {
18584 return NULL;
18585 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010018586 expr_ty star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018587 if (
Pablo Galindo16ab0702020-05-15 02:04:52 +010018588 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018589 )
18590 {
Pablo Galindo16ab0702020-05-15 02:04:52 +010018591 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018592 goto done;
18593 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018594 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018595 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018596 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018597 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018598 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018599}
18600
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018601// _tmp_129: yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018602static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018603_tmp_129_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018604{
18605 if (p->error_indicator) {
18606 return NULL;
18607 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018608 void * _res = NULL;
18609 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018610 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018611 if (p->error_indicator) {
18612 return NULL;
18613 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018614 expr_ty yield_expr_var;
18615 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018616 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018617 )
18618 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018619 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018620 goto done;
18621 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018622 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018623 }
18624 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018625 if (p->error_indicator) {
18626 return NULL;
18627 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018628 expr_ty star_expressions_var;
18629 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018630 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018631 )
18632 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018633 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018634 goto done;
18635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018636 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018638 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018639 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018640 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018641}
18642
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018643// _tmp_130: '[' | '(' | '{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018644static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018645_tmp_130_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018646{
18647 if (p->error_indicator) {
18648 return NULL;
18649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018650 void * _res = NULL;
18651 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018652 { // '['
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018653 if (p->error_indicator) {
18654 return NULL;
18655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018656 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018657 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018658 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018659 )
18660 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018661 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018662 goto done;
18663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018664 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018665 }
18666 { // '('
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018667 if (p->error_indicator) {
18668 return NULL;
18669 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018670 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018671 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018672 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018673 )
18674 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018675 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018676 goto done;
18677 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018678 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018679 }
18680 { // '{'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018681 if (p->error_indicator) {
18682 return NULL;
18683 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018684 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018685 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018686 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018687 )
18688 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018689 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018690 goto done;
18691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018692 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018694 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018695 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018696 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018697}
18698
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018699// _loop0_131: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018700static asdl_seq *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018701_loop0_131_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018702{
18703 if (p->error_indicator) {
18704 return NULL;
18705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018706 void *_res = NULL;
18707 int _mark = p->mark;
18708 int _start_mark = p->mark;
18709 void **_children = PyMem_Malloc(sizeof(void *));
18710 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018711 p->error_indicator = 1;
18712 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018713 return NULL;
18714 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018715 ssize_t _children_capacity = 1;
18716 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070018717 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018718 if (p->error_indicator) {
18719 return NULL;
18720 }
Guido van Rossumc001c092020-04-30 12:12:19 -070018721 arg_ty param_no_default_var;
18722 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018723 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018724 )
18725 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018726 _res = param_no_default_var;
18727 if (_n == _children_capacity) {
18728 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018729 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18730 if (!_new_children) {
18731 p->error_indicator = 1;
18732 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018733 return NULL;
18734 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018735 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070018736 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018737 _children[_n++] = _res;
18738 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018740 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018741 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018742 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18743 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018744 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018745 p->error_indicator = 1;
18746 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018747 return NULL;
18748 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018749 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18750 PyMem_Free(_children);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018751 _PyPegen_insert_memo(p, _start_mark, _loop0_131_type, _seq);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018752 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018753}
18754
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018755// _tmp_132: slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018756static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018757_tmp_132_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018758{
18759 if (p->error_indicator) {
18760 return NULL;
18761 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018762 void * _res = NULL;
18763 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018764 { // slash_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018765 if (p->error_indicator) {
18766 return NULL;
18767 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018768 SlashWithDefault* slash_with_default_var;
18769 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018770 (slash_with_default_var = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018771 )
18772 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018773 _res = slash_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018774 goto done;
18775 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018776 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018777 }
Guido van Rossumc001c092020-04-30 12:12:19 -070018778 { // param_with_default+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018779 if (p->error_indicator) {
18780 return NULL;
18781 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018782 asdl_seq * _loop1_146_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018783 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018784 (_loop1_146_var = _loop1_146_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018785 )
18786 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018787 _res = _loop1_146_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018788 goto done;
18789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018790 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018792 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018793 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018794 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018795}
18796
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018797// _tmp_133: ')' | ',' (')' | '**')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018798static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018799_tmp_133_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018800{
18801 if (p->error_indicator) {
18802 return NULL;
18803 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018804 void * _res = NULL;
18805 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018806 { // ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018807 if (p->error_indicator) {
18808 return NULL;
18809 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018810 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018811 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018812 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018813 )
18814 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018815 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018816 goto done;
18817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018818 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018819 }
18820 { // ',' (')' | '**')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018821 if (p->error_indicator) {
18822 return NULL;
18823 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018824 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018825 void *_tmp_147_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018826 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018827 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018828 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018829 (_tmp_147_var = _tmp_147_rule(p)) // ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018830 )
18831 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018832 _res = _PyPegen_dummy_name(p, _literal, _tmp_147_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018833 goto done;
18834 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018835 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018837 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018838 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018839 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018840}
18841
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018842// _tmp_134: ':' | ',' (':' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018843static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018844_tmp_134_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018845{
18846 if (p->error_indicator) {
18847 return NULL;
18848 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018849 void * _res = NULL;
18850 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018851 { // ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018852 if (p->error_indicator) {
18853 return NULL;
18854 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018855 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018856 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018857 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018858 )
18859 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018860 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018861 goto done;
18862 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018863 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018864 }
18865 { // ',' (':' | '**')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018866 if (p->error_indicator) {
18867 return NULL;
18868 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018869 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018870 void *_tmp_148_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018871 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018872 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018873 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018874 (_tmp_148_var = _tmp_148_rule(p)) // ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018875 )
18876 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018877 _res = _PyPegen_dummy_name(p, _literal, _tmp_148_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018878 goto done;
18879 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018880 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018881 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018882 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018883 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018884 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018885}
18886
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018887// _tmp_135: star_targets '='
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018888static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018889_tmp_135_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018890{
18891 if (p->error_indicator) {
18892 return NULL;
18893 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018894 void * _res = NULL;
18895 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018896 { // star_targets '='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018897 if (p->error_indicator) {
18898 return NULL;
18899 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018900 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018901 expr_ty z;
18902 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018903 (z = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018904 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018905 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018906 )
18907 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018908 _res = z;
18909 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018910 p->error_indicator = 1;
18911 return NULL;
18912 }
18913 goto done;
18914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018915 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018916 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018917 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018918 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018919 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018920}
18921
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018922// _tmp_136: '.' | '...'
18923static void *
18924_tmp_136_rule(Parser *p)
18925{
18926 if (p->error_indicator) {
18927 return NULL;
18928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018929 void * _res = NULL;
18930 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018931 { // '.'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018932 if (p->error_indicator) {
18933 return NULL;
18934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018935 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018936 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018937 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018938 )
18939 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018940 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018941 goto done;
18942 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018943 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018944 }
18945 { // '...'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018946 if (p->error_indicator) {
18947 return NULL;
18948 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018949 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018950 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018951 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018952 )
18953 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018954 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018955 goto done;
18956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018957 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018958 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018959 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018960 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018961 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018962}
18963
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018964// _tmp_137: '.' | '...'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018965static void *
18966_tmp_137_rule(Parser *p)
18967{
18968 if (p->error_indicator) {
18969 return NULL;
18970 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018971 void * _res = NULL;
18972 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018973 { // '.'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018974 if (p->error_indicator) {
18975 return NULL;
18976 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018977 Token * _literal;
18978 if (
18979 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
18980 )
18981 {
18982 _res = _literal;
18983 goto done;
18984 }
18985 p->mark = _mark;
18986 }
18987 { // '...'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018988 if (p->error_indicator) {
18989 return NULL;
18990 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018991 Token * _literal;
18992 if (
18993 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
18994 )
18995 {
18996 _res = _literal;
18997 goto done;
18998 }
18999 p->mark = _mark;
19000 }
19001 _res = NULL;
19002 done:
19003 return _res;
19004}
19005
19006// _tmp_138: '@' named_expression NEWLINE
19007static void *
19008_tmp_138_rule(Parser *p)
19009{
19010 if (p->error_indicator) {
19011 return NULL;
19012 }
19013 void * _res = NULL;
19014 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019015 { // '@' named_expression NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019016 if (p->error_indicator) {
19017 return NULL;
19018 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019019 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019020 expr_ty f;
Pablo Galindob796b3f2020-05-01 12:32:26 +010019021 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019022 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019023 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019024 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019025 (f = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019026 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019027 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019028 )
19029 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019030 _res = f;
19031 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019032 p->error_indicator = 1;
19033 return NULL;
19034 }
19035 goto done;
19036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019037 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019038 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019039 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019040 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019041 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019042}
19043
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019044// _tmp_139: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019045static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019046_tmp_139_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019047{
19048 if (p->error_indicator) {
19049 return NULL;
19050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019051 void * _res = NULL;
19052 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019053 { // ',' star_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019054 if (p->error_indicator) {
19055 return NULL;
19056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019057 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019058 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019059 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019060 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019061 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019062 (c = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019063 )
19064 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019065 _res = c;
19066 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019067 p->error_indicator = 1;
19068 return NULL;
19069 }
19070 goto done;
19071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019072 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019073 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019074 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019075 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019076 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019077}
19078
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019079// _tmp_140: ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019080static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019081_tmp_140_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019082{
19083 if (p->error_indicator) {
19084 return NULL;
19085 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019086 void * _res = NULL;
19087 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019088 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019089 if (p->error_indicator) {
19090 return NULL;
19091 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019092 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019093 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019094 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019095 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019096 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019097 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019098 )
19099 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019100 _res = c;
19101 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019102 p->error_indicator = 1;
19103 return NULL;
19104 }
19105 goto done;
19106 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019107 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019108 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019109 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019110 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019111 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019112}
19113
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019114// _tmp_141: 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019115static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019116_tmp_141_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019117{
19118 if (p->error_indicator) {
19119 return NULL;
19120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019121 void * _res = NULL;
19122 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019123 { // 'or' conjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019124 if (p->error_indicator) {
19125 return NULL;
19126 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019127 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019128 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019129 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019130 (_keyword = _PyPegen_expect_token(p, 532)) // token='or'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019131 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019132 (c = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019133 )
19134 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019135 _res = c;
19136 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019137 p->error_indicator = 1;
19138 return NULL;
19139 }
19140 goto done;
19141 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019142 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019143 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019144 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019145 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019146 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019147}
19148
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019149// _tmp_142: 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019150static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019151_tmp_142_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019152{
19153 if (p->error_indicator) {
19154 return NULL;
19155 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019156 void * _res = NULL;
19157 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019158 { // 'and' inversion
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019159 if (p->error_indicator) {
19160 return NULL;
19161 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019162 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019163 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019164 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019165 (_keyword = _PyPegen_expect_token(p, 533)) // token='and'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019166 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019167 (c = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019168 )
19169 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019170 _res = c;
19171 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019172 p->error_indicator = 1;
19173 return NULL;
19174 }
19175 goto done;
19176 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019177 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019178 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019179 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019180 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019181 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019182}
19183
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019184// _tmp_143: 'if' disjunction
19185static void *
19186_tmp_143_rule(Parser *p)
19187{
19188 if (p->error_indicator) {
19189 return NULL;
19190 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019191 void * _res = NULL;
19192 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019193 { // 'if' disjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019194 if (p->error_indicator) {
19195 return NULL;
19196 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019197 Token * _keyword;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019198 expr_ty z;
19199 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019200 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019201 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019202 (z = disjunction_rule(p)) // disjunction
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019203 )
19204 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019205 _res = z;
19206 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019207 p->error_indicator = 1;
19208 return NULL;
19209 }
19210 goto done;
19211 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019212 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019214 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019215 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019216 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019217}
19218
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019219// _tmp_144: 'if' disjunction
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019220static void *
19221_tmp_144_rule(Parser *p)
19222{
19223 if (p->error_indicator) {
19224 return NULL;
19225 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019226 void * _res = NULL;
19227 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019228 { // 'if' disjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019229 if (p->error_indicator) {
19230 return NULL;
19231 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019232 Token * _keyword;
19233 expr_ty z;
19234 if (
19235 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
19236 &&
19237 (z = disjunction_rule(p)) // disjunction
19238 )
19239 {
19240 _res = z;
19241 if (_res == NULL && PyErr_Occurred()) {
19242 p->error_indicator = 1;
19243 return NULL;
19244 }
19245 goto done;
19246 }
19247 p->mark = _mark;
19248 }
19249 _res = NULL;
19250 done:
19251 return _res;
19252}
19253
19254// _tmp_145: ',' star_target
19255static void *
19256_tmp_145_rule(Parser *p)
19257{
19258 if (p->error_indicator) {
19259 return NULL;
19260 }
19261 void * _res = NULL;
19262 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019263 { // ',' star_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019264 if (p->error_indicator) {
19265 return NULL;
19266 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019267 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019268 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019269 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019270 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019271 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019272 (c = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019273 )
19274 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019275 _res = c;
19276 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019277 p->error_indicator = 1;
19278 return NULL;
19279 }
19280 goto done;
19281 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019282 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019283 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019284 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019285 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019286 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019287}
19288
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019289// _loop1_146: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019290static asdl_seq *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019291_loop1_146_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070019292{
19293 if (p->error_indicator) {
19294 return NULL;
19295 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019296 void *_res = NULL;
19297 int _mark = p->mark;
19298 int _start_mark = p->mark;
19299 void **_children = PyMem_Malloc(sizeof(void *));
19300 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019301 p->error_indicator = 1;
19302 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070019303 return NULL;
19304 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019305 ssize_t _children_capacity = 1;
19306 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070019307 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019308 if (p->error_indicator) {
19309 return NULL;
19310 }
Guido van Rossumc001c092020-04-30 12:12:19 -070019311 NameDefaultPair* param_with_default_var;
19312 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010019313 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070019314 )
19315 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019316 _res = param_with_default_var;
19317 if (_n == _children_capacity) {
19318 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019319 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19320 if (!_new_children) {
19321 p->error_indicator = 1;
19322 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070019323 return NULL;
19324 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019325 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070019326 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019327 _children[_n++] = _res;
19328 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070019329 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019330 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070019331 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019332 if (_n == 0 || p->error_indicator) {
19333 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070019334 return NULL;
19335 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019336 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19337 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019338 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019339 p->error_indicator = 1;
19340 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070019341 return NULL;
19342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019343 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19344 PyMem_Free(_children);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019345 _PyPegen_insert_memo(p, _start_mark, _loop1_146_type, _seq);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019346 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070019347}
19348
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019349// _tmp_147: ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019350static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019351_tmp_147_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019352{
19353 if (p->error_indicator) {
19354 return NULL;
19355 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019356 void * _res = NULL;
19357 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019358 { // ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019359 if (p->error_indicator) {
19360 return NULL;
19361 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019362 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019363 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019364 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019365 )
19366 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019367 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019368 goto done;
19369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019370 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019371 }
19372 { // '**'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019373 if (p->error_indicator) {
19374 return NULL;
19375 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019376 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019377 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019378 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019379 )
19380 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019381 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019382 goto done;
19383 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019384 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019386 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019387 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019388 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019389}
19390
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019391// _tmp_148: ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019392static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019393_tmp_148_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019394{
19395 if (p->error_indicator) {
19396 return NULL;
19397 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019398 void * _res = NULL;
19399 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019400 { // ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019401 if (p->error_indicator) {
19402 return NULL;
19403 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019404 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019405 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019406 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019407 )
19408 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019409 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019410 goto done;
19411 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019412 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019413 }
19414 { // '**'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019415 if (p->error_indicator) {
19416 return NULL;
19417 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019418 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019419 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019420 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019421 )
19422 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019423 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019424 goto done;
19425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019426 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019427 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019428 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019429 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019430 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019431}
19432
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019433void *
19434_PyPegen_parse(Parser *p)
19435{
19436 // Initialize keywords
19437 p->keywords = reserved_keywords;
19438 p->n_keyword_lists = n_keyword_lists;
19439
19440 // Run parser
19441 void *result = NULL;
19442 if (p->start_rule == Py_file_input) {
19443 result = file_rule(p);
19444 } else if (p->start_rule == Py_single_input) {
19445 result = interactive_rule(p);
19446 } else if (p->start_rule == Py_eval_input) {
19447 result = eval_rule(p);
Guido van Rossumc001c092020-04-30 12:12:19 -070019448 } else if (p->start_rule == Py_func_type_input) {
19449 result = func_type_rule(p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019450 } else if (p->start_rule == Py_fstring_input) {
19451 result = fstring_rule(p);
19452 }
19453
19454 return result;
19455}
19456
19457// The end