blob: fe95d274f37d2b2707736dce018a83c53832481c [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
224#define _loop0_1_type 1153
225#define _loop0_2_type 1154
226#define _loop0_4_type 1155
227#define _gather_3_type 1156
228#define _loop0_6_type 1157
229#define _gather_5_type 1158
230#define _loop0_8_type 1159
231#define _gather_7_type 1160
232#define _loop0_10_type 1161
233#define _gather_9_type 1162
234#define _loop1_11_type 1163
235#define _loop0_13_type 1164
236#define _gather_12_type 1165
237#define _tmp_14_type 1166
238#define _tmp_15_type 1167
239#define _tmp_16_type 1168
240#define _tmp_17_type 1169
241#define _tmp_18_type 1170
242#define _tmp_19_type 1171
243#define _tmp_20_type 1172
244#define _tmp_21_type 1173
245#define _loop1_22_type 1174
246#define _tmp_23_type 1175
247#define _tmp_24_type 1176
248#define _loop0_26_type 1177
249#define _gather_25_type 1178
250#define _loop0_28_type 1179
251#define _gather_27_type 1180
252#define _tmp_29_type 1181
253#define _loop0_30_type 1182
254#define _loop1_31_type 1183
255#define _loop0_33_type 1184
256#define _gather_32_type 1185
257#define _tmp_34_type 1186
258#define _loop0_36_type 1187
259#define _gather_35_type 1188
260#define _tmp_37_type 1189
261#define _loop0_39_type 1190
262#define _gather_38_type 1191
263#define _loop0_41_type 1192
264#define _gather_40_type 1193
265#define _loop0_43_type 1194
266#define _gather_42_type 1195
267#define _loop0_45_type 1196
268#define _gather_44_type 1197
269#define _tmp_46_type 1198
270#define _loop1_47_type 1199
271#define _tmp_48_type 1200
272#define _tmp_49_type 1201
273#define _tmp_50_type 1202
274#define _tmp_51_type 1203
275#define _tmp_52_type 1204
276#define _loop0_53_type 1205
277#define _loop0_54_type 1206
278#define _loop0_55_type 1207
279#define _loop1_56_type 1208
280#define _loop0_57_type 1209
281#define _loop1_58_type 1210
282#define _loop1_59_type 1211
283#define _loop1_60_type 1212
284#define _loop0_61_type 1213
285#define _loop1_62_type 1214
286#define _loop0_63_type 1215
287#define _loop1_64_type 1216
288#define _loop0_65_type 1217
289#define _loop1_66_type 1218
290#define _loop1_67_type 1219
291#define _tmp_68_type 1220
292#define _loop0_70_type 1221
293#define _gather_69_type 1222
294#define _loop1_71_type 1223
295#define _loop0_73_type 1224
296#define _gather_72_type 1225
297#define _loop1_74_type 1226
298#define _loop0_75_type 1227
299#define _loop0_76_type 1228
300#define _loop0_77_type 1229
301#define _loop1_78_type 1230
302#define _loop0_79_type 1231
303#define _loop1_80_type 1232
304#define _loop1_81_type 1233
305#define _loop1_82_type 1234
306#define _loop0_83_type 1235
307#define _loop1_84_type 1236
308#define _loop0_85_type 1237
309#define _loop1_86_type 1238
310#define _loop0_87_type 1239
311#define _loop1_88_type 1240
312#define _loop1_89_type 1241
313#define _loop1_90_type 1242
314#define _loop1_91_type 1243
315#define _tmp_92_type 1244
316#define _loop0_94_type 1245
317#define _gather_93_type 1246
318#define _tmp_95_type 1247
319#define _tmp_96_type 1248
320#define _tmp_97_type 1249
321#define _tmp_98_type 1250
322#define _loop1_99_type 1251
323#define _tmp_100_type 1252
324#define _tmp_101_type 1253
325#define _loop0_103_type 1254
326#define _gather_102_type 1255
327#define _loop1_104_type 1256
328#define _loop0_105_type 1257
329#define _loop0_106_type 1258
330#define _tmp_107_type 1259
331#define _tmp_108_type 1260
332#define _loop0_110_type 1261
333#define _gather_109_type 1262
334#define _loop0_112_type 1263
335#define _gather_111_type 1264
336#define _loop0_114_type 1265
337#define _gather_113_type 1266
338#define _loop0_116_type 1267
339#define _gather_115_type 1268
340#define _loop0_117_type 1269
341#define _loop0_119_type 1270
342#define _gather_118_type 1271
343#define _tmp_120_type 1272
344#define _loop0_122_type 1273
345#define _gather_121_type 1274
346#define _loop0_124_type 1275
347#define _gather_123_type 1276
348#define _tmp_125_type 1277
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300349#define _loop0_126_type 1278
Shantanu27c0d9b2020-05-11 14:53:58 -0700350#define _tmp_127_type 1279
351#define _tmp_128_type 1280
352#define _tmp_129_type 1281
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300353#define _tmp_130_type 1282
354#define _loop0_131_type 1283
Shantanu27c0d9b2020-05-11 14:53:58 -0700355#define _tmp_132_type 1284
356#define _tmp_133_type 1285
357#define _tmp_134_type 1286
358#define _tmp_135_type 1287
359#define _tmp_136_type 1288
360#define _tmp_137_type 1289
361#define _tmp_138_type 1290
362#define _tmp_139_type 1291
363#define _tmp_140_type 1292
364#define _tmp_141_type 1293
365#define _tmp_142_type 1294
366#define _tmp_143_type 1295
367#define _tmp_144_type 1296
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300368#define _tmp_145_type 1297
369#define _loop1_146_type 1298
Shantanu27c0d9b2020-05-11 14:53:58 -0700370#define _tmp_147_type 1299
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300371#define _tmp_148_type 1300
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100372
373static mod_ty file_rule(Parser *p);
374static mod_ty interactive_rule(Parser *p);
375static mod_ty eval_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700376static mod_ty func_type_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100377static expr_ty fstring_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700378static asdl_seq* type_expressions_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100379static asdl_seq* statements_rule(Parser *p);
380static asdl_seq* statement_rule(Parser *p);
381static asdl_seq* statement_newline_rule(Parser *p);
382static asdl_seq* simple_stmt_rule(Parser *p);
383static stmt_ty small_stmt_rule(Parser *p);
384static stmt_ty compound_stmt_rule(Parser *p);
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +0300385static stmt_ty assignment_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100386static AugOperator* augassign_rule(Parser *p);
387static stmt_ty global_stmt_rule(Parser *p);
388static stmt_ty nonlocal_stmt_rule(Parser *p);
389static stmt_ty yield_stmt_rule(Parser *p);
390static stmt_ty assert_stmt_rule(Parser *p);
391static stmt_ty del_stmt_rule(Parser *p);
392static stmt_ty import_stmt_rule(Parser *p);
393static stmt_ty import_name_rule(Parser *p);
394static stmt_ty import_from_rule(Parser *p);
395static asdl_seq* import_from_targets_rule(Parser *p);
396static asdl_seq* import_from_as_names_rule(Parser *p);
397static alias_ty import_from_as_name_rule(Parser *p);
398static asdl_seq* dotted_as_names_rule(Parser *p);
399static alias_ty dotted_as_name_rule(Parser *p);
400static expr_ty dotted_name_rule(Parser *p);
401static stmt_ty if_stmt_rule(Parser *p);
402static stmt_ty elif_stmt_rule(Parser *p);
403static asdl_seq* else_block_rule(Parser *p);
404static stmt_ty while_stmt_rule(Parser *p);
405static stmt_ty for_stmt_rule(Parser *p);
406static stmt_ty with_stmt_rule(Parser *p);
407static withitem_ty with_item_rule(Parser *p);
408static stmt_ty try_stmt_rule(Parser *p);
409static excepthandler_ty except_block_rule(Parser *p);
410static asdl_seq* finally_block_rule(Parser *p);
411static stmt_ty return_stmt_rule(Parser *p);
412static stmt_ty raise_stmt_rule(Parser *p);
413static stmt_ty function_def_rule(Parser *p);
414static stmt_ty function_def_raw_rule(Parser *p);
Pablo Galindod9552412020-05-01 16:32:09 +0100415static Token* func_type_comment_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100416static arguments_ty params_rule(Parser *p);
417static arguments_ty parameters_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700418static asdl_seq* slash_no_default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100419static SlashWithDefault* slash_with_default_rule(Parser *p);
420static StarEtc* star_etc_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100421static arg_ty kwds_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700422static arg_ty param_no_default_rule(Parser *p);
423static NameDefaultPair* param_with_default_rule(Parser *p);
424static NameDefaultPair* param_maybe_default_rule(Parser *p);
425static arg_ty param_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100426static expr_ty annotation_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700427static expr_ty default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100428static asdl_seq* decorators_rule(Parser *p);
429static stmt_ty class_def_rule(Parser *p);
430static stmt_ty class_def_raw_rule(Parser *p);
431static asdl_seq* block_rule(Parser *p);
432static asdl_seq* expressions_list_rule(Parser *p);
433static expr_ty star_expressions_rule(Parser *p);
434static expr_ty star_expression_rule(Parser *p);
435static asdl_seq* star_named_expressions_rule(Parser *p);
436static expr_ty star_named_expression_rule(Parser *p);
437static expr_ty named_expression_rule(Parser *p);
438static expr_ty annotated_rhs_rule(Parser *p);
439static expr_ty expressions_rule(Parser *p);
440static expr_ty expression_rule(Parser *p);
441static expr_ty lambdef_rule(Parser *p);
442static arguments_ty lambda_parameters_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700443static asdl_seq* lambda_slash_no_default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100444static SlashWithDefault* lambda_slash_with_default_rule(Parser *p);
445static StarEtc* lambda_star_etc_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100446static arg_ty lambda_kwds_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700447static arg_ty lambda_param_no_default_rule(Parser *p);
448static NameDefaultPair* lambda_param_with_default_rule(Parser *p);
449static NameDefaultPair* lambda_param_maybe_default_rule(Parser *p);
450static arg_ty lambda_param_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100451static expr_ty disjunction_rule(Parser *p);
452static expr_ty conjunction_rule(Parser *p);
453static expr_ty inversion_rule(Parser *p);
454static expr_ty comparison_rule(Parser *p);
455static CmpopExprPair* compare_op_bitwise_or_pair_rule(Parser *p);
456static CmpopExprPair* eq_bitwise_or_rule(Parser *p);
457static CmpopExprPair* noteq_bitwise_or_rule(Parser *p);
458static CmpopExprPair* lte_bitwise_or_rule(Parser *p);
459static CmpopExprPair* lt_bitwise_or_rule(Parser *p);
460static CmpopExprPair* gte_bitwise_or_rule(Parser *p);
461static CmpopExprPair* gt_bitwise_or_rule(Parser *p);
462static CmpopExprPair* notin_bitwise_or_rule(Parser *p);
463static CmpopExprPair* in_bitwise_or_rule(Parser *p);
464static CmpopExprPair* isnot_bitwise_or_rule(Parser *p);
465static CmpopExprPair* is_bitwise_or_rule(Parser *p);
466static expr_ty bitwise_or_rule(Parser *p);
467static expr_ty bitwise_xor_rule(Parser *p);
468static expr_ty bitwise_and_rule(Parser *p);
469static expr_ty shift_expr_rule(Parser *p);
470static expr_ty sum_rule(Parser *p);
471static expr_ty term_rule(Parser *p);
472static expr_ty factor_rule(Parser *p);
473static expr_ty power_rule(Parser *p);
474static expr_ty await_primary_rule(Parser *p);
475static expr_ty primary_rule(Parser *p);
476static expr_ty slices_rule(Parser *p);
477static expr_ty slice_rule(Parser *p);
478static expr_ty atom_rule(Parser *p);
479static expr_ty strings_rule(Parser *p);
480static expr_ty list_rule(Parser *p);
481static expr_ty listcomp_rule(Parser *p);
482static expr_ty tuple_rule(Parser *p);
483static expr_ty group_rule(Parser *p);
484static expr_ty genexp_rule(Parser *p);
485static expr_ty set_rule(Parser *p);
486static expr_ty setcomp_rule(Parser *p);
487static expr_ty dict_rule(Parser *p);
488static expr_ty dictcomp_rule(Parser *p);
489static asdl_seq* kvpairs_rule(Parser *p);
490static KeyValuePair* kvpair_rule(Parser *p);
491static asdl_seq* for_if_clauses_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300492static comprehension_ty for_if_clause_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100493static expr_ty yield_expr_rule(Parser *p);
494static expr_ty arguments_rule(Parser *p);
495static expr_ty args_rule(Parser *p);
496static asdl_seq* kwargs_rule(Parser *p);
497static expr_ty starred_expression_rule(Parser *p);
498static KeywordOrStarred* kwarg_or_starred_rule(Parser *p);
499static KeywordOrStarred* kwarg_or_double_starred_rule(Parser *p);
500static expr_ty star_targets_rule(Parser *p);
501static asdl_seq* star_targets_seq_rule(Parser *p);
502static expr_ty star_target_rule(Parser *p);
503static expr_ty star_atom_rule(Parser *p);
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +0300504static expr_ty single_target_rule(Parser *p);
505static expr_ty single_subscript_attribute_target_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100506static asdl_seq* del_targets_rule(Parser *p);
507static expr_ty del_target_rule(Parser *p);
508static expr_ty del_t_atom_rule(Parser *p);
Shantanu27c0d9b2020-05-11 14:53:58 -0700509static void *del_target_end_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100510static asdl_seq* targets_rule(Parser *p);
511static expr_ty target_rule(Parser *p);
512static expr_ty t_primary_rule(Parser *p);
513static void *t_lookahead_rule(Parser *p);
514static expr_ty t_atom_rule(Parser *p);
515static void *incorrect_arguments_rule(Parser *p);
Lysandros Nikolaou4638c642020-05-07 13:44:06 +0300516static void *invalid_kwarg_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100517static void *invalid_named_expression_rule(Parser *p);
518static void *invalid_assignment_rule(Parser *p);
519static void *invalid_block_rule(Parser *p);
520static void *invalid_comprehension_rule(Parser *p);
521static void *invalid_parameters_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300522static void *invalid_star_etc_rule(Parser *p);
523static void *invalid_lambda_star_etc_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700524static void *invalid_double_type_comments_rule(Parser *p);
Shantanu27c0d9b2020-05-11 14:53:58 -0700525static void *invalid_del_target_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100526static asdl_seq *_loop0_1_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700527static asdl_seq *_loop0_2_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100528static asdl_seq *_loop0_4_rule(Parser *p);
529static asdl_seq *_gather_3_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700530static asdl_seq *_loop0_6_rule(Parser *p);
531static asdl_seq *_gather_5_rule(Parser *p);
532static asdl_seq *_loop0_8_rule(Parser *p);
533static asdl_seq *_gather_7_rule(Parser *p);
534static asdl_seq *_loop0_10_rule(Parser *p);
535static asdl_seq *_gather_9_rule(Parser *p);
536static asdl_seq *_loop1_11_rule(Parser *p);
537static asdl_seq *_loop0_13_rule(Parser *p);
538static asdl_seq *_gather_12_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100539static void *_tmp_14_rule(Parser *p);
540static void *_tmp_15_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700541static void *_tmp_16_rule(Parser *p);
542static void *_tmp_17_rule(Parser *p);
543static void *_tmp_18_rule(Parser *p);
544static void *_tmp_19_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100545static void *_tmp_20_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700546static void *_tmp_21_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100547static asdl_seq *_loop1_22_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700548static void *_tmp_23_rule(Parser *p);
549static void *_tmp_24_rule(Parser *p);
550static asdl_seq *_loop0_26_rule(Parser *p);
551static asdl_seq *_gather_25_rule(Parser *p);
552static asdl_seq *_loop0_28_rule(Parser *p);
553static asdl_seq *_gather_27_rule(Parser *p);
554static void *_tmp_29_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100555static asdl_seq *_loop0_30_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700556static asdl_seq *_loop1_31_rule(Parser *p);
557static asdl_seq *_loop0_33_rule(Parser *p);
558static asdl_seq *_gather_32_rule(Parser *p);
559static void *_tmp_34_rule(Parser *p);
560static asdl_seq *_loop0_36_rule(Parser *p);
561static asdl_seq *_gather_35_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100562static void *_tmp_37_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700563static asdl_seq *_loop0_39_rule(Parser *p);
564static asdl_seq *_gather_38_rule(Parser *p);
565static asdl_seq *_loop0_41_rule(Parser *p);
566static asdl_seq *_gather_40_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300567static asdl_seq *_loop0_43_rule(Parser *p);
568static asdl_seq *_gather_42_rule(Parser *p);
569static asdl_seq *_loop0_45_rule(Parser *p);
570static asdl_seq *_gather_44_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100571static void *_tmp_46_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300572static asdl_seq *_loop1_47_rule(Parser *p);
573static void *_tmp_48_rule(Parser *p);
574static void *_tmp_49_rule(Parser *p);
575static void *_tmp_50_rule(Parser *p);
576static void *_tmp_51_rule(Parser *p);
577static void *_tmp_52_rule(Parser *p);
578static asdl_seq *_loop0_53_rule(Parser *p);
579static asdl_seq *_loop0_54_rule(Parser *p);
580static asdl_seq *_loop0_55_rule(Parser *p);
581static asdl_seq *_loop1_56_rule(Parser *p);
582static asdl_seq *_loop0_57_rule(Parser *p);
583static asdl_seq *_loop1_58_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700584static asdl_seq *_loop1_59_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300585static asdl_seq *_loop1_60_rule(Parser *p);
586static asdl_seq *_loop0_61_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700587static asdl_seq *_loop1_62_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300588static asdl_seq *_loop0_63_rule(Parser *p);
589static asdl_seq *_loop1_64_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700590static asdl_seq *_loop0_65_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700591static asdl_seq *_loop1_66_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300592static asdl_seq *_loop1_67_rule(Parser *p);
593static void *_tmp_68_rule(Parser *p);
594static asdl_seq *_loop0_70_rule(Parser *p);
595static asdl_seq *_gather_69_rule(Parser *p);
596static asdl_seq *_loop1_71_rule(Parser *p);
597static asdl_seq *_loop0_73_rule(Parser *p);
598static asdl_seq *_gather_72_rule(Parser *p);
599static asdl_seq *_loop1_74_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700600static asdl_seq *_loop0_75_rule(Parser *p);
601static asdl_seq *_loop0_76_rule(Parser *p);
602static asdl_seq *_loop0_77_rule(Parser *p);
603static asdl_seq *_loop1_78_rule(Parser *p);
604static asdl_seq *_loop0_79_rule(Parser *p);
605static asdl_seq *_loop1_80_rule(Parser *p);
606static asdl_seq *_loop1_81_rule(Parser *p);
607static asdl_seq *_loop1_82_rule(Parser *p);
608static asdl_seq *_loop0_83_rule(Parser *p);
609static asdl_seq *_loop1_84_rule(Parser *p);
610static asdl_seq *_loop0_85_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300611static asdl_seq *_loop1_86_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700612static asdl_seq *_loop0_87_rule(Parser *p);
613static asdl_seq *_loop1_88_rule(Parser *p);
614static asdl_seq *_loop1_89_rule(Parser *p);
615static asdl_seq *_loop1_90_rule(Parser *p);
616static asdl_seq *_loop1_91_rule(Parser *p);
617static void *_tmp_92_rule(Parser *p);
618static asdl_seq *_loop0_94_rule(Parser *p);
619static asdl_seq *_gather_93_rule(Parser *p);
620static void *_tmp_95_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700621static void *_tmp_96_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700622static void *_tmp_97_rule(Parser *p);
623static void *_tmp_98_rule(Parser *p);
624static asdl_seq *_loop1_99_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100625static void *_tmp_100_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300626static void *_tmp_101_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700627static asdl_seq *_loop0_103_rule(Parser *p);
628static asdl_seq *_gather_102_rule(Parser *p);
629static asdl_seq *_loop1_104_rule(Parser *p);
630static asdl_seq *_loop0_105_rule(Parser *p);
631static asdl_seq *_loop0_106_rule(Parser *p);
632static void *_tmp_107_rule(Parser *p);
633static void *_tmp_108_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300634static asdl_seq *_loop0_110_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700635static asdl_seq *_gather_109_rule(Parser *p);
636static asdl_seq *_loop0_112_rule(Parser *p);
637static asdl_seq *_gather_111_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100638static asdl_seq *_loop0_114_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300639static asdl_seq *_gather_113_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100640static asdl_seq *_loop0_116_rule(Parser *p);
641static asdl_seq *_gather_115_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700642static asdl_seq *_loop0_117_rule(Parser *p);
643static asdl_seq *_loop0_119_rule(Parser *p);
644static asdl_seq *_gather_118_rule(Parser *p);
645static void *_tmp_120_rule(Parser *p);
646static asdl_seq *_loop0_122_rule(Parser *p);
647static asdl_seq *_gather_121_rule(Parser *p);
648static asdl_seq *_loop0_124_rule(Parser *p);
649static asdl_seq *_gather_123_rule(Parser *p);
650static void *_tmp_125_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300651static asdl_seq *_loop0_126_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700652static void *_tmp_127_rule(Parser *p);
653static void *_tmp_128_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100654static void *_tmp_129_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300655static void *_tmp_130_rule(Parser *p);
656static asdl_seq *_loop0_131_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100657static void *_tmp_132_rule(Parser *p);
658static void *_tmp_133_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700659static void *_tmp_134_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100660static void *_tmp_135_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700661static void *_tmp_136_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100662static void *_tmp_137_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700663static void *_tmp_138_rule(Parser *p);
664static void *_tmp_139_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300665static void *_tmp_140_rule(Parser *p);
666static void *_tmp_141_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700667static void *_tmp_142_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300668static void *_tmp_143_rule(Parser *p);
669static void *_tmp_144_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300670static void *_tmp_145_rule(Parser *p);
671static asdl_seq *_loop1_146_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300672static void *_tmp_147_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300673static void *_tmp_148_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100674
675
676// file: statements? $
677static mod_ty
678file_rule(Parser *p)
679{
680 if (p->error_indicator) {
681 return NULL;
682 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100683 mod_ty _res = NULL;
684 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100685 { // statements? $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300686 if (p->error_indicator) {
687 return NULL;
688 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100689 void *a;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100690 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100691 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100692 (a = statements_rule(p), 1) // statements?
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100693 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100694 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100695 )
696 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100697 _res = _PyPegen_make_module ( p , a );
698 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100699 p->error_indicator = 1;
700 return NULL;
701 }
702 goto done;
703 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100704 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100706 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100707 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100708 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100709}
710
711// interactive: statement_newline
712static mod_ty
713interactive_rule(Parser *p)
714{
715 if (p->error_indicator) {
716 return NULL;
717 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100718 mod_ty _res = NULL;
719 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100720 { // statement_newline
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300721 if (p->error_indicator) {
722 return NULL;
723 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100724 asdl_seq* a;
725 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100726 (a = statement_newline_rule(p)) // statement_newline
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100727 )
728 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100729 _res = Interactive ( a , p -> arena );
730 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100731 p->error_indicator = 1;
732 return NULL;
733 }
734 goto done;
735 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100736 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100738 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100739 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100740 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100741}
742
743// eval: expressions NEWLINE* $
744static mod_ty
745eval_rule(Parser *p)
746{
747 if (p->error_indicator) {
748 return NULL;
749 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100750 mod_ty _res = NULL;
751 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100752 { // expressions NEWLINE* $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300753 if (p->error_indicator) {
754 return NULL;
755 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100756 asdl_seq * _loop0_1_var;
757 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100758 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100759 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100760 (a = expressions_rule(p)) // expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100761 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100762 (_loop0_1_var = _loop0_1_rule(p)) // NEWLINE*
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100763 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100764 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100765 )
766 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100767 _res = Expression ( a , p -> arena );
768 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100769 p->error_indicator = 1;
770 return NULL;
771 }
772 goto done;
773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100774 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100775 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100776 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100777 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100778 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100779}
780
Guido van Rossumc001c092020-04-30 12:12:19 -0700781// func_type: '(' type_expressions? ')' '->' expression NEWLINE* $
782static mod_ty
783func_type_rule(Parser *p)
784{
785 if (p->error_indicator) {
786 return NULL;
787 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100788 mod_ty _res = NULL;
789 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700790 { // '(' type_expressions? ')' '->' expression NEWLINE* $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300791 if (p->error_indicator) {
792 return NULL;
793 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100794 Token * _literal;
795 Token * _literal_1;
796 Token * _literal_2;
Guido van Rossumc001c092020-04-30 12:12:19 -0700797 asdl_seq * _loop0_2_var;
798 void *a;
799 expr_ty b;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100800 Token * endmarker_var;
Guido van Rossumc001c092020-04-30 12:12:19 -0700801 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100802 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Guido van Rossumc001c092020-04-30 12:12:19 -0700803 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100804 (a = type_expressions_rule(p), 1) // type_expressions?
Guido van Rossumc001c092020-04-30 12:12:19 -0700805 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100806 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -0700807 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100808 (_literal_2 = _PyPegen_expect_token(p, 51)) // token='->'
Guido van Rossumc001c092020-04-30 12:12:19 -0700809 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100810 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700811 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100812 (_loop0_2_var = _loop0_2_rule(p)) // NEWLINE*
Guido van Rossumc001c092020-04-30 12:12:19 -0700813 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100814 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Guido van Rossumc001c092020-04-30 12:12:19 -0700815 )
816 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100817 _res = FunctionType ( a , b , p -> arena );
818 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700819 p->error_indicator = 1;
820 return NULL;
821 }
822 goto done;
823 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100824 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100826 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -0700827 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100828 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -0700829}
830
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100831// fstring: star_expressions
832static expr_ty
833fstring_rule(Parser *p)
834{
835 if (p->error_indicator) {
836 return NULL;
837 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100838 expr_ty _res = NULL;
839 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100840 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300841 if (p->error_indicator) {
842 return NULL;
843 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100844 expr_ty star_expressions_var;
845 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100846 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100847 )
848 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100849 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100850 goto done;
851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100852 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100853 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100854 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100855 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100856 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100857}
858
Guido van Rossumc001c092020-04-30 12:12:19 -0700859// type_expressions:
860// | ','.expression+ ',' '*' expression ',' '**' expression
861// | ','.expression+ ',' '*' expression
862// | ','.expression+ ',' '**' expression
Shantanu603d3542020-05-03 22:08:14 -0700863// | '*' expression ',' '**' expression
864// | '*' expression
865// | '**' expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700866// | ','.expression+
867static asdl_seq*
868type_expressions_rule(Parser *p)
869{
870 if (p->error_indicator) {
871 return NULL;
872 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100873 asdl_seq* _res = NULL;
874 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700875 { // ','.expression+ ',' '*' expression ',' '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300876 if (p->error_indicator) {
877 return NULL;
878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100879 Token * _literal;
880 Token * _literal_1;
881 Token * _literal_2;
882 Token * _literal_3;
Guido van Rossumc001c092020-04-30 12:12:19 -0700883 asdl_seq * a;
884 expr_ty b;
885 expr_ty c;
Guido van Rossumc001c092020-04-30 12:12:19 -0700886 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100887 (a = _gather_3_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700888 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100889 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700890 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100891 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Guido van Rossumc001c092020-04-30 12:12:19 -0700892 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100893 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700894 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100895 (_literal_2 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700896 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100897 (_literal_3 = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -0700898 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100899 (c = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700900 )
901 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100902 _res = _PyPegen_seq_append_to_end ( p , CHECK ( _PyPegen_seq_append_to_end ( p , a , b ) ) , c );
903 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700904 p->error_indicator = 1;
905 return NULL;
906 }
907 goto done;
908 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100909 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700910 }
911 { // ','.expression+ ',' '*' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300912 if (p->error_indicator) {
913 return NULL;
914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100915 Token * _literal;
916 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -0700917 asdl_seq * a;
918 expr_ty b;
Guido van Rossumc001c092020-04-30 12:12:19 -0700919 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100920 (a = _gather_5_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700921 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100922 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700923 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100924 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Guido van Rossumc001c092020-04-30 12:12:19 -0700925 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100926 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700927 )
928 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100929 _res = _PyPegen_seq_append_to_end ( p , a , b );
930 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700931 p->error_indicator = 1;
932 return NULL;
933 }
934 goto done;
935 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100936 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700937 }
938 { // ','.expression+ ',' '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300939 if (p->error_indicator) {
940 return NULL;
941 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100942 Token * _literal;
943 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -0700944 asdl_seq * a;
945 expr_ty b;
Guido van Rossumc001c092020-04-30 12:12:19 -0700946 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100947 (a = _gather_7_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700948 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100949 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700950 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100951 (_literal_1 = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -0700952 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100953 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700954 )
955 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100956 _res = _PyPegen_seq_append_to_end ( p , a , b );
957 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700958 p->error_indicator = 1;
959 return NULL;
960 }
961 goto done;
962 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100963 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700964 }
Shantanu603d3542020-05-03 22:08:14 -0700965 { // '*' expression ',' '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300966 if (p->error_indicator) {
967 return NULL;
968 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100969 Token * _literal;
970 Token * _literal_1;
971 Token * _literal_2;
Shantanu603d3542020-05-03 22:08:14 -0700972 expr_ty a;
973 expr_ty b;
Shantanu603d3542020-05-03 22:08:14 -0700974 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100975 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Shantanu603d3542020-05-03 22:08:14 -0700976 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100977 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700978 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100979 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Shantanu603d3542020-05-03 22:08:14 -0700980 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100981 (_literal_2 = _PyPegen_expect_token(p, 35)) // token='**'
Shantanu603d3542020-05-03 22:08:14 -0700982 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100983 (b = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700984 )
985 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100986 _res = _PyPegen_seq_append_to_end ( p , CHECK ( _PyPegen_singleton_seq ( p , a ) ) , b );
987 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -0700988 p->error_indicator = 1;
989 return NULL;
990 }
991 goto done;
992 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100993 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -0700994 }
995 { // '*' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300996 if (p->error_indicator) {
997 return NULL;
998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100999 Token * _literal;
Shantanu603d3542020-05-03 22:08:14 -07001000 expr_ty a;
Shantanu603d3542020-05-03 22:08:14 -07001001 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001002 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Shantanu603d3542020-05-03 22:08:14 -07001003 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001004 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -07001005 )
1006 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001007 _res = _PyPegen_singleton_seq ( p , a );
1008 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -07001009 p->error_indicator = 1;
1010 return NULL;
1011 }
1012 goto done;
1013 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001014 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -07001015 }
1016 { // '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001017 if (p->error_indicator) {
1018 return NULL;
1019 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001020 Token * _literal;
Shantanu603d3542020-05-03 22:08:14 -07001021 expr_ty a;
Shantanu603d3542020-05-03 22:08:14 -07001022 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001023 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Shantanu603d3542020-05-03 22:08:14 -07001024 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001025 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -07001026 )
1027 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001028 _res = _PyPegen_singleton_seq ( p , a );
1029 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -07001030 p->error_indicator = 1;
1031 return NULL;
1032 }
1033 goto done;
1034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001035 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -07001036 }
Guido van Rossumc001c092020-04-30 12:12:19 -07001037 { // ','.expression+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001038 if (p->error_indicator) {
1039 return NULL;
1040 }
Guido van Rossumc001c092020-04-30 12:12:19 -07001041 asdl_seq * _gather_9_var;
1042 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001043 (_gather_9_var = _gather_9_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -07001044 )
1045 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001046 _res = _gather_9_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07001047 goto done;
1048 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001049 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07001050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001051 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07001052 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001053 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07001054}
1055
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001056// statements: statement+
1057static asdl_seq*
1058statements_rule(Parser *p)
1059{
1060 if (p->error_indicator) {
1061 return NULL;
1062 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001063 asdl_seq* _res = NULL;
1064 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001065 { // statement+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001066 if (p->error_indicator) {
1067 return NULL;
1068 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001069 asdl_seq * a;
1070 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001071 (a = _loop1_11_rule(p)) // statement+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001072 )
1073 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001074 _res = _PyPegen_seq_flatten ( p , a );
1075 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001076 p->error_indicator = 1;
1077 return NULL;
1078 }
1079 goto done;
1080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001081 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001083 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001084 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001085 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001086}
1087
1088// statement: compound_stmt | simple_stmt
1089static asdl_seq*
1090statement_rule(Parser *p)
1091{
1092 if (p->error_indicator) {
1093 return NULL;
1094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001095 asdl_seq* _res = NULL;
1096 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001097 { // compound_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001098 if (p->error_indicator) {
1099 return NULL;
1100 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001101 stmt_ty a;
1102 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001103 (a = compound_stmt_rule(p)) // compound_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001104 )
1105 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001106 _res = _PyPegen_singleton_seq ( p , a );
1107 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001108 p->error_indicator = 1;
1109 return NULL;
1110 }
1111 goto done;
1112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001113 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001114 }
1115 { // simple_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001116 if (p->error_indicator) {
1117 return NULL;
1118 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001119 asdl_seq* simple_stmt_var;
1120 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001121 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001122 )
1123 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001124 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001125 goto done;
1126 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001127 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001128 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001129 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001130 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001131 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001132}
1133
1134// statement_newline: compound_stmt NEWLINE | simple_stmt | NEWLINE | $
1135static asdl_seq*
1136statement_newline_rule(Parser *p)
1137{
1138 if (p->error_indicator) {
1139 return NULL;
1140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001141 asdl_seq* _res = NULL;
1142 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001143 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1144 p->error_indicator = 1;
1145 return NULL;
1146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001147 int _start_lineno = p->tokens[_mark]->lineno;
1148 UNUSED(_start_lineno); // Only used by EXTRA macro
1149 int _start_col_offset = p->tokens[_mark]->col_offset;
1150 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001151 { // compound_stmt NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001152 if (p->error_indicator) {
1153 return NULL;
1154 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001155 stmt_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001156 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001157 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001158 (a = compound_stmt_rule(p)) // compound_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001159 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001160 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001161 )
1162 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001163 _res = _PyPegen_singleton_seq ( p , a );
1164 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001165 p->error_indicator = 1;
1166 return NULL;
1167 }
1168 goto done;
1169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001170 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001171 }
1172 { // simple_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001173 if (p->error_indicator) {
1174 return NULL;
1175 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001176 asdl_seq* simple_stmt_var;
1177 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001178 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001179 )
1180 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001181 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001182 goto done;
1183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001184 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001185 }
1186 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001187 if (p->error_indicator) {
1188 return NULL;
1189 }
Pablo Galindob796b3f2020-05-01 12:32:26 +01001190 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001191 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001192 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001193 )
1194 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001195 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1196 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001197 return NULL;
1198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001199 int _end_lineno = _token->end_lineno;
1200 UNUSED(_end_lineno); // Only used by EXTRA macro
1201 int _end_col_offset = _token->end_col_offset;
1202 UNUSED(_end_col_offset); // Only used by EXTRA macro
1203 _res = _PyPegen_singleton_seq ( p , CHECK ( _Py_Pass ( EXTRA ) ) );
1204 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001205 p->error_indicator = 1;
1206 return NULL;
1207 }
1208 goto done;
1209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001210 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001211 }
1212 { // $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001213 if (p->error_indicator) {
1214 return NULL;
1215 }
Pablo Galindob796b3f2020-05-01 12:32:26 +01001216 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001217 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001218 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001219 )
1220 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001221 _res = _PyPegen_interactive_exit ( p );
1222 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001223 p->error_indicator = 1;
1224 return NULL;
1225 }
1226 goto done;
1227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001228 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001229 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001230 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001231 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001232 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001233}
1234
1235// simple_stmt: small_stmt !';' NEWLINE | ';'.small_stmt+ ';'? NEWLINE
1236static asdl_seq*
1237simple_stmt_rule(Parser *p)
1238{
1239 if (p->error_indicator) {
1240 return NULL;
1241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001242 asdl_seq* _res = NULL;
1243 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001244 { // small_stmt !';' NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001245 if (p->error_indicator) {
1246 return NULL;
1247 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001248 stmt_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001249 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001250 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001251 (a = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001252 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001253 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 13) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001254 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001255 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001256 )
1257 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001258 _res = _PyPegen_singleton_seq ( p , a );
1259 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001260 p->error_indicator = 1;
1261 return NULL;
1262 }
1263 goto done;
1264 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001265 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001266 }
1267 { // ';'.small_stmt+ ';'? NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001268 if (p->error_indicator) {
1269 return NULL;
1270 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001271 void *_opt_var;
1272 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001273 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001274 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001275 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001276 (a = _gather_12_rule(p)) // ';'.small_stmt+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001277 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001278 (_opt_var = _PyPegen_expect_token(p, 13), 1) // ';'?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001279 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001280 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001281 )
1282 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001283 _res = a;
1284 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001285 p->error_indicator = 1;
1286 return NULL;
1287 }
1288 goto done;
1289 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001290 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001292 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001293 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001294 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001295}
1296
1297// small_stmt:
1298// | assignment
1299// | star_expressions
1300// | &'return' return_stmt
1301// | &('import' | 'from') import_stmt
1302// | &'raise' raise_stmt
1303// | 'pass'
1304// | &'del' del_stmt
1305// | &'yield' yield_stmt
1306// | &'assert' assert_stmt
1307// | 'break'
1308// | 'continue'
1309// | &'global' global_stmt
1310// | &'nonlocal' nonlocal_stmt
1311static stmt_ty
1312small_stmt_rule(Parser *p)
1313{
1314 if (p->error_indicator) {
1315 return NULL;
1316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001317 stmt_ty _res = NULL;
1318 if (_PyPegen_is_memoized(p, small_stmt_type, &_res))
1319 return _res;
1320 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001321 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1322 p->error_indicator = 1;
1323 return NULL;
1324 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001325 int _start_lineno = p->tokens[_mark]->lineno;
1326 UNUSED(_start_lineno); // Only used by EXTRA macro
1327 int _start_col_offset = p->tokens[_mark]->col_offset;
1328 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001329 { // assignment
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001330 if (p->error_indicator) {
1331 return NULL;
1332 }
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +03001333 stmt_ty assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001334 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001335 (assignment_var = assignment_rule(p)) // assignment
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001336 )
1337 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001338 _res = assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001339 goto done;
1340 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001341 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001342 }
1343 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001344 if (p->error_indicator) {
1345 return NULL;
1346 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001347 expr_ty e;
1348 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001349 (e = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001350 )
1351 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001352 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1353 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001354 return NULL;
1355 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001356 int _end_lineno = _token->end_lineno;
1357 UNUSED(_end_lineno); // Only used by EXTRA macro
1358 int _end_col_offset = _token->end_col_offset;
1359 UNUSED(_end_col_offset); // Only used by EXTRA macro
1360 _res = _Py_Expr ( e , EXTRA );
1361 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001362 p->error_indicator = 1;
1363 return NULL;
1364 }
1365 goto done;
1366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001367 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001368 }
1369 { // &'return' return_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001370 if (p->error_indicator) {
1371 return NULL;
1372 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001373 stmt_ty return_stmt_var;
1374 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001375 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 500) // token='return'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001376 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001377 (return_stmt_var = return_stmt_rule(p)) // return_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001378 )
1379 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001380 _res = return_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001381 goto done;
1382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001383 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001384 }
1385 { // &('import' | 'from') import_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001386 if (p->error_indicator) {
1387 return NULL;
1388 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001389 stmt_ty import_stmt_var;
1390 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001391 _PyPegen_lookahead(1, _tmp_14_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001392 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001393 (import_stmt_var = import_stmt_rule(p)) // import_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001394 )
1395 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001396 _res = import_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001397 goto done;
1398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001399 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001400 }
1401 { // &'raise' raise_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001402 if (p->error_indicator) {
1403 return NULL;
1404 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001405 stmt_ty raise_stmt_var;
1406 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001407 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 501) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001408 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001409 (raise_stmt_var = raise_stmt_rule(p)) // raise_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001410 )
1411 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001412 _res = raise_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001413 goto done;
1414 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001415 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001416 }
1417 { // 'pass'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001418 if (p->error_indicator) {
1419 return NULL;
1420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001421 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001422 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001423 (_keyword = _PyPegen_expect_token(p, 502)) // token='pass'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001424 )
1425 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001426 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1427 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001428 return NULL;
1429 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001430 int _end_lineno = _token->end_lineno;
1431 UNUSED(_end_lineno); // Only used by EXTRA macro
1432 int _end_col_offset = _token->end_col_offset;
1433 UNUSED(_end_col_offset); // Only used by EXTRA macro
1434 _res = _Py_Pass ( EXTRA );
1435 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001436 p->error_indicator = 1;
1437 return NULL;
1438 }
1439 goto done;
1440 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001441 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001442 }
1443 { // &'del' del_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001444 if (p->error_indicator) {
1445 return NULL;
1446 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001447 stmt_ty del_stmt_var;
1448 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001449 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 503) // token='del'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001450 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001451 (del_stmt_var = del_stmt_rule(p)) // del_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001452 )
1453 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001454 _res = del_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001455 goto done;
1456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001457 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001458 }
1459 { // &'yield' yield_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001460 if (p->error_indicator) {
1461 return NULL;
1462 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001463 stmt_ty yield_stmt_var;
1464 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001465 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 504) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001466 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001467 (yield_stmt_var = yield_stmt_rule(p)) // yield_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001468 )
1469 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001470 _res = yield_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001471 goto done;
1472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001473 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001474 }
1475 { // &'assert' assert_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001476 if (p->error_indicator) {
1477 return NULL;
1478 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001479 stmt_ty assert_stmt_var;
1480 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001481 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 505) // token='assert'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001482 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001483 (assert_stmt_var = assert_stmt_rule(p)) // assert_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001484 )
1485 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001486 _res = assert_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001487 goto done;
1488 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001489 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001490 }
1491 { // 'break'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001492 if (p->error_indicator) {
1493 return NULL;
1494 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001495 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001496 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001497 (_keyword = _PyPegen_expect_token(p, 506)) // token='break'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001498 )
1499 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001500 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1501 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001502 return NULL;
1503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001504 int _end_lineno = _token->end_lineno;
1505 UNUSED(_end_lineno); // Only used by EXTRA macro
1506 int _end_col_offset = _token->end_col_offset;
1507 UNUSED(_end_col_offset); // Only used by EXTRA macro
1508 _res = _Py_Break ( EXTRA );
1509 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001510 p->error_indicator = 1;
1511 return NULL;
1512 }
1513 goto done;
1514 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001515 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001516 }
1517 { // 'continue'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001518 if (p->error_indicator) {
1519 return NULL;
1520 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001521 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001522 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001523 (_keyword = _PyPegen_expect_token(p, 507)) // token='continue'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001524 )
1525 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001526 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1527 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001528 return NULL;
1529 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001530 int _end_lineno = _token->end_lineno;
1531 UNUSED(_end_lineno); // Only used by EXTRA macro
1532 int _end_col_offset = _token->end_col_offset;
1533 UNUSED(_end_col_offset); // Only used by EXTRA macro
1534 _res = _Py_Continue ( EXTRA );
1535 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001536 p->error_indicator = 1;
1537 return NULL;
1538 }
1539 goto done;
1540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001541 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001542 }
1543 { // &'global' global_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001544 if (p->error_indicator) {
1545 return NULL;
1546 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001547 stmt_ty global_stmt_var;
1548 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001549 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 508) // token='global'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001550 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001551 (global_stmt_var = global_stmt_rule(p)) // global_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001552 )
1553 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001554 _res = global_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001555 goto done;
1556 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001557 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001558 }
1559 { // &'nonlocal' nonlocal_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001560 if (p->error_indicator) {
1561 return NULL;
1562 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001563 stmt_ty nonlocal_stmt_var;
1564 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001565 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 509) // token='nonlocal'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001566 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001567 (nonlocal_stmt_var = nonlocal_stmt_rule(p)) // nonlocal_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001568 )
1569 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001570 _res = nonlocal_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001571 goto done;
1572 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001573 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001574 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001575 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001576 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001577 _PyPegen_insert_memo(p, _mark, small_stmt_type, _res);
1578 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001579}
1580
1581// compound_stmt:
1582// | &('def' | '@' | ASYNC) function_def
1583// | &'if' if_stmt
1584// | &('class' | '@') class_def
1585// | &('with' | ASYNC) with_stmt
1586// | &('for' | ASYNC) for_stmt
1587// | &'try' try_stmt
1588// | &'while' while_stmt
1589static stmt_ty
1590compound_stmt_rule(Parser *p)
1591{
1592 if (p->error_indicator) {
1593 return NULL;
1594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001595 stmt_ty _res = NULL;
1596 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001597 { // &('def' | '@' | ASYNC) function_def
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001598 if (p->error_indicator) {
1599 return NULL;
1600 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001601 stmt_ty function_def_var;
1602 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001603 _PyPegen_lookahead(1, _tmp_15_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001604 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001605 (function_def_var = function_def_rule(p)) // function_def
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001606 )
1607 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001608 _res = function_def_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001609 goto done;
1610 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001611 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001612 }
1613 { // &'if' if_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001614 if (p->error_indicator) {
1615 return NULL;
1616 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001617 stmt_ty if_stmt_var;
1618 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001619 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 510) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001620 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001621 (if_stmt_var = if_stmt_rule(p)) // if_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001622 )
1623 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001624 _res = if_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001625 goto done;
1626 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001627 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001628 }
1629 { // &('class' | '@') class_def
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001630 if (p->error_indicator) {
1631 return NULL;
1632 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001633 stmt_ty class_def_var;
1634 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001635 _PyPegen_lookahead(1, _tmp_16_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001636 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001637 (class_def_var = class_def_rule(p)) // class_def
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001638 )
1639 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001640 _res = class_def_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001641 goto done;
1642 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001643 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001644 }
1645 { // &('with' | ASYNC) with_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001646 if (p->error_indicator) {
1647 return NULL;
1648 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001649 stmt_ty with_stmt_var;
1650 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001651 _PyPegen_lookahead(1, _tmp_17_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001652 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001653 (with_stmt_var = with_stmt_rule(p)) // with_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001654 )
1655 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001656 _res = with_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001657 goto done;
1658 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001659 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001660 }
1661 { // &('for' | ASYNC) for_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001662 if (p->error_indicator) {
1663 return NULL;
1664 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001665 stmt_ty for_stmt_var;
1666 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001667 _PyPegen_lookahead(1, _tmp_18_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001668 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001669 (for_stmt_var = for_stmt_rule(p)) // for_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001670 )
1671 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001672 _res = for_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001673 goto done;
1674 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001675 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001676 }
1677 { // &'try' try_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001678 if (p->error_indicator) {
1679 return NULL;
1680 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001681 stmt_ty try_stmt_var;
1682 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001683 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 511) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001684 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001685 (try_stmt_var = try_stmt_rule(p)) // try_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001686 )
1687 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001688 _res = try_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001689 goto done;
1690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001691 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001692 }
1693 { // &'while' while_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001694 if (p->error_indicator) {
1695 return NULL;
1696 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001697 stmt_ty while_stmt_var;
1698 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001699 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 512) // token='while'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001700 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001701 (while_stmt_var = while_stmt_rule(p)) // while_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001702 )
1703 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001704 _res = while_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001705 goto done;
1706 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001707 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001709 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001710 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001711 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001712}
1713
1714// assignment:
1715// | NAME ':' expression ['=' annotated_rhs]
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001716// | ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
Guido van Rossumc001c092020-04-30 12:12:19 -07001717// | ((star_targets '='))+ (yield_expr | star_expressions) TYPE_COMMENT?
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001718// | single_target augassign (yield_expr | star_expressions)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001719// | invalid_assignment
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +03001720static stmt_ty
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001721assignment_rule(Parser *p)
1722{
1723 if (p->error_indicator) {
1724 return NULL;
1725 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001726 stmt_ty _res = NULL;
1727 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001728 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1729 p->error_indicator = 1;
1730 return NULL;
1731 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001732 int _start_lineno = p->tokens[_mark]->lineno;
1733 UNUSED(_start_lineno); // Only used by EXTRA macro
1734 int _start_col_offset = p->tokens[_mark]->col_offset;
1735 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001736 { // NAME ':' expression ['=' annotated_rhs]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001737 if (p->error_indicator) {
1738 return NULL;
1739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001740 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001741 expr_ty a;
1742 expr_ty b;
1743 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001744 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001745 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001746 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001747 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001748 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001749 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001750 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001751 (c = _tmp_19_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001752 )
1753 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001754 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1755 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001756 return NULL;
1757 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001758 int _end_lineno = _token->end_lineno;
1759 UNUSED(_end_lineno); // Only used by EXTRA macro
1760 int _end_col_offset = _token->end_col_offset;
1761 UNUSED(_end_col_offset); // Only used by EXTRA macro
1762 _res = CHECK_VERSION ( 6 , "Variable annotation syntax is" , _Py_AnnAssign ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , b , c , 1 , EXTRA ) );
1763 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001764 p->error_indicator = 1;
1765 return NULL;
1766 }
1767 goto done;
1768 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001769 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001770 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001771 { // ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001772 if (p->error_indicator) {
1773 return NULL;
1774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001775 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001776 void *a;
1777 expr_ty b;
1778 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001779 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001780 (a = _tmp_20_rule(p)) // '(' single_target ')' | single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001781 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001782 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001783 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001784 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001785 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001786 (c = _tmp_21_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001787 )
1788 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001789 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1790 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001791 return NULL;
1792 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001793 int _end_lineno = _token->end_lineno;
1794 UNUSED(_end_lineno); // Only used by EXTRA macro
1795 int _end_col_offset = _token->end_col_offset;
1796 UNUSED(_end_col_offset); // Only used by EXTRA macro
1797 _res = CHECK_VERSION ( 6 , "Variable annotations syntax is" , _Py_AnnAssign ( a , b , c , 0 , EXTRA ) );
1798 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001799 p->error_indicator = 1;
1800 return NULL;
1801 }
1802 goto done;
1803 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001804 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001805 }
Guido van Rossumc001c092020-04-30 12:12:19 -07001806 { // ((star_targets '='))+ (yield_expr | star_expressions) TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001807 if (p->error_indicator) {
1808 return NULL;
1809 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001810 asdl_seq * a;
1811 void *b;
Guido van Rossumc001c092020-04-30 12:12:19 -07001812 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001813 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001814 (a = _loop1_22_rule(p)) // ((star_targets '='))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001815 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001816 (b = _tmp_23_rule(p)) // yield_expr | star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -07001817 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001818 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001819 )
1820 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001821 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1822 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001823 return NULL;
1824 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001825 int _end_lineno = _token->end_lineno;
1826 UNUSED(_end_lineno); // Only used by EXTRA macro
1827 int _end_col_offset = _token->end_col_offset;
1828 UNUSED(_end_col_offset); // Only used by EXTRA macro
1829 _res = _Py_Assign ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
1830 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001831 p->error_indicator = 1;
1832 return NULL;
1833 }
1834 goto done;
1835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001836 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001837 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001838 { // single_target augassign (yield_expr | star_expressions)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001839 if (p->error_indicator) {
1840 return NULL;
1841 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001842 expr_ty a;
1843 AugOperator* b;
1844 void *c;
1845 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001846 (a = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001847 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001848 (b = augassign_rule(p)) // augassign
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001849 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001850 (c = _tmp_24_rule(p)) // yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001851 )
1852 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001853 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1854 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001855 return NULL;
1856 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001857 int _end_lineno = _token->end_lineno;
1858 UNUSED(_end_lineno); // Only used by EXTRA macro
1859 int _end_col_offset = _token->end_col_offset;
1860 UNUSED(_end_col_offset); // Only used by EXTRA macro
1861 _res = _Py_AugAssign ( a , b -> kind , c , EXTRA );
1862 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001863 p->error_indicator = 1;
1864 return NULL;
1865 }
1866 goto done;
1867 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001868 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001869 }
1870 { // invalid_assignment
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001871 if (p->error_indicator) {
1872 return NULL;
1873 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001874 void *invalid_assignment_var;
1875 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001876 (invalid_assignment_var = invalid_assignment_rule(p)) // invalid_assignment
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001877 )
1878 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001879 _res = invalid_assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001880 goto done;
1881 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001882 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001883 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001884 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001885 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001886 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001887}
1888
1889// augassign:
1890// | '+='
1891// | '-='
1892// | '*='
1893// | '@='
1894// | '/='
1895// | '%='
1896// | '&='
1897// | '|='
1898// | '^='
1899// | '<<='
1900// | '>>='
1901// | '**='
1902// | '//='
1903static AugOperator*
1904augassign_rule(Parser *p)
1905{
1906 if (p->error_indicator) {
1907 return NULL;
1908 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001909 AugOperator* _res = NULL;
1910 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001911 { // '+='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001912 if (p->error_indicator) {
1913 return NULL;
1914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001915 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001916 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001917 (_literal = _PyPegen_expect_token(p, 36)) // token='+='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001918 )
1919 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001920 _res = _PyPegen_augoperator ( p , Add );
1921 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001922 p->error_indicator = 1;
1923 return NULL;
1924 }
1925 goto done;
1926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001927 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001928 }
1929 { // '-='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001930 if (p->error_indicator) {
1931 return NULL;
1932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001933 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001934 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001935 (_literal = _PyPegen_expect_token(p, 37)) // token='-='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001936 )
1937 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001938 _res = _PyPegen_augoperator ( p , Sub );
1939 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001940 p->error_indicator = 1;
1941 return NULL;
1942 }
1943 goto done;
1944 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001945 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001946 }
1947 { // '*='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001948 if (p->error_indicator) {
1949 return NULL;
1950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001951 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001952 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001953 (_literal = _PyPegen_expect_token(p, 38)) // token='*='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001954 )
1955 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001956 _res = _PyPegen_augoperator ( p , Mult );
1957 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001958 p->error_indicator = 1;
1959 return NULL;
1960 }
1961 goto done;
1962 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001963 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001964 }
1965 { // '@='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001966 if (p->error_indicator) {
1967 return NULL;
1968 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001969 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001970 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001971 (_literal = _PyPegen_expect_token(p, 50)) // token='@='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001972 )
1973 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001974 _res = CHECK_VERSION ( 5 , "The '@' operator is" , _PyPegen_augoperator ( p , MatMult ) );
1975 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001976 p->error_indicator = 1;
1977 return NULL;
1978 }
1979 goto done;
1980 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001981 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001982 }
1983 { // '/='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001984 if (p->error_indicator) {
1985 return NULL;
1986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001987 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001988 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001989 (_literal = _PyPegen_expect_token(p, 39)) // token='/='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001990 )
1991 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001992 _res = _PyPegen_augoperator ( p , Div );
1993 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001994 p->error_indicator = 1;
1995 return NULL;
1996 }
1997 goto done;
1998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001999 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002000 }
2001 { // '%='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002002 if (p->error_indicator) {
2003 return NULL;
2004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002005 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002006 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002007 (_literal = _PyPegen_expect_token(p, 40)) // token='%='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002008 )
2009 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002010 _res = _PyPegen_augoperator ( p , Mod );
2011 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002012 p->error_indicator = 1;
2013 return NULL;
2014 }
2015 goto done;
2016 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002017 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002018 }
2019 { // '&='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002020 if (p->error_indicator) {
2021 return NULL;
2022 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002023 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002024 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002025 (_literal = _PyPegen_expect_token(p, 41)) // token='&='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002026 )
2027 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002028 _res = _PyPegen_augoperator ( p , BitAnd );
2029 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002030 p->error_indicator = 1;
2031 return NULL;
2032 }
2033 goto done;
2034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002035 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002036 }
2037 { // '|='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002038 if (p->error_indicator) {
2039 return NULL;
2040 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002041 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002042 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002043 (_literal = _PyPegen_expect_token(p, 42)) // token='|='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002044 )
2045 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002046 _res = _PyPegen_augoperator ( p , BitOr );
2047 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002048 p->error_indicator = 1;
2049 return NULL;
2050 }
2051 goto done;
2052 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002053 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002054 }
2055 { // '^='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002056 if (p->error_indicator) {
2057 return NULL;
2058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002059 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002060 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002061 (_literal = _PyPegen_expect_token(p, 43)) // token='^='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002062 )
2063 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002064 _res = _PyPegen_augoperator ( p , BitXor );
2065 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002066 p->error_indicator = 1;
2067 return NULL;
2068 }
2069 goto done;
2070 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002071 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002072 }
2073 { // '<<='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002074 if (p->error_indicator) {
2075 return NULL;
2076 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002077 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002078 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002079 (_literal = _PyPegen_expect_token(p, 44)) // token='<<='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002080 )
2081 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002082 _res = _PyPegen_augoperator ( p , LShift );
2083 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002084 p->error_indicator = 1;
2085 return NULL;
2086 }
2087 goto done;
2088 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002089 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002090 }
2091 { // '>>='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002092 if (p->error_indicator) {
2093 return NULL;
2094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002095 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002096 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002097 (_literal = _PyPegen_expect_token(p, 45)) // token='>>='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002098 )
2099 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002100 _res = _PyPegen_augoperator ( p , RShift );
2101 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002102 p->error_indicator = 1;
2103 return NULL;
2104 }
2105 goto done;
2106 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002107 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002108 }
2109 { // '**='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002110 if (p->error_indicator) {
2111 return NULL;
2112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002113 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002114 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002115 (_literal = _PyPegen_expect_token(p, 46)) // token='**='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002116 )
2117 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002118 _res = _PyPegen_augoperator ( p , Pow );
2119 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002120 p->error_indicator = 1;
2121 return NULL;
2122 }
2123 goto done;
2124 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002125 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002126 }
2127 { // '//='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002128 if (p->error_indicator) {
2129 return NULL;
2130 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002131 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002132 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002133 (_literal = _PyPegen_expect_token(p, 48)) // token='//='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002134 )
2135 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002136 _res = _PyPegen_augoperator ( p , FloorDiv );
2137 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002138 p->error_indicator = 1;
2139 return NULL;
2140 }
2141 goto done;
2142 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002143 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002145 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002146 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002147 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002148}
2149
2150// global_stmt: 'global' ','.NAME+
2151static stmt_ty
2152global_stmt_rule(Parser *p)
2153{
2154 if (p->error_indicator) {
2155 return NULL;
2156 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002157 stmt_ty _res = NULL;
2158 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002159 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2160 p->error_indicator = 1;
2161 return NULL;
2162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002163 int _start_lineno = p->tokens[_mark]->lineno;
2164 UNUSED(_start_lineno); // Only used by EXTRA macro
2165 int _start_col_offset = p->tokens[_mark]->col_offset;
2166 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002167 { // 'global' ','.NAME+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002168 if (p->error_indicator) {
2169 return NULL;
2170 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002171 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002172 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002173 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002174 (_keyword = _PyPegen_expect_token(p, 508)) // token='global'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002175 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002176 (a = _gather_25_rule(p)) // ','.NAME+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002177 )
2178 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002179 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2180 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002181 return NULL;
2182 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002183 int _end_lineno = _token->end_lineno;
2184 UNUSED(_end_lineno); // Only used by EXTRA macro
2185 int _end_col_offset = _token->end_col_offset;
2186 UNUSED(_end_col_offset); // Only used by EXTRA macro
2187 _res = _Py_Global ( CHECK ( _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2188 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002189 p->error_indicator = 1;
2190 return NULL;
2191 }
2192 goto done;
2193 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002194 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002195 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002196 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002197 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002198 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002199}
2200
2201// nonlocal_stmt: 'nonlocal' ','.NAME+
2202static stmt_ty
2203nonlocal_stmt_rule(Parser *p)
2204{
2205 if (p->error_indicator) {
2206 return NULL;
2207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002208 stmt_ty _res = NULL;
2209 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002210 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2211 p->error_indicator = 1;
2212 return NULL;
2213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002214 int _start_lineno = p->tokens[_mark]->lineno;
2215 UNUSED(_start_lineno); // Only used by EXTRA macro
2216 int _start_col_offset = p->tokens[_mark]->col_offset;
2217 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002218 { // 'nonlocal' ','.NAME+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002219 if (p->error_indicator) {
2220 return NULL;
2221 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002222 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002223 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002224 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002225 (_keyword = _PyPegen_expect_token(p, 509)) // token='nonlocal'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002226 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002227 (a = _gather_27_rule(p)) // ','.NAME+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002228 )
2229 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002230 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2231 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002232 return NULL;
2233 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002234 int _end_lineno = _token->end_lineno;
2235 UNUSED(_end_lineno); // Only used by EXTRA macro
2236 int _end_col_offset = _token->end_col_offset;
2237 UNUSED(_end_col_offset); // Only used by EXTRA macro
2238 _res = _Py_Nonlocal ( CHECK ( _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2239 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002240 p->error_indicator = 1;
2241 return NULL;
2242 }
2243 goto done;
2244 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002245 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002247 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002248 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002249 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002250}
2251
2252// yield_stmt: yield_expr
2253static stmt_ty
2254yield_stmt_rule(Parser *p)
2255{
2256 if (p->error_indicator) {
2257 return NULL;
2258 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002259 stmt_ty _res = NULL;
2260 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002261 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2262 p->error_indicator = 1;
2263 return NULL;
2264 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002265 int _start_lineno = p->tokens[_mark]->lineno;
2266 UNUSED(_start_lineno); // Only used by EXTRA macro
2267 int _start_col_offset = p->tokens[_mark]->col_offset;
2268 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002269 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002270 if (p->error_indicator) {
2271 return NULL;
2272 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002273 expr_ty y;
2274 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002275 (y = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002276 )
2277 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002278 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2279 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002280 return NULL;
2281 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002282 int _end_lineno = _token->end_lineno;
2283 UNUSED(_end_lineno); // Only used by EXTRA macro
2284 int _end_col_offset = _token->end_col_offset;
2285 UNUSED(_end_col_offset); // Only used by EXTRA macro
2286 _res = _Py_Expr ( y , EXTRA );
2287 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002288 p->error_indicator = 1;
2289 return NULL;
2290 }
2291 goto done;
2292 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002293 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002295 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002296 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002297 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002298}
2299
2300// assert_stmt: 'assert' expression [',' expression]
2301static stmt_ty
2302assert_stmt_rule(Parser *p)
2303{
2304 if (p->error_indicator) {
2305 return NULL;
2306 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002307 stmt_ty _res = NULL;
2308 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002309 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2310 p->error_indicator = 1;
2311 return NULL;
2312 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002313 int _start_lineno = p->tokens[_mark]->lineno;
2314 UNUSED(_start_lineno); // Only used by EXTRA macro
2315 int _start_col_offset = p->tokens[_mark]->col_offset;
2316 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002317 { // 'assert' expression [',' expression]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002318 if (p->error_indicator) {
2319 return NULL;
2320 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002321 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002322 expr_ty a;
2323 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002324 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002325 (_keyword = _PyPegen_expect_token(p, 505)) // token='assert'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002326 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002327 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002328 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002329 (b = _tmp_29_rule(p), 1) // [',' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002330 )
2331 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002332 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2333 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002334 return NULL;
2335 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002336 int _end_lineno = _token->end_lineno;
2337 UNUSED(_end_lineno); // Only used by EXTRA macro
2338 int _end_col_offset = _token->end_col_offset;
2339 UNUSED(_end_col_offset); // Only used by EXTRA macro
2340 _res = _Py_Assert ( a , b , EXTRA );
2341 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002342 p->error_indicator = 1;
2343 return NULL;
2344 }
2345 goto done;
2346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002347 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002349 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002350 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002351 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002352}
2353
2354// del_stmt: 'del' del_targets
2355static stmt_ty
2356del_stmt_rule(Parser *p)
2357{
2358 if (p->error_indicator) {
2359 return NULL;
2360 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002361 stmt_ty _res = NULL;
2362 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002363 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2364 p->error_indicator = 1;
2365 return NULL;
2366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002367 int _start_lineno = p->tokens[_mark]->lineno;
2368 UNUSED(_start_lineno); // Only used by EXTRA macro
2369 int _start_col_offset = p->tokens[_mark]->col_offset;
2370 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002371 { // 'del' del_targets
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002372 if (p->error_indicator) {
2373 return NULL;
2374 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002375 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002376 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002377 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002378 (_keyword = _PyPegen_expect_token(p, 503)) // token='del'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002379 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002380 (a = del_targets_rule(p)) // del_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002381 )
2382 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002383 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2384 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002385 return NULL;
2386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002387 int _end_lineno = _token->end_lineno;
2388 UNUSED(_end_lineno); // Only used by EXTRA macro
2389 int _end_col_offset = _token->end_col_offset;
2390 UNUSED(_end_col_offset); // Only used by EXTRA macro
2391 _res = _Py_Delete ( a , EXTRA );
2392 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002393 p->error_indicator = 1;
2394 return NULL;
2395 }
2396 goto done;
2397 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002398 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002399 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002400 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002401 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002402 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002403}
2404
2405// import_stmt: import_name | import_from
2406static stmt_ty
2407import_stmt_rule(Parser *p)
2408{
2409 if (p->error_indicator) {
2410 return NULL;
2411 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002412 stmt_ty _res = NULL;
2413 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002414 { // import_name
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002415 if (p->error_indicator) {
2416 return NULL;
2417 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002418 stmt_ty import_name_var;
2419 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002420 (import_name_var = import_name_rule(p)) // import_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002421 )
2422 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002423 _res = import_name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002424 goto done;
2425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002426 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002427 }
2428 { // import_from
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002429 if (p->error_indicator) {
2430 return NULL;
2431 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002432 stmt_ty import_from_var;
2433 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002434 (import_from_var = import_from_rule(p)) // import_from
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002435 )
2436 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002437 _res = import_from_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002438 goto done;
2439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002440 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002441 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002442 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002443 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002444 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002445}
2446
2447// import_name: 'import' dotted_as_names
2448static stmt_ty
2449import_name_rule(Parser *p)
2450{
2451 if (p->error_indicator) {
2452 return NULL;
2453 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002454 stmt_ty _res = NULL;
2455 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002456 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2457 p->error_indicator = 1;
2458 return NULL;
2459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002460 int _start_lineno = p->tokens[_mark]->lineno;
2461 UNUSED(_start_lineno); // Only used by EXTRA macro
2462 int _start_col_offset = p->tokens[_mark]->col_offset;
2463 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002464 { // 'import' dotted_as_names
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002465 if (p->error_indicator) {
2466 return NULL;
2467 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002468 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002469 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002470 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002471 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002472 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002473 (a = dotted_as_names_rule(p)) // dotted_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002474 )
2475 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002476 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2477 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002478 return NULL;
2479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002480 int _end_lineno = _token->end_lineno;
2481 UNUSED(_end_lineno); // Only used by EXTRA macro
2482 int _end_col_offset = _token->end_col_offset;
2483 UNUSED(_end_col_offset); // Only used by EXTRA macro
2484 _res = _Py_Import ( a , EXTRA );
2485 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002486 p->error_indicator = 1;
2487 return NULL;
2488 }
2489 goto done;
2490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002491 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002492 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002493 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002494 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002495 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002496}
2497
2498// import_from:
2499// | 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
2500// | 'from' (('.' | '...'))+ 'import' import_from_targets
2501static stmt_ty
2502import_from_rule(Parser *p)
2503{
2504 if (p->error_indicator) {
2505 return NULL;
2506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002507 stmt_ty _res = NULL;
2508 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002509 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2510 p->error_indicator = 1;
2511 return NULL;
2512 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002513 int _start_lineno = p->tokens[_mark]->lineno;
2514 UNUSED(_start_lineno); // Only used by EXTRA macro
2515 int _start_col_offset = p->tokens[_mark]->col_offset;
2516 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002517 { // 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002518 if (p->error_indicator) {
2519 return NULL;
2520 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002521 Token * _keyword;
2522 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002523 asdl_seq * a;
2524 expr_ty b;
2525 asdl_seq* c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002526 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002527 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002528 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002529 (a = _loop0_30_rule(p)) // (('.' | '...'))*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002530 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002531 (b = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002532 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002533 (_keyword_1 = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002534 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002535 (c = import_from_targets_rule(p)) // import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002536 )
2537 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002538 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2539 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002540 return NULL;
2541 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002542 int _end_lineno = _token->end_lineno;
2543 UNUSED(_end_lineno); // Only used by EXTRA macro
2544 int _end_col_offset = _token->end_col_offset;
2545 UNUSED(_end_col_offset); // Only used by EXTRA macro
2546 _res = _Py_ImportFrom ( b -> v . Name . id , c , _PyPegen_seq_count_dots ( a ) , EXTRA );
2547 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002548 p->error_indicator = 1;
2549 return NULL;
2550 }
2551 goto done;
2552 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002553 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002554 }
2555 { // 'from' (('.' | '...'))+ 'import' import_from_targets
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002556 if (p->error_indicator) {
2557 return NULL;
2558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002559 Token * _keyword;
2560 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002561 asdl_seq * a;
2562 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002563 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002564 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002565 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002566 (a = _loop1_31_rule(p)) // (('.' | '...'))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002567 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002568 (_keyword_1 = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002569 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002570 (b = import_from_targets_rule(p)) // import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002571 )
2572 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002573 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2574 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002575 return NULL;
2576 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002577 int _end_lineno = _token->end_lineno;
2578 UNUSED(_end_lineno); // Only used by EXTRA macro
2579 int _end_col_offset = _token->end_col_offset;
2580 UNUSED(_end_col_offset); // Only used by EXTRA macro
2581 _res = _Py_ImportFrom ( NULL , b , _PyPegen_seq_count_dots ( a ) , EXTRA );
2582 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002583 p->error_indicator = 1;
2584 return NULL;
2585 }
2586 goto done;
2587 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002588 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002590 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002591 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002592 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002593}
2594
2595// import_from_targets: '(' import_from_as_names ','? ')' | import_from_as_names | '*'
2596static asdl_seq*
2597import_from_targets_rule(Parser *p)
2598{
2599 if (p->error_indicator) {
2600 return NULL;
2601 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002602 asdl_seq* _res = NULL;
2603 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002604 { // '(' import_from_as_names ','? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002605 if (p->error_indicator) {
2606 return NULL;
2607 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002608 Token * _literal;
2609 Token * _literal_1;
2610 void *_opt_var;
2611 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002612 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002613 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002614 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002615 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002616 (a = import_from_as_names_rule(p)) // import_from_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002617 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002618 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002619 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002620 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002621 )
2622 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002623 _res = a;
2624 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002625 p->error_indicator = 1;
2626 return NULL;
2627 }
2628 goto done;
2629 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002630 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002631 }
2632 { // import_from_as_names
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002633 if (p->error_indicator) {
2634 return NULL;
2635 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002636 asdl_seq* import_from_as_names_var;
2637 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002638 (import_from_as_names_var = import_from_as_names_rule(p)) // import_from_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002639 )
2640 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002641 _res = import_from_as_names_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002642 goto done;
2643 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002644 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002645 }
2646 { // '*'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002647 if (p->error_indicator) {
2648 return NULL;
2649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002650 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002651 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002652 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002653 )
2654 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002655 _res = _PyPegen_singleton_seq ( p , CHECK ( _PyPegen_alias_for_star ( p ) ) );
2656 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002657 p->error_indicator = 1;
2658 return NULL;
2659 }
2660 goto done;
2661 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002662 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002664 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002665 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002666 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002667}
2668
2669// import_from_as_names: ','.import_from_as_name+
2670static asdl_seq*
2671import_from_as_names_rule(Parser *p)
2672{
2673 if (p->error_indicator) {
2674 return NULL;
2675 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002676 asdl_seq* _res = NULL;
2677 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002678 { // ','.import_from_as_name+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002679 if (p->error_indicator) {
2680 return NULL;
2681 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002682 asdl_seq * a;
2683 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002684 (a = _gather_32_rule(p)) // ','.import_from_as_name+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002685 )
2686 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002687 _res = a;
2688 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002689 p->error_indicator = 1;
2690 return NULL;
2691 }
2692 goto done;
2693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002694 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002695 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002696 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002697 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002698 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002699}
2700
2701// import_from_as_name: NAME ['as' NAME]
2702static alias_ty
2703import_from_as_name_rule(Parser *p)
2704{
2705 if (p->error_indicator) {
2706 return NULL;
2707 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002708 alias_ty _res = NULL;
2709 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002710 { // NAME ['as' NAME]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002711 if (p->error_indicator) {
2712 return NULL;
2713 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002714 expr_ty a;
2715 void *b;
2716 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002717 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002718 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002719 (b = _tmp_34_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002720 )
2721 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002722 _res = _Py_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , p -> arena );
2723 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002724 p->error_indicator = 1;
2725 return NULL;
2726 }
2727 goto done;
2728 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002729 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002731 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002732 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002733 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002734}
2735
2736// dotted_as_names: ','.dotted_as_name+
2737static asdl_seq*
2738dotted_as_names_rule(Parser *p)
2739{
2740 if (p->error_indicator) {
2741 return NULL;
2742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002743 asdl_seq* _res = NULL;
2744 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002745 { // ','.dotted_as_name+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002746 if (p->error_indicator) {
2747 return NULL;
2748 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002749 asdl_seq * a;
2750 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002751 (a = _gather_35_rule(p)) // ','.dotted_as_name+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002752 )
2753 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002754 _res = a;
2755 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002756 p->error_indicator = 1;
2757 return NULL;
2758 }
2759 goto done;
2760 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002761 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002762 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002763 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002764 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002765 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002766}
2767
2768// dotted_as_name: dotted_name ['as' NAME]
2769static alias_ty
2770dotted_as_name_rule(Parser *p)
2771{
2772 if (p->error_indicator) {
2773 return NULL;
2774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002775 alias_ty _res = NULL;
2776 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002777 { // dotted_name ['as' NAME]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002778 if (p->error_indicator) {
2779 return NULL;
2780 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002781 expr_ty a;
2782 void *b;
2783 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002784 (a = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002785 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002786 (b = _tmp_37_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002787 )
2788 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002789 _res = _Py_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , p -> arena );
2790 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002791 p->error_indicator = 1;
2792 return NULL;
2793 }
2794 goto done;
2795 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002796 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002797 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002798 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002799 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002800 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002801}
2802
2803// Left-recursive
2804// dotted_name: dotted_name '.' NAME | NAME
2805static expr_ty dotted_name_raw(Parser *);
2806static expr_ty
2807dotted_name_rule(Parser *p)
2808{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002809 expr_ty _res = NULL;
2810 if (_PyPegen_is_memoized(p, dotted_name_type, &_res))
2811 return _res;
2812 int _mark = p->mark;
2813 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002814 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002815 int tmpvar_0 = _PyPegen_update_memo(p, _mark, dotted_name_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002816 if (tmpvar_0) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002817 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002818 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002819 p->mark = _mark;
2820 void *_raw = dotted_name_raw(p);
2821 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002822 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002823 _resmark = p->mark;
2824 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002826 p->mark = _resmark;
2827 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002828}
2829static expr_ty
2830dotted_name_raw(Parser *p)
2831{
2832 if (p->error_indicator) {
2833 return NULL;
2834 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002835 expr_ty _res = NULL;
2836 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002837 { // dotted_name '.' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002838 if (p->error_indicator) {
2839 return NULL;
2840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002841 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002842 expr_ty a;
2843 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002844 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002845 (a = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002846 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002847 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002848 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002849 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002850 )
2851 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002852 _res = _PyPegen_join_names_with_dot ( p , a , b );
2853 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002854 p->error_indicator = 1;
2855 return NULL;
2856 }
2857 goto done;
2858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002859 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002860 }
2861 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002862 if (p->error_indicator) {
2863 return NULL;
2864 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002865 expr_ty name_var;
2866 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002867 (name_var = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002868 )
2869 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002870 _res = name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002871 goto done;
2872 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002873 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002875 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002876 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002877 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002878}
2879
2880// if_stmt:
2881// | 'if' named_expression ':' block elif_stmt
2882// | 'if' named_expression ':' block else_block?
2883static stmt_ty
2884if_stmt_rule(Parser *p)
2885{
2886 if (p->error_indicator) {
2887 return NULL;
2888 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002889 stmt_ty _res = NULL;
2890 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002891 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2892 p->error_indicator = 1;
2893 return NULL;
2894 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002895 int _start_lineno = p->tokens[_mark]->lineno;
2896 UNUSED(_start_lineno); // Only used by EXTRA macro
2897 int _start_col_offset = p->tokens[_mark]->col_offset;
2898 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002899 { // 'if' named_expression ':' block elif_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002900 if (p->error_indicator) {
2901 return NULL;
2902 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002903 Token * _keyword;
2904 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002905 expr_ty a;
2906 asdl_seq* b;
2907 stmt_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002908 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002909 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002910 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002911 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002912 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002913 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002914 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002915 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002916 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002917 (c = elif_stmt_rule(p)) // elif_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002918 )
2919 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002920 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2921 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002922 return NULL;
2923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002924 int _end_lineno = _token->end_lineno;
2925 UNUSED(_end_lineno); // Only used by EXTRA macro
2926 int _end_col_offset = _token->end_col_offset;
2927 UNUSED(_end_col_offset); // Only used by EXTRA macro
2928 _res = _Py_If ( a , b , CHECK ( _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
2929 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002930 p->error_indicator = 1;
2931 return NULL;
2932 }
2933 goto done;
2934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002935 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002936 }
2937 { // 'if' named_expression ':' block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002938 if (p->error_indicator) {
2939 return NULL;
2940 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002941 Token * _keyword;
2942 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002943 expr_ty a;
2944 asdl_seq* b;
2945 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002946 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002947 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002948 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002949 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002950 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002951 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002952 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002953 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002954 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002955 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002956 )
2957 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002958 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2959 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002960 return NULL;
2961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002962 int _end_lineno = _token->end_lineno;
2963 UNUSED(_end_lineno); // Only used by EXTRA macro
2964 int _end_col_offset = _token->end_col_offset;
2965 UNUSED(_end_col_offset); // Only used by EXTRA macro
2966 _res = _Py_If ( a , b , c , EXTRA );
2967 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002968 p->error_indicator = 1;
2969 return NULL;
2970 }
2971 goto done;
2972 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002973 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002975 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002976 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002977 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002978}
2979
2980// elif_stmt:
2981// | 'elif' named_expression ':' block elif_stmt
2982// | 'elif' named_expression ':' block else_block?
2983static stmt_ty
2984elif_stmt_rule(Parser *p)
2985{
2986 if (p->error_indicator) {
2987 return NULL;
2988 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002989 stmt_ty _res = NULL;
2990 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002991 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2992 p->error_indicator = 1;
2993 return NULL;
2994 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002995 int _start_lineno = p->tokens[_mark]->lineno;
2996 UNUSED(_start_lineno); // Only used by EXTRA macro
2997 int _start_col_offset = p->tokens[_mark]->col_offset;
2998 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002999 { // 'elif' named_expression ':' block elif_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003000 if (p->error_indicator) {
3001 return NULL;
3002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003003 Token * _keyword;
3004 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003005 expr_ty a;
3006 asdl_seq* b;
3007 stmt_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003008 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003009 (_keyword = _PyPegen_expect_token(p, 515)) // token='elif'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003010 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003011 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003012 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003013 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003014 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003015 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003016 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003017 (c = elif_stmt_rule(p)) // elif_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003018 )
3019 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003020 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3021 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003022 return NULL;
3023 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003024 int _end_lineno = _token->end_lineno;
3025 UNUSED(_end_lineno); // Only used by EXTRA macro
3026 int _end_col_offset = _token->end_col_offset;
3027 UNUSED(_end_col_offset); // Only used by EXTRA macro
3028 _res = _Py_If ( a , b , CHECK ( _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
3029 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003030 p->error_indicator = 1;
3031 return NULL;
3032 }
3033 goto done;
3034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003035 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003036 }
3037 { // 'elif' named_expression ':' block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003038 if (p->error_indicator) {
3039 return NULL;
3040 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003041 Token * _keyword;
3042 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003043 expr_ty a;
3044 asdl_seq* b;
3045 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003046 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003047 (_keyword = _PyPegen_expect_token(p, 515)) // token='elif'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003048 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003049 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003050 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003051 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003052 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003053 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003054 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003055 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003056 )
3057 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003058 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3059 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003060 return NULL;
3061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003062 int _end_lineno = _token->end_lineno;
3063 UNUSED(_end_lineno); // Only used by EXTRA macro
3064 int _end_col_offset = _token->end_col_offset;
3065 UNUSED(_end_col_offset); // Only used by EXTRA macro
3066 _res = _Py_If ( a , b , c , EXTRA );
3067 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003068 p->error_indicator = 1;
3069 return NULL;
3070 }
3071 goto done;
3072 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003073 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003074 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003075 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003076 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003077 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003078}
3079
3080// else_block: 'else' ':' block
3081static asdl_seq*
3082else_block_rule(Parser *p)
3083{
3084 if (p->error_indicator) {
3085 return NULL;
3086 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003087 asdl_seq* _res = NULL;
3088 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003089 { // 'else' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003090 if (p->error_indicator) {
3091 return NULL;
3092 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003093 Token * _keyword;
3094 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003095 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003096 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003097 (_keyword = _PyPegen_expect_token(p, 516)) // token='else'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003098 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003099 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003100 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003101 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003102 )
3103 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003104 _res = b;
3105 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003106 p->error_indicator = 1;
3107 return NULL;
3108 }
3109 goto done;
3110 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003111 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003113 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003114 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003115 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003116}
3117
3118// while_stmt: 'while' named_expression ':' block else_block?
3119static stmt_ty
3120while_stmt_rule(Parser *p)
3121{
3122 if (p->error_indicator) {
3123 return NULL;
3124 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003125 stmt_ty _res = NULL;
3126 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003127 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3128 p->error_indicator = 1;
3129 return NULL;
3130 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003131 int _start_lineno = p->tokens[_mark]->lineno;
3132 UNUSED(_start_lineno); // Only used by EXTRA macro
3133 int _start_col_offset = p->tokens[_mark]->col_offset;
3134 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003135 { // 'while' named_expression ':' block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003136 if (p->error_indicator) {
3137 return NULL;
3138 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003139 Token * _keyword;
3140 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003141 expr_ty a;
3142 asdl_seq* b;
3143 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003144 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003145 (_keyword = _PyPegen_expect_token(p, 512)) // token='while'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003146 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003147 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003148 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003149 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003150 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003151 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003152 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003153 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003154 )
3155 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003156 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3157 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003158 return NULL;
3159 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003160 int _end_lineno = _token->end_lineno;
3161 UNUSED(_end_lineno); // Only used by EXTRA macro
3162 int _end_col_offset = _token->end_col_offset;
3163 UNUSED(_end_col_offset); // Only used by EXTRA macro
3164 _res = _Py_While ( a , b , c , EXTRA );
3165 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003166 p->error_indicator = 1;
3167 return NULL;
3168 }
3169 goto done;
3170 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003171 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003172 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003173 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003174 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003175 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003176}
3177
Guido van Rossumc001c092020-04-30 12:12:19 -07003178// for_stmt:
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003179// | 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
3180// | ASYNC 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003181static stmt_ty
3182for_stmt_rule(Parser *p)
3183{
3184 if (p->error_indicator) {
3185 return NULL;
3186 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003187 stmt_ty _res = NULL;
3188 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003189 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3190 p->error_indicator = 1;
3191 return NULL;
3192 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003193 int _start_lineno = p->tokens[_mark]->lineno;
3194 UNUSED(_start_lineno); // Only used by EXTRA macro
3195 int _start_col_offset = p->tokens[_mark]->col_offset;
3196 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003197 { // 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003198 if (p->error_indicator) {
3199 return NULL;
3200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003201 Token * _keyword;
3202 Token * _keyword_1;
3203 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003204 asdl_seq* b;
3205 void *el;
3206 expr_ty ex;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003207 expr_ty t;
Guido van Rossumc001c092020-04-30 12:12:19 -07003208 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003209 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003210 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003211 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003212 (t = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003213 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003214 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003215 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003216 (ex = star_expressions_rule(p)) // star_expressions
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003217 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003218 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003219 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003220 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003221 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003222 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003223 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003224 (el = else_block_rule(p), 1) // else_block?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003225 )
3226 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003227 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3228 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003229 return NULL;
3230 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003231 int _end_lineno = _token->end_lineno;
3232 UNUSED(_end_lineno); // Only used by EXTRA macro
3233 int _end_col_offset = _token->end_col_offset;
3234 UNUSED(_end_col_offset); // Only used by EXTRA macro
3235 _res = _Py_For ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
3236 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003237 p->error_indicator = 1;
3238 return NULL;
3239 }
3240 goto done;
3241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003242 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003243 }
3244 { // ASYNC 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003245 if (p->error_indicator) {
3246 return NULL;
3247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003248 Token * _keyword;
3249 Token * _keyword_1;
3250 Token * _literal;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003251 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003252 asdl_seq* b;
3253 void *el;
3254 expr_ty ex;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003255 expr_ty t;
3256 void *tc;
3257 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003258 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003259 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003260 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003261 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003262 (t = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003263 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003264 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003265 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003266 (ex = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003267 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003268 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003269 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003270 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07003271 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003272 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003273 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003274 (el = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003275 )
3276 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003277 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3278 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003279 return NULL;
3280 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003281 int _end_lineno = _token->end_lineno;
3282 UNUSED(_end_lineno); // Only used by EXTRA macro
3283 int _end_col_offset = _token->end_col_offset;
3284 UNUSED(_end_col_offset); // Only used by EXTRA macro
3285 _res = CHECK_VERSION ( 5 , "Async for loops are" , _Py_AsyncFor ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
3286 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003287 p->error_indicator = 1;
3288 return NULL;
3289 }
3290 goto done;
3291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003292 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003293 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003294 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003295 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003296 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003297}
3298
3299// with_stmt:
Pablo Galindo99db2a12020-05-06 22:54:34 +01003300// | 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003301// | 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindo99db2a12020-05-06 22:54:34 +01003302// | ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003303// | ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003304static stmt_ty
3305with_stmt_rule(Parser *p)
3306{
3307 if (p->error_indicator) {
3308 return NULL;
3309 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003310 stmt_ty _res = NULL;
3311 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003312 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3313 p->error_indicator = 1;
3314 return NULL;
3315 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003316 int _start_lineno = p->tokens[_mark]->lineno;
3317 UNUSED(_start_lineno); // Only used by EXTRA macro
3318 int _start_col_offset = p->tokens[_mark]->col_offset;
3319 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindo99db2a12020-05-06 22:54:34 +01003320 { // 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003321 if (p->error_indicator) {
3322 return NULL;
3323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003324 Token * _keyword;
3325 Token * _literal;
3326 Token * _literal_1;
3327 Token * _literal_2;
3328 void *_opt_var;
3329 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003330 asdl_seq * a;
3331 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003332 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003333 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003334 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003335 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003336 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003337 (a = _gather_38_rule(p)) // ','.with_item+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003338 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003339 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindo99db2a12020-05-06 22:54:34 +01003340 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003341 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003342 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003343 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003344 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003345 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003346 )
3347 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003348 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3349 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003350 return NULL;
3351 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003352 int _end_lineno = _token->end_lineno;
3353 UNUSED(_end_lineno); // Only used by EXTRA macro
3354 int _end_col_offset = _token->end_col_offset;
3355 UNUSED(_end_col_offset); // Only used by EXTRA macro
3356 _res = _Py_With ( a , b , NULL , EXTRA );
3357 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003358 p->error_indicator = 1;
3359 return NULL;
3360 }
3361 goto done;
3362 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003363 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003364 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003365 { // 'with' ','.with_item+ ':' TYPE_COMMENT? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003366 if (p->error_indicator) {
3367 return NULL;
3368 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003369 Token * _keyword;
3370 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003371 asdl_seq * a;
3372 asdl_seq* b;
Guido van Rossumc001c092020-04-30 12:12:19 -07003373 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003374 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003375 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003376 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003377 (a = _gather_40_rule(p)) // ','.with_item+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003378 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003379 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003380 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003381 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07003382 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003383 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003384 )
3385 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003386 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3387 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003388 return NULL;
3389 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003390 int _end_lineno = _token->end_lineno;
3391 UNUSED(_end_lineno); // Only used by EXTRA macro
3392 int _end_col_offset = _token->end_col_offset;
3393 UNUSED(_end_col_offset); // Only used by EXTRA macro
3394 _res = _Py_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
3395 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003396 p->error_indicator = 1;
3397 return NULL;
3398 }
3399 goto done;
3400 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003401 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003402 }
Pablo Galindo99db2a12020-05-06 22:54:34 +01003403 { // ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003404 if (p->error_indicator) {
3405 return NULL;
3406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003407 Token * _keyword;
3408 Token * _literal;
3409 Token * _literal_1;
3410 Token * _literal_2;
3411 void *_opt_var;
3412 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003413 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003414 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003415 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003416 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003417 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003418 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003419 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003420 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003421 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003422 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003423 (a = _gather_42_rule(p)) // ','.with_item+
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003424 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003425 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindo99db2a12020-05-06 22:54:34 +01003426 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003427 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003428 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003429 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003430 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003431 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003432 )
3433 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003434 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3435 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003436 return NULL;
3437 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003438 int _end_lineno = _token->end_lineno;
3439 UNUSED(_end_lineno); // Only used by EXTRA macro
3440 int _end_col_offset = _token->end_col_offset;
3441 UNUSED(_end_col_offset); // Only used by EXTRA macro
3442 _res = CHECK_VERSION ( 5 , "Async with statements are" , _Py_AsyncWith ( a , b , NULL , EXTRA ) );
3443 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003444 p->error_indicator = 1;
3445 return NULL;
3446 }
3447 goto done;
3448 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003449 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003450 }
3451 { // ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003452 if (p->error_indicator) {
3453 return NULL;
3454 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003455 Token * _keyword;
3456 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003457 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003458 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003459 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003460 void *tc;
3461 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003462 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003463 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003464 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003465 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003466 (a = _gather_44_rule(p)) // ','.with_item+
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003467 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003468 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003469 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003470 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003471 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003472 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003473 )
3474 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003475 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3476 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003477 return NULL;
3478 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003479 int _end_lineno = _token->end_lineno;
3480 UNUSED(_end_lineno); // Only used by EXTRA macro
3481 int _end_col_offset = _token->end_col_offset;
3482 UNUSED(_end_col_offset); // Only used by EXTRA macro
3483 _res = CHECK_VERSION ( 5 , "Async with statements are" , _Py_AsyncWith ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
3484 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003485 p->error_indicator = 1;
3486 return NULL;
3487 }
3488 goto done;
3489 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003490 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003491 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003492 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003493 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003494 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003495}
3496
3497// with_item: expression ['as' target]
3498static withitem_ty
3499with_item_rule(Parser *p)
3500{
3501 if (p->error_indicator) {
3502 return NULL;
3503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003504 withitem_ty _res = NULL;
3505 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003506 { // expression ['as' target]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003507 if (p->error_indicator) {
3508 return NULL;
3509 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003510 expr_ty e;
3511 void *o;
3512 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003513 (e = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003514 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003515 (o = _tmp_46_rule(p), 1) // ['as' target]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003516 )
3517 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003518 _res = _Py_withitem ( e , o , p -> arena );
3519 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003520 p->error_indicator = 1;
3521 return NULL;
3522 }
3523 goto done;
3524 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003525 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003526 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003527 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003528 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003529 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003530}
3531
3532// try_stmt:
3533// | 'try' ':' block finally_block
3534// | 'try' ':' block except_block+ else_block? finally_block?
3535static stmt_ty
3536try_stmt_rule(Parser *p)
3537{
3538 if (p->error_indicator) {
3539 return NULL;
3540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003541 stmt_ty _res = NULL;
3542 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003543 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3544 p->error_indicator = 1;
3545 return NULL;
3546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003547 int _start_lineno = p->tokens[_mark]->lineno;
3548 UNUSED(_start_lineno); // Only used by EXTRA macro
3549 int _start_col_offset = p->tokens[_mark]->col_offset;
3550 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003551 { // 'try' ':' block finally_block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003552 if (p->error_indicator) {
3553 return NULL;
3554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003555 Token * _keyword;
3556 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003557 asdl_seq* b;
3558 asdl_seq* f;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003559 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003560 (_keyword = _PyPegen_expect_token(p, 511)) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003561 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003562 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003563 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003564 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003565 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003566 (f = finally_block_rule(p)) // finally_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003567 )
3568 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003569 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3570 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003571 return NULL;
3572 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003573 int _end_lineno = _token->end_lineno;
3574 UNUSED(_end_lineno); // Only used by EXTRA macro
3575 int _end_col_offset = _token->end_col_offset;
3576 UNUSED(_end_col_offset); // Only used by EXTRA macro
3577 _res = _Py_Try ( b , NULL , NULL , f , EXTRA );
3578 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003579 p->error_indicator = 1;
3580 return NULL;
3581 }
3582 goto done;
3583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003584 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003585 }
3586 { // 'try' ':' block except_block+ else_block? finally_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003587 if (p->error_indicator) {
3588 return NULL;
3589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003590 Token * _keyword;
3591 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003592 asdl_seq* b;
3593 void *el;
3594 asdl_seq * ex;
3595 void *f;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003596 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003597 (_keyword = _PyPegen_expect_token(p, 511)) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003598 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003599 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003600 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003601 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003602 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003603 (ex = _loop1_47_rule(p)) // except_block+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003604 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003605 (el = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003606 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003607 (f = finally_block_rule(p), 1) // finally_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003608 )
3609 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003610 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3611 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003612 return NULL;
3613 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003614 int _end_lineno = _token->end_lineno;
3615 UNUSED(_end_lineno); // Only used by EXTRA macro
3616 int _end_col_offset = _token->end_col_offset;
3617 UNUSED(_end_col_offset); // Only used by EXTRA macro
3618 _res = _Py_Try ( b , ex , el , f , EXTRA );
3619 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003620 p->error_indicator = 1;
3621 return NULL;
3622 }
3623 goto done;
3624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003625 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003626 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003627 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003628 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003629 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003630}
3631
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03003632// except_block: 'except' expression ['as' NAME] ':' block | 'except' ':' block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003633static excepthandler_ty
3634except_block_rule(Parser *p)
3635{
3636 if (p->error_indicator) {
3637 return NULL;
3638 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003639 excepthandler_ty _res = NULL;
3640 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003641 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3642 p->error_indicator = 1;
3643 return NULL;
3644 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003645 int _start_lineno = p->tokens[_mark]->lineno;
3646 UNUSED(_start_lineno); // Only used by EXTRA macro
3647 int _start_col_offset = p->tokens[_mark]->col_offset;
3648 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03003649 { // 'except' expression ['as' NAME] ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003650 if (p->error_indicator) {
3651 return NULL;
3652 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003653 Token * _keyword;
3654 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003655 asdl_seq* b;
3656 expr_ty e;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003657 void *t;
3658 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003659 (_keyword = _PyPegen_expect_token(p, 520)) // token='except'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003660 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003661 (e = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003662 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03003663 (t = _tmp_48_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003664 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003665 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003666 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003667 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003668 )
3669 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003670 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3671 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003672 return NULL;
3673 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003674 int _end_lineno = _token->end_lineno;
3675 UNUSED(_end_lineno); // Only used by EXTRA macro
3676 int _end_col_offset = _token->end_col_offset;
3677 UNUSED(_end_col_offset); // Only used by EXTRA macro
3678 _res = _Py_ExceptHandler ( e , ( t ) ? ( ( expr_ty ) t ) -> v . Name . id : NULL , b , EXTRA );
3679 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003680 p->error_indicator = 1;
3681 return NULL;
3682 }
3683 goto done;
3684 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003685 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003686 }
3687 { // 'except' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003688 if (p->error_indicator) {
3689 return NULL;
3690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003691 Token * _keyword;
3692 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003693 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003694 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003695 (_keyword = _PyPegen_expect_token(p, 520)) // token='except'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003696 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003697 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003698 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003699 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003700 )
3701 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003702 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3703 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003704 return NULL;
3705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003706 int _end_lineno = _token->end_lineno;
3707 UNUSED(_end_lineno); // Only used by EXTRA macro
3708 int _end_col_offset = _token->end_col_offset;
3709 UNUSED(_end_col_offset); // Only used by EXTRA macro
3710 _res = _Py_ExceptHandler ( NULL , NULL , b , EXTRA );
3711 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003712 p->error_indicator = 1;
3713 return NULL;
3714 }
3715 goto done;
3716 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003717 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003718 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003719 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003720 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003721 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003722}
3723
3724// finally_block: 'finally' ':' block
3725static asdl_seq*
3726finally_block_rule(Parser *p)
3727{
3728 if (p->error_indicator) {
3729 return NULL;
3730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003731 asdl_seq* _res = NULL;
3732 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003733 { // 'finally' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003734 if (p->error_indicator) {
3735 return NULL;
3736 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003737 Token * _keyword;
3738 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003739 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003740 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003741 (_keyword = _PyPegen_expect_token(p, 521)) // token='finally'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003742 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003743 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003744 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003745 (a = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003746 )
3747 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003748 _res = a;
3749 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003750 p->error_indicator = 1;
3751 return NULL;
3752 }
3753 goto done;
3754 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003755 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003756 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003757 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003758 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003759 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003760}
3761
3762// return_stmt: 'return' star_expressions?
3763static stmt_ty
3764return_stmt_rule(Parser *p)
3765{
3766 if (p->error_indicator) {
3767 return NULL;
3768 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003769 stmt_ty _res = NULL;
3770 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003771 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3772 p->error_indicator = 1;
3773 return NULL;
3774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003775 int _start_lineno = p->tokens[_mark]->lineno;
3776 UNUSED(_start_lineno); // Only used by EXTRA macro
3777 int _start_col_offset = p->tokens[_mark]->col_offset;
3778 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003779 { // 'return' star_expressions?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003780 if (p->error_indicator) {
3781 return NULL;
3782 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003783 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003784 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003785 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003786 (_keyword = _PyPegen_expect_token(p, 500)) // token='return'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003787 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003788 (a = star_expressions_rule(p), 1) // star_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003789 )
3790 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003791 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3792 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003793 return NULL;
3794 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003795 int _end_lineno = _token->end_lineno;
3796 UNUSED(_end_lineno); // Only used by EXTRA macro
3797 int _end_col_offset = _token->end_col_offset;
3798 UNUSED(_end_col_offset); // Only used by EXTRA macro
3799 _res = _Py_Return ( a , EXTRA );
3800 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003801 p->error_indicator = 1;
3802 return NULL;
3803 }
3804 goto done;
3805 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003806 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003807 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003808 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003809 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003810 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003811}
3812
3813// raise_stmt: 'raise' expression ['from' expression] | 'raise'
3814static stmt_ty
3815raise_stmt_rule(Parser *p)
3816{
3817 if (p->error_indicator) {
3818 return NULL;
3819 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003820 stmt_ty _res = NULL;
3821 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003822 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3823 p->error_indicator = 1;
3824 return NULL;
3825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003826 int _start_lineno = p->tokens[_mark]->lineno;
3827 UNUSED(_start_lineno); // Only used by EXTRA macro
3828 int _start_col_offset = p->tokens[_mark]->col_offset;
3829 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003830 { // 'raise' expression ['from' expression]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003831 if (p->error_indicator) {
3832 return NULL;
3833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003834 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003835 expr_ty a;
3836 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003837 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003838 (_keyword = _PyPegen_expect_token(p, 501)) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003839 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003840 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003841 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003842 (b = _tmp_49_rule(p), 1) // ['from' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003843 )
3844 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003845 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3846 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003847 return NULL;
3848 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003849 int _end_lineno = _token->end_lineno;
3850 UNUSED(_end_lineno); // Only used by EXTRA macro
3851 int _end_col_offset = _token->end_col_offset;
3852 UNUSED(_end_col_offset); // Only used by EXTRA macro
3853 _res = _Py_Raise ( a , b , EXTRA );
3854 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003855 p->error_indicator = 1;
3856 return NULL;
3857 }
3858 goto done;
3859 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003860 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003861 }
3862 { // 'raise'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003863 if (p->error_indicator) {
3864 return NULL;
3865 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003866 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003867 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003868 (_keyword = _PyPegen_expect_token(p, 501)) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003869 )
3870 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003871 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3872 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003873 return NULL;
3874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003875 int _end_lineno = _token->end_lineno;
3876 UNUSED(_end_lineno); // Only used by EXTRA macro
3877 int _end_col_offset = _token->end_col_offset;
3878 UNUSED(_end_col_offset); // Only used by EXTRA macro
3879 _res = _Py_Raise ( NULL , NULL , EXTRA );
3880 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003881 p->error_indicator = 1;
3882 return NULL;
3883 }
3884 goto done;
3885 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003886 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003887 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003888 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003889 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003890 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003891}
3892
3893// function_def: decorators function_def_raw | function_def_raw
3894static stmt_ty
3895function_def_rule(Parser *p)
3896{
3897 if (p->error_indicator) {
3898 return NULL;
3899 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003900 stmt_ty _res = NULL;
3901 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003902 { // decorators function_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003903 if (p->error_indicator) {
3904 return NULL;
3905 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003906 asdl_seq* d;
3907 stmt_ty f;
3908 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003909 (d = decorators_rule(p)) // decorators
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003910 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003911 (f = function_def_raw_rule(p)) // function_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003912 )
3913 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003914 _res = _PyPegen_function_def_decorators ( p , d , f );
3915 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003916 p->error_indicator = 1;
3917 return NULL;
3918 }
3919 goto done;
3920 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003921 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003922 }
3923 { // function_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003924 if (p->error_indicator) {
3925 return NULL;
3926 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003927 stmt_ty function_def_raw_var;
3928 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003929 (function_def_raw_var = function_def_raw_rule(p)) // function_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003930 )
3931 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003932 _res = function_def_raw_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003933 goto done;
3934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003935 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003937 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003938 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003939 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003940}
3941
Guido van Rossumc001c092020-04-30 12:12:19 -07003942// function_def_raw:
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003943// | 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
3944// | ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003945static stmt_ty
3946function_def_raw_rule(Parser *p)
3947{
3948 if (p->error_indicator) {
3949 return NULL;
3950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003951 stmt_ty _res = NULL;
3952 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003953 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3954 p->error_indicator = 1;
3955 return NULL;
3956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003957 int _start_lineno = p->tokens[_mark]->lineno;
3958 UNUSED(_start_lineno); // Only used by EXTRA macro
3959 int _start_col_offset = p->tokens[_mark]->col_offset;
3960 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003961 { // 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003962 if (p->error_indicator) {
3963 return NULL;
3964 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003965 Token * _keyword;
3966 Token * _literal;
3967 Token * _literal_1;
3968 Token * _literal_2;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003969 void *a;
3970 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003971 expr_ty n;
3972 void *params;
Guido van Rossumc001c092020-04-30 12:12:19 -07003973 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003974 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003975 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003976 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003977 (n = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003978 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003979 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003980 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003981 (params = params_rule(p), 1) // params?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003982 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003983 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003984 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003985 (a = _tmp_50_rule(p), 1) // ['->' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003986 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003987 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003988 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003989 (tc = func_type_comment_rule(p), 1) // func_type_comment?
Guido van Rossumc001c092020-04-30 12:12:19 -07003990 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003991 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003992 )
3993 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003994 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3995 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003996 return NULL;
3997 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003998 int _end_lineno = _token->end_lineno;
3999 UNUSED(_end_lineno); // Only used by EXTRA macro
4000 int _end_col_offset = _token->end_col_offset;
4001 UNUSED(_end_col_offset); // Only used by EXTRA macro
4002 _res = _Py_FunctionDef ( n -> v . Name . id , ( params ) ? params : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
4003 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004004 p->error_indicator = 1;
4005 return NULL;
4006 }
4007 goto done;
4008 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004009 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004010 }
4011 { // ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004012 if (p->error_indicator) {
4013 return NULL;
4014 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004015 Token * _keyword;
4016 Token * _literal;
4017 Token * _literal_1;
4018 Token * _literal_2;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004019 void *a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01004020 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004021 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004022 expr_ty n;
4023 void *params;
4024 void *tc;
4025 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004026 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004027 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004028 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004029 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004030 (n = _PyPegen_name_token(p)) // NAME
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004031 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004032 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004033 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004034 (params = params_rule(p), 1) // params?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004035 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004036 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004037 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004038 (a = _tmp_51_rule(p), 1) // ['->' expression]
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004039 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004040 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004041 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004042 (tc = func_type_comment_rule(p), 1) // func_type_comment?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004043 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004044 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004045 )
4046 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004047 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4048 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004049 return NULL;
4050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004051 int _end_lineno = _token->end_lineno;
4052 UNUSED(_end_lineno); // Only used by EXTRA macro
4053 int _end_col_offset = _token->end_col_offset;
4054 UNUSED(_end_col_offset); // Only used by EXTRA macro
4055 _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 ) );
4056 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004057 p->error_indicator = 1;
4058 return NULL;
4059 }
4060 goto done;
4061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004062 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004063 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004064 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004065 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004066 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004067}
4068
Guido van Rossumc001c092020-04-30 12:12:19 -07004069// func_type_comment:
4070// | NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
4071// | invalid_double_type_comments
4072// | TYPE_COMMENT
Pablo Galindod9552412020-05-01 16:32:09 +01004073static Token*
Guido van Rossumc001c092020-04-30 12:12:19 -07004074func_type_comment_rule(Parser *p)
4075{
4076 if (p->error_indicator) {
4077 return NULL;
4078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004079 Token* _res = NULL;
4080 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004081 { // NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004082 if (p->error_indicator) {
4083 return NULL;
4084 }
Pablo Galindob796b3f2020-05-01 12:32:26 +01004085 Token * newline_var;
4086 Token * t;
Guido van Rossumc001c092020-04-30 12:12:19 -07004087 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004088 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -07004089 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004090 (t = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -07004091 &&
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004092 _PyPegen_lookahead(1, _tmp_52_rule, p)
Guido van Rossumc001c092020-04-30 12:12:19 -07004093 )
4094 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004095 _res = t;
4096 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004097 p->error_indicator = 1;
4098 return NULL;
4099 }
4100 goto done;
4101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004102 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004103 }
4104 { // invalid_double_type_comments
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004105 if (p->error_indicator) {
4106 return NULL;
4107 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004108 void *invalid_double_type_comments_var;
4109 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004110 (invalid_double_type_comments_var = invalid_double_type_comments_rule(p)) // invalid_double_type_comments
Guido van Rossumc001c092020-04-30 12:12:19 -07004111 )
4112 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004113 _res = invalid_double_type_comments_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07004114 goto done;
4115 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004116 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004117 }
4118 { // TYPE_COMMENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004119 if (p->error_indicator) {
4120 return NULL;
4121 }
Pablo Galindob796b3f2020-05-01 12:32:26 +01004122 Token * type_comment_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07004123 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004124 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -07004125 )
4126 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004127 _res = type_comment_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07004128 goto done;
4129 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004130 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004131 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004132 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07004133 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004134 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07004135}
4136
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004137// params: invalid_parameters | parameters
4138static arguments_ty
4139params_rule(Parser *p)
4140{
4141 if (p->error_indicator) {
4142 return NULL;
4143 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004144 arguments_ty _res = NULL;
4145 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004146 { // invalid_parameters
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004147 if (p->error_indicator) {
4148 return NULL;
4149 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004150 void *invalid_parameters_var;
4151 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004152 (invalid_parameters_var = invalid_parameters_rule(p)) // invalid_parameters
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004153 )
4154 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004155 _res = invalid_parameters_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004156 goto done;
4157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004158 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004159 }
4160 { // parameters
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004161 if (p->error_indicator) {
4162 return NULL;
4163 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004164 arguments_ty parameters_var;
4165 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004166 (parameters_var = parameters_rule(p)) // parameters
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004167 )
4168 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004169 _res = parameters_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004170 goto done;
4171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004172 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004174 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004175 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004176 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004177}
4178
4179// parameters:
Guido van Rossumc001c092020-04-30 12:12:19 -07004180// | slash_no_default param_no_default* param_with_default* star_etc?
4181// | slash_with_default param_with_default* star_etc?
4182// | param_no_default+ param_with_default* star_etc?
4183// | param_with_default+ star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004184// | star_etc
4185static arguments_ty
4186parameters_rule(Parser *p)
4187{
4188 if (p->error_indicator) {
4189 return NULL;
4190 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004191 arguments_ty _res = NULL;
4192 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004193 { // slash_no_default param_no_default* param_with_default* star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004194 if (p->error_indicator) {
4195 return NULL;
4196 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004197 asdl_seq* a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004198 asdl_seq * b;
4199 asdl_seq * c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004200 void *d;
4201 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004202 (a = slash_no_default_rule(p)) // slash_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004203 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004204 (b = _loop0_53_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004205 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004206 (c = _loop0_54_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004207 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004208 (d = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004209 )
4210 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004211 _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
4212 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004213 p->error_indicator = 1;
4214 return NULL;
4215 }
4216 goto done;
4217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004218 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004219 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004220 { // slash_with_default param_with_default* star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004221 if (p->error_indicator) {
4222 return NULL;
4223 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004224 SlashWithDefault* a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004225 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004226 void *c;
4227 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004228 (a = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004229 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004230 (b = _loop0_55_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004231 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004232 (c = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004233 )
4234 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004235 _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
4236 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004237 p->error_indicator = 1;
4238 return NULL;
4239 }
4240 goto done;
4241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004242 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004243 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004244 { // param_no_default+ param_with_default* star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004245 if (p->error_indicator) {
4246 return NULL;
4247 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004248 asdl_seq * a;
4249 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004250 void *c;
4251 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004252 (a = _loop1_56_rule(p)) // param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004253 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004254 (b = _loop0_57_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004255 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004256 (c = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004257 )
4258 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004259 _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
4260 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004261 p->error_indicator = 1;
4262 return NULL;
4263 }
4264 goto done;
4265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004266 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004267 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004268 { // param_with_default+ star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004269 if (p->error_indicator) {
4270 return NULL;
4271 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004272 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004273 void *b;
4274 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004275 (a = _loop1_58_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004276 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004277 (b = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004278 )
4279 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004280 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
4281 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004282 p->error_indicator = 1;
4283 return NULL;
4284 }
4285 goto done;
4286 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004287 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004288 }
4289 { // star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004290 if (p->error_indicator) {
4291 return NULL;
4292 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004293 StarEtc* a;
4294 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004295 (a = star_etc_rule(p)) // star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004296 )
4297 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004298 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
4299 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004300 p->error_indicator = 1;
4301 return NULL;
4302 }
4303 goto done;
4304 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004305 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004306 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004307 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004308 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004309 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004310}
4311
Guido van Rossumc001c092020-04-30 12:12:19 -07004312// slash_no_default: param_no_default+ '/' ',' | param_no_default+ '/' &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004313static asdl_seq*
Guido van Rossumc001c092020-04-30 12:12:19 -07004314slash_no_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004315{
4316 if (p->error_indicator) {
4317 return NULL;
4318 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004319 asdl_seq* _res = NULL;
4320 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004321 { // param_no_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004322 if (p->error_indicator) {
4323 return NULL;
4324 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004325 Token * _literal;
4326 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07004327 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004328 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004329 (a = _loop1_59_rule(p)) // param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004330 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004331 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004332 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004333 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004334 )
4335 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004336 _res = a;
4337 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004338 p->error_indicator = 1;
4339 return NULL;
4340 }
4341 goto done;
4342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004343 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004344 }
4345 { // param_no_default+ '/' &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004346 if (p->error_indicator) {
4347 return NULL;
4348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004349 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004350 asdl_seq * a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004351 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004352 (a = _loop1_60_rule(p)) // param_no_default+
Guido van Rossumc001c092020-04-30 12:12:19 -07004353 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004354 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossumc001c092020-04-30 12:12:19 -07004355 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004356 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004357 )
4358 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004359 _res = a;
4360 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004361 p->error_indicator = 1;
4362 return NULL;
4363 }
4364 goto done;
4365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004366 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004367 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004368 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004369 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004370 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004371}
4372
Guido van Rossumc001c092020-04-30 12:12:19 -07004373// slash_with_default:
4374// | param_no_default* param_with_default+ '/' ','
4375// | param_no_default* param_with_default+ '/' &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004376static SlashWithDefault*
4377slash_with_default_rule(Parser *p)
4378{
4379 if (p->error_indicator) {
4380 return NULL;
4381 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004382 SlashWithDefault* _res = NULL;
4383 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004384 { // param_no_default* param_with_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004385 if (p->error_indicator) {
4386 return NULL;
4387 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004388 Token * _literal;
4389 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07004390 asdl_seq * a;
4391 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004392 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004393 (a = _loop0_61_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004394 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004395 (b = _loop1_62_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004396 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004397 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004398 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004399 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004400 )
4401 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004402 _res = _PyPegen_slash_with_default ( p , a , b );
4403 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004404 p->error_indicator = 1;
4405 return NULL;
4406 }
4407 goto done;
4408 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004409 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004410 }
4411 { // param_no_default* param_with_default+ '/' &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004412 if (p->error_indicator) {
4413 return NULL;
4414 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004415 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004416 asdl_seq * a;
4417 asdl_seq * b;
Guido van Rossumc001c092020-04-30 12:12:19 -07004418 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004419 (a = _loop0_63_rule(p)) // param_no_default*
Guido van Rossumc001c092020-04-30 12:12:19 -07004420 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004421 (b = _loop1_64_rule(p)) // param_with_default+
Guido van Rossumc001c092020-04-30 12:12:19 -07004422 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004423 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossumc001c092020-04-30 12:12:19 -07004424 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004425 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004426 )
4427 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004428 _res = _PyPegen_slash_with_default ( p , a , b );
4429 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004430 p->error_indicator = 1;
4431 return NULL;
4432 }
4433 goto done;
4434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004435 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004436 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004437 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004438 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004439 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004440}
4441
4442// star_etc:
Guido van Rossumc001c092020-04-30 12:12:19 -07004443// | '*' param_no_default param_maybe_default* kwds?
4444// | '*' ',' param_maybe_default+ kwds?
4445// | kwds
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004446// | invalid_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004447static StarEtc*
4448star_etc_rule(Parser *p)
4449{
4450 if (p->error_indicator) {
4451 return NULL;
4452 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004453 StarEtc* _res = NULL;
4454 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004455 { // '*' param_no_default param_maybe_default* kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004456 if (p->error_indicator) {
4457 return NULL;
4458 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004459 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004460 arg_ty a;
4461 asdl_seq * b;
4462 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004463 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004464 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004465 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004466 (a = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004467 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004468 (b = _loop0_65_rule(p)) // param_maybe_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004469 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004470 (c = kwds_rule(p), 1) // kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004471 )
4472 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004473 _res = _PyPegen_star_etc ( p , a , b , c );
4474 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004475 p->error_indicator = 1;
4476 return NULL;
4477 }
4478 goto done;
4479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004480 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004481 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004482 { // '*' ',' param_maybe_default+ kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004483 if (p->error_indicator) {
4484 return NULL;
4485 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004486 Token * _literal;
4487 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004488 asdl_seq * b;
4489 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004490 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004491 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004492 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004493 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004494 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004495 (b = _loop1_66_rule(p)) // param_maybe_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004496 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004497 (c = kwds_rule(p), 1) // kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004498 )
4499 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004500 _res = _PyPegen_star_etc ( p , NULL , b , c );
4501 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004502 p->error_indicator = 1;
4503 return NULL;
4504 }
4505 goto done;
4506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004507 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004508 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004509 { // kwds
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004510 if (p->error_indicator) {
4511 return NULL;
4512 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004513 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004514 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004515 (a = kwds_rule(p)) // kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004516 )
4517 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004518 _res = _PyPegen_star_etc ( p , NULL , NULL , a );
4519 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004520 p->error_indicator = 1;
4521 return NULL;
4522 }
4523 goto done;
4524 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004525 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004526 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004527 { // invalid_star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004528 if (p->error_indicator) {
4529 return NULL;
4530 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004531 void *invalid_star_etc_var;
4532 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004533 (invalid_star_etc_var = invalid_star_etc_rule(p)) // invalid_star_etc
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004534 )
4535 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004536 _res = invalid_star_etc_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004537 goto done;
4538 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004539 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004541 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004542 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004543 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004544}
4545
Guido van Rossumc001c092020-04-30 12:12:19 -07004546// kwds: '**' param_no_default
4547static arg_ty
4548kwds_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004549{
4550 if (p->error_indicator) {
4551 return NULL;
4552 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004553 arg_ty _res = NULL;
4554 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004555 { // '**' param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004556 if (p->error_indicator) {
4557 return NULL;
4558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004559 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004560 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004561 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004562 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -07004563 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004564 (a = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -07004565 )
4566 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004567 _res = a;
4568 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004569 p->error_indicator = 1;
4570 return NULL;
4571 }
4572 goto done;
4573 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004574 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004575 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004576 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07004577 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004578 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07004579}
4580
4581// param_no_default: param ',' TYPE_COMMENT? | param TYPE_COMMENT? &')'
4582static arg_ty
4583param_no_default_rule(Parser *p)
4584{
4585 if (p->error_indicator) {
4586 return NULL;
4587 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004588 arg_ty _res = NULL;
4589 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004590 { // param ',' TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004591 if (p->error_indicator) {
4592 return NULL;
4593 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004594 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004595 arg_ty a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004596 void *tc;
4597 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004598 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004599 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004600 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004601 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004602 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004603 )
4604 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004605 _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
4606 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004607 p->error_indicator = 1;
4608 return NULL;
4609 }
4610 goto done;
4611 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004612 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004613 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004614 { // param TYPE_COMMENT? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004615 if (p->error_indicator) {
4616 return NULL;
4617 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004618 arg_ty a;
4619 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004620 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004621 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004622 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004623 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004624 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004625 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004626 )
4627 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004628 _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
4629 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004630 p->error_indicator = 1;
4631 return NULL;
4632 }
4633 goto done;
4634 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004635 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004636 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004637 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004638 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004639 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004640}
4641
Guido van Rossumc001c092020-04-30 12:12:19 -07004642// param_with_default: param default ',' TYPE_COMMENT? | param default TYPE_COMMENT? &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004643static NameDefaultPair*
Guido van Rossumc001c092020-04-30 12:12:19 -07004644param_with_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004645{
4646 if (p->error_indicator) {
4647 return NULL;
4648 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004649 NameDefaultPair* _res = NULL;
4650 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004651 { // param default ',' TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004652 if (p->error_indicator) {
4653 return NULL;
4654 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004655 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004656 arg_ty a;
4657 expr_ty c;
Guido van Rossumc001c092020-04-30 12:12:19 -07004658 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004659 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004660 (a = param_rule(p)) // param
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004661 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004662 (c = default_rule(p)) // default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004663 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004664 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004665 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004666 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004667 )
4668 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004669 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4670 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004671 p->error_indicator = 1;
4672 return NULL;
4673 }
4674 goto done;
4675 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004676 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004677 }
4678 { // param default TYPE_COMMENT? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004679 if (p->error_indicator) {
4680 return NULL;
4681 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004682 arg_ty a;
4683 expr_ty c;
4684 void *tc;
4685 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004686 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004687 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004688 (c = default_rule(p)) // default
Guido van Rossumc001c092020-04-30 12:12:19 -07004689 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004690 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004691 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004692 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -07004693 )
4694 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004695 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4696 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004697 p->error_indicator = 1;
4698 return NULL;
4699 }
4700 goto done;
4701 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004702 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004703 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004704 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004705 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004706 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004707}
4708
Guido van Rossumc001c092020-04-30 12:12:19 -07004709// param_maybe_default:
4710// | param default? ',' TYPE_COMMENT?
4711// | param default? TYPE_COMMENT? &')'
4712static NameDefaultPair*
4713param_maybe_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004714{
4715 if (p->error_indicator) {
4716 return NULL;
4717 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004718 NameDefaultPair* _res = NULL;
4719 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004720 { // param default? ',' TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004721 if (p->error_indicator) {
4722 return NULL;
4723 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004724 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004725 arg_ty a;
4726 void *c;
Guido van Rossumc001c092020-04-30 12:12:19 -07004727 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004728 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004729 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004730 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004731 (c = default_rule(p), 1) // default?
Guido van Rossumc001c092020-04-30 12:12:19 -07004732 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004733 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004734 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004735 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004736 )
4737 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004738 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4739 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004740 p->error_indicator = 1;
4741 return NULL;
4742 }
4743 goto done;
4744 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004745 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004746 }
4747 { // param default? TYPE_COMMENT? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004748 if (p->error_indicator) {
4749 return NULL;
4750 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004751 arg_ty a;
4752 void *c;
4753 void *tc;
4754 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004755 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004756 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004757 (c = default_rule(p), 1) // default?
Guido van Rossumc001c092020-04-30 12:12:19 -07004758 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004759 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004760 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004761 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -07004762 )
4763 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004764 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4765 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004766 p->error_indicator = 1;
4767 return NULL;
4768 }
4769 goto done;
4770 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004771 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004772 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004773 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004774 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004775 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004776}
4777
Guido van Rossumc001c092020-04-30 12:12:19 -07004778// param: NAME annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004779static arg_ty
Guido van Rossumc001c092020-04-30 12:12:19 -07004780param_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004781{
4782 if (p->error_indicator) {
4783 return NULL;
4784 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004785 arg_ty _res = NULL;
4786 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004787 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4788 p->error_indicator = 1;
4789 return NULL;
4790 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004791 int _start_lineno = p->tokens[_mark]->lineno;
4792 UNUSED(_start_lineno); // Only used by EXTRA macro
4793 int _start_col_offset = p->tokens[_mark]->col_offset;
4794 UNUSED(_start_col_offset); // Only used by EXTRA macro
Guido van Rossumc001c092020-04-30 12:12:19 -07004795 { // NAME annotation?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004796 if (p->error_indicator) {
4797 return NULL;
4798 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004799 expr_ty a;
4800 void *b;
4801 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004802 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004803 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004804 (b = annotation_rule(p), 1) // annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004805 )
4806 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004807 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4808 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004809 return NULL;
4810 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004811 int _end_lineno = _token->end_lineno;
4812 UNUSED(_end_lineno); // Only used by EXTRA macro
4813 int _end_col_offset = _token->end_col_offset;
4814 UNUSED(_end_col_offset); // Only used by EXTRA macro
4815 _res = _Py_arg ( a -> v . Name . id , b , NULL , EXTRA );
4816 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004817 p->error_indicator = 1;
4818 return NULL;
4819 }
4820 goto done;
4821 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004822 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004823 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004824 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004825 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004826 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004827}
4828
Guido van Rossumc001c092020-04-30 12:12:19 -07004829// annotation: ':' expression
4830static expr_ty
4831annotation_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004832{
4833 if (p->error_indicator) {
4834 return NULL;
4835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004836 expr_ty _res = NULL;
4837 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004838 { // ':' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004839 if (p->error_indicator) {
4840 return NULL;
4841 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004842 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004843 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004844 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004845 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004846 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004847 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004848 )
4849 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004850 _res = a;
4851 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004852 p->error_indicator = 1;
4853 return NULL;
4854 }
4855 goto done;
4856 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004857 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004859 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004860 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004861 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004862}
4863
Guido van Rossumc001c092020-04-30 12:12:19 -07004864// default: '=' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004865static expr_ty
Guido van Rossumc001c092020-04-30 12:12:19 -07004866default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004867{
4868 if (p->error_indicator) {
4869 return NULL;
4870 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004871 expr_ty _res = NULL;
4872 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004873 { // '=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004874 if (p->error_indicator) {
4875 return NULL;
4876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004877 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004878 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004879 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004880 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Guido van Rossumc001c092020-04-30 12:12:19 -07004881 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004882 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004883 )
4884 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004885 _res = a;
4886 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004887 p->error_indicator = 1;
4888 return NULL;
4889 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004890 goto done;
4891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004892 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004893 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004894 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004895 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004896 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004897}
4898
4899// decorators: (('@' named_expression NEWLINE))+
4900static asdl_seq*
4901decorators_rule(Parser *p)
4902{
4903 if (p->error_indicator) {
4904 return NULL;
4905 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004906 asdl_seq* _res = NULL;
4907 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004908 { // (('@' named_expression NEWLINE))+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004909 if (p->error_indicator) {
4910 return NULL;
4911 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004912 asdl_seq * a;
4913 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004914 (a = _loop1_67_rule(p)) // (('@' named_expression NEWLINE))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004915 )
4916 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004917 _res = a;
4918 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004919 p->error_indicator = 1;
4920 return NULL;
4921 }
4922 goto done;
4923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004924 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004925 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004926 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004927 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004928 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004929}
4930
4931// class_def: decorators class_def_raw | class_def_raw
4932static stmt_ty
4933class_def_rule(Parser *p)
4934{
4935 if (p->error_indicator) {
4936 return NULL;
4937 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004938 stmt_ty _res = NULL;
4939 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004940 { // decorators class_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004941 if (p->error_indicator) {
4942 return NULL;
4943 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004944 asdl_seq* a;
4945 stmt_ty b;
4946 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004947 (a = decorators_rule(p)) // decorators
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004948 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004949 (b = class_def_raw_rule(p)) // class_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004950 )
4951 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004952 _res = _PyPegen_class_def_decorators ( p , a , b );
4953 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004954 p->error_indicator = 1;
4955 return NULL;
4956 }
4957 goto done;
4958 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004959 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004960 }
4961 { // class_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004962 if (p->error_indicator) {
4963 return NULL;
4964 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004965 stmt_ty class_def_raw_var;
4966 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004967 (class_def_raw_var = class_def_raw_rule(p)) // class_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004968 )
4969 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004970 _res = class_def_raw_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004971 goto done;
4972 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004973 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004975 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004976 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004977 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004978}
4979
4980// class_def_raw: 'class' NAME ['(' arguments? ')'] ':' block
4981static stmt_ty
4982class_def_raw_rule(Parser *p)
4983{
4984 if (p->error_indicator) {
4985 return NULL;
4986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004987 stmt_ty _res = NULL;
4988 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004989 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4990 p->error_indicator = 1;
4991 return NULL;
4992 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004993 int _start_lineno = p->tokens[_mark]->lineno;
4994 UNUSED(_start_lineno); // Only used by EXTRA macro
4995 int _start_col_offset = p->tokens[_mark]->col_offset;
4996 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004997 { // 'class' NAME ['(' arguments? ')'] ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004998 if (p->error_indicator) {
4999 return NULL;
5000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005001 Token * _keyword;
5002 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005003 expr_ty a;
5004 void *b;
5005 asdl_seq* c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005006 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005007 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005008 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005009 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005010 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005011 (b = _tmp_68_rule(p), 1) // ['(' arguments? ')']
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005012 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005013 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005014 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005015 (c = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005016 )
5017 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005018 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5019 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005020 return NULL;
5021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005022 int _end_lineno = _token->end_lineno;
5023 UNUSED(_end_lineno); // Only used by EXTRA macro
5024 int _end_col_offset = _token->end_col_offset;
5025 UNUSED(_end_col_offset); // Only used by EXTRA macro
5026 _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 );
5027 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005028 p->error_indicator = 1;
5029 return NULL;
5030 }
5031 goto done;
5032 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005033 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005035 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005036 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005037 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005038}
5039
5040// block: NEWLINE INDENT statements DEDENT | simple_stmt | invalid_block
5041static asdl_seq*
5042block_rule(Parser *p)
5043{
5044 if (p->error_indicator) {
5045 return NULL;
5046 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005047 asdl_seq* _res = NULL;
5048 if (_PyPegen_is_memoized(p, block_type, &_res))
5049 return _res;
5050 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005051 { // NEWLINE INDENT statements DEDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005052 if (p->error_indicator) {
5053 return NULL;
5054 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005055 asdl_seq* a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01005056 Token * dedent_var;
5057 Token * indent_var;
5058 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005059 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005060 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005061 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005062 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005063 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005064 (a = statements_rule(p)) // statements
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005065 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005066 (dedent_var = _PyPegen_expect_token(p, DEDENT)) // token='DEDENT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005067 )
5068 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005069 _res = a;
5070 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005071 p->error_indicator = 1;
5072 return NULL;
5073 }
5074 goto done;
5075 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005076 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005077 }
5078 { // simple_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005079 if (p->error_indicator) {
5080 return NULL;
5081 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005082 asdl_seq* simple_stmt_var;
5083 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005084 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005085 )
5086 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005087 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005088 goto done;
5089 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005090 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005091 }
5092 { // invalid_block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005093 if (p->error_indicator) {
5094 return NULL;
5095 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005096 void *invalid_block_var;
5097 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005098 (invalid_block_var = invalid_block_rule(p)) // invalid_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005099 )
5100 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005101 _res = invalid_block_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005102 goto done;
5103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005104 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005105 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005106 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005107 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005108 _PyPegen_insert_memo(p, _mark, block_type, _res);
5109 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005110}
5111
5112// expressions_list: ','.star_expression+ ','?
5113static asdl_seq*
5114expressions_list_rule(Parser *p)
5115{
5116 if (p->error_indicator) {
5117 return NULL;
5118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005119 asdl_seq* _res = NULL;
5120 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005121 { // ','.star_expression+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005122 if (p->error_indicator) {
5123 return NULL;
5124 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005125 void *_opt_var;
5126 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005127 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005128 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005129 (a = _gather_69_rule(p)) // ','.star_expression+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005130 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005131 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005132 )
5133 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005134 _res = a;
5135 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005136 p->error_indicator = 1;
5137 return NULL;
5138 }
5139 goto done;
5140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005141 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005142 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005143 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005144 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005145 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005146}
5147
5148// star_expressions:
5149// | star_expression ((',' star_expression))+ ','?
5150// | star_expression ','
5151// | star_expression
5152static expr_ty
5153star_expressions_rule(Parser *p)
5154{
5155 if (p->error_indicator) {
5156 return NULL;
5157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005158 expr_ty _res = NULL;
5159 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005160 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5161 p->error_indicator = 1;
5162 return NULL;
5163 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005164 int _start_lineno = p->tokens[_mark]->lineno;
5165 UNUSED(_start_lineno); // Only used by EXTRA macro
5166 int _start_col_offset = p->tokens[_mark]->col_offset;
5167 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005168 { // star_expression ((',' star_expression))+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005169 if (p->error_indicator) {
5170 return NULL;
5171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005172 void *_opt_var;
5173 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005174 expr_ty a;
5175 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005176 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005177 (a = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005178 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005179 (b = _loop1_71_rule(p)) // ((',' star_expression))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005180 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005181 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005182 )
5183 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005184 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5185 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005186 return NULL;
5187 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005188 int _end_lineno = _token->end_lineno;
5189 UNUSED(_end_lineno); // Only used by EXTRA macro
5190 int _end_col_offset = _token->end_col_offset;
5191 UNUSED(_end_col_offset); // Only used by EXTRA macro
5192 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
5193 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005194 p->error_indicator = 1;
5195 return NULL;
5196 }
5197 goto done;
5198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005199 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005200 }
5201 { // star_expression ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005202 if (p->error_indicator) {
5203 return NULL;
5204 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005205 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005206 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005207 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005208 (a = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005209 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005210 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005211 )
5212 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005213 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5214 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005215 return NULL;
5216 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005217 int _end_lineno = _token->end_lineno;
5218 UNUSED(_end_lineno); // Only used by EXTRA macro
5219 int _end_col_offset = _token->end_col_offset;
5220 UNUSED(_end_col_offset); // Only used by EXTRA macro
5221 _res = _Py_Tuple ( CHECK ( _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
5222 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005223 p->error_indicator = 1;
5224 return NULL;
5225 }
5226 goto done;
5227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005228 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005229 }
5230 { // star_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005231 if (p->error_indicator) {
5232 return NULL;
5233 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005234 expr_ty star_expression_var;
5235 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005236 (star_expression_var = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005237 )
5238 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005239 _res = star_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005240 goto done;
5241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005242 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005244 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005245 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005246 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005247}
5248
5249// star_expression: '*' bitwise_or | expression
5250static expr_ty
5251star_expression_rule(Parser *p)
5252{
5253 if (p->error_indicator) {
5254 return NULL;
5255 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005256 expr_ty _res = NULL;
5257 if (_PyPegen_is_memoized(p, star_expression_type, &_res))
5258 return _res;
5259 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005260 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5261 p->error_indicator = 1;
5262 return NULL;
5263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005264 int _start_lineno = p->tokens[_mark]->lineno;
5265 UNUSED(_start_lineno); // Only used by EXTRA macro
5266 int _start_col_offset = p->tokens[_mark]->col_offset;
5267 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005268 { // '*' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005269 if (p->error_indicator) {
5270 return NULL;
5271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005272 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005273 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005274 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005275 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005276 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005277 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005278 )
5279 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005280 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5281 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005282 return NULL;
5283 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005284 int _end_lineno = _token->end_lineno;
5285 UNUSED(_end_lineno); // Only used by EXTRA macro
5286 int _end_col_offset = _token->end_col_offset;
5287 UNUSED(_end_col_offset); // Only used by EXTRA macro
5288 _res = _Py_Starred ( a , Load , EXTRA );
5289 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005290 p->error_indicator = 1;
5291 return NULL;
5292 }
5293 goto done;
5294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005295 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005296 }
5297 { // expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005298 if (p->error_indicator) {
5299 return NULL;
5300 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005301 expr_ty expression_var;
5302 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005303 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005304 )
5305 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005306 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005307 goto done;
5308 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005309 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005310 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005311 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005312 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005313 _PyPegen_insert_memo(p, _mark, star_expression_type, _res);
5314 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005315}
5316
5317// star_named_expressions: ','.star_named_expression+ ','?
5318static asdl_seq*
5319star_named_expressions_rule(Parser *p)
5320{
5321 if (p->error_indicator) {
5322 return NULL;
5323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005324 asdl_seq* _res = NULL;
5325 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005326 { // ','.star_named_expression+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005327 if (p->error_indicator) {
5328 return NULL;
5329 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005330 void *_opt_var;
5331 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005332 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005333 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005334 (a = _gather_72_rule(p)) // ','.star_named_expression+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005335 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005336 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005337 )
5338 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005339 _res = a;
5340 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005341 p->error_indicator = 1;
5342 return NULL;
5343 }
5344 goto done;
5345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005346 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005347 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005348 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005349 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005350 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005351}
5352
5353// star_named_expression: '*' bitwise_or | named_expression
5354static expr_ty
5355star_named_expression_rule(Parser *p)
5356{
5357 if (p->error_indicator) {
5358 return NULL;
5359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005360 expr_ty _res = NULL;
5361 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005362 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5363 p->error_indicator = 1;
5364 return NULL;
5365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005366 int _start_lineno = p->tokens[_mark]->lineno;
5367 UNUSED(_start_lineno); // Only used by EXTRA macro
5368 int _start_col_offset = p->tokens[_mark]->col_offset;
5369 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005370 { // '*' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005371 if (p->error_indicator) {
5372 return NULL;
5373 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005374 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005375 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005376 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005377 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005378 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005379 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005380 )
5381 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005382 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5383 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005384 return NULL;
5385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005386 int _end_lineno = _token->end_lineno;
5387 UNUSED(_end_lineno); // Only used by EXTRA macro
5388 int _end_col_offset = _token->end_col_offset;
5389 UNUSED(_end_col_offset); // Only used by EXTRA macro
5390 _res = _Py_Starred ( a , Load , EXTRA );
5391 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005392 p->error_indicator = 1;
5393 return NULL;
5394 }
5395 goto done;
5396 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005397 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005398 }
5399 { // named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005400 if (p->error_indicator) {
5401 return NULL;
5402 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005403 expr_ty named_expression_var;
5404 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005405 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005406 )
5407 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005408 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005409 goto done;
5410 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005411 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005413 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005414 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005415 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005416}
5417
5418// named_expression: NAME ':=' expression | expression !':=' | invalid_named_expression
5419static expr_ty
5420named_expression_rule(Parser *p)
5421{
5422 if (p->error_indicator) {
5423 return NULL;
5424 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005425 expr_ty _res = NULL;
5426 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005427 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5428 p->error_indicator = 1;
5429 return NULL;
5430 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005431 int _start_lineno = p->tokens[_mark]->lineno;
5432 UNUSED(_start_lineno); // Only used by EXTRA macro
5433 int _start_col_offset = p->tokens[_mark]->col_offset;
5434 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005435 { // NAME ':=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005436 if (p->error_indicator) {
5437 return NULL;
5438 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005439 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005440 expr_ty a;
5441 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005442 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005443 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005444 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005445 (_literal = _PyPegen_expect_token(p, 53)) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005446 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005447 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005448 )
5449 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005450 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5451 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005452 return NULL;
5453 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005454 int _end_lineno = _token->end_lineno;
5455 UNUSED(_end_lineno); // Only used by EXTRA macro
5456 int _end_col_offset = _token->end_col_offset;
5457 UNUSED(_end_col_offset); // Only used by EXTRA macro
5458 _res = _Py_NamedExpr ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , b , EXTRA );
5459 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005460 p->error_indicator = 1;
5461 return NULL;
5462 }
5463 goto done;
5464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005465 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005466 }
5467 { // expression !':='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005468 if (p->error_indicator) {
5469 return NULL;
5470 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005471 expr_ty expression_var;
5472 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005473 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005474 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005475 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005476 )
5477 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005478 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005479 goto done;
5480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005481 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005482 }
5483 { // invalid_named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005484 if (p->error_indicator) {
5485 return NULL;
5486 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005487 void *invalid_named_expression_var;
5488 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005489 (invalid_named_expression_var = invalid_named_expression_rule(p)) // invalid_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005490 )
5491 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005492 _res = invalid_named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005493 goto done;
5494 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005495 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005496 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005497 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005498 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005499 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005500}
5501
5502// annotated_rhs: yield_expr | star_expressions
5503static expr_ty
5504annotated_rhs_rule(Parser *p)
5505{
5506 if (p->error_indicator) {
5507 return NULL;
5508 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005509 expr_ty _res = NULL;
5510 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005511 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005512 if (p->error_indicator) {
5513 return NULL;
5514 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005515 expr_ty yield_expr_var;
5516 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005517 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005518 )
5519 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005520 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005521 goto done;
5522 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005523 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005524 }
5525 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005526 if (p->error_indicator) {
5527 return NULL;
5528 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005529 expr_ty star_expressions_var;
5530 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005531 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005532 )
5533 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005534 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005535 goto done;
5536 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005537 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005538 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005539 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005540 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005541 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005542}
5543
5544// expressions: expression ((',' expression))+ ','? | expression ',' | expression
5545static expr_ty
5546expressions_rule(Parser *p)
5547{
5548 if (p->error_indicator) {
5549 return NULL;
5550 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005551 expr_ty _res = NULL;
5552 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005553 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5554 p->error_indicator = 1;
5555 return NULL;
5556 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005557 int _start_lineno = p->tokens[_mark]->lineno;
5558 UNUSED(_start_lineno); // Only used by EXTRA macro
5559 int _start_col_offset = p->tokens[_mark]->col_offset;
5560 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005561 { // expression ((',' expression))+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005562 if (p->error_indicator) {
5563 return NULL;
5564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005565 void *_opt_var;
5566 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005567 expr_ty a;
5568 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005569 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005570 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005571 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005572 (b = _loop1_74_rule(p)) // ((',' expression))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005573 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005574 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005575 )
5576 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005577 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5578 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005579 return NULL;
5580 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005581 int _end_lineno = _token->end_lineno;
5582 UNUSED(_end_lineno); // Only used by EXTRA macro
5583 int _end_col_offset = _token->end_col_offset;
5584 UNUSED(_end_col_offset); // Only used by EXTRA macro
5585 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
5586 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005587 p->error_indicator = 1;
5588 return NULL;
5589 }
5590 goto done;
5591 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005592 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005593 }
5594 { // expression ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005595 if (p->error_indicator) {
5596 return NULL;
5597 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005598 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005599 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005600 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005601 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005602 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005603 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005604 )
5605 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005606 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5607 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005608 return NULL;
5609 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005610 int _end_lineno = _token->end_lineno;
5611 UNUSED(_end_lineno); // Only used by EXTRA macro
5612 int _end_col_offset = _token->end_col_offset;
5613 UNUSED(_end_col_offset); // Only used by EXTRA macro
5614 _res = _Py_Tuple ( CHECK ( _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
5615 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005616 p->error_indicator = 1;
5617 return NULL;
5618 }
5619 goto done;
5620 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005621 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005622 }
5623 { // expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005624 if (p->error_indicator) {
5625 return NULL;
5626 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005627 expr_ty expression_var;
5628 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005629 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005630 )
5631 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005632 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005633 goto done;
5634 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005635 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005636 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005637 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005638 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005639 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005640}
5641
5642// expression: disjunction 'if' disjunction 'else' expression | disjunction | lambdef
5643static expr_ty
5644expression_rule(Parser *p)
5645{
5646 if (p->error_indicator) {
5647 return NULL;
5648 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005649 expr_ty _res = NULL;
5650 if (_PyPegen_is_memoized(p, expression_type, &_res))
5651 return _res;
5652 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005653 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5654 p->error_indicator = 1;
5655 return NULL;
5656 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005657 int _start_lineno = p->tokens[_mark]->lineno;
5658 UNUSED(_start_lineno); // Only used by EXTRA macro
5659 int _start_col_offset = p->tokens[_mark]->col_offset;
5660 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005661 { // disjunction 'if' disjunction 'else' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005662 if (p->error_indicator) {
5663 return NULL;
5664 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005665 Token * _keyword;
5666 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005667 expr_ty a;
5668 expr_ty b;
5669 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005670 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005671 (a = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005672 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005673 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005674 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005675 (b = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005676 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005677 (_keyword_1 = _PyPegen_expect_token(p, 516)) // token='else'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005678 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005679 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005680 )
5681 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005682 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5683 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005684 return NULL;
5685 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005686 int _end_lineno = _token->end_lineno;
5687 UNUSED(_end_lineno); // Only used by EXTRA macro
5688 int _end_col_offset = _token->end_col_offset;
5689 UNUSED(_end_col_offset); // Only used by EXTRA macro
5690 _res = _Py_IfExp ( b , a , c , EXTRA );
5691 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005692 p->error_indicator = 1;
5693 return NULL;
5694 }
5695 goto done;
5696 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005697 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005698 }
5699 { // disjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005700 if (p->error_indicator) {
5701 return NULL;
5702 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005703 expr_ty disjunction_var;
5704 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005705 (disjunction_var = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005706 )
5707 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005708 _res = disjunction_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005709 goto done;
5710 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005711 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005712 }
5713 { // lambdef
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005714 if (p->error_indicator) {
5715 return NULL;
5716 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005717 expr_ty lambdef_var;
5718 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005719 (lambdef_var = lambdef_rule(p)) // lambdef
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005720 )
5721 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005722 _res = lambdef_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005723 goto done;
5724 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005725 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005726 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005727 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005728 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005729 _PyPegen_insert_memo(p, _mark, expression_type, _res);
5730 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005731}
5732
5733// lambdef: 'lambda' lambda_parameters? ':' expression
5734static expr_ty
5735lambdef_rule(Parser *p)
5736{
5737 if (p->error_indicator) {
5738 return NULL;
5739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005740 expr_ty _res = NULL;
5741 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005742 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5743 p->error_indicator = 1;
5744 return NULL;
5745 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005746 int _start_lineno = p->tokens[_mark]->lineno;
5747 UNUSED(_start_lineno); // Only used by EXTRA macro
5748 int _start_col_offset = p->tokens[_mark]->col_offset;
5749 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005750 { // 'lambda' lambda_parameters? ':' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005751 if (p->error_indicator) {
5752 return NULL;
5753 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005754 Token * _keyword;
5755 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005756 void *a;
5757 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005758 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005759 (_keyword = _PyPegen_expect_token(p, 524)) // token='lambda'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005760 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005761 (a = lambda_parameters_rule(p), 1) // lambda_parameters?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005762 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005763 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005764 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005765 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005766 )
5767 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005768 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5769 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005770 return NULL;
5771 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005772 int _end_lineno = _token->end_lineno;
5773 UNUSED(_end_lineno); // Only used by EXTRA macro
5774 int _end_col_offset = _token->end_col_offset;
5775 UNUSED(_end_col_offset); // Only used by EXTRA macro
5776 _res = _Py_Lambda ( ( a ) ? a : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , EXTRA );
5777 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005778 p->error_indicator = 1;
5779 return NULL;
5780 }
5781 goto done;
5782 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005783 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005784 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005785 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005786 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005787 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005788}
5789
5790// lambda_parameters:
Guido van Rossum3941d972020-05-01 09:42:03 -07005791// | lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
5792// | lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
5793// | lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
5794// | lambda_param_with_default+ lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005795// | lambda_star_etc
5796static arguments_ty
5797lambda_parameters_rule(Parser *p)
5798{
5799 if (p->error_indicator) {
5800 return NULL;
5801 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005802 arguments_ty _res = NULL;
5803 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005804 { // lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005805 if (p->error_indicator) {
5806 return NULL;
5807 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005808 asdl_seq* a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005809 asdl_seq * b;
5810 asdl_seq * c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005811 void *d;
5812 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005813 (a = lambda_slash_no_default_rule(p)) // lambda_slash_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005814 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005815 (b = _loop0_75_rule(p)) // lambda_param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005816 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005817 (c = _loop0_76_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005818 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005819 (d = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005820 )
5821 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005822 _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
5823 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005824 p->error_indicator = 1;
5825 return NULL;
5826 }
5827 goto done;
5828 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005829 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005830 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005831 { // lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005832 if (p->error_indicator) {
5833 return NULL;
5834 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005835 SlashWithDefault* a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005836 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005837 void *c;
5838 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005839 (a = lambda_slash_with_default_rule(p)) // lambda_slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005840 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005841 (b = _loop0_77_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005842 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005843 (c = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005844 )
5845 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005846 _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
5847 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005848 p->error_indicator = 1;
5849 return NULL;
5850 }
5851 goto done;
5852 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005853 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005854 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005855 { // lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005856 if (p->error_indicator) {
5857 return NULL;
5858 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005859 asdl_seq * a;
5860 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005861 void *c;
5862 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005863 (a = _loop1_78_rule(p)) // lambda_param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005864 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005865 (b = _loop0_79_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005866 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005867 (c = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005868 )
5869 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005870 _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
5871 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005872 p->error_indicator = 1;
5873 return NULL;
5874 }
5875 goto done;
5876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005877 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005878 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005879 { // lambda_param_with_default+ lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005880 if (p->error_indicator) {
5881 return NULL;
5882 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005883 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005884 void *b;
5885 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005886 (a = _loop1_80_rule(p)) // lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005887 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005888 (b = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005889 )
5890 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005891 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
5892 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005893 p->error_indicator = 1;
5894 return NULL;
5895 }
5896 goto done;
5897 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005898 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005899 }
5900 { // lambda_star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005901 if (p->error_indicator) {
5902 return NULL;
5903 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005904 StarEtc* a;
5905 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005906 (a = lambda_star_etc_rule(p)) // lambda_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005907 )
5908 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005909 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
5910 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005911 p->error_indicator = 1;
5912 return NULL;
5913 }
5914 goto done;
5915 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005916 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005917 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005918 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005919 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005920 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005921}
5922
Guido van Rossum3941d972020-05-01 09:42:03 -07005923// lambda_slash_no_default:
5924// | lambda_param_no_default+ '/' ','
5925// | lambda_param_no_default+ '/' &':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005926static asdl_seq*
Guido van Rossum3941d972020-05-01 09:42:03 -07005927lambda_slash_no_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005928{
5929 if (p->error_indicator) {
5930 return NULL;
5931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005932 asdl_seq* _res = NULL;
5933 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005934 { // lambda_param_no_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005935 if (p->error_indicator) {
5936 return NULL;
5937 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005938 Token * _literal;
5939 Token * _literal_1;
Guido van Rossum3941d972020-05-01 09:42:03 -07005940 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005941 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005942 (a = _loop1_81_rule(p)) // lambda_param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005943 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005944 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005945 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005946 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005947 )
5948 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005949 _res = a;
5950 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005951 p->error_indicator = 1;
5952 return NULL;
5953 }
5954 goto done;
5955 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005956 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005957 }
5958 { // lambda_param_no_default+ '/' &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005959 if (p->error_indicator) {
5960 return NULL;
5961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005962 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005963 asdl_seq * a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005964 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005965 (a = _loop1_82_rule(p)) // lambda_param_no_default+
Guido van Rossum3941d972020-05-01 09:42:03 -07005966 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005967 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossum3941d972020-05-01 09:42:03 -07005968 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005969 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005970 )
5971 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005972 _res = a;
5973 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005974 p->error_indicator = 1;
5975 return NULL;
5976 }
5977 goto done;
5978 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005979 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005980 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005981 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005982 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005983 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005984}
5985
Guido van Rossum3941d972020-05-01 09:42:03 -07005986// lambda_slash_with_default:
5987// | lambda_param_no_default* lambda_param_with_default+ '/' ','
5988// | lambda_param_no_default* lambda_param_with_default+ '/' &':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005989static SlashWithDefault*
5990lambda_slash_with_default_rule(Parser *p)
5991{
5992 if (p->error_indicator) {
5993 return NULL;
5994 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005995 SlashWithDefault* _res = NULL;
5996 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005997 { // lambda_param_no_default* lambda_param_with_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005998 if (p->error_indicator) {
5999 return NULL;
6000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006001 Token * _literal;
6002 Token * _literal_1;
Guido van Rossum3941d972020-05-01 09:42:03 -07006003 asdl_seq * a;
6004 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006005 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006006 (a = _loop0_83_rule(p)) // lambda_param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006007 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006008 (b = _loop1_84_rule(p)) // lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006009 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006010 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006011 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006012 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07006013 )
6014 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006015 _res = _PyPegen_slash_with_default ( p , a , b );
6016 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006017 p->error_indicator = 1;
6018 return NULL;
6019 }
6020 goto done;
6021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006022 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006023 }
6024 { // lambda_param_no_default* lambda_param_with_default+ '/' &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006025 if (p->error_indicator) {
6026 return NULL;
6027 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006028 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07006029 asdl_seq * a;
6030 asdl_seq * b;
Guido van Rossum3941d972020-05-01 09:42:03 -07006031 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006032 (a = _loop0_85_rule(p)) // lambda_param_no_default*
Guido van Rossum3941d972020-05-01 09:42:03 -07006033 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006034 (b = _loop1_86_rule(p)) // lambda_param_with_default+
Guido van Rossum3941d972020-05-01 09:42:03 -07006035 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006036 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossum3941d972020-05-01 09:42:03 -07006037 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006038 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006039 )
6040 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006041 _res = _PyPegen_slash_with_default ( p , a , b );
6042 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006043 p->error_indicator = 1;
6044 return NULL;
6045 }
6046 goto done;
6047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006048 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006049 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006050 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006051 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006052 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006053}
6054
6055// lambda_star_etc:
Guido van Rossum3941d972020-05-01 09:42:03 -07006056// | '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
6057// | '*' ',' lambda_param_maybe_default+ lambda_kwds?
6058// | lambda_kwds
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006059// | invalid_lambda_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006060static StarEtc*
6061lambda_star_etc_rule(Parser *p)
6062{
6063 if (p->error_indicator) {
6064 return NULL;
6065 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006066 StarEtc* _res = NULL;
6067 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006068 { // '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006069 if (p->error_indicator) {
6070 return NULL;
6071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006072 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006073 arg_ty a;
6074 asdl_seq * b;
6075 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006076 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006077 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006078 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006079 (a = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006080 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006081 (b = _loop0_87_rule(p)) // lambda_param_maybe_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006082 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006083 (c = lambda_kwds_rule(p), 1) // lambda_kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006084 )
6085 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006086 _res = _PyPegen_star_etc ( p , a , b , c );
6087 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006088 p->error_indicator = 1;
6089 return NULL;
6090 }
6091 goto done;
6092 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006093 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006094 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006095 { // '*' ',' lambda_param_maybe_default+ lambda_kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006096 if (p->error_indicator) {
6097 return NULL;
6098 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006099 Token * _literal;
6100 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006101 asdl_seq * b;
6102 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006103 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006104 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006105 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006106 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006107 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006108 (b = _loop1_88_rule(p)) // lambda_param_maybe_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006109 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006110 (c = lambda_kwds_rule(p), 1) // lambda_kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006111 )
6112 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006113 _res = _PyPegen_star_etc ( p , NULL , b , c );
6114 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006115 p->error_indicator = 1;
6116 return NULL;
6117 }
6118 goto done;
6119 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006120 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006121 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006122 { // lambda_kwds
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006123 if (p->error_indicator) {
6124 return NULL;
6125 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006126 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006127 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006128 (a = lambda_kwds_rule(p)) // lambda_kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006129 )
6130 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006131 _res = _PyPegen_star_etc ( p , NULL , NULL , a );
6132 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006133 p->error_indicator = 1;
6134 return NULL;
6135 }
6136 goto done;
6137 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006138 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006139 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006140 { // invalid_lambda_star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006141 if (p->error_indicator) {
6142 return NULL;
6143 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006144 void *invalid_lambda_star_etc_var;
6145 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006146 (invalid_lambda_star_etc_var = invalid_lambda_star_etc_rule(p)) // invalid_lambda_star_etc
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006147 )
6148 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006149 _res = invalid_lambda_star_etc_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006150 goto done;
6151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006152 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006153 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006154 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006155 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006156 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006157}
6158
Guido van Rossum3941d972020-05-01 09:42:03 -07006159// lambda_kwds: '**' lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006160static arg_ty
Guido van Rossum3941d972020-05-01 09:42:03 -07006161lambda_kwds_rule(Parser *p)
6162{
6163 if (p->error_indicator) {
6164 return NULL;
6165 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006166 arg_ty _res = NULL;
6167 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006168 { // '**' lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006169 if (p->error_indicator) {
6170 return NULL;
6171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006172 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07006173 arg_ty a;
Guido van Rossum3941d972020-05-01 09:42:03 -07006174 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006175 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossum3941d972020-05-01 09:42:03 -07006176 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006177 (a = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -07006178 )
6179 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006180 _res = a;
6181 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006182 p->error_indicator = 1;
6183 return NULL;
6184 }
6185 goto done;
6186 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006187 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006188 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006189 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07006190 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006191 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07006192}
6193
6194// lambda_param_no_default: lambda_param ',' | lambda_param &':'
6195static arg_ty
6196lambda_param_no_default_rule(Parser *p)
6197{
6198 if (p->error_indicator) {
6199 return NULL;
6200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006201 arg_ty _res = NULL;
6202 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006203 { // lambda_param ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006204 if (p->error_indicator) {
6205 return NULL;
6206 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006207 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07006208 arg_ty a;
Guido van Rossum3941d972020-05-01 09:42:03 -07006209 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006210 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006211 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006212 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07006213 )
6214 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006215 _res = a;
6216 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006217 p->error_indicator = 1;
6218 return NULL;
6219 }
6220 goto done;
6221 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006222 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006223 }
6224 { // lambda_param &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006225 if (p->error_indicator) {
6226 return NULL;
6227 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006228 arg_ty a;
6229 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006230 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006231 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006232 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07006233 )
6234 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006235 _res = a;
6236 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006237 p->error_indicator = 1;
6238 return NULL;
6239 }
6240 goto done;
6241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006242 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006244 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07006245 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006246 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07006247}
6248
6249// lambda_param_with_default: lambda_param default ',' | lambda_param default &':'
6250static NameDefaultPair*
6251lambda_param_with_default_rule(Parser *p)
6252{
6253 if (p->error_indicator) {
6254 return NULL;
6255 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006256 NameDefaultPair* _res = NULL;
6257 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006258 { // lambda_param default ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006259 if (p->error_indicator) {
6260 return NULL;
6261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006262 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07006263 arg_ty a;
6264 expr_ty c;
Guido van Rossum3941d972020-05-01 09:42:03 -07006265 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006266 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006267 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006268 (c = default_rule(p)) // default
Guido van Rossum3941d972020-05-01 09:42:03 -07006269 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006270 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07006271 )
6272 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006273 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
6274 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006275 p->error_indicator = 1;
6276 return NULL;
6277 }
6278 goto done;
6279 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006280 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006281 }
6282 { // lambda_param default &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006283 if (p->error_indicator) {
6284 return NULL;
6285 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006286 arg_ty a;
6287 expr_ty c;
6288 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006289 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006290 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006291 (c = default_rule(p)) // default
Guido van Rossum3941d972020-05-01 09:42:03 -07006292 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006293 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07006294 )
6295 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006296 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
6297 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006298 p->error_indicator = 1;
6299 return NULL;
6300 }
6301 goto done;
6302 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006303 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006304 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006305 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07006306 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006307 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07006308}
6309
6310// lambda_param_maybe_default: lambda_param default? ',' | lambda_param default? &':'
6311static NameDefaultPair*
6312lambda_param_maybe_default_rule(Parser *p)
6313{
6314 if (p->error_indicator) {
6315 return NULL;
6316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006317 NameDefaultPair* _res = NULL;
6318 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006319 { // lambda_param default? ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006320 if (p->error_indicator) {
6321 return NULL;
6322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006323 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07006324 arg_ty a;
6325 void *c;
Guido van Rossum3941d972020-05-01 09:42:03 -07006326 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006327 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006328 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006329 (c = default_rule(p), 1) // default?
Guido van Rossum3941d972020-05-01 09:42:03 -07006330 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006331 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07006332 )
6333 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006334 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
6335 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006336 p->error_indicator = 1;
6337 return NULL;
6338 }
6339 goto done;
6340 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006341 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006342 }
6343 { // lambda_param default? &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006344 if (p->error_indicator) {
6345 return NULL;
6346 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006347 arg_ty a;
6348 void *c;
6349 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006350 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006351 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006352 (c = default_rule(p), 1) // default?
Guido van Rossum3941d972020-05-01 09:42:03 -07006353 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006354 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07006355 )
6356 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006357 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
6358 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006359 p->error_indicator = 1;
6360 return NULL;
6361 }
6362 goto done;
6363 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006364 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006366 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07006367 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006368 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07006369}
6370
6371// lambda_param: NAME
6372static arg_ty
6373lambda_param_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006374{
6375 if (p->error_indicator) {
6376 return NULL;
6377 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006378 arg_ty _res = NULL;
6379 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006380 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6381 p->error_indicator = 1;
6382 return NULL;
6383 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006384 int _start_lineno = p->tokens[_mark]->lineno;
6385 UNUSED(_start_lineno); // Only used by EXTRA macro
6386 int _start_col_offset = p->tokens[_mark]->col_offset;
6387 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006388 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006389 if (p->error_indicator) {
6390 return NULL;
6391 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006392 expr_ty a;
6393 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006394 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006395 )
6396 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006397 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6398 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006399 return NULL;
6400 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006401 int _end_lineno = _token->end_lineno;
6402 UNUSED(_end_lineno); // Only used by EXTRA macro
6403 int _end_col_offset = _token->end_col_offset;
6404 UNUSED(_end_col_offset); // Only used by EXTRA macro
6405 _res = _Py_arg ( a -> v . Name . id , NULL , NULL , EXTRA );
6406 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006407 p->error_indicator = 1;
6408 return NULL;
6409 }
6410 goto done;
6411 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006412 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006413 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006414 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006415 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006416 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006417}
6418
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006419// disjunction: conjunction (('or' conjunction))+ | conjunction
6420static expr_ty
6421disjunction_rule(Parser *p)
6422{
6423 if (p->error_indicator) {
6424 return NULL;
6425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006426 expr_ty _res = NULL;
6427 if (_PyPegen_is_memoized(p, disjunction_type, &_res))
6428 return _res;
6429 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006430 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6431 p->error_indicator = 1;
6432 return NULL;
6433 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006434 int _start_lineno = p->tokens[_mark]->lineno;
6435 UNUSED(_start_lineno); // Only used by EXTRA macro
6436 int _start_col_offset = p->tokens[_mark]->col_offset;
6437 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006438 { // conjunction (('or' conjunction))+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006439 if (p->error_indicator) {
6440 return NULL;
6441 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006442 expr_ty a;
6443 asdl_seq * b;
6444 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006445 (a = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006446 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006447 (b = _loop1_89_rule(p)) // (('or' conjunction))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006448 )
6449 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006450 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6451 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006452 return NULL;
6453 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006454 int _end_lineno = _token->end_lineno;
6455 UNUSED(_end_lineno); // Only used by EXTRA macro
6456 int _end_col_offset = _token->end_col_offset;
6457 UNUSED(_end_col_offset); // Only used by EXTRA macro
6458 _res = _Py_BoolOp ( Or , CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
6459 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006460 p->error_indicator = 1;
6461 return NULL;
6462 }
6463 goto done;
6464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006465 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006466 }
6467 { // conjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006468 if (p->error_indicator) {
6469 return NULL;
6470 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006471 expr_ty conjunction_var;
6472 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006473 (conjunction_var = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006474 )
6475 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006476 _res = conjunction_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006477 goto done;
6478 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006479 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006481 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006482 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006483 _PyPegen_insert_memo(p, _mark, disjunction_type, _res);
6484 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006485}
6486
6487// conjunction: inversion (('and' inversion))+ | inversion
6488static expr_ty
6489conjunction_rule(Parser *p)
6490{
6491 if (p->error_indicator) {
6492 return NULL;
6493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006494 expr_ty _res = NULL;
6495 if (_PyPegen_is_memoized(p, conjunction_type, &_res))
6496 return _res;
6497 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006498 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6499 p->error_indicator = 1;
6500 return NULL;
6501 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006502 int _start_lineno = p->tokens[_mark]->lineno;
6503 UNUSED(_start_lineno); // Only used by EXTRA macro
6504 int _start_col_offset = p->tokens[_mark]->col_offset;
6505 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006506 { // inversion (('and' inversion))+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006507 if (p->error_indicator) {
6508 return NULL;
6509 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006510 expr_ty a;
6511 asdl_seq * b;
6512 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006513 (a = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006514 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006515 (b = _loop1_90_rule(p)) // (('and' inversion))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006516 )
6517 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006518 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6519 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006520 return NULL;
6521 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006522 int _end_lineno = _token->end_lineno;
6523 UNUSED(_end_lineno); // Only used by EXTRA macro
6524 int _end_col_offset = _token->end_col_offset;
6525 UNUSED(_end_col_offset); // Only used by EXTRA macro
6526 _res = _Py_BoolOp ( And , CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
6527 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006528 p->error_indicator = 1;
6529 return NULL;
6530 }
6531 goto done;
6532 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006533 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006534 }
6535 { // inversion
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006536 if (p->error_indicator) {
6537 return NULL;
6538 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006539 expr_ty inversion_var;
6540 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006541 (inversion_var = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006542 )
6543 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006544 _res = inversion_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006545 goto done;
6546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006547 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006548 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006549 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006550 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006551 _PyPegen_insert_memo(p, _mark, conjunction_type, _res);
6552 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006553}
6554
6555// inversion: 'not' inversion | comparison
6556static expr_ty
6557inversion_rule(Parser *p)
6558{
6559 if (p->error_indicator) {
6560 return NULL;
6561 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006562 expr_ty _res = NULL;
6563 if (_PyPegen_is_memoized(p, inversion_type, &_res))
6564 return _res;
6565 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006566 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6567 p->error_indicator = 1;
6568 return NULL;
6569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006570 int _start_lineno = p->tokens[_mark]->lineno;
6571 UNUSED(_start_lineno); // Only used by EXTRA macro
6572 int _start_col_offset = p->tokens[_mark]->col_offset;
6573 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006574 { // 'not' inversion
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006575 if (p->error_indicator) {
6576 return NULL;
6577 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006578 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006579 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006580 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006581 (_keyword = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006582 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006583 (a = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006584 )
6585 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006586 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6587 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006588 return NULL;
6589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006590 int _end_lineno = _token->end_lineno;
6591 UNUSED(_end_lineno); // Only used by EXTRA macro
6592 int _end_col_offset = _token->end_col_offset;
6593 UNUSED(_end_col_offset); // Only used by EXTRA macro
6594 _res = _Py_UnaryOp ( Not , a , EXTRA );
6595 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006596 p->error_indicator = 1;
6597 return NULL;
6598 }
6599 goto done;
6600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006601 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006602 }
6603 { // comparison
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006604 if (p->error_indicator) {
6605 return NULL;
6606 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006607 expr_ty comparison_var;
6608 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006609 (comparison_var = comparison_rule(p)) // comparison
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006610 )
6611 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006612 _res = comparison_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006613 goto done;
6614 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006615 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006616 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006617 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006618 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006619 _PyPegen_insert_memo(p, _mark, inversion_type, _res);
6620 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006621}
6622
6623// comparison: bitwise_or compare_op_bitwise_or_pair+ | bitwise_or
6624static expr_ty
6625comparison_rule(Parser *p)
6626{
6627 if (p->error_indicator) {
6628 return NULL;
6629 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006630 expr_ty _res = NULL;
6631 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006632 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6633 p->error_indicator = 1;
6634 return NULL;
6635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006636 int _start_lineno = p->tokens[_mark]->lineno;
6637 UNUSED(_start_lineno); // Only used by EXTRA macro
6638 int _start_col_offset = p->tokens[_mark]->col_offset;
6639 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006640 { // bitwise_or compare_op_bitwise_or_pair+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006641 if (p->error_indicator) {
6642 return NULL;
6643 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006644 expr_ty a;
6645 asdl_seq * b;
6646 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006647 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006648 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006649 (b = _loop1_91_rule(p)) // compare_op_bitwise_or_pair+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006650 )
6651 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006652 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6653 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006654 return NULL;
6655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006656 int _end_lineno = _token->end_lineno;
6657 UNUSED(_end_lineno); // Only used by EXTRA macro
6658 int _end_col_offset = _token->end_col_offset;
6659 UNUSED(_end_col_offset); // Only used by EXTRA macro
6660 _res = _Py_Compare ( a , CHECK ( _PyPegen_get_cmpops ( p , b ) ) , CHECK ( _PyPegen_get_exprs ( p , b ) ) , EXTRA );
6661 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006662 p->error_indicator = 1;
6663 return NULL;
6664 }
6665 goto done;
6666 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006667 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006668 }
6669 { // bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006670 if (p->error_indicator) {
6671 return NULL;
6672 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006673 expr_ty bitwise_or_var;
6674 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006675 (bitwise_or_var = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006676 )
6677 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006678 _res = bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006679 goto done;
6680 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006681 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006682 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006683 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006684 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006685 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006686}
6687
6688// compare_op_bitwise_or_pair:
6689// | eq_bitwise_or
6690// | noteq_bitwise_or
6691// | lte_bitwise_or
6692// | lt_bitwise_or
6693// | gte_bitwise_or
6694// | gt_bitwise_or
6695// | notin_bitwise_or
6696// | in_bitwise_or
6697// | isnot_bitwise_or
6698// | is_bitwise_or
6699static CmpopExprPair*
6700compare_op_bitwise_or_pair_rule(Parser *p)
6701{
6702 if (p->error_indicator) {
6703 return NULL;
6704 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006705 CmpopExprPair* _res = NULL;
6706 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006707 { // eq_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006708 if (p->error_indicator) {
6709 return NULL;
6710 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006711 CmpopExprPair* eq_bitwise_or_var;
6712 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006713 (eq_bitwise_or_var = eq_bitwise_or_rule(p)) // eq_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006714 )
6715 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006716 _res = eq_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006717 goto done;
6718 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006719 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006720 }
6721 { // noteq_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006722 if (p->error_indicator) {
6723 return NULL;
6724 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006725 CmpopExprPair* noteq_bitwise_or_var;
6726 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006727 (noteq_bitwise_or_var = noteq_bitwise_or_rule(p)) // noteq_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006728 )
6729 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006730 _res = noteq_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006731 goto done;
6732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006733 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006734 }
6735 { // lte_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006736 if (p->error_indicator) {
6737 return NULL;
6738 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006739 CmpopExprPair* lte_bitwise_or_var;
6740 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006741 (lte_bitwise_or_var = lte_bitwise_or_rule(p)) // lte_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006742 )
6743 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006744 _res = lte_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006745 goto done;
6746 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006747 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006748 }
6749 { // lt_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006750 if (p->error_indicator) {
6751 return NULL;
6752 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006753 CmpopExprPair* lt_bitwise_or_var;
6754 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006755 (lt_bitwise_or_var = lt_bitwise_or_rule(p)) // lt_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006756 )
6757 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006758 _res = lt_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006759 goto done;
6760 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006761 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006762 }
6763 { // gte_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006764 if (p->error_indicator) {
6765 return NULL;
6766 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006767 CmpopExprPair* gte_bitwise_or_var;
6768 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006769 (gte_bitwise_or_var = gte_bitwise_or_rule(p)) // gte_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006770 )
6771 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006772 _res = gte_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006773 goto done;
6774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006775 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006776 }
6777 { // gt_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006778 if (p->error_indicator) {
6779 return NULL;
6780 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006781 CmpopExprPair* gt_bitwise_or_var;
6782 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006783 (gt_bitwise_or_var = gt_bitwise_or_rule(p)) // gt_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006784 )
6785 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006786 _res = gt_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006787 goto done;
6788 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006789 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006790 }
6791 { // notin_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006792 if (p->error_indicator) {
6793 return NULL;
6794 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006795 CmpopExprPair* notin_bitwise_or_var;
6796 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006797 (notin_bitwise_or_var = notin_bitwise_or_rule(p)) // notin_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006798 )
6799 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006800 _res = notin_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006801 goto done;
6802 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006803 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006804 }
6805 { // in_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006806 if (p->error_indicator) {
6807 return NULL;
6808 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006809 CmpopExprPair* in_bitwise_or_var;
6810 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006811 (in_bitwise_or_var = in_bitwise_or_rule(p)) // in_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006812 )
6813 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006814 _res = in_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006815 goto done;
6816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006817 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006818 }
6819 { // isnot_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006820 if (p->error_indicator) {
6821 return NULL;
6822 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006823 CmpopExprPair* isnot_bitwise_or_var;
6824 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006825 (isnot_bitwise_or_var = isnot_bitwise_or_rule(p)) // isnot_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006826 )
6827 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006828 _res = isnot_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006829 goto done;
6830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006831 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006832 }
6833 { // is_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006834 if (p->error_indicator) {
6835 return NULL;
6836 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006837 CmpopExprPair* is_bitwise_or_var;
6838 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006839 (is_bitwise_or_var = is_bitwise_or_rule(p)) // is_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006840 )
6841 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006842 _res = is_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006843 goto done;
6844 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006845 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006846 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006847 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006848 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006849 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006850}
6851
6852// eq_bitwise_or: '==' bitwise_or
6853static CmpopExprPair*
6854eq_bitwise_or_rule(Parser *p)
6855{
6856 if (p->error_indicator) {
6857 return NULL;
6858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006859 CmpopExprPair* _res = NULL;
6860 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006861 { // '==' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006862 if (p->error_indicator) {
6863 return NULL;
6864 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006865 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006866 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006867 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006868 (_literal = _PyPegen_expect_token(p, 27)) // token='=='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006869 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006870 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006871 )
6872 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006873 _res = _PyPegen_cmpop_expr_pair ( p , Eq , a );
6874 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006875 p->error_indicator = 1;
6876 return NULL;
6877 }
6878 goto done;
6879 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006880 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006881 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006882 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006883 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006884 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006885}
6886
Pablo Galindo2b74c832020-04-27 18:02:07 +01006887// noteq_bitwise_or: ('!=') bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006888static CmpopExprPair*
6889noteq_bitwise_or_rule(Parser *p)
6890{
6891 if (p->error_indicator) {
6892 return NULL;
6893 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006894 CmpopExprPair* _res = NULL;
6895 int _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +01006896 { // ('!=') bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006897 if (p->error_indicator) {
6898 return NULL;
6899 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006900 void *_tmp_92_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006901 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006902 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006903 (_tmp_92_var = _tmp_92_rule(p)) // '!='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006904 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006905 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006906 )
6907 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006908 _res = _PyPegen_cmpop_expr_pair ( p , NotEq , a );
6909 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006910 p->error_indicator = 1;
6911 return NULL;
6912 }
6913 goto done;
6914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006915 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006916 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006917 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006918 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006919 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006920}
6921
6922// lte_bitwise_or: '<=' bitwise_or
6923static CmpopExprPair*
6924lte_bitwise_or_rule(Parser *p)
6925{
6926 if (p->error_indicator) {
6927 return NULL;
6928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006929 CmpopExprPair* _res = NULL;
6930 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006931 { // '<=' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006932 if (p->error_indicator) {
6933 return NULL;
6934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006935 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006936 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006937 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006938 (_literal = _PyPegen_expect_token(p, 29)) // token='<='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006939 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006940 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006941 )
6942 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006943 _res = _PyPegen_cmpop_expr_pair ( p , LtE , a );
6944 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006945 p->error_indicator = 1;
6946 return NULL;
6947 }
6948 goto done;
6949 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006950 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006951 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006952 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006953 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006954 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006955}
6956
6957// lt_bitwise_or: '<' bitwise_or
6958static CmpopExprPair*
6959lt_bitwise_or_rule(Parser *p)
6960{
6961 if (p->error_indicator) {
6962 return NULL;
6963 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006964 CmpopExprPair* _res = NULL;
6965 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006966 { // '<' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006967 if (p->error_indicator) {
6968 return NULL;
6969 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006970 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006971 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006972 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006973 (_literal = _PyPegen_expect_token(p, 20)) // token='<'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006974 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006975 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006976 )
6977 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006978 _res = _PyPegen_cmpop_expr_pair ( p , Lt , a );
6979 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006980 p->error_indicator = 1;
6981 return NULL;
6982 }
6983 goto done;
6984 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006985 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006987 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006988 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006989 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006990}
6991
6992// gte_bitwise_or: '>=' bitwise_or
6993static CmpopExprPair*
6994gte_bitwise_or_rule(Parser *p)
6995{
6996 if (p->error_indicator) {
6997 return NULL;
6998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006999 CmpopExprPair* _res = NULL;
7000 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007001 { // '>=' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007002 if (p->error_indicator) {
7003 return NULL;
7004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007005 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007006 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007007 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007008 (_literal = _PyPegen_expect_token(p, 30)) // token='>='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007009 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007010 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007011 )
7012 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007013 _res = _PyPegen_cmpop_expr_pair ( p , GtE , a );
7014 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007015 p->error_indicator = 1;
7016 return NULL;
7017 }
7018 goto done;
7019 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007020 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007022 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007023 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007024 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007025}
7026
7027// gt_bitwise_or: '>' bitwise_or
7028static CmpopExprPair*
7029gt_bitwise_or_rule(Parser *p)
7030{
7031 if (p->error_indicator) {
7032 return NULL;
7033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007034 CmpopExprPair* _res = NULL;
7035 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007036 { // '>' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007037 if (p->error_indicator) {
7038 return NULL;
7039 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007040 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007041 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007042 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007043 (_literal = _PyPegen_expect_token(p, 21)) // token='>'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007044 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007045 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007046 )
7047 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007048 _res = _PyPegen_cmpop_expr_pair ( p , Gt , a );
7049 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007050 p->error_indicator = 1;
7051 return NULL;
7052 }
7053 goto done;
7054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007055 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007057 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007058 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007059 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007060}
7061
7062// notin_bitwise_or: 'not' 'in' bitwise_or
7063static CmpopExprPair*
7064notin_bitwise_or_rule(Parser *p)
7065{
7066 if (p->error_indicator) {
7067 return NULL;
7068 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007069 CmpopExprPair* _res = NULL;
7070 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007071 { // 'not' 'in' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007072 if (p->error_indicator) {
7073 return NULL;
7074 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007075 Token * _keyword;
7076 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007077 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007078 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007079 (_keyword = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007080 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007081 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007082 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007083 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007084 )
7085 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007086 _res = _PyPegen_cmpop_expr_pair ( p , NotIn , a );
7087 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007088 p->error_indicator = 1;
7089 return NULL;
7090 }
7091 goto done;
7092 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007093 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007095 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007096 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007097 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007098}
7099
7100// in_bitwise_or: 'in' bitwise_or
7101static CmpopExprPair*
7102in_bitwise_or_rule(Parser *p)
7103{
7104 if (p->error_indicator) {
7105 return NULL;
7106 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007107 CmpopExprPair* _res = NULL;
7108 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007109 { // 'in' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007110 if (p->error_indicator) {
7111 return NULL;
7112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007113 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007114 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007115 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007116 (_keyword = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007117 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007118 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007119 )
7120 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007121 _res = _PyPegen_cmpop_expr_pair ( p , In , a );
7122 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007123 p->error_indicator = 1;
7124 return NULL;
7125 }
7126 goto done;
7127 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007128 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007129 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007130 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007131 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007132 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007133}
7134
7135// isnot_bitwise_or: 'is' 'not' bitwise_or
7136static CmpopExprPair*
7137isnot_bitwise_or_rule(Parser *p)
7138{
7139 if (p->error_indicator) {
7140 return NULL;
7141 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007142 CmpopExprPair* _res = NULL;
7143 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007144 { // 'is' 'not' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007145 if (p->error_indicator) {
7146 return NULL;
7147 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007148 Token * _keyword;
7149 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007150 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007151 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007152 (_keyword = _PyPegen_expect_token(p, 526)) // token='is'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007153 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007154 (_keyword_1 = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007155 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007156 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007157 )
7158 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007159 _res = _PyPegen_cmpop_expr_pair ( p , IsNot , a );
7160 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007161 p->error_indicator = 1;
7162 return NULL;
7163 }
7164 goto done;
7165 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007166 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007167 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007168 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007169 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007170 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007171}
7172
7173// is_bitwise_or: 'is' bitwise_or
7174static CmpopExprPair*
7175is_bitwise_or_rule(Parser *p)
7176{
7177 if (p->error_indicator) {
7178 return NULL;
7179 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007180 CmpopExprPair* _res = NULL;
7181 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007182 { // 'is' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007183 if (p->error_indicator) {
7184 return NULL;
7185 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007186 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007187 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007188 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007189 (_keyword = _PyPegen_expect_token(p, 526)) // token='is'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007190 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007191 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007192 )
7193 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007194 _res = _PyPegen_cmpop_expr_pair ( p , Is , a );
7195 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007196 p->error_indicator = 1;
7197 return NULL;
7198 }
7199 goto done;
7200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007201 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007202 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007203 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007204 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007205 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007206}
7207
7208// Left-recursive
7209// bitwise_or: bitwise_or '|' bitwise_xor | bitwise_xor
7210static expr_ty bitwise_or_raw(Parser *);
7211static expr_ty
7212bitwise_or_rule(Parser *p)
7213{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007214 expr_ty _res = NULL;
7215 if (_PyPegen_is_memoized(p, bitwise_or_type, &_res))
7216 return _res;
7217 int _mark = p->mark;
7218 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007219 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007220 int tmpvar_1 = _PyPegen_update_memo(p, _mark, bitwise_or_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007221 if (tmpvar_1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007222 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007223 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007224 p->mark = _mark;
7225 void *_raw = bitwise_or_raw(p);
7226 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007227 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007228 _resmark = p->mark;
7229 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007230 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007231 p->mark = _resmark;
7232 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007233}
7234static expr_ty
7235bitwise_or_raw(Parser *p)
7236{
7237 if (p->error_indicator) {
7238 return NULL;
7239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007240 expr_ty _res = NULL;
7241 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007242 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7243 p->error_indicator = 1;
7244 return NULL;
7245 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007246 int _start_lineno = p->tokens[_mark]->lineno;
7247 UNUSED(_start_lineno); // Only used by EXTRA macro
7248 int _start_col_offset = p->tokens[_mark]->col_offset;
7249 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007250 { // bitwise_or '|' bitwise_xor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007251 if (p->error_indicator) {
7252 return NULL;
7253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007254 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007255 expr_ty a;
7256 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007257 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007258 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007259 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007260 (_literal = _PyPegen_expect_token(p, 18)) // token='|'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007261 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007262 (b = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007263 )
7264 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007265 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7266 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007267 return NULL;
7268 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007269 int _end_lineno = _token->end_lineno;
7270 UNUSED(_end_lineno); // Only used by EXTRA macro
7271 int _end_col_offset = _token->end_col_offset;
7272 UNUSED(_end_col_offset); // Only used by EXTRA macro
7273 _res = _Py_BinOp ( a , BitOr , b , EXTRA );
7274 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007275 p->error_indicator = 1;
7276 return NULL;
7277 }
7278 goto done;
7279 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007280 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007281 }
7282 { // bitwise_xor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007283 if (p->error_indicator) {
7284 return NULL;
7285 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007286 expr_ty bitwise_xor_var;
7287 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007288 (bitwise_xor_var = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007289 )
7290 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007291 _res = bitwise_xor_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007292 goto done;
7293 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007294 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007295 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007296 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007297 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007298 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007299}
7300
7301// Left-recursive
7302// bitwise_xor: bitwise_xor '^' bitwise_and | bitwise_and
7303static expr_ty bitwise_xor_raw(Parser *);
7304static expr_ty
7305bitwise_xor_rule(Parser *p)
7306{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007307 expr_ty _res = NULL;
7308 if (_PyPegen_is_memoized(p, bitwise_xor_type, &_res))
7309 return _res;
7310 int _mark = p->mark;
7311 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007312 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007313 int tmpvar_2 = _PyPegen_update_memo(p, _mark, bitwise_xor_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007314 if (tmpvar_2) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007315 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007317 p->mark = _mark;
7318 void *_raw = bitwise_xor_raw(p);
7319 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007320 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007321 _resmark = p->mark;
7322 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007324 p->mark = _resmark;
7325 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007326}
7327static expr_ty
7328bitwise_xor_raw(Parser *p)
7329{
7330 if (p->error_indicator) {
7331 return NULL;
7332 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007333 expr_ty _res = NULL;
7334 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007335 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7336 p->error_indicator = 1;
7337 return NULL;
7338 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007339 int _start_lineno = p->tokens[_mark]->lineno;
7340 UNUSED(_start_lineno); // Only used by EXTRA macro
7341 int _start_col_offset = p->tokens[_mark]->col_offset;
7342 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007343 { // bitwise_xor '^' bitwise_and
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007344 if (p->error_indicator) {
7345 return NULL;
7346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007347 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007348 expr_ty a;
7349 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007350 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007351 (a = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007352 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007353 (_literal = _PyPegen_expect_token(p, 32)) // token='^'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007354 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007355 (b = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007356 )
7357 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007358 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7359 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007360 return NULL;
7361 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007362 int _end_lineno = _token->end_lineno;
7363 UNUSED(_end_lineno); // Only used by EXTRA macro
7364 int _end_col_offset = _token->end_col_offset;
7365 UNUSED(_end_col_offset); // Only used by EXTRA macro
7366 _res = _Py_BinOp ( a , BitXor , b , EXTRA );
7367 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007368 p->error_indicator = 1;
7369 return NULL;
7370 }
7371 goto done;
7372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007373 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007374 }
7375 { // bitwise_and
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007376 if (p->error_indicator) {
7377 return NULL;
7378 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007379 expr_ty bitwise_and_var;
7380 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007381 (bitwise_and_var = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007382 )
7383 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007384 _res = bitwise_and_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007385 goto done;
7386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007387 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007388 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007389 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007390 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007391 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007392}
7393
7394// Left-recursive
7395// bitwise_and: bitwise_and '&' shift_expr | shift_expr
7396static expr_ty bitwise_and_raw(Parser *);
7397static expr_ty
7398bitwise_and_rule(Parser *p)
7399{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007400 expr_ty _res = NULL;
7401 if (_PyPegen_is_memoized(p, bitwise_and_type, &_res))
7402 return _res;
7403 int _mark = p->mark;
7404 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007405 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007406 int tmpvar_3 = _PyPegen_update_memo(p, _mark, bitwise_and_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007407 if (tmpvar_3) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007408 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007409 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007410 p->mark = _mark;
7411 void *_raw = bitwise_and_raw(p);
7412 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007413 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007414 _resmark = p->mark;
7415 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007416 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007417 p->mark = _resmark;
7418 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007419}
7420static expr_ty
7421bitwise_and_raw(Parser *p)
7422{
7423 if (p->error_indicator) {
7424 return NULL;
7425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007426 expr_ty _res = NULL;
7427 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007428 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7429 p->error_indicator = 1;
7430 return NULL;
7431 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007432 int _start_lineno = p->tokens[_mark]->lineno;
7433 UNUSED(_start_lineno); // Only used by EXTRA macro
7434 int _start_col_offset = p->tokens[_mark]->col_offset;
7435 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007436 { // bitwise_and '&' shift_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007437 if (p->error_indicator) {
7438 return NULL;
7439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007440 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007441 expr_ty a;
7442 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007443 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007444 (a = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007445 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007446 (_literal = _PyPegen_expect_token(p, 19)) // token='&'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007447 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007448 (b = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007449 )
7450 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007451 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7452 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007453 return NULL;
7454 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007455 int _end_lineno = _token->end_lineno;
7456 UNUSED(_end_lineno); // Only used by EXTRA macro
7457 int _end_col_offset = _token->end_col_offset;
7458 UNUSED(_end_col_offset); // Only used by EXTRA macro
7459 _res = _Py_BinOp ( a , BitAnd , b , EXTRA );
7460 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007461 p->error_indicator = 1;
7462 return NULL;
7463 }
7464 goto done;
7465 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007466 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007467 }
7468 { // shift_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007469 if (p->error_indicator) {
7470 return NULL;
7471 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007472 expr_ty shift_expr_var;
7473 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007474 (shift_expr_var = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007475 )
7476 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007477 _res = shift_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007478 goto done;
7479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007480 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007481 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007482 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007483 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007484 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007485}
7486
7487// Left-recursive
7488// shift_expr: shift_expr '<<' sum | shift_expr '>>' sum | sum
7489static expr_ty shift_expr_raw(Parser *);
7490static expr_ty
7491shift_expr_rule(Parser *p)
7492{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007493 expr_ty _res = NULL;
7494 if (_PyPegen_is_memoized(p, shift_expr_type, &_res))
7495 return _res;
7496 int _mark = p->mark;
7497 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007498 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007499 int tmpvar_4 = _PyPegen_update_memo(p, _mark, shift_expr_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007500 if (tmpvar_4) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007501 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007503 p->mark = _mark;
7504 void *_raw = shift_expr_raw(p);
7505 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007506 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007507 _resmark = p->mark;
7508 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007510 p->mark = _resmark;
7511 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007512}
7513static expr_ty
7514shift_expr_raw(Parser *p)
7515{
7516 if (p->error_indicator) {
7517 return NULL;
7518 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007519 expr_ty _res = NULL;
7520 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007521 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7522 p->error_indicator = 1;
7523 return NULL;
7524 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007525 int _start_lineno = p->tokens[_mark]->lineno;
7526 UNUSED(_start_lineno); // Only used by EXTRA macro
7527 int _start_col_offset = p->tokens[_mark]->col_offset;
7528 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007529 { // shift_expr '<<' sum
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007530 if (p->error_indicator) {
7531 return NULL;
7532 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007533 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007534 expr_ty a;
7535 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007536 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007537 (a = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007538 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007539 (_literal = _PyPegen_expect_token(p, 33)) // token='<<'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007540 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007541 (b = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007542 )
7543 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007544 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7545 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007546 return NULL;
7547 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007548 int _end_lineno = _token->end_lineno;
7549 UNUSED(_end_lineno); // Only used by EXTRA macro
7550 int _end_col_offset = _token->end_col_offset;
7551 UNUSED(_end_col_offset); // Only used by EXTRA macro
7552 _res = _Py_BinOp ( a , LShift , b , EXTRA );
7553 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007554 p->error_indicator = 1;
7555 return NULL;
7556 }
7557 goto done;
7558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007559 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007560 }
7561 { // shift_expr '>>' sum
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007562 if (p->error_indicator) {
7563 return NULL;
7564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007565 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007566 expr_ty a;
7567 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007568 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007569 (a = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007570 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007571 (_literal = _PyPegen_expect_token(p, 34)) // token='>>'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007572 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007573 (b = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007574 )
7575 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007576 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7577 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007578 return NULL;
7579 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007580 int _end_lineno = _token->end_lineno;
7581 UNUSED(_end_lineno); // Only used by EXTRA macro
7582 int _end_col_offset = _token->end_col_offset;
7583 UNUSED(_end_col_offset); // Only used by EXTRA macro
7584 _res = _Py_BinOp ( a , RShift , b , EXTRA );
7585 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007586 p->error_indicator = 1;
7587 return NULL;
7588 }
7589 goto done;
7590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007591 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007592 }
7593 { // sum
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007594 if (p->error_indicator) {
7595 return NULL;
7596 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007597 expr_ty sum_var;
7598 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007599 (sum_var = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007600 )
7601 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007602 _res = sum_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007603 goto done;
7604 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007605 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007606 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007607 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007608 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007609 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007610}
7611
7612// Left-recursive
7613// sum: sum '+' term | sum '-' term | term
7614static expr_ty sum_raw(Parser *);
7615static expr_ty
7616sum_rule(Parser *p)
7617{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007618 expr_ty _res = NULL;
7619 if (_PyPegen_is_memoized(p, sum_type, &_res))
7620 return _res;
7621 int _mark = p->mark;
7622 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007623 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007624 int tmpvar_5 = _PyPegen_update_memo(p, _mark, sum_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007625 if (tmpvar_5) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007626 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007628 p->mark = _mark;
7629 void *_raw = sum_raw(p);
7630 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007631 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007632 _resmark = p->mark;
7633 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007634 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007635 p->mark = _resmark;
7636 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007637}
7638static expr_ty
7639sum_raw(Parser *p)
7640{
7641 if (p->error_indicator) {
7642 return NULL;
7643 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007644 expr_ty _res = NULL;
7645 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007646 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7647 p->error_indicator = 1;
7648 return NULL;
7649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007650 int _start_lineno = p->tokens[_mark]->lineno;
7651 UNUSED(_start_lineno); // Only used by EXTRA macro
7652 int _start_col_offset = p->tokens[_mark]->col_offset;
7653 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007654 { // sum '+' term
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007655 if (p->error_indicator) {
7656 return NULL;
7657 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007658 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007659 expr_ty a;
7660 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007661 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007662 (a = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007663 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007664 (_literal = _PyPegen_expect_token(p, 14)) // token='+'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007665 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007666 (b = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007667 )
7668 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007669 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7670 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007671 return NULL;
7672 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007673 int _end_lineno = _token->end_lineno;
7674 UNUSED(_end_lineno); // Only used by EXTRA macro
7675 int _end_col_offset = _token->end_col_offset;
7676 UNUSED(_end_col_offset); // Only used by EXTRA macro
7677 _res = _Py_BinOp ( a , Add , b , EXTRA );
7678 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007679 p->error_indicator = 1;
7680 return NULL;
7681 }
7682 goto done;
7683 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007684 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007685 }
7686 { // sum '-' term
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007687 if (p->error_indicator) {
7688 return NULL;
7689 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007690 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007691 expr_ty a;
7692 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007693 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007694 (a = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007695 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007696 (_literal = _PyPegen_expect_token(p, 15)) // token='-'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007697 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007698 (b = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007699 )
7700 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007701 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7702 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007703 return NULL;
7704 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007705 int _end_lineno = _token->end_lineno;
7706 UNUSED(_end_lineno); // Only used by EXTRA macro
7707 int _end_col_offset = _token->end_col_offset;
7708 UNUSED(_end_col_offset); // Only used by EXTRA macro
7709 _res = _Py_BinOp ( a , Sub , b , EXTRA );
7710 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007711 p->error_indicator = 1;
7712 return NULL;
7713 }
7714 goto done;
7715 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007716 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007717 }
7718 { // term
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007719 if (p->error_indicator) {
7720 return NULL;
7721 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007722 expr_ty term_var;
7723 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007724 (term_var = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007725 )
7726 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007727 _res = term_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007728 goto done;
7729 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007730 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007731 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007732 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007733 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007734 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007735}
7736
7737// Left-recursive
7738// term:
7739// | term '*' factor
7740// | term '/' factor
7741// | term '//' factor
7742// | term '%' factor
7743// | term '@' factor
7744// | factor
7745static expr_ty term_raw(Parser *);
7746static expr_ty
7747term_rule(Parser *p)
7748{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007749 expr_ty _res = NULL;
7750 if (_PyPegen_is_memoized(p, term_type, &_res))
7751 return _res;
7752 int _mark = p->mark;
7753 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007754 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007755 int tmpvar_6 = _PyPegen_update_memo(p, _mark, term_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007756 if (tmpvar_6) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007757 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007758 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007759 p->mark = _mark;
7760 void *_raw = term_raw(p);
7761 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007762 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007763 _resmark = p->mark;
7764 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007765 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007766 p->mark = _resmark;
7767 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007768}
7769static expr_ty
7770term_raw(Parser *p)
7771{
7772 if (p->error_indicator) {
7773 return NULL;
7774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007775 expr_ty _res = NULL;
7776 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007777 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7778 p->error_indicator = 1;
7779 return NULL;
7780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007781 int _start_lineno = p->tokens[_mark]->lineno;
7782 UNUSED(_start_lineno); // Only used by EXTRA macro
7783 int _start_col_offset = p->tokens[_mark]->col_offset;
7784 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007785 { // term '*' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007786 if (p->error_indicator) {
7787 return NULL;
7788 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007789 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007790 expr_ty a;
7791 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007792 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007793 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007794 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007795 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007796 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007797 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007798 )
7799 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007800 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7801 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007802 return NULL;
7803 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007804 int _end_lineno = _token->end_lineno;
7805 UNUSED(_end_lineno); // Only used by EXTRA macro
7806 int _end_col_offset = _token->end_col_offset;
7807 UNUSED(_end_col_offset); // Only used by EXTRA macro
7808 _res = _Py_BinOp ( a , Mult , b , EXTRA );
7809 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007810 p->error_indicator = 1;
7811 return NULL;
7812 }
7813 goto done;
7814 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007815 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007816 }
7817 { // term '/' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007818 if (p->error_indicator) {
7819 return NULL;
7820 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007821 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007822 expr_ty a;
7823 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007824 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007825 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007826 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007827 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007828 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007829 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007830 )
7831 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007832 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7833 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007834 return NULL;
7835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007836 int _end_lineno = _token->end_lineno;
7837 UNUSED(_end_lineno); // Only used by EXTRA macro
7838 int _end_col_offset = _token->end_col_offset;
7839 UNUSED(_end_col_offset); // Only used by EXTRA macro
7840 _res = _Py_BinOp ( a , Div , b , EXTRA );
7841 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007842 p->error_indicator = 1;
7843 return NULL;
7844 }
7845 goto done;
7846 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007847 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007848 }
7849 { // term '//' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007850 if (p->error_indicator) {
7851 return NULL;
7852 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007853 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007854 expr_ty a;
7855 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007856 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007857 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007858 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007859 (_literal = _PyPegen_expect_token(p, 47)) // token='//'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007860 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007861 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007862 )
7863 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007864 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7865 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007866 return NULL;
7867 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007868 int _end_lineno = _token->end_lineno;
7869 UNUSED(_end_lineno); // Only used by EXTRA macro
7870 int _end_col_offset = _token->end_col_offset;
7871 UNUSED(_end_col_offset); // Only used by EXTRA macro
7872 _res = _Py_BinOp ( a , FloorDiv , b , EXTRA );
7873 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007874 p->error_indicator = 1;
7875 return NULL;
7876 }
7877 goto done;
7878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007879 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007880 }
7881 { // term '%' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007882 if (p->error_indicator) {
7883 return NULL;
7884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007885 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007886 expr_ty a;
7887 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007888 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007889 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007890 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007891 (_literal = _PyPegen_expect_token(p, 24)) // token='%'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007892 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007893 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007894 )
7895 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007896 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7897 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007898 return NULL;
7899 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007900 int _end_lineno = _token->end_lineno;
7901 UNUSED(_end_lineno); // Only used by EXTRA macro
7902 int _end_col_offset = _token->end_col_offset;
7903 UNUSED(_end_col_offset); // Only used by EXTRA macro
7904 _res = _Py_BinOp ( a , Mod , b , EXTRA );
7905 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007906 p->error_indicator = 1;
7907 return NULL;
7908 }
7909 goto done;
7910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007911 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007912 }
7913 { // term '@' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007914 if (p->error_indicator) {
7915 return NULL;
7916 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007917 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007918 expr_ty a;
7919 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007920 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007921 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007922 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007923 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007924 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007925 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007926 )
7927 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007928 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7929 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007930 return NULL;
7931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007932 int _end_lineno = _token->end_lineno;
7933 UNUSED(_end_lineno); // Only used by EXTRA macro
7934 int _end_col_offset = _token->end_col_offset;
7935 UNUSED(_end_col_offset); // Only used by EXTRA macro
7936 _res = CHECK_VERSION ( 5 , "The '@' operator is" , _Py_BinOp ( a , MatMult , b , EXTRA ) );
7937 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007938 p->error_indicator = 1;
7939 return NULL;
7940 }
7941 goto done;
7942 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007943 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007944 }
7945 { // factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007946 if (p->error_indicator) {
7947 return NULL;
7948 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007949 expr_ty factor_var;
7950 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007951 (factor_var = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007952 )
7953 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007954 _res = factor_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007955 goto done;
7956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007957 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007958 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007959 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007960 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007961 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007962}
7963
7964// factor: '+' factor | '-' factor | '~' factor | power
7965static expr_ty
7966factor_rule(Parser *p)
7967{
7968 if (p->error_indicator) {
7969 return NULL;
7970 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007971 expr_ty _res = NULL;
7972 if (_PyPegen_is_memoized(p, factor_type, &_res))
7973 return _res;
7974 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007975 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7976 p->error_indicator = 1;
7977 return NULL;
7978 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007979 int _start_lineno = p->tokens[_mark]->lineno;
7980 UNUSED(_start_lineno); // Only used by EXTRA macro
7981 int _start_col_offset = p->tokens[_mark]->col_offset;
7982 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007983 { // '+' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007984 if (p->error_indicator) {
7985 return NULL;
7986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007987 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007988 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007989 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007990 (_literal = _PyPegen_expect_token(p, 14)) // token='+'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007991 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007992 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007993 )
7994 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007995 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7996 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007997 return NULL;
7998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007999 int _end_lineno = _token->end_lineno;
8000 UNUSED(_end_lineno); // Only used by EXTRA macro
8001 int _end_col_offset = _token->end_col_offset;
8002 UNUSED(_end_col_offset); // Only used by EXTRA macro
8003 _res = _Py_UnaryOp ( UAdd , a , EXTRA );
8004 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008005 p->error_indicator = 1;
8006 return NULL;
8007 }
8008 goto done;
8009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008010 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008011 }
8012 { // '-' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008013 if (p->error_indicator) {
8014 return NULL;
8015 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008016 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008017 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008018 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008019 (_literal = _PyPegen_expect_token(p, 15)) // token='-'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008020 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008021 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008022 )
8023 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008024 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8025 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008026 return NULL;
8027 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008028 int _end_lineno = _token->end_lineno;
8029 UNUSED(_end_lineno); // Only used by EXTRA macro
8030 int _end_col_offset = _token->end_col_offset;
8031 UNUSED(_end_col_offset); // Only used by EXTRA macro
8032 _res = _Py_UnaryOp ( USub , a , EXTRA );
8033 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008034 p->error_indicator = 1;
8035 return NULL;
8036 }
8037 goto done;
8038 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008039 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008040 }
8041 { // '~' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008042 if (p->error_indicator) {
8043 return NULL;
8044 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008045 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008046 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008047 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008048 (_literal = _PyPegen_expect_token(p, 31)) // token='~'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008049 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008050 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008051 )
8052 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008053 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8054 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008055 return NULL;
8056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008057 int _end_lineno = _token->end_lineno;
8058 UNUSED(_end_lineno); // Only used by EXTRA macro
8059 int _end_col_offset = _token->end_col_offset;
8060 UNUSED(_end_col_offset); // Only used by EXTRA macro
8061 _res = _Py_UnaryOp ( Invert , a , EXTRA );
8062 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008063 p->error_indicator = 1;
8064 return NULL;
8065 }
8066 goto done;
8067 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008068 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008069 }
8070 { // power
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008071 if (p->error_indicator) {
8072 return NULL;
8073 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008074 expr_ty power_var;
8075 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008076 (power_var = power_rule(p)) // power
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008077 )
8078 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008079 _res = power_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008080 goto done;
8081 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008082 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008083 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008084 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008085 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008086 _PyPegen_insert_memo(p, _mark, factor_type, _res);
8087 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008088}
8089
8090// power: await_primary '**' factor | await_primary
8091static expr_ty
8092power_rule(Parser *p)
8093{
8094 if (p->error_indicator) {
8095 return NULL;
8096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008097 expr_ty _res = NULL;
8098 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008099 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8100 p->error_indicator = 1;
8101 return NULL;
8102 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008103 int _start_lineno = p->tokens[_mark]->lineno;
8104 UNUSED(_start_lineno); // Only used by EXTRA macro
8105 int _start_col_offset = p->tokens[_mark]->col_offset;
8106 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008107 { // await_primary '**' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008108 if (p->error_indicator) {
8109 return NULL;
8110 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008111 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008112 expr_ty a;
8113 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008114 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008115 (a = await_primary_rule(p)) // await_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008116 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008117 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008118 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008119 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008120 )
8121 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008122 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8123 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008124 return NULL;
8125 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008126 int _end_lineno = _token->end_lineno;
8127 UNUSED(_end_lineno); // Only used by EXTRA macro
8128 int _end_col_offset = _token->end_col_offset;
8129 UNUSED(_end_col_offset); // Only used by EXTRA macro
8130 _res = _Py_BinOp ( a , Pow , b , EXTRA );
8131 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008132 p->error_indicator = 1;
8133 return NULL;
8134 }
8135 goto done;
8136 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008137 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008138 }
8139 { // await_primary
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008140 if (p->error_indicator) {
8141 return NULL;
8142 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008143 expr_ty await_primary_var;
8144 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008145 (await_primary_var = await_primary_rule(p)) // await_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008146 )
8147 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008148 _res = await_primary_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008149 goto done;
8150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008151 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008153 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008154 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008155 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008156}
8157
8158// await_primary: AWAIT primary | primary
8159static expr_ty
8160await_primary_rule(Parser *p)
8161{
8162 if (p->error_indicator) {
8163 return NULL;
8164 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008165 expr_ty _res = NULL;
8166 if (_PyPegen_is_memoized(p, await_primary_type, &_res))
8167 return _res;
8168 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008169 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8170 p->error_indicator = 1;
8171 return NULL;
8172 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008173 int _start_lineno = p->tokens[_mark]->lineno;
8174 UNUSED(_start_lineno); // Only used by EXTRA macro
8175 int _start_col_offset = p->tokens[_mark]->col_offset;
8176 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008177 { // AWAIT primary
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008178 if (p->error_indicator) {
8179 return NULL;
8180 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008181 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01008182 Token * await_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008183 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008184 (await_var = _PyPegen_expect_token(p, AWAIT)) // token='AWAIT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008185 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008186 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008187 )
8188 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008189 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8190 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008191 return NULL;
8192 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008193 int _end_lineno = _token->end_lineno;
8194 UNUSED(_end_lineno); // Only used by EXTRA macro
8195 int _end_col_offset = _token->end_col_offset;
8196 UNUSED(_end_col_offset); // Only used by EXTRA macro
8197 _res = CHECK_VERSION ( 5 , "Await expressions are" , _Py_Await ( a , EXTRA ) );
8198 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008199 p->error_indicator = 1;
8200 return NULL;
8201 }
8202 goto done;
8203 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008204 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008205 }
8206 { // primary
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008207 if (p->error_indicator) {
8208 return NULL;
8209 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008210 expr_ty primary_var;
8211 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008212 (primary_var = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008213 )
8214 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008215 _res = primary_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008216 goto done;
8217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008218 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008220 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008221 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008222 _PyPegen_insert_memo(p, _mark, await_primary_type, _res);
8223 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008224}
8225
8226// Left-recursive
8227// primary:
8228// | primary '.' NAME
8229// | primary genexp
8230// | primary '(' arguments? ')'
8231// | primary '[' slices ']'
8232// | atom
8233static expr_ty primary_raw(Parser *);
8234static expr_ty
8235primary_rule(Parser *p)
8236{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008237 expr_ty _res = NULL;
8238 if (_PyPegen_is_memoized(p, primary_type, &_res))
8239 return _res;
8240 int _mark = p->mark;
8241 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008242 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008243 int tmpvar_7 = _PyPegen_update_memo(p, _mark, primary_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008244 if (tmpvar_7) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008245 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008247 p->mark = _mark;
8248 void *_raw = primary_raw(p);
8249 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008250 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008251 _resmark = p->mark;
8252 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008254 p->mark = _resmark;
8255 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008256}
8257static expr_ty
8258primary_raw(Parser *p)
8259{
8260 if (p->error_indicator) {
8261 return NULL;
8262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008263 expr_ty _res = NULL;
8264 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008265 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8266 p->error_indicator = 1;
8267 return NULL;
8268 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008269 int _start_lineno = p->tokens[_mark]->lineno;
8270 UNUSED(_start_lineno); // Only used by EXTRA macro
8271 int _start_col_offset = p->tokens[_mark]->col_offset;
8272 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008273 { // primary '.' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008274 if (p->error_indicator) {
8275 return NULL;
8276 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008277 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008278 expr_ty a;
8279 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008280 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008281 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008282 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008283 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008284 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008285 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008286 )
8287 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008288 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8289 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008290 return NULL;
8291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008292 int _end_lineno = _token->end_lineno;
8293 UNUSED(_end_lineno); // Only used by EXTRA macro
8294 int _end_col_offset = _token->end_col_offset;
8295 UNUSED(_end_col_offset); // Only used by EXTRA macro
8296 _res = _Py_Attribute ( a , b -> v . Name . id , Load , EXTRA );
8297 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008298 p->error_indicator = 1;
8299 return NULL;
8300 }
8301 goto done;
8302 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008303 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008304 }
8305 { // primary genexp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008306 if (p->error_indicator) {
8307 return NULL;
8308 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008309 expr_ty a;
8310 expr_ty b;
8311 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008312 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008313 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008314 (b = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008315 )
8316 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008317 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8318 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008319 return NULL;
8320 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008321 int _end_lineno = _token->end_lineno;
8322 UNUSED(_end_lineno); // Only used by EXTRA macro
8323 int _end_col_offset = _token->end_col_offset;
8324 UNUSED(_end_col_offset); // Only used by EXTRA macro
8325 _res = _Py_Call ( a , CHECK ( _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
8326 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008327 p->error_indicator = 1;
8328 return NULL;
8329 }
8330 goto done;
8331 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008332 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008333 }
8334 { // primary '(' arguments? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008335 if (p->error_indicator) {
8336 return NULL;
8337 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008338 Token * _literal;
8339 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008340 expr_ty a;
8341 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008342 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008343 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008344 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008345 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008346 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008347 (b = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008348 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008349 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008350 )
8351 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008352 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8353 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008354 return NULL;
8355 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008356 int _end_lineno = _token->end_lineno;
8357 UNUSED(_end_lineno); // Only used by EXTRA macro
8358 int _end_col_offset = _token->end_col_offset;
8359 UNUSED(_end_col_offset); // Only used by EXTRA macro
8360 _res = _Py_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
8361 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008362 p->error_indicator = 1;
8363 return NULL;
8364 }
8365 goto done;
8366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008367 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008368 }
8369 { // primary '[' slices ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008370 if (p->error_indicator) {
8371 return NULL;
8372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008373 Token * _literal;
8374 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008375 expr_ty a;
8376 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008377 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008378 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008379 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008380 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008381 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008382 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008383 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008384 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008385 )
8386 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008387 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8388 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008389 return NULL;
8390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008391 int _end_lineno = _token->end_lineno;
8392 UNUSED(_end_lineno); // Only used by EXTRA macro
8393 int _end_col_offset = _token->end_col_offset;
8394 UNUSED(_end_col_offset); // Only used by EXTRA macro
8395 _res = _Py_Subscript ( a , b , Load , EXTRA );
8396 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008397 p->error_indicator = 1;
8398 return NULL;
8399 }
8400 goto done;
8401 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008402 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008403 }
8404 { // atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008405 if (p->error_indicator) {
8406 return NULL;
8407 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008408 expr_ty atom_var;
8409 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008410 (atom_var = atom_rule(p)) // atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008411 )
8412 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008413 _res = atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008414 goto done;
8415 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008416 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008417 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008418 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008419 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008420 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008421}
8422
8423// slices: slice !',' | ','.slice+ ','?
8424static expr_ty
8425slices_rule(Parser *p)
8426{
8427 if (p->error_indicator) {
8428 return NULL;
8429 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008430 expr_ty _res = NULL;
8431 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008432 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8433 p->error_indicator = 1;
8434 return NULL;
8435 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008436 int _start_lineno = p->tokens[_mark]->lineno;
8437 UNUSED(_start_lineno); // Only used by EXTRA macro
8438 int _start_col_offset = p->tokens[_mark]->col_offset;
8439 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008440 { // slice !','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008441 if (p->error_indicator) {
8442 return NULL;
8443 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008444 expr_ty a;
8445 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008446 (a = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008447 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008448 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008449 )
8450 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008451 _res = a;
8452 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008453 p->error_indicator = 1;
8454 return NULL;
8455 }
8456 goto done;
8457 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008458 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008459 }
8460 { // ','.slice+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008461 if (p->error_indicator) {
8462 return NULL;
8463 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008464 void *_opt_var;
8465 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008466 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008467 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008468 (a = _gather_93_rule(p)) // ','.slice+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008469 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008470 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008471 )
8472 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008473 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8474 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008475 return NULL;
8476 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008477 int _end_lineno = _token->end_lineno;
8478 UNUSED(_end_lineno); // Only used by EXTRA macro
8479 int _end_col_offset = _token->end_col_offset;
8480 UNUSED(_end_col_offset); // Only used by EXTRA macro
8481 _res = _Py_Tuple ( a , Load , EXTRA );
8482 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008483 p->error_indicator = 1;
8484 return NULL;
8485 }
8486 goto done;
8487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008488 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008489 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008490 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008491 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008492 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008493}
8494
8495// slice: expression? ':' expression? [':' expression?] | expression
8496static expr_ty
8497slice_rule(Parser *p)
8498{
8499 if (p->error_indicator) {
8500 return NULL;
8501 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008502 expr_ty _res = NULL;
8503 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008504 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8505 p->error_indicator = 1;
8506 return NULL;
8507 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008508 int _start_lineno = p->tokens[_mark]->lineno;
8509 UNUSED(_start_lineno); // Only used by EXTRA macro
8510 int _start_col_offset = p->tokens[_mark]->col_offset;
8511 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008512 { // expression? ':' expression? [':' expression?]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008513 if (p->error_indicator) {
8514 return NULL;
8515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008516 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008517 void *a;
8518 void *b;
8519 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008520 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008521 (a = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008522 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008523 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008524 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008525 (b = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008526 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008527 (c = _tmp_95_rule(p), 1) // [':' expression?]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008528 )
8529 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008530 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8531 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008532 return NULL;
8533 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008534 int _end_lineno = _token->end_lineno;
8535 UNUSED(_end_lineno); // Only used by EXTRA macro
8536 int _end_col_offset = _token->end_col_offset;
8537 UNUSED(_end_col_offset); // Only used by EXTRA macro
8538 _res = _Py_Slice ( a , b , c , EXTRA );
8539 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008540 p->error_indicator = 1;
8541 return NULL;
8542 }
8543 goto done;
8544 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008545 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008546 }
8547 { // expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008548 if (p->error_indicator) {
8549 return NULL;
8550 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008551 expr_ty a;
8552 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008553 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008554 )
8555 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008556 _res = a;
8557 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008558 p->error_indicator = 1;
8559 return NULL;
8560 }
8561 goto done;
8562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008563 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008565 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008566 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008567 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008568}
8569
8570// atom:
8571// | NAME
8572// | 'True'
8573// | 'False'
8574// | 'None'
8575// | '__new_parser__'
8576// | &STRING strings
8577// | NUMBER
8578// | &'(' (tuple | group | genexp)
8579// | &'[' (list | listcomp)
8580// | &'{' (dict | set | dictcomp | setcomp)
8581// | '...'
8582static expr_ty
8583atom_rule(Parser *p)
8584{
8585 if (p->error_indicator) {
8586 return NULL;
8587 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008588 expr_ty _res = NULL;
8589 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008590 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8591 p->error_indicator = 1;
8592 return NULL;
8593 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008594 int _start_lineno = p->tokens[_mark]->lineno;
8595 UNUSED(_start_lineno); // Only used by EXTRA macro
8596 int _start_col_offset = p->tokens[_mark]->col_offset;
8597 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008598 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008599 if (p->error_indicator) {
8600 return NULL;
8601 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008602 expr_ty name_var;
8603 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008604 (name_var = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008605 )
8606 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008607 _res = name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008608 goto done;
8609 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008610 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008611 }
8612 { // 'True'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008613 if (p->error_indicator) {
8614 return NULL;
8615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008616 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008617 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008618 (_keyword = _PyPegen_expect_token(p, 527)) // token='True'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008619 )
8620 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008621 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8622 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008623 return NULL;
8624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008625 int _end_lineno = _token->end_lineno;
8626 UNUSED(_end_lineno); // Only used by EXTRA macro
8627 int _end_col_offset = _token->end_col_offset;
8628 UNUSED(_end_col_offset); // Only used by EXTRA macro
8629 _res = _Py_Constant ( Py_True , NULL , EXTRA );
8630 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008631 p->error_indicator = 1;
8632 return NULL;
8633 }
8634 goto done;
8635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008636 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008637 }
8638 { // 'False'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008639 if (p->error_indicator) {
8640 return NULL;
8641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008642 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008643 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008644 (_keyword = _PyPegen_expect_token(p, 528)) // token='False'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008645 )
8646 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008647 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8648 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008649 return NULL;
8650 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008651 int _end_lineno = _token->end_lineno;
8652 UNUSED(_end_lineno); // Only used by EXTRA macro
8653 int _end_col_offset = _token->end_col_offset;
8654 UNUSED(_end_col_offset); // Only used by EXTRA macro
8655 _res = _Py_Constant ( Py_False , NULL , EXTRA );
8656 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008657 p->error_indicator = 1;
8658 return NULL;
8659 }
8660 goto done;
8661 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008662 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008663 }
8664 { // 'None'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008665 if (p->error_indicator) {
8666 return NULL;
8667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008668 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008669 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008670 (_keyword = _PyPegen_expect_token(p, 529)) // token='None'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008671 )
8672 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008673 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8674 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008675 return NULL;
8676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008677 int _end_lineno = _token->end_lineno;
8678 UNUSED(_end_lineno); // Only used by EXTRA macro
8679 int _end_col_offset = _token->end_col_offset;
8680 UNUSED(_end_col_offset); // Only used by EXTRA macro
8681 _res = _Py_Constant ( Py_None , NULL , EXTRA );
8682 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008683 p->error_indicator = 1;
8684 return NULL;
8685 }
8686 goto done;
8687 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008688 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008689 }
8690 { // '__new_parser__'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008691 if (p->error_indicator) {
8692 return NULL;
8693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008694 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008695 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008696 (_keyword = _PyPegen_expect_token(p, 530)) // token='__new_parser__'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008697 )
8698 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008699 _res = RAISE_SYNTAX_ERROR ( "You found it!" );
8700 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008701 p->error_indicator = 1;
8702 return NULL;
8703 }
8704 goto done;
8705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008706 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008707 }
8708 { // &STRING strings
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008709 if (p->error_indicator) {
8710 return NULL;
8711 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008712 expr_ty strings_var;
8713 if (
8714 _PyPegen_lookahead(1, _PyPegen_string_token, p)
8715 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008716 (strings_var = strings_rule(p)) // strings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008717 )
8718 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008719 _res = strings_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008720 goto done;
8721 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008722 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008723 }
8724 { // NUMBER
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008725 if (p->error_indicator) {
8726 return NULL;
8727 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008728 expr_ty number_var;
8729 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008730 (number_var = _PyPegen_number_token(p)) // NUMBER
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008731 )
8732 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008733 _res = number_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008734 goto done;
8735 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008736 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008737 }
8738 { // &'(' (tuple | group | genexp)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008739 if (p->error_indicator) {
8740 return NULL;
8741 }
Guido van Rossum3941d972020-05-01 09:42:03 -07008742 void *_tmp_96_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008743 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008744 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008745 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008746 (_tmp_96_var = _tmp_96_rule(p)) // tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008747 )
8748 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008749 _res = _tmp_96_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008750 goto done;
8751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008752 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008753 }
Pablo Galindo2b74c832020-04-27 18:02:07 +01008754 { // &'[' (list | listcomp)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008755 if (p->error_indicator) {
8756 return NULL;
8757 }
Guido van Rossum3941d972020-05-01 09:42:03 -07008758 void *_tmp_97_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008759 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008760 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008761 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008762 (_tmp_97_var = _tmp_97_rule(p)) // list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008763 )
8764 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008765 _res = _tmp_97_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008766 goto done;
8767 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008768 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008769 }
Pablo Galindo2b74c832020-04-27 18:02:07 +01008770 { // &'{' (dict | set | dictcomp | setcomp)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008771 if (p->error_indicator) {
8772 return NULL;
8773 }
Guido van Rossum3941d972020-05-01 09:42:03 -07008774 void *_tmp_98_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008775 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008776 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25) // token='{'
Pablo Galindo2b74c832020-04-27 18:02:07 +01008777 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008778 (_tmp_98_var = _tmp_98_rule(p)) // dict | set | dictcomp | setcomp
Pablo Galindo2b74c832020-04-27 18:02:07 +01008779 )
8780 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008781 _res = _tmp_98_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008782 goto done;
8783 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008784 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008785 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008786 { // '...'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008787 if (p->error_indicator) {
8788 return NULL;
8789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008790 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008791 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008792 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008793 )
8794 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008795 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8796 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008797 return NULL;
8798 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008799 int _end_lineno = _token->end_lineno;
8800 UNUSED(_end_lineno); // Only used by EXTRA macro
8801 int _end_col_offset = _token->end_col_offset;
8802 UNUSED(_end_col_offset); // Only used by EXTRA macro
8803 _res = _Py_Constant ( Py_Ellipsis , NULL , EXTRA );
8804 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008805 p->error_indicator = 1;
8806 return NULL;
8807 }
8808 goto done;
8809 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008810 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008812 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008813 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008814 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008815}
8816
8817// strings: STRING+
8818static expr_ty
8819strings_rule(Parser *p)
8820{
8821 if (p->error_indicator) {
8822 return NULL;
8823 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008824 expr_ty _res = NULL;
8825 if (_PyPegen_is_memoized(p, strings_type, &_res))
8826 return _res;
8827 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008828 { // STRING+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008829 if (p->error_indicator) {
8830 return NULL;
8831 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008832 asdl_seq * a;
8833 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008834 (a = _loop1_99_rule(p)) // STRING+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008835 )
8836 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008837 _res = _PyPegen_concatenate_strings ( p , a );
8838 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008839 p->error_indicator = 1;
8840 return NULL;
8841 }
8842 goto done;
8843 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008844 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008845 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008846 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008847 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008848 _PyPegen_insert_memo(p, _mark, strings_type, _res);
8849 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008850}
8851
8852// list: '[' star_named_expressions? ']'
8853static expr_ty
8854list_rule(Parser *p)
8855{
8856 if (p->error_indicator) {
8857 return NULL;
8858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008859 expr_ty _res = NULL;
8860 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008861 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8862 p->error_indicator = 1;
8863 return NULL;
8864 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008865 int _start_lineno = p->tokens[_mark]->lineno;
8866 UNUSED(_start_lineno); // Only used by EXTRA macro
8867 int _start_col_offset = p->tokens[_mark]->col_offset;
8868 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008869 { // '[' star_named_expressions? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008870 if (p->error_indicator) {
8871 return NULL;
8872 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008873 Token * _literal;
8874 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008875 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008876 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008877 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008878 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008879 (a = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008880 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008881 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008882 )
8883 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008884 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8885 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008886 return NULL;
8887 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008888 int _end_lineno = _token->end_lineno;
8889 UNUSED(_end_lineno); // Only used by EXTRA macro
8890 int _end_col_offset = _token->end_col_offset;
8891 UNUSED(_end_col_offset); // Only used by EXTRA macro
8892 _res = _Py_List ( a , Load , EXTRA );
8893 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008894 p->error_indicator = 1;
8895 return NULL;
8896 }
8897 goto done;
8898 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008899 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008900 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008901 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008902 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008903 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008904}
8905
8906// listcomp: '[' named_expression for_if_clauses ']' | invalid_comprehension
8907static expr_ty
8908listcomp_rule(Parser *p)
8909{
8910 if (p->error_indicator) {
8911 return NULL;
8912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008913 expr_ty _res = NULL;
8914 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008915 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8916 p->error_indicator = 1;
8917 return NULL;
8918 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008919 int _start_lineno = p->tokens[_mark]->lineno;
8920 UNUSED(_start_lineno); // Only used by EXTRA macro
8921 int _start_col_offset = p->tokens[_mark]->col_offset;
8922 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008923 { // '[' named_expression for_if_clauses ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008924 if (p->error_indicator) {
8925 return NULL;
8926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008927 Token * _literal;
8928 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008929 expr_ty a;
8930 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008931 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008932 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008933 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008934 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008935 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008936 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008937 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008938 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008939 )
8940 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008941 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8942 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008943 return NULL;
8944 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008945 int _end_lineno = _token->end_lineno;
8946 UNUSED(_end_lineno); // Only used by EXTRA macro
8947 int _end_col_offset = _token->end_col_offset;
8948 UNUSED(_end_col_offset); // Only used by EXTRA macro
8949 _res = _Py_ListComp ( a , b , EXTRA );
8950 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008951 p->error_indicator = 1;
8952 return NULL;
8953 }
8954 goto done;
8955 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008956 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008957 }
8958 { // invalid_comprehension
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008959 if (p->error_indicator) {
8960 return NULL;
8961 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008962 void *invalid_comprehension_var;
8963 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008964 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008965 )
8966 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008967 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008968 goto done;
8969 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008970 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008972 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008973 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008974 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008975}
8976
8977// tuple: '(' [star_named_expression ',' star_named_expressions?] ')'
8978static expr_ty
8979tuple_rule(Parser *p)
8980{
8981 if (p->error_indicator) {
8982 return NULL;
8983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008984 expr_ty _res = NULL;
8985 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008986 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8987 p->error_indicator = 1;
8988 return NULL;
8989 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008990 int _start_lineno = p->tokens[_mark]->lineno;
8991 UNUSED(_start_lineno); // Only used by EXTRA macro
8992 int _start_col_offset = p->tokens[_mark]->col_offset;
8993 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008994 { // '(' [star_named_expression ',' star_named_expressions?] ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008995 if (p->error_indicator) {
8996 return NULL;
8997 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008998 Token * _literal;
8999 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009000 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009001 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009002 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009003 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009004 (a = _tmp_100_rule(p), 1) // [star_named_expression ',' star_named_expressions?]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009005 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009006 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009007 )
9008 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009009 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9010 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009011 return NULL;
9012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009013 int _end_lineno = _token->end_lineno;
9014 UNUSED(_end_lineno); // Only used by EXTRA macro
9015 int _end_col_offset = _token->end_col_offset;
9016 UNUSED(_end_col_offset); // Only used by EXTRA macro
9017 _res = _Py_Tuple ( a , Load , EXTRA );
9018 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009019 p->error_indicator = 1;
9020 return NULL;
9021 }
9022 goto done;
9023 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009024 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009025 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009026 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009027 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009028 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009029}
9030
9031// group: '(' (yield_expr | named_expression) ')'
9032static expr_ty
9033group_rule(Parser *p)
9034{
9035 if (p->error_indicator) {
9036 return NULL;
9037 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009038 expr_ty _res = NULL;
9039 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009040 { // '(' (yield_expr | named_expression) ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009041 if (p->error_indicator) {
9042 return NULL;
9043 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009044 Token * _literal;
9045 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009046 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009047 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009048 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009049 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009050 (a = _tmp_101_rule(p)) // yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009051 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009052 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009053 )
9054 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009055 _res = a;
9056 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009057 p->error_indicator = 1;
9058 return NULL;
9059 }
9060 goto done;
9061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009062 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009063 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009064 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009065 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009066 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009067}
9068
9069// genexp: '(' expression for_if_clauses ')' | invalid_comprehension
9070static expr_ty
9071genexp_rule(Parser *p)
9072{
9073 if (p->error_indicator) {
9074 return NULL;
9075 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009076 expr_ty _res = NULL;
9077 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009078 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9079 p->error_indicator = 1;
9080 return NULL;
9081 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009082 int _start_lineno = p->tokens[_mark]->lineno;
9083 UNUSED(_start_lineno); // Only used by EXTRA macro
9084 int _start_col_offset = p->tokens[_mark]->col_offset;
9085 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009086 { // '(' expression for_if_clauses ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009087 if (p->error_indicator) {
9088 return NULL;
9089 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009090 Token * _literal;
9091 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009092 expr_ty a;
9093 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009094 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009095 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009096 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009097 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009098 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009099 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009100 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009101 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009102 )
9103 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009104 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9105 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009106 return NULL;
9107 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009108 int _end_lineno = _token->end_lineno;
9109 UNUSED(_end_lineno); // Only used by EXTRA macro
9110 int _end_col_offset = _token->end_col_offset;
9111 UNUSED(_end_col_offset); // Only used by EXTRA macro
9112 _res = _Py_GeneratorExp ( a , b , EXTRA );
9113 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009114 p->error_indicator = 1;
9115 return NULL;
9116 }
9117 goto done;
9118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009119 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009120 }
9121 { // invalid_comprehension
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009122 if (p->error_indicator) {
9123 return NULL;
9124 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009125 void *invalid_comprehension_var;
9126 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009127 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009128 )
9129 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009130 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009131 goto done;
9132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009133 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009134 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009135 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009136 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009137 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009138}
9139
9140// set: '{' expressions_list '}'
9141static expr_ty
9142set_rule(Parser *p)
9143{
9144 if (p->error_indicator) {
9145 return NULL;
9146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009147 expr_ty _res = NULL;
9148 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009149 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9150 p->error_indicator = 1;
9151 return NULL;
9152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009153 int _start_lineno = p->tokens[_mark]->lineno;
9154 UNUSED(_start_lineno); // Only used by EXTRA macro
9155 int _start_col_offset = p->tokens[_mark]->col_offset;
9156 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009157 { // '{' expressions_list '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009158 if (p->error_indicator) {
9159 return NULL;
9160 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009161 Token * _literal;
9162 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009163 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009164 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009165 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009166 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009167 (a = expressions_list_rule(p)) // expressions_list
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009168 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009169 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009170 )
9171 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009172 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9173 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009174 return NULL;
9175 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009176 int _end_lineno = _token->end_lineno;
9177 UNUSED(_end_lineno); // Only used by EXTRA macro
9178 int _end_col_offset = _token->end_col_offset;
9179 UNUSED(_end_col_offset); // Only used by EXTRA macro
9180 _res = _Py_Set ( a , EXTRA );
9181 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009182 p->error_indicator = 1;
9183 return NULL;
9184 }
9185 goto done;
9186 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009187 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009188 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009189 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009190 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009191 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009192}
9193
9194// setcomp: '{' expression for_if_clauses '}' | invalid_comprehension
9195static expr_ty
9196setcomp_rule(Parser *p)
9197{
9198 if (p->error_indicator) {
9199 return NULL;
9200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009201 expr_ty _res = NULL;
9202 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009203 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9204 p->error_indicator = 1;
9205 return NULL;
9206 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009207 int _start_lineno = p->tokens[_mark]->lineno;
9208 UNUSED(_start_lineno); // Only used by EXTRA macro
9209 int _start_col_offset = p->tokens[_mark]->col_offset;
9210 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009211 { // '{' expression for_if_clauses '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009212 if (p->error_indicator) {
9213 return NULL;
9214 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009215 Token * _literal;
9216 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009217 expr_ty a;
9218 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009219 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009220 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009221 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009222 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009223 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009224 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009225 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009226 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009227 )
9228 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009229 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9230 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009231 return NULL;
9232 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009233 int _end_lineno = _token->end_lineno;
9234 UNUSED(_end_lineno); // Only used by EXTRA macro
9235 int _end_col_offset = _token->end_col_offset;
9236 UNUSED(_end_col_offset); // Only used by EXTRA macro
9237 _res = _Py_SetComp ( a , b , EXTRA );
9238 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009239 p->error_indicator = 1;
9240 return NULL;
9241 }
9242 goto done;
9243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009244 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009245 }
9246 { // invalid_comprehension
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009247 if (p->error_indicator) {
9248 return NULL;
9249 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009250 void *invalid_comprehension_var;
9251 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009252 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009253 )
9254 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009255 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009256 goto done;
9257 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009258 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009259 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009260 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009261 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009262 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009263}
9264
9265// dict: '{' kvpairs? '}'
9266static expr_ty
9267dict_rule(Parser *p)
9268{
9269 if (p->error_indicator) {
9270 return NULL;
9271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009272 expr_ty _res = NULL;
9273 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009274 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9275 p->error_indicator = 1;
9276 return NULL;
9277 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009278 int _start_lineno = p->tokens[_mark]->lineno;
9279 UNUSED(_start_lineno); // Only used by EXTRA macro
9280 int _start_col_offset = p->tokens[_mark]->col_offset;
9281 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009282 { // '{' kvpairs? '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009283 if (p->error_indicator) {
9284 return NULL;
9285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009286 Token * _literal;
9287 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009288 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009289 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009290 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009291 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009292 (a = kvpairs_rule(p), 1) // kvpairs?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009293 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009294 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009295 )
9296 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009297 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9298 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009299 return NULL;
9300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009301 int _end_lineno = _token->end_lineno;
9302 UNUSED(_end_lineno); // Only used by EXTRA macro
9303 int _end_col_offset = _token->end_col_offset;
9304 UNUSED(_end_col_offset); // Only used by EXTRA macro
9305 _res = _Py_Dict ( CHECK ( _PyPegen_get_keys ( p , a ) ) , CHECK ( _PyPegen_get_values ( p , a ) ) , EXTRA );
9306 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009307 p->error_indicator = 1;
9308 return NULL;
9309 }
9310 goto done;
9311 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009312 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009313 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009314 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009315 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009316 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009317}
9318
9319// dictcomp: '{' kvpair for_if_clauses '}'
9320static expr_ty
9321dictcomp_rule(Parser *p)
9322{
9323 if (p->error_indicator) {
9324 return NULL;
9325 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009326 expr_ty _res = NULL;
9327 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009328 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9329 p->error_indicator = 1;
9330 return NULL;
9331 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009332 int _start_lineno = p->tokens[_mark]->lineno;
9333 UNUSED(_start_lineno); // Only used by EXTRA macro
9334 int _start_col_offset = p->tokens[_mark]->col_offset;
9335 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009336 { // '{' kvpair for_if_clauses '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009337 if (p->error_indicator) {
9338 return NULL;
9339 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009340 Token * _literal;
9341 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009342 KeyValuePair* a;
9343 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009344 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009345 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009346 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009347 (a = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009348 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009349 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009350 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009351 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009352 )
9353 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009354 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9355 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009356 return NULL;
9357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009358 int _end_lineno = _token->end_lineno;
9359 UNUSED(_end_lineno); // Only used by EXTRA macro
9360 int _end_col_offset = _token->end_col_offset;
9361 UNUSED(_end_col_offset); // Only used by EXTRA macro
9362 _res = _Py_DictComp ( a -> key , a -> value , b , EXTRA );
9363 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009364 p->error_indicator = 1;
9365 return NULL;
9366 }
9367 goto done;
9368 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009369 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009370 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009371 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009372 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009373 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009374}
9375
9376// kvpairs: ','.kvpair+ ','?
9377static asdl_seq*
9378kvpairs_rule(Parser *p)
9379{
9380 if (p->error_indicator) {
9381 return NULL;
9382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009383 asdl_seq* _res = NULL;
9384 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009385 { // ','.kvpair+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009386 if (p->error_indicator) {
9387 return NULL;
9388 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009389 void *_opt_var;
9390 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009391 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009392 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009393 (a = _gather_102_rule(p)) // ','.kvpair+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009394 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009395 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009396 )
9397 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009398 _res = a;
9399 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009400 p->error_indicator = 1;
9401 return NULL;
9402 }
9403 goto done;
9404 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009405 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009407 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009408 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009409 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009410}
9411
9412// kvpair: '**' bitwise_or | expression ':' expression
9413static KeyValuePair*
9414kvpair_rule(Parser *p)
9415{
9416 if (p->error_indicator) {
9417 return NULL;
9418 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009419 KeyValuePair* _res = NULL;
9420 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009421 { // '**' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009422 if (p->error_indicator) {
9423 return NULL;
9424 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009425 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009426 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009427 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009428 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009429 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009430 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009431 )
9432 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009433 _res = _PyPegen_key_value_pair ( p , NULL , a );
9434 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009435 p->error_indicator = 1;
9436 return NULL;
9437 }
9438 goto done;
9439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009440 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009441 }
9442 { // expression ':' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009443 if (p->error_indicator) {
9444 return NULL;
9445 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009446 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009447 expr_ty a;
9448 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009449 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009450 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009451 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009452 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009453 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009454 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009455 )
9456 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009457 _res = _PyPegen_key_value_pair ( p , a , b );
9458 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009459 p->error_indicator = 1;
9460 return NULL;
9461 }
9462 goto done;
9463 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009464 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009465 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009466 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009467 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009468 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009469}
9470
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009471// for_if_clauses: for_if_clause+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009472static asdl_seq*
9473for_if_clauses_rule(Parser *p)
9474{
9475 if (p->error_indicator) {
9476 return NULL;
9477 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009478 asdl_seq* _res = NULL;
9479 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009480 { // for_if_clause+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009481 if (p->error_indicator) {
9482 return NULL;
9483 }
Guido van Rossum3941d972020-05-01 09:42:03 -07009484 asdl_seq * _loop1_104_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009485 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009486 (_loop1_104_var = _loop1_104_rule(p)) // for_if_clause+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009487 )
9488 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009489 _res = _loop1_104_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009490 goto done;
9491 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009492 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009494 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009495 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009496 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009497}
9498
9499// for_if_clause:
9500// | ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*
9501// | 'for' star_targets 'in' disjunction (('if' disjunction))*
9502static comprehension_ty
9503for_if_clause_rule(Parser *p)
9504{
9505 if (p->error_indicator) {
9506 return NULL;
9507 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009508 comprehension_ty _res = NULL;
9509 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009510 { // ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009511 if (p->error_indicator) {
9512 return NULL;
9513 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009514 Token * _keyword;
9515 Token * _keyword_1;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009516 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01009517 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009518 expr_ty b;
9519 asdl_seq * c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009520 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009521 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009522 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009523 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009524 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009525 (a = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009526 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009527 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009528 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009529 (b = disjunction_rule(p)) // disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009530 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009531 (c = _loop0_105_rule(p)) // (('if' disjunction))*
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009532 )
9533 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009534 _res = CHECK_VERSION ( 6 , "Async comprehensions are" , _Py_comprehension ( a , b , c , 1 , p -> arena ) );
9535 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009536 p->error_indicator = 1;
9537 return NULL;
9538 }
9539 goto done;
9540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009541 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009542 }
9543 { // 'for' star_targets 'in' disjunction (('if' disjunction))*
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009544 if (p->error_indicator) {
9545 return NULL;
9546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009547 Token * _keyword;
9548 Token * _keyword_1;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009549 expr_ty a;
9550 expr_ty b;
9551 asdl_seq * c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009552 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009553 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009554 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009555 (a = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009556 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009557 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009558 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009559 (b = disjunction_rule(p)) // disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009560 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009561 (c = _loop0_106_rule(p)) // (('if' disjunction))*
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009562 )
9563 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009564 _res = _Py_comprehension ( a , b , c , 0 , p -> arena );
9565 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009566 p->error_indicator = 1;
9567 return NULL;
9568 }
9569 goto done;
9570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009571 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009572 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009573 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009574 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009575 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009576}
9577
9578// yield_expr: 'yield' 'from' expression | 'yield' star_expressions?
9579static expr_ty
9580yield_expr_rule(Parser *p)
9581{
9582 if (p->error_indicator) {
9583 return NULL;
9584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009585 expr_ty _res = NULL;
9586 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009587 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9588 p->error_indicator = 1;
9589 return NULL;
9590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009591 int _start_lineno = p->tokens[_mark]->lineno;
9592 UNUSED(_start_lineno); // Only used by EXTRA macro
9593 int _start_col_offset = p->tokens[_mark]->col_offset;
9594 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009595 { // 'yield' 'from' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009596 if (p->error_indicator) {
9597 return NULL;
9598 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009599 Token * _keyword;
9600 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009601 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009602 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009603 (_keyword = _PyPegen_expect_token(p, 504)) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009604 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009605 (_keyword_1 = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009606 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009607 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009608 )
9609 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009610 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9611 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009612 return NULL;
9613 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009614 int _end_lineno = _token->end_lineno;
9615 UNUSED(_end_lineno); // Only used by EXTRA macro
9616 int _end_col_offset = _token->end_col_offset;
9617 UNUSED(_end_col_offset); // Only used by EXTRA macro
9618 _res = _Py_YieldFrom ( a , EXTRA );
9619 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009620 p->error_indicator = 1;
9621 return NULL;
9622 }
9623 goto done;
9624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009625 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009626 }
9627 { // 'yield' star_expressions?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009628 if (p->error_indicator) {
9629 return NULL;
9630 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009631 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009632 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009633 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009634 (_keyword = _PyPegen_expect_token(p, 504)) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009635 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009636 (a = star_expressions_rule(p), 1) // star_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009637 )
9638 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009639 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9640 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009641 return NULL;
9642 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009643 int _end_lineno = _token->end_lineno;
9644 UNUSED(_end_lineno); // Only used by EXTRA macro
9645 int _end_col_offset = _token->end_col_offset;
9646 UNUSED(_end_col_offset); // Only used by EXTRA macro
9647 _res = _Py_Yield ( a , EXTRA );
9648 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009649 p->error_indicator = 1;
9650 return NULL;
9651 }
9652 goto done;
9653 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009654 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009656 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009657 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009658 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009659}
9660
9661// arguments: args ','? &')' | incorrect_arguments
9662static expr_ty
9663arguments_rule(Parser *p)
9664{
9665 if (p->error_indicator) {
9666 return NULL;
9667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009668 expr_ty _res = NULL;
9669 if (_PyPegen_is_memoized(p, arguments_type, &_res))
9670 return _res;
9671 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009672 { // args ','? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009673 if (p->error_indicator) {
9674 return NULL;
9675 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009676 void *_opt_var;
9677 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009678 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009679 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009680 (a = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009681 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009682 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009683 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009684 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009685 )
9686 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009687 _res = a;
9688 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009689 p->error_indicator = 1;
9690 return NULL;
9691 }
9692 goto done;
9693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009694 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009695 }
9696 { // incorrect_arguments
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009697 if (p->error_indicator) {
9698 return NULL;
9699 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009700 void *incorrect_arguments_var;
9701 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009702 (incorrect_arguments_var = incorrect_arguments_rule(p)) // incorrect_arguments
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009703 )
9704 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009705 _res = incorrect_arguments_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009706 goto done;
9707 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009708 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009709 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009710 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009711 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009712 _PyPegen_insert_memo(p, _mark, arguments_type, _res);
9713 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009714}
9715
9716// args: starred_expression [',' args] | kwargs | named_expression [',' args]
9717static expr_ty
9718args_rule(Parser *p)
9719{
9720 if (p->error_indicator) {
9721 return NULL;
9722 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009723 expr_ty _res = NULL;
9724 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009725 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9726 p->error_indicator = 1;
9727 return NULL;
9728 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009729 int _start_lineno = p->tokens[_mark]->lineno;
9730 UNUSED(_start_lineno); // Only used by EXTRA macro
9731 int _start_col_offset = p->tokens[_mark]->col_offset;
9732 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009733 { // starred_expression [',' args]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009734 if (p->error_indicator) {
9735 return NULL;
9736 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009737 expr_ty a;
9738 void *b;
9739 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009740 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009741 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009742 (b = _tmp_107_rule(p), 1) // [',' args]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009743 )
9744 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009745 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9746 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009747 return NULL;
9748 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009749 int _end_lineno = _token->end_lineno;
9750 UNUSED(_end_lineno); // Only used by EXTRA macro
9751 int _end_col_offset = _token->end_col_offset;
9752 UNUSED(_end_col_offset); // Only used by EXTRA macro
9753 _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 );
9754 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009755 p->error_indicator = 1;
9756 return NULL;
9757 }
9758 goto done;
9759 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009760 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009761 }
9762 { // kwargs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009763 if (p->error_indicator) {
9764 return NULL;
9765 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009766 asdl_seq* a;
9767 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009768 (a = kwargs_rule(p)) // kwargs
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009769 )
9770 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009771 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9772 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009773 return NULL;
9774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009775 int _end_lineno = _token->end_lineno;
9776 UNUSED(_end_lineno); // Only used by EXTRA macro
9777 int _end_col_offset = _token->end_col_offset;
9778 UNUSED(_end_col_offset); // Only used by EXTRA macro
9779 _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 );
9780 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009781 p->error_indicator = 1;
9782 return NULL;
9783 }
9784 goto done;
9785 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009786 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009787 }
9788 { // named_expression [',' args]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009789 if (p->error_indicator) {
9790 return NULL;
9791 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009792 expr_ty a;
9793 void *b;
9794 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009795 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009796 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009797 (b = _tmp_108_rule(p), 1) // [',' args]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009798 )
9799 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009800 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9801 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009802 return NULL;
9803 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009804 int _end_lineno = _token->end_lineno;
9805 UNUSED(_end_lineno); // Only used by EXTRA macro
9806 int _end_col_offset = _token->end_col_offset;
9807 UNUSED(_end_col_offset); // Only used by EXTRA macro
9808 _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 );
9809 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009810 p->error_indicator = 1;
9811 return NULL;
9812 }
9813 goto done;
9814 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009815 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009817 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009818 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009819 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009820}
9821
9822// kwargs:
9823// | ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
9824// | ','.kwarg_or_starred+
9825// | ','.kwarg_or_double_starred+
9826static asdl_seq*
9827kwargs_rule(Parser *p)
9828{
9829 if (p->error_indicator) {
9830 return NULL;
9831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009832 asdl_seq* _res = NULL;
9833 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009834 { // ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009835 if (p->error_indicator) {
9836 return NULL;
9837 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009838 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009839 asdl_seq * a;
9840 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009841 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009842 (a = _gather_109_rule(p)) // ','.kwarg_or_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009843 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009844 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009845 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009846 (b = _gather_111_rule(p)) // ','.kwarg_or_double_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009847 )
9848 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009849 _res = _PyPegen_join_sequences ( p , a , b );
9850 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009851 p->error_indicator = 1;
9852 return NULL;
9853 }
9854 goto done;
9855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009856 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009857 }
9858 { // ','.kwarg_or_starred+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009859 if (p->error_indicator) {
9860 return NULL;
9861 }
Guido van Rossum3941d972020-05-01 09:42:03 -07009862 asdl_seq * _gather_113_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009863 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009864 (_gather_113_var = _gather_113_rule(p)) // ','.kwarg_or_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009865 )
9866 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009867 _res = _gather_113_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009868 goto done;
9869 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009870 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009871 }
9872 { // ','.kwarg_or_double_starred+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009873 if (p->error_indicator) {
9874 return NULL;
9875 }
Guido van Rossum3941d972020-05-01 09:42:03 -07009876 asdl_seq * _gather_115_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009877 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009878 (_gather_115_var = _gather_115_rule(p)) // ','.kwarg_or_double_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009879 )
9880 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009881 _res = _gather_115_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009882 goto done;
9883 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009884 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009885 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009886 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009887 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009888 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009889}
9890
9891// starred_expression: '*' expression
9892static expr_ty
9893starred_expression_rule(Parser *p)
9894{
9895 if (p->error_indicator) {
9896 return NULL;
9897 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009898 expr_ty _res = NULL;
9899 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009900 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9901 p->error_indicator = 1;
9902 return NULL;
9903 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009904 int _start_lineno = p->tokens[_mark]->lineno;
9905 UNUSED(_start_lineno); // Only used by EXTRA macro
9906 int _start_col_offset = p->tokens[_mark]->col_offset;
9907 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009908 { // '*' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009909 if (p->error_indicator) {
9910 return NULL;
9911 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009912 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009913 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009914 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009915 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009916 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009917 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009918 )
9919 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009920 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9921 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009922 return NULL;
9923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009924 int _end_lineno = _token->end_lineno;
9925 UNUSED(_end_lineno); // Only used by EXTRA macro
9926 int _end_col_offset = _token->end_col_offset;
9927 UNUSED(_end_col_offset); // Only used by EXTRA macro
9928 _res = _Py_Starred ( a , Load , EXTRA );
9929 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009930 p->error_indicator = 1;
9931 return NULL;
9932 }
9933 goto done;
9934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009935 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009937 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009938 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009939 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009940}
9941
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009942// kwarg_or_starred: NAME '=' expression | starred_expression | invalid_kwarg
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009943static KeywordOrStarred*
9944kwarg_or_starred_rule(Parser *p)
9945{
9946 if (p->error_indicator) {
9947 return NULL;
9948 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009949 KeywordOrStarred* _res = NULL;
9950 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009951 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9952 p->error_indicator = 1;
9953 return NULL;
9954 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009955 int _start_lineno = p->tokens[_mark]->lineno;
9956 UNUSED(_start_lineno); // Only used by EXTRA macro
9957 int _start_col_offset = p->tokens[_mark]->col_offset;
9958 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009959 { // NAME '=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009960 if (p->error_indicator) {
9961 return NULL;
9962 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009963 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009964 expr_ty a;
9965 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009966 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009967 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009968 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009969 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009970 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009971 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009972 )
9973 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009974 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9975 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009976 return NULL;
9977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009978 int _end_lineno = _token->end_lineno;
9979 UNUSED(_end_lineno); // Only used by EXTRA macro
9980 int _end_col_offset = _token->end_col_offset;
9981 UNUSED(_end_col_offset); // Only used by EXTRA macro
9982 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
9983 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009984 p->error_indicator = 1;
9985 return NULL;
9986 }
9987 goto done;
9988 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009989 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009990 }
9991 { // starred_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009992 if (p->error_indicator) {
9993 return NULL;
9994 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009995 expr_ty a;
9996 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009997 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009998 )
9999 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010000 _res = _PyPegen_keyword_or_starred ( p , a , 0 );
10001 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010002 p->error_indicator = 1;
10003 return NULL;
10004 }
10005 goto done;
10006 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010007 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010008 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010009 { // invalid_kwarg
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010010 if (p->error_indicator) {
10011 return NULL;
10012 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010013 void *invalid_kwarg_var;
10014 if (
10015 (invalid_kwarg_var = invalid_kwarg_rule(p)) // invalid_kwarg
10016 )
10017 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010018 _res = invalid_kwarg_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010019 goto done;
10020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010021 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010022 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010023 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010024 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010025 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010026}
10027
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010028// kwarg_or_double_starred: NAME '=' expression | '**' expression | invalid_kwarg
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010029static KeywordOrStarred*
10030kwarg_or_double_starred_rule(Parser *p)
10031{
10032 if (p->error_indicator) {
10033 return NULL;
10034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010035 KeywordOrStarred* _res = NULL;
10036 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010037 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10038 p->error_indicator = 1;
10039 return NULL;
10040 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010041 int _start_lineno = p->tokens[_mark]->lineno;
10042 UNUSED(_start_lineno); // Only used by EXTRA macro
10043 int _start_col_offset = p->tokens[_mark]->col_offset;
10044 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010045 { // NAME '=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010046 if (p->error_indicator) {
10047 return NULL;
10048 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010049 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010050 expr_ty a;
10051 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010052 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010053 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010054 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010055 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010056 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010057 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010058 )
10059 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010060 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10061 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010062 return NULL;
10063 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010064 int _end_lineno = _token->end_lineno;
10065 UNUSED(_end_lineno); // Only used by EXTRA macro
10066 int _end_col_offset = _token->end_col_offset;
10067 UNUSED(_end_col_offset); // Only used by EXTRA macro
10068 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
10069 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010070 p->error_indicator = 1;
10071 return NULL;
10072 }
10073 goto done;
10074 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010075 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010076 }
10077 { // '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010078 if (p->error_indicator) {
10079 return NULL;
10080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010081 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010082 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010083 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010084 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010085 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010086 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010087 )
10088 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010089 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10090 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010091 return NULL;
10092 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010093 int _end_lineno = _token->end_lineno;
10094 UNUSED(_end_lineno); // Only used by EXTRA macro
10095 int _end_col_offset = _token->end_col_offset;
10096 UNUSED(_end_col_offset); // Only used by EXTRA macro
10097 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( NULL , a , EXTRA ) ) , 1 );
10098 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010099 p->error_indicator = 1;
10100 return NULL;
10101 }
10102 goto done;
10103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010104 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010105 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010106 { // invalid_kwarg
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010107 if (p->error_indicator) {
10108 return NULL;
10109 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010110 void *invalid_kwarg_var;
10111 if (
10112 (invalid_kwarg_var = invalid_kwarg_rule(p)) // invalid_kwarg
10113 )
10114 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010115 _res = invalid_kwarg_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010116 goto done;
10117 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010118 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010119 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010120 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010121 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010122 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010123}
10124
10125// star_targets: star_target !',' | star_target ((',' star_target))* ','?
10126static expr_ty
10127star_targets_rule(Parser *p)
10128{
10129 if (p->error_indicator) {
10130 return NULL;
10131 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010132 expr_ty _res = NULL;
10133 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010134 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10135 p->error_indicator = 1;
10136 return NULL;
10137 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010138 int _start_lineno = p->tokens[_mark]->lineno;
10139 UNUSED(_start_lineno); // Only used by EXTRA macro
10140 int _start_col_offset = p->tokens[_mark]->col_offset;
10141 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010142 { // star_target !','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010143 if (p->error_indicator) {
10144 return NULL;
10145 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010146 expr_ty a;
10147 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010148 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010149 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010150 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010151 )
10152 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010153 _res = a;
10154 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010155 p->error_indicator = 1;
10156 return NULL;
10157 }
10158 goto done;
10159 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010160 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010161 }
10162 { // star_target ((',' star_target))* ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010163 if (p->error_indicator) {
10164 return NULL;
10165 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010166 void *_opt_var;
10167 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010168 expr_ty a;
10169 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010170 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010171 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010172 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010173 (b = _loop0_117_rule(p)) // ((',' star_target))*
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010174 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010175 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010176 )
10177 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010178 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10179 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010180 return NULL;
10181 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010182 int _end_lineno = _token->end_lineno;
10183 UNUSED(_end_lineno); // Only used by EXTRA macro
10184 int _end_col_offset = _token->end_col_offset;
10185 UNUSED(_end_col_offset); // Only used by EXTRA macro
10186 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Store , EXTRA );
10187 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010188 p->error_indicator = 1;
10189 return NULL;
10190 }
10191 goto done;
10192 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010193 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010194 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010195 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010196 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010197 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010198}
10199
10200// star_targets_seq: ','.star_target+ ','?
10201static asdl_seq*
10202star_targets_seq_rule(Parser *p)
10203{
10204 if (p->error_indicator) {
10205 return NULL;
10206 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010207 asdl_seq* _res = NULL;
10208 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010209 { // ','.star_target+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010210 if (p->error_indicator) {
10211 return NULL;
10212 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010213 void *_opt_var;
10214 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010215 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010216 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010217 (a = _gather_118_rule(p)) // ','.star_target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010218 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010219 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010220 )
10221 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010222 _res = a;
10223 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010224 p->error_indicator = 1;
10225 return NULL;
10226 }
10227 goto done;
10228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010229 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010230 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010231 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010232 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010233 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010234}
10235
10236// star_target:
10237// | '*' (!'*' star_target)
10238// | t_primary '.' NAME !t_lookahead
10239// | t_primary '[' slices ']' !t_lookahead
10240// | star_atom
10241static expr_ty
10242star_target_rule(Parser *p)
10243{
10244 if (p->error_indicator) {
10245 return NULL;
10246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010247 expr_ty _res = NULL;
10248 if (_PyPegen_is_memoized(p, star_target_type, &_res))
10249 return _res;
10250 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010251 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10252 p->error_indicator = 1;
10253 return NULL;
10254 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010255 int _start_lineno = p->tokens[_mark]->lineno;
10256 UNUSED(_start_lineno); // Only used by EXTRA macro
10257 int _start_col_offset = p->tokens[_mark]->col_offset;
10258 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010259 { // '*' (!'*' star_target)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010260 if (p->error_indicator) {
10261 return NULL;
10262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010263 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010264 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010265 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010266 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010267 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010268 (a = _tmp_120_rule(p)) // !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010269 )
10270 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010271 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10272 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010273 return NULL;
10274 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010275 int _end_lineno = _token->end_lineno;
10276 UNUSED(_end_lineno); // Only used by EXTRA macro
10277 int _end_col_offset = _token->end_col_offset;
10278 UNUSED(_end_col_offset); // Only used by EXTRA macro
10279 _res = _Py_Starred ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , Store , EXTRA );
10280 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010281 p->error_indicator = 1;
10282 return NULL;
10283 }
10284 goto done;
10285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010286 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010287 }
10288 { // t_primary '.' NAME !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010289 if (p->error_indicator) {
10290 return NULL;
10291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010292 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010293 expr_ty a;
10294 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010295 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010296 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010297 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010298 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010299 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010300 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010301 &&
10302 _PyPegen_lookahead(0, t_lookahead_rule, p)
10303 )
10304 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010305 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10306 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010307 return NULL;
10308 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010309 int _end_lineno = _token->end_lineno;
10310 UNUSED(_end_lineno); // Only used by EXTRA macro
10311 int _end_col_offset = _token->end_col_offset;
10312 UNUSED(_end_col_offset); // Only used by EXTRA macro
10313 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
10314 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010315 p->error_indicator = 1;
10316 return NULL;
10317 }
10318 goto done;
10319 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010320 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010321 }
10322 { // t_primary '[' slices ']' !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010323 if (p->error_indicator) {
10324 return NULL;
10325 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010326 Token * _literal;
10327 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010328 expr_ty a;
10329 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010330 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010331 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010332 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010333 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010334 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010335 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010336 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010337 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010338 &&
10339 _PyPegen_lookahead(0, t_lookahead_rule, p)
10340 )
10341 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010342 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10343 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010344 return NULL;
10345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010346 int _end_lineno = _token->end_lineno;
10347 UNUSED(_end_lineno); // Only used by EXTRA macro
10348 int _end_col_offset = _token->end_col_offset;
10349 UNUSED(_end_col_offset); // Only used by EXTRA macro
10350 _res = _Py_Subscript ( a , b , Store , EXTRA );
10351 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010352 p->error_indicator = 1;
10353 return NULL;
10354 }
10355 goto done;
10356 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010357 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010358 }
10359 { // star_atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010360 if (p->error_indicator) {
10361 return NULL;
10362 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010363 expr_ty star_atom_var;
10364 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010365 (star_atom_var = star_atom_rule(p)) // star_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010366 )
10367 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010368 _res = star_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010369 goto done;
10370 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010371 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010373 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010374 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010375 _PyPegen_insert_memo(p, _mark, star_target_type, _res);
10376 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010377}
10378
10379// star_atom:
10380// | NAME
10381// | '(' star_target ')'
10382// | '(' star_targets_seq? ')'
10383// | '[' star_targets_seq? ']'
10384static expr_ty
10385star_atom_rule(Parser *p)
10386{
10387 if (p->error_indicator) {
10388 return NULL;
10389 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010390 expr_ty _res = NULL;
10391 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010392 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10393 p->error_indicator = 1;
10394 return NULL;
10395 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010396 int _start_lineno = p->tokens[_mark]->lineno;
10397 UNUSED(_start_lineno); // Only used by EXTRA macro
10398 int _start_col_offset = p->tokens[_mark]->col_offset;
10399 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010400 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010401 if (p->error_indicator) {
10402 return NULL;
10403 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010404 expr_ty a;
10405 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010406 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010407 )
10408 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010409 _res = _PyPegen_set_expr_context ( p , a , Store );
10410 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010411 p->error_indicator = 1;
10412 return NULL;
10413 }
10414 goto done;
10415 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010416 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010417 }
10418 { // '(' star_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010419 if (p->error_indicator) {
10420 return NULL;
10421 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010422 Token * _literal;
10423 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010424 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010425 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010426 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010427 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010428 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010429 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010430 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010431 )
10432 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010433 _res = _PyPegen_set_expr_context ( p , a , Store );
10434 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010435 p->error_indicator = 1;
10436 return NULL;
10437 }
10438 goto done;
10439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010440 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010441 }
10442 { // '(' star_targets_seq? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010443 if (p->error_indicator) {
10444 return NULL;
10445 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010446 Token * _literal;
10447 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010448 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010449 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010450 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010451 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010452 (a = star_targets_seq_rule(p), 1) // star_targets_seq?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010453 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010454 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010455 )
10456 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010457 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10458 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010459 return NULL;
10460 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010461 int _end_lineno = _token->end_lineno;
10462 UNUSED(_end_lineno); // Only used by EXTRA macro
10463 int _end_col_offset = _token->end_col_offset;
10464 UNUSED(_end_col_offset); // Only used by EXTRA macro
10465 _res = _Py_Tuple ( a , Store , EXTRA );
10466 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010467 p->error_indicator = 1;
10468 return NULL;
10469 }
10470 goto done;
10471 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010472 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010473 }
10474 { // '[' star_targets_seq? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010475 if (p->error_indicator) {
10476 return NULL;
10477 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010478 Token * _literal;
10479 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010480 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010481 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010482 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010483 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010484 (a = star_targets_seq_rule(p), 1) // star_targets_seq?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010485 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010486 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010487 )
10488 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010489 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10490 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010491 return NULL;
10492 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010493 int _end_lineno = _token->end_lineno;
10494 UNUSED(_end_lineno); // Only used by EXTRA macro
10495 int _end_col_offset = _token->end_col_offset;
10496 UNUSED(_end_col_offset); // Only used by EXTRA macro
10497 _res = _Py_List ( a , Store , EXTRA );
10498 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010499 p->error_indicator = 1;
10500 return NULL;
10501 }
10502 goto done;
10503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010504 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010505 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010506 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010507 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010508 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010509}
10510
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010511// single_target: single_subscript_attribute_target | NAME | '(' single_target ')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010512static expr_ty
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010513single_target_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010514{
10515 if (p->error_indicator) {
10516 return NULL;
10517 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010518 expr_ty _res = NULL;
10519 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010520 { // single_subscript_attribute_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010521 if (p->error_indicator) {
10522 return NULL;
10523 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010524 expr_ty single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010525 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010526 (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p)) // single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010527 )
10528 {
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010529 _res = single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010530 goto done;
10531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010532 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010533 }
10534 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010535 if (p->error_indicator) {
10536 return NULL;
10537 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010538 expr_ty a;
10539 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010540 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010541 )
10542 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010543 _res = _PyPegen_set_expr_context ( p , a , Store );
10544 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010545 p->error_indicator = 1;
10546 return NULL;
10547 }
10548 goto done;
10549 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010550 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010551 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010552 { // '(' single_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010553 if (p->error_indicator) {
10554 return NULL;
10555 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010556 Token * _literal;
10557 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010558 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010559 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010560 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010561 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010562 (a = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010563 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010564 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010565 )
10566 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010567 _res = a;
10568 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010569 p->error_indicator = 1;
10570 return NULL;
10571 }
10572 goto done;
10573 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010574 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010575 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010576 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010577 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010578 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010579}
10580
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010581// single_subscript_attribute_target:
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010582// | t_primary '.' NAME !t_lookahead
10583// | t_primary '[' slices ']' !t_lookahead
10584static expr_ty
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010585single_subscript_attribute_target_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010586{
10587 if (p->error_indicator) {
10588 return NULL;
10589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010590 expr_ty _res = NULL;
10591 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010592 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10593 p->error_indicator = 1;
10594 return NULL;
10595 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010596 int _start_lineno = p->tokens[_mark]->lineno;
10597 UNUSED(_start_lineno); // Only used by EXTRA macro
10598 int _start_col_offset = p->tokens[_mark]->col_offset;
10599 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010600 { // t_primary '.' NAME !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010601 if (p->error_indicator) {
10602 return NULL;
10603 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010604 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010605 expr_ty a;
10606 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010607 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010608 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010609 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010610 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010611 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010612 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010613 &&
10614 _PyPegen_lookahead(0, t_lookahead_rule, p)
10615 )
10616 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010617 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10618 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010619 return NULL;
10620 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010621 int _end_lineno = _token->end_lineno;
10622 UNUSED(_end_lineno); // Only used by EXTRA macro
10623 int _end_col_offset = _token->end_col_offset;
10624 UNUSED(_end_col_offset); // Only used by EXTRA macro
10625 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
10626 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010627 p->error_indicator = 1;
10628 return NULL;
10629 }
10630 goto done;
10631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010632 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010633 }
10634 { // t_primary '[' slices ']' !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010635 if (p->error_indicator) {
10636 return NULL;
10637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010638 Token * _literal;
10639 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010640 expr_ty a;
10641 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010642 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010643 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010644 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010645 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010646 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010647 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010648 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010649 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010650 &&
10651 _PyPegen_lookahead(0, t_lookahead_rule, p)
10652 )
10653 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010654 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10655 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010656 return NULL;
10657 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010658 int _end_lineno = _token->end_lineno;
10659 UNUSED(_end_lineno); // Only used by EXTRA macro
10660 int _end_col_offset = _token->end_col_offset;
10661 UNUSED(_end_col_offset); // Only used by EXTRA macro
10662 _res = _Py_Subscript ( a , b , Store , EXTRA );
10663 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010664 p->error_indicator = 1;
10665 return NULL;
10666 }
10667 goto done;
10668 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010669 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010670 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010671 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010672 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010673 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010674}
10675
10676// del_targets: ','.del_target+ ','?
10677static asdl_seq*
10678del_targets_rule(Parser *p)
10679{
10680 if (p->error_indicator) {
10681 return NULL;
10682 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010683 asdl_seq* _res = NULL;
10684 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010685 { // ','.del_target+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010686 if (p->error_indicator) {
10687 return NULL;
10688 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010689 void *_opt_var;
10690 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010691 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010692 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010693 (a = _gather_121_rule(p)) // ','.del_target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010694 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010695 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010696 )
10697 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010698 _res = a;
10699 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010700 p->error_indicator = 1;
10701 return NULL;
10702 }
10703 goto done;
10704 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010705 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010706 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010707 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010708 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010709 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010710}
10711
10712// del_target:
Shantanu27c0d9b2020-05-11 14:53:58 -070010713// | t_primary '.' NAME &del_target_end
10714// | t_primary '[' slices ']' &del_target_end
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010715// | del_t_atom
10716static expr_ty
10717del_target_rule(Parser *p)
10718{
10719 if (p->error_indicator) {
10720 return NULL;
10721 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010722 expr_ty _res = NULL;
10723 if (_PyPegen_is_memoized(p, del_target_type, &_res))
10724 return _res;
10725 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010726 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10727 p->error_indicator = 1;
10728 return NULL;
10729 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010730 int _start_lineno = p->tokens[_mark]->lineno;
10731 UNUSED(_start_lineno); // Only used by EXTRA macro
10732 int _start_col_offset = p->tokens[_mark]->col_offset;
10733 UNUSED(_start_col_offset); // Only used by EXTRA macro
Shantanu27c0d9b2020-05-11 14:53:58 -070010734 { // t_primary '.' NAME &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010735 if (p->error_indicator) {
10736 return NULL;
10737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010738 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010739 expr_ty a;
10740 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010741 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010742 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010743 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010744 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010745 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010746 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010747 &&
Shantanu27c0d9b2020-05-11 14:53:58 -070010748 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010749 )
10750 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010751 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10752 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010753 return NULL;
10754 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010755 int _end_lineno = _token->end_lineno;
10756 UNUSED(_end_lineno); // Only used by EXTRA macro
10757 int _end_col_offset = _token->end_col_offset;
10758 UNUSED(_end_col_offset); // Only used by EXTRA macro
10759 _res = _Py_Attribute ( a , b -> v . Name . id , Del , EXTRA );
10760 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010761 p->error_indicator = 1;
10762 return NULL;
10763 }
10764 goto done;
10765 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010766 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010767 }
Shantanu27c0d9b2020-05-11 14:53:58 -070010768 { // t_primary '[' slices ']' &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010769 if (p->error_indicator) {
10770 return NULL;
10771 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010772 Token * _literal;
10773 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010774 expr_ty a;
10775 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010776 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010777 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010778 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010779 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010780 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010781 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010782 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010783 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010784 &&
Shantanu27c0d9b2020-05-11 14:53:58 -070010785 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010786 )
10787 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010788 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10789 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010790 return NULL;
10791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010792 int _end_lineno = _token->end_lineno;
10793 UNUSED(_end_lineno); // Only used by EXTRA macro
10794 int _end_col_offset = _token->end_col_offset;
10795 UNUSED(_end_col_offset); // Only used by EXTRA macro
10796 _res = _Py_Subscript ( a , b , Del , EXTRA );
10797 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010798 p->error_indicator = 1;
10799 return NULL;
10800 }
10801 goto done;
10802 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010803 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010804 }
10805 { // del_t_atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010806 if (p->error_indicator) {
10807 return NULL;
10808 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010809 expr_ty del_t_atom_var;
10810 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010811 (del_t_atom_var = del_t_atom_rule(p)) // del_t_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010812 )
10813 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010814 _res = del_t_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010815 goto done;
10816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010817 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010818 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010819 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010820 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010821 _PyPegen_insert_memo(p, _mark, del_target_type, _res);
10822 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010823}
10824
Shantanu27c0d9b2020-05-11 14:53:58 -070010825// del_t_atom:
10826// | NAME &del_target_end
10827// | '(' del_target ')'
10828// | '(' del_targets? ')'
10829// | '[' del_targets? ']'
10830// | invalid_del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010831static expr_ty
10832del_t_atom_rule(Parser *p)
10833{
10834 if (p->error_indicator) {
10835 return NULL;
10836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010837 expr_ty _res = NULL;
10838 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010839 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10840 p->error_indicator = 1;
10841 return NULL;
10842 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010843 int _start_lineno = p->tokens[_mark]->lineno;
10844 UNUSED(_start_lineno); // Only used by EXTRA macro
10845 int _start_col_offset = p->tokens[_mark]->col_offset;
10846 UNUSED(_start_col_offset); // Only used by EXTRA macro
Shantanu27c0d9b2020-05-11 14:53:58 -070010847 { // NAME &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010848 if (p->error_indicator) {
10849 return NULL;
10850 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010851 expr_ty a;
10852 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010853 (a = _PyPegen_name_token(p)) // NAME
Shantanu27c0d9b2020-05-11 14:53:58 -070010854 &&
10855 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010856 )
10857 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010858 _res = _PyPegen_set_expr_context ( p , a , Del );
10859 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010860 p->error_indicator = 1;
10861 return NULL;
10862 }
10863 goto done;
10864 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010865 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010866 }
10867 { // '(' del_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010868 if (p->error_indicator) {
10869 return NULL;
10870 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010871 Token * _literal;
10872 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010873 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010874 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010875 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010876 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010877 (a = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010878 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010879 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010880 )
10881 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010882 _res = _PyPegen_set_expr_context ( p , a , Del );
10883 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010884 p->error_indicator = 1;
10885 return NULL;
10886 }
10887 goto done;
10888 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010889 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010890 }
10891 { // '(' del_targets? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010892 if (p->error_indicator) {
10893 return NULL;
10894 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010895 Token * _literal;
10896 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010897 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010898 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010899 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010900 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010901 (a = del_targets_rule(p), 1) // del_targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010902 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010903 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010904 )
10905 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010906 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10907 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010908 return NULL;
10909 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010910 int _end_lineno = _token->end_lineno;
10911 UNUSED(_end_lineno); // Only used by EXTRA macro
10912 int _end_col_offset = _token->end_col_offset;
10913 UNUSED(_end_col_offset); // Only used by EXTRA macro
10914 _res = _Py_Tuple ( a , Del , EXTRA );
10915 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010916 p->error_indicator = 1;
10917 return NULL;
10918 }
10919 goto done;
10920 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010921 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010922 }
10923 { // '[' del_targets? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010924 if (p->error_indicator) {
10925 return NULL;
10926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010927 Token * _literal;
10928 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010929 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010930 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010931 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010932 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010933 (a = del_targets_rule(p), 1) // del_targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010934 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010935 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010936 )
10937 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010938 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10939 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010940 return NULL;
10941 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010942 int _end_lineno = _token->end_lineno;
10943 UNUSED(_end_lineno); // Only used by EXTRA macro
10944 int _end_col_offset = _token->end_col_offset;
10945 UNUSED(_end_col_offset); // Only used by EXTRA macro
10946 _res = _Py_List ( a , Del , EXTRA );
10947 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010948 p->error_indicator = 1;
10949 return NULL;
10950 }
10951 goto done;
10952 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010953 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010954 }
Shantanu27c0d9b2020-05-11 14:53:58 -070010955 { // invalid_del_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010956 if (p->error_indicator) {
10957 return NULL;
10958 }
Shantanu27c0d9b2020-05-11 14:53:58 -070010959 void *invalid_del_target_var;
10960 if (
10961 (invalid_del_target_var = invalid_del_target_rule(p)) // invalid_del_target
10962 )
10963 {
10964 _res = invalid_del_target_var;
10965 goto done;
10966 }
10967 p->mark = _mark;
10968 }
10969 _res = NULL;
10970 done:
10971 return _res;
10972}
10973
10974// del_target_end: ')' | ']' | ',' | ';' | NEWLINE
10975static void *
10976del_target_end_rule(Parser *p)
10977{
10978 if (p->error_indicator) {
10979 return NULL;
10980 }
10981 void * _res = NULL;
10982 int _mark = p->mark;
10983 { // ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010984 if (p->error_indicator) {
10985 return NULL;
10986 }
Shantanu27c0d9b2020-05-11 14:53:58 -070010987 Token * _literal;
10988 if (
10989 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
10990 )
10991 {
10992 _res = _literal;
10993 goto done;
10994 }
10995 p->mark = _mark;
10996 }
10997 { // ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010998 if (p->error_indicator) {
10999 return NULL;
11000 }
Shantanu27c0d9b2020-05-11 14:53:58 -070011001 Token * _literal;
11002 if (
11003 (_literal = _PyPegen_expect_token(p, 10)) // token=']'
11004 )
11005 {
11006 _res = _literal;
11007 goto done;
11008 }
11009 p->mark = _mark;
11010 }
11011 { // ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011012 if (p->error_indicator) {
11013 return NULL;
11014 }
Shantanu27c0d9b2020-05-11 14:53:58 -070011015 Token * _literal;
11016 if (
11017 (_literal = _PyPegen_expect_token(p, 12)) // token=','
11018 )
11019 {
11020 _res = _literal;
11021 goto done;
11022 }
11023 p->mark = _mark;
11024 }
11025 { // ';'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011026 if (p->error_indicator) {
11027 return NULL;
11028 }
Shantanu27c0d9b2020-05-11 14:53:58 -070011029 Token * _literal;
11030 if (
11031 (_literal = _PyPegen_expect_token(p, 13)) // token=';'
11032 )
11033 {
11034 _res = _literal;
11035 goto done;
11036 }
11037 p->mark = _mark;
11038 }
11039 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011040 if (p->error_indicator) {
11041 return NULL;
11042 }
Shantanu27c0d9b2020-05-11 14:53:58 -070011043 Token * newline_var;
11044 if (
11045 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
11046 )
11047 {
11048 _res = newline_var;
11049 goto done;
11050 }
11051 p->mark = _mark;
11052 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011053 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011054 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011055 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011056}
11057
11058// targets: ','.target+ ','?
11059static asdl_seq*
11060targets_rule(Parser *p)
11061{
11062 if (p->error_indicator) {
11063 return NULL;
11064 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011065 asdl_seq* _res = NULL;
11066 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011067 { // ','.target+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011068 if (p->error_indicator) {
11069 return NULL;
11070 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011071 void *_opt_var;
11072 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011073 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011074 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011075 (a = _gather_123_rule(p)) // ','.target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011076 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011077 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011078 )
11079 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011080 _res = a;
11081 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011082 p->error_indicator = 1;
11083 return NULL;
11084 }
11085 goto done;
11086 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011087 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011088 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011089 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011090 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011091 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011092}
11093
11094// target:
11095// | t_primary '.' NAME !t_lookahead
11096// | t_primary '[' slices ']' !t_lookahead
11097// | t_atom
11098static expr_ty
11099target_rule(Parser *p)
11100{
11101 if (p->error_indicator) {
11102 return NULL;
11103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011104 expr_ty _res = NULL;
11105 if (_PyPegen_is_memoized(p, target_type, &_res))
11106 return _res;
11107 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011108 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11109 p->error_indicator = 1;
11110 return NULL;
11111 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011112 int _start_lineno = p->tokens[_mark]->lineno;
11113 UNUSED(_start_lineno); // Only used by EXTRA macro
11114 int _start_col_offset = p->tokens[_mark]->col_offset;
11115 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011116 { // t_primary '.' NAME !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011117 if (p->error_indicator) {
11118 return NULL;
11119 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011120 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011121 expr_ty a;
11122 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011123 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011124 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011125 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011126 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011127 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011128 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011129 &&
11130 _PyPegen_lookahead(0, t_lookahead_rule, p)
11131 )
11132 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011133 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11134 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011135 return NULL;
11136 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011137 int _end_lineno = _token->end_lineno;
11138 UNUSED(_end_lineno); // Only used by EXTRA macro
11139 int _end_col_offset = _token->end_col_offset;
11140 UNUSED(_end_col_offset); // Only used by EXTRA macro
11141 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
11142 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011143 p->error_indicator = 1;
11144 return NULL;
11145 }
11146 goto done;
11147 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011148 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011149 }
11150 { // t_primary '[' slices ']' !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011151 if (p->error_indicator) {
11152 return NULL;
11153 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011154 Token * _literal;
11155 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011156 expr_ty a;
11157 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011158 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011159 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011160 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011161 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011162 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011163 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011164 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011165 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011166 &&
11167 _PyPegen_lookahead(0, t_lookahead_rule, p)
11168 )
11169 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011170 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11171 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011172 return NULL;
11173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011174 int _end_lineno = _token->end_lineno;
11175 UNUSED(_end_lineno); // Only used by EXTRA macro
11176 int _end_col_offset = _token->end_col_offset;
11177 UNUSED(_end_col_offset); // Only used by EXTRA macro
11178 _res = _Py_Subscript ( a , b , Store , EXTRA );
11179 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011180 p->error_indicator = 1;
11181 return NULL;
11182 }
11183 goto done;
11184 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011185 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011186 }
11187 { // t_atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011188 if (p->error_indicator) {
11189 return NULL;
11190 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011191 expr_ty t_atom_var;
11192 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011193 (t_atom_var = t_atom_rule(p)) // t_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011194 )
11195 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011196 _res = t_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011197 goto done;
11198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011199 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011201 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011202 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011203 _PyPegen_insert_memo(p, _mark, target_type, _res);
11204 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011205}
11206
11207// Left-recursive
11208// t_primary:
11209// | t_primary '.' NAME &t_lookahead
11210// | t_primary '[' slices ']' &t_lookahead
11211// | t_primary genexp &t_lookahead
11212// | t_primary '(' arguments? ')' &t_lookahead
11213// | atom &t_lookahead
11214static expr_ty t_primary_raw(Parser *);
11215static expr_ty
11216t_primary_rule(Parser *p)
11217{
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011218 expr_ty _res = NULL;
11219 if (_PyPegen_is_memoized(p, t_primary_type, &_res))
11220 return _res;
11221 int _mark = p->mark;
11222 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011223 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011224 int tmpvar_8 = _PyPegen_update_memo(p, _mark, t_primary_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011225 if (tmpvar_8) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011226 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011228 p->mark = _mark;
11229 void *_raw = t_primary_raw(p);
11230 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011231 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011232 _resmark = p->mark;
11233 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011234 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011235 p->mark = _resmark;
11236 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011237}
11238static expr_ty
11239t_primary_raw(Parser *p)
11240{
11241 if (p->error_indicator) {
11242 return NULL;
11243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011244 expr_ty _res = NULL;
11245 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011246 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11247 p->error_indicator = 1;
11248 return NULL;
11249 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011250 int _start_lineno = p->tokens[_mark]->lineno;
11251 UNUSED(_start_lineno); // Only used by EXTRA macro
11252 int _start_col_offset = p->tokens[_mark]->col_offset;
11253 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011254 { // t_primary '.' NAME &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011255 if (p->error_indicator) {
11256 return NULL;
11257 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011258 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011259 expr_ty a;
11260 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011261 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011262 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011263 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011264 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011265 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011266 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011267 &&
11268 _PyPegen_lookahead(1, t_lookahead_rule, p)
11269 )
11270 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011271 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11272 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011273 return NULL;
11274 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011275 int _end_lineno = _token->end_lineno;
11276 UNUSED(_end_lineno); // Only used by EXTRA macro
11277 int _end_col_offset = _token->end_col_offset;
11278 UNUSED(_end_col_offset); // Only used by EXTRA macro
11279 _res = _Py_Attribute ( a , b -> v . Name . id , Load , EXTRA );
11280 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011281 p->error_indicator = 1;
11282 return NULL;
11283 }
11284 goto done;
11285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011286 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011287 }
11288 { // t_primary '[' slices ']' &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011289 if (p->error_indicator) {
11290 return NULL;
11291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011292 Token * _literal;
11293 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011294 expr_ty a;
11295 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011296 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011297 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011298 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011299 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011300 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011301 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011302 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011303 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011304 &&
11305 _PyPegen_lookahead(1, t_lookahead_rule, p)
11306 )
11307 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011308 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11309 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011310 return NULL;
11311 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011312 int _end_lineno = _token->end_lineno;
11313 UNUSED(_end_lineno); // Only used by EXTRA macro
11314 int _end_col_offset = _token->end_col_offset;
11315 UNUSED(_end_col_offset); // Only used by EXTRA macro
11316 _res = _Py_Subscript ( a , b , Load , EXTRA );
11317 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011318 p->error_indicator = 1;
11319 return NULL;
11320 }
11321 goto done;
11322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011323 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011324 }
11325 { // t_primary genexp &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011326 if (p->error_indicator) {
11327 return NULL;
11328 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011329 expr_ty a;
11330 expr_ty b;
11331 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011332 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011333 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011334 (b = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011335 &&
11336 _PyPegen_lookahead(1, t_lookahead_rule, p)
11337 )
11338 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011339 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11340 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011341 return NULL;
11342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011343 int _end_lineno = _token->end_lineno;
11344 UNUSED(_end_lineno); // Only used by EXTRA macro
11345 int _end_col_offset = _token->end_col_offset;
11346 UNUSED(_end_col_offset); // Only used by EXTRA macro
11347 _res = _Py_Call ( a , CHECK ( _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
11348 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011349 p->error_indicator = 1;
11350 return NULL;
11351 }
11352 goto done;
11353 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011354 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011355 }
11356 { // t_primary '(' arguments? ')' &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011357 if (p->error_indicator) {
11358 return NULL;
11359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011360 Token * _literal;
11361 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011362 expr_ty a;
11363 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011364 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011365 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011366 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011367 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011368 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011369 (b = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011370 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011371 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011372 &&
11373 _PyPegen_lookahead(1, t_lookahead_rule, p)
11374 )
11375 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011376 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11377 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011378 return NULL;
11379 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011380 int _end_lineno = _token->end_lineno;
11381 UNUSED(_end_lineno); // Only used by EXTRA macro
11382 int _end_col_offset = _token->end_col_offset;
11383 UNUSED(_end_col_offset); // Only used by EXTRA macro
11384 _res = _Py_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
11385 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011386 p->error_indicator = 1;
11387 return NULL;
11388 }
11389 goto done;
11390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011391 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011392 }
11393 { // atom &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011394 if (p->error_indicator) {
11395 return NULL;
11396 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011397 expr_ty a;
11398 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011399 (a = atom_rule(p)) // atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011400 &&
11401 _PyPegen_lookahead(1, t_lookahead_rule, p)
11402 )
11403 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011404 _res = a;
11405 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011406 p->error_indicator = 1;
11407 return NULL;
11408 }
11409 goto done;
11410 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011411 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011413 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011414 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011415 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011416}
11417
11418// t_lookahead: '(' | '[' | '.'
11419static void *
11420t_lookahead_rule(Parser *p)
11421{
11422 if (p->error_indicator) {
11423 return NULL;
11424 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011425 void * _res = NULL;
11426 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011427 { // '('
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011428 if (p->error_indicator) {
11429 return NULL;
11430 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011431 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011432 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011433 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011434 )
11435 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011436 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011437 goto done;
11438 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011439 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011440 }
11441 { // '['
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011442 if (p->error_indicator) {
11443 return NULL;
11444 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011445 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011446 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011447 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011448 )
11449 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011450 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011451 goto done;
11452 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011453 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011454 }
11455 { // '.'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011456 if (p->error_indicator) {
11457 return NULL;
11458 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011459 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011460 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011461 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011462 )
11463 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011464 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011465 goto done;
11466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011467 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011469 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011470 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011471 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011472}
11473
11474// t_atom: NAME | '(' target ')' | '(' targets? ')' | '[' targets? ']'
11475static expr_ty
11476t_atom_rule(Parser *p)
11477{
11478 if (p->error_indicator) {
11479 return NULL;
11480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011481 expr_ty _res = NULL;
11482 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011483 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11484 p->error_indicator = 1;
11485 return NULL;
11486 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011487 int _start_lineno = p->tokens[_mark]->lineno;
11488 UNUSED(_start_lineno); // Only used by EXTRA macro
11489 int _start_col_offset = p->tokens[_mark]->col_offset;
11490 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011491 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011492 if (p->error_indicator) {
11493 return NULL;
11494 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011495 expr_ty a;
11496 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011497 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011498 )
11499 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011500 _res = _PyPegen_set_expr_context ( p , a , Store );
11501 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011502 p->error_indicator = 1;
11503 return NULL;
11504 }
11505 goto done;
11506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011507 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011508 }
11509 { // '(' target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011510 if (p->error_indicator) {
11511 return NULL;
11512 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011513 Token * _literal;
11514 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011515 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011516 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011517 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011518 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011519 (a = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011520 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011521 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011522 )
11523 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011524 _res = _PyPegen_set_expr_context ( p , a , Store );
11525 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011526 p->error_indicator = 1;
11527 return NULL;
11528 }
11529 goto done;
11530 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011531 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011532 }
11533 { // '(' targets? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011534 if (p->error_indicator) {
11535 return NULL;
11536 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011537 Token * _literal;
11538 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011539 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011540 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011541 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011542 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011543 (b = targets_rule(p), 1) // targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011544 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011545 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011546 )
11547 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011548 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11549 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011550 return NULL;
11551 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011552 int _end_lineno = _token->end_lineno;
11553 UNUSED(_end_lineno); // Only used by EXTRA macro
11554 int _end_col_offset = _token->end_col_offset;
11555 UNUSED(_end_col_offset); // Only used by EXTRA macro
11556 _res = _Py_Tuple ( b , Store , EXTRA );
11557 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011558 p->error_indicator = 1;
11559 return NULL;
11560 }
11561 goto done;
11562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011563 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011564 }
11565 { // '[' targets? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011566 if (p->error_indicator) {
11567 return NULL;
11568 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011569 Token * _literal;
11570 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011571 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011572 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011573 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011574 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011575 (b = targets_rule(p), 1) // targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011576 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011577 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011578 )
11579 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011580 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11581 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011582 return NULL;
11583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011584 int _end_lineno = _token->end_lineno;
11585 UNUSED(_end_lineno); // Only used by EXTRA macro
11586 int _end_col_offset = _token->end_col_offset;
11587 UNUSED(_end_col_offset); // Only used by EXTRA macro
11588 _res = _Py_List ( b , Store , EXTRA );
11589 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011590 p->error_indicator = 1;
11591 return NULL;
11592 }
11593 goto done;
11594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011595 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011596 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011597 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011598 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011599 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011600}
11601
11602// incorrect_arguments:
11603// | args ',' '*'
11604// | expression for_if_clauses ',' [args | expression for_if_clauses]
11605// | args ',' args
11606static void *
11607incorrect_arguments_rule(Parser *p)
11608{
11609 if (p->error_indicator) {
11610 return NULL;
11611 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011612 void * _res = NULL;
11613 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011614 { // args ',' '*'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011615 if (p->error_indicator) {
11616 return NULL;
11617 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011618 Token * _literal;
11619 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011620 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011621 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011622 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011623 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011624 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011625 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011626 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011627 )
11628 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011629 _res = RAISE_SYNTAX_ERROR ( "iterable argument unpacking follows keyword argument unpacking" );
11630 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011631 p->error_indicator = 1;
11632 return NULL;
11633 }
11634 goto done;
11635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011636 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011637 }
11638 { // expression for_if_clauses ',' [args | expression for_if_clauses]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011639 if (p->error_indicator) {
11640 return NULL;
11641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011642 Token * _literal;
11643 void *_opt_var;
11644 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011645 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011646 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011647 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011648 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011649 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011650 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011651 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011652 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011653 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011654 (_opt_var = _tmp_125_rule(p), 1) // [args | expression for_if_clauses]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011655 )
11656 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011657 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "Generator expression must be parenthesized" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011658 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011659 p->error_indicator = 1;
11660 return NULL;
11661 }
11662 goto done;
11663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011664 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011665 }
11666 { // args ',' args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011667 if (p->error_indicator) {
11668 return NULL;
11669 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011670 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011671 expr_ty a;
11672 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011673 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011674 (a = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011675 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011676 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011677 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011678 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011679 )
11680 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011681 _res = _PyPegen_arguments_parsing_error ( p , a );
11682 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011683 p->error_indicator = 1;
11684 return NULL;
11685 }
11686 goto done;
11687 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011688 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011689 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011690 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011691 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011692 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011693}
11694
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011695// invalid_kwarg: expression '='
11696static void *
11697invalid_kwarg_rule(Parser *p)
11698{
11699 if (p->error_indicator) {
11700 return NULL;
11701 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011702 void * _res = NULL;
11703 int _mark = p->mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011704 { // expression '='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011705 if (p->error_indicator) {
11706 return NULL;
11707 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011708 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011709 expr_ty a;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011710 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011711 (a = expression_rule(p)) // expression
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011712 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011713 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011714 )
11715 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011716 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression cannot contain assignment, perhaps you meant \"==\"?" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011717 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011718 p->error_indicator = 1;
11719 return NULL;
11720 }
11721 goto done;
11722 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011723 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011724 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011725 _res = NULL;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011726 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011727 return _res;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011728}
11729
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011730// invalid_named_expression: expression ':=' expression
11731static void *
11732invalid_named_expression_rule(Parser *p)
11733{
11734 if (p->error_indicator) {
11735 return NULL;
11736 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011737 void * _res = NULL;
11738 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011739 { // expression ':=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011740 if (p->error_indicator) {
11741 return NULL;
11742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011743 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011744 expr_ty a;
11745 expr_ty expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011746 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011747 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011748 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011749 (_literal = _PyPegen_expect_token(p, 53)) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011750 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011751 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011752 )
11753 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011754 _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 +010011755 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011756 p->error_indicator = 1;
11757 return NULL;
11758 }
11759 goto done;
11760 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011761 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011762 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011763 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011764 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011765 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011766}
11767
11768// invalid_assignment:
11769// | list ':'
11770// | tuple ':'
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011771// | star_named_expression ',' star_named_expressions* ':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011772// | expression ':' expression ['=' annotated_rhs]
Pablo Galindo16ab0702020-05-15 02:04:52 +010011773// | star_expressions '=' (yield_expr | star_expressions)
11774// | star_expressions augassign (yield_expr | star_expressions)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011775static void *
11776invalid_assignment_rule(Parser *p)
11777{
11778 if (p->error_indicator) {
11779 return NULL;
11780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011781 void * _res = NULL;
11782 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011783 { // list ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011784 if (p->error_indicator) {
11785 return NULL;
11786 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011787 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011788 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011789 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011790 (a = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011791 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011792 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011793 )
11794 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011795 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not list) can be annotated" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011796 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011797 p->error_indicator = 1;
11798 return NULL;
11799 }
11800 goto done;
11801 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011802 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011803 }
11804 { // tuple ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011805 if (p->error_indicator) {
11806 return NULL;
11807 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011808 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011809 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011810 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011811 (a = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011812 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011813 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011814 )
11815 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011816 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
11817 if (_res == NULL && PyErr_Occurred()) {
11818 p->error_indicator = 1;
11819 return NULL;
11820 }
11821 goto done;
11822 }
11823 p->mark = _mark;
11824 }
11825 { // star_named_expression ',' star_named_expressions* ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011826 if (p->error_indicator) {
11827 return NULL;
11828 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011829 Token * _literal;
11830 Token * _literal_1;
11831 asdl_seq * _loop0_126_var;
11832 expr_ty a;
11833 if (
11834 (a = star_named_expression_rule(p)) // star_named_expression
11835 &&
11836 (_literal = _PyPegen_expect_token(p, 12)) // token=','
11837 &&
11838 (_loop0_126_var = _loop0_126_rule(p)) // star_named_expressions*
11839 &&
11840 (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':'
11841 )
11842 {
11843 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011844 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011845 p->error_indicator = 1;
11846 return NULL;
11847 }
11848 goto done;
11849 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011850 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011851 }
11852 { // expression ':' expression ['=' annotated_rhs]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011853 if (p->error_indicator) {
11854 return NULL;
11855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011856 Token * _literal;
11857 void *_opt_var;
11858 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011859 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011860 expr_ty expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011861 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011862 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011863 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011864 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011865 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011866 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011867 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011868 (_opt_var = _tmp_127_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011869 )
11870 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011871 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "illegal target for annotation" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011872 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011873 p->error_indicator = 1;
11874 return NULL;
11875 }
11876 goto done;
11877 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011878 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011879 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010011880 { // star_expressions '=' (yield_expr | star_expressions)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011881 if (p->error_indicator) {
11882 return NULL;
11883 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010011884 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070011885 void *_tmp_128_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011886 expr_ty a;
11887 if (
Pablo Galindo16ab0702020-05-15 02:04:52 +010011888 (a = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011889 &&
Pablo Galindo16ab0702020-05-15 02:04:52 +010011890 (_literal = _PyPegen_expect_token(p, 22)) // token='='
11891 &&
11892 (_tmp_128_var = _tmp_128_rule(p)) // yield_expr | star_expressions
11893 )
11894 {
11895 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( _PyPegen_get_invalid_target ( a ) , "cannot assign to %s" , _PyPegen_get_expr_name ( _PyPegen_get_invalid_target ( a ) ) );
11896 if (_res == NULL && PyErr_Occurred()) {
11897 p->error_indicator = 1;
11898 return NULL;
11899 }
11900 goto done;
11901 }
11902 p->mark = _mark;
11903 }
11904 { // star_expressions augassign (yield_expr | star_expressions)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011905 if (p->error_indicator) {
11906 return NULL;
11907 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010011908 void *_tmp_129_var;
11909 expr_ty a;
11910 AugOperator* augassign_var;
11911 if (
11912 (a = star_expressions_rule(p)) // star_expressions
11913 &&
11914 (augassign_var = augassign_rule(p)) // augassign
Pablo Galindo2b74c832020-04-27 18:02:07 +010011915 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011916 (_tmp_129_var = _tmp_129_rule(p)) // yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011917 )
11918 {
Pablo Galindo16ab0702020-05-15 02:04:52 +010011919 _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 +010011920 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011921 p->error_indicator = 1;
11922 return NULL;
11923 }
11924 goto done;
11925 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011926 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011927 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011928 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011929 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011930 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011931}
11932
11933// invalid_block: NEWLINE !INDENT
11934static void *
11935invalid_block_rule(Parser *p)
11936{
11937 if (p->error_indicator) {
11938 return NULL;
11939 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011940 void * _res = NULL;
11941 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011942 { // NEWLINE !INDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011943 if (p->error_indicator) {
11944 return NULL;
11945 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010011946 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011947 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011948 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011949 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011950 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT) // token=INDENT
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011951 )
11952 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011953 _res = RAISE_INDENTATION_ERROR ( "expected an indented block" );
11954 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011955 p->error_indicator = 1;
11956 return NULL;
11957 }
11958 goto done;
11959 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011960 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011962 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011963 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011964 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011965}
11966
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011967// invalid_comprehension: ('[' | '(' | '{') starred_expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011968static void *
11969invalid_comprehension_rule(Parser *p)
11970{
11971 if (p->error_indicator) {
11972 return NULL;
11973 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011974 void * _res = NULL;
11975 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011976 { // ('[' | '(' | '{') starred_expression for_if_clauses
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011977 if (p->error_indicator) {
11978 return NULL;
11979 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011980 void *_tmp_130_var;
11981 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011982 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011983 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011984 (_tmp_130_var = _tmp_130_rule(p)) // '[' | '(' | '{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011985 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011986 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011987 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011988 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011989 )
11990 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011991 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "iterable unpacking cannot be used in comprehension" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011992 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011993 p->error_indicator = 1;
11994 return NULL;
11995 }
11996 goto done;
11997 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011998 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011999 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012000 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012001 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012002 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012003}
12004
12005// invalid_parameters:
Guido van Rossumc001c092020-04-30 12:12:19 -070012006// | param_no_default* (slash_with_default | param_with_default+) param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012007static void *
12008invalid_parameters_rule(Parser *p)
12009{
12010 if (p->error_indicator) {
12011 return NULL;
12012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012013 void * _res = NULL;
12014 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012015 { // param_no_default* (slash_with_default | param_with_default+) param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012016 if (p->error_indicator) {
12017 return NULL;
12018 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012019 asdl_seq * _loop0_131_var;
12020 void *_tmp_132_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012021 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012022 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012023 (_loop0_131_var = _loop0_131_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012024 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012025 (_tmp_132_var = _tmp_132_rule(p)) // slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012026 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012027 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012028 )
12029 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012030 _res = RAISE_SYNTAX_ERROR ( "non-default argument follows default argument" );
12031 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012032 p->error_indicator = 1;
12033 return NULL;
12034 }
12035 goto done;
12036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012037 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012038 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012039 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012040 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012041 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012042}
12043
Lysandros Nikolaou75b863a2020-05-18 22:14:47 +030012044// invalid_star_etc: '*' (')' | ',' (')' | '**')) | '*' ',' TYPE_COMMENT
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012045static void *
12046invalid_star_etc_rule(Parser *p)
12047{
12048 if (p->error_indicator) {
12049 return NULL;
12050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012051 void * _res = NULL;
12052 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012053 { // '*' (')' | ',' (')' | '**'))
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012054 if (p->error_indicator) {
12055 return NULL;
12056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012057 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012058 void *_tmp_133_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012059 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012060 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012061 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012062 (_tmp_133_var = _tmp_133_rule(p)) // ')' | ',' (')' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012063 )
12064 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012065 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
12066 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012067 p->error_indicator = 1;
12068 return NULL;
12069 }
12070 goto done;
12071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012072 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012073 }
Lysandros Nikolaou75b863a2020-05-18 22:14:47 +030012074 { // '*' ',' TYPE_COMMENT
12075 Token * _literal;
12076 Token * _literal_1;
12077 Token * type_comment_var;
12078 if (
12079 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
12080 &&
12081 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
12082 &&
12083 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
12084 )
12085 {
12086 _res = RAISE_SYNTAX_ERROR ( "bare * has associated type comment" );
12087 if (_res == NULL && PyErr_Occurred()) {
12088 p->error_indicator = 1;
12089 return NULL;
12090 }
12091 goto done;
12092 }
12093 p->mark = _mark;
12094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012095 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012096 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012097 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012098}
12099
12100// invalid_lambda_star_etc: '*' (':' | ',' (':' | '**'))
12101static void *
12102invalid_lambda_star_etc_rule(Parser *p)
12103{
12104 if (p->error_indicator) {
12105 return NULL;
12106 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012107 void * _res = NULL;
12108 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012109 { // '*' (':' | ',' (':' | '**'))
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012110 if (p->error_indicator) {
12111 return NULL;
12112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012113 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012114 void *_tmp_134_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012115 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012116 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012117 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012118 (_tmp_134_var = _tmp_134_rule(p)) // ':' | ',' (':' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012119 )
12120 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012121 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
12122 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012123 p->error_indicator = 1;
12124 return NULL;
12125 }
12126 goto done;
12127 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012128 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012129 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012130 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012131 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012132 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012133}
12134
Guido van Rossumc001c092020-04-30 12:12:19 -070012135// invalid_double_type_comments: TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
12136static void *
12137invalid_double_type_comments_rule(Parser *p)
12138{
12139 if (p->error_indicator) {
12140 return NULL;
12141 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012142 void * _res = NULL;
12143 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012144 { // TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012145 if (p->error_indicator) {
12146 return NULL;
12147 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010012148 Token * indent_var;
12149 Token * newline_var;
12150 Token * newline_var_1;
12151 Token * type_comment_var;
12152 Token * type_comment_var_1;
Guido van Rossumc001c092020-04-30 12:12:19 -070012153 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012154 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070012155 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012156 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070012157 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012158 (type_comment_var_1 = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070012159 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012160 (newline_var_1 = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070012161 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012162 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070012163 )
12164 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012165 _res = RAISE_SYNTAX_ERROR ( "Cannot have two type comments on def" );
12166 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012167 p->error_indicator = 1;
12168 return NULL;
12169 }
12170 goto done;
12171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012172 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012174 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012175 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012176 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012177}
12178
Shantanu27c0d9b2020-05-11 14:53:58 -070012179// invalid_del_target: star_expression &del_target_end
12180static void *
12181invalid_del_target_rule(Parser *p)
12182{
12183 if (p->error_indicator) {
12184 return NULL;
12185 }
12186 void * _res = NULL;
12187 int _mark = p->mark;
12188 { // star_expression &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012189 if (p->error_indicator) {
12190 return NULL;
12191 }
Shantanu27c0d9b2020-05-11 14:53:58 -070012192 expr_ty a;
12193 if (
12194 (a = star_expression_rule(p)) // star_expression
12195 &&
12196 _PyPegen_lookahead(1, del_target_end_rule, p)
12197 )
12198 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012199 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot delete %s" , _PyPegen_get_expr_name ( a ) );
Shantanu27c0d9b2020-05-11 14:53:58 -070012200 if (_res == NULL && PyErr_Occurred()) {
12201 p->error_indicator = 1;
12202 return NULL;
12203 }
12204 goto done;
12205 }
12206 p->mark = _mark;
12207 }
12208 _res = NULL;
12209 done:
12210 return _res;
12211}
12212
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012213// _loop0_1: NEWLINE
12214static asdl_seq *
12215_loop0_1_rule(Parser *p)
12216{
12217 if (p->error_indicator) {
12218 return NULL;
12219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012220 void *_res = NULL;
12221 int _mark = p->mark;
12222 int _start_mark = p->mark;
12223 void **_children = PyMem_Malloc(sizeof(void *));
12224 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012225 p->error_indicator = 1;
12226 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012227 return NULL;
12228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012229 ssize_t _children_capacity = 1;
12230 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012231 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012232 if (p->error_indicator) {
12233 return NULL;
12234 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010012235 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012236 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010012237 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012238 )
12239 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012240 _res = newline_var;
12241 if (_n == _children_capacity) {
12242 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012243 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12244 if (!_new_children) {
12245 p->error_indicator = 1;
12246 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012247 return NULL;
12248 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012249 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012250 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012251 _children[_n++] = _res;
12252 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012254 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012255 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012256 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12257 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012258 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012259 p->error_indicator = 1;
12260 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012261 return NULL;
12262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012263 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12264 PyMem_Free(_children);
12265 _PyPegen_insert_memo(p, _start_mark, _loop0_1_type, _seq);
12266 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012267}
12268
Guido van Rossumc001c092020-04-30 12:12:19 -070012269// _loop0_2: NEWLINE
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012270static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012271_loop0_2_rule(Parser *p)
12272{
12273 if (p->error_indicator) {
12274 return NULL;
12275 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012276 void *_res = NULL;
12277 int _mark = p->mark;
12278 int _start_mark = p->mark;
12279 void **_children = PyMem_Malloc(sizeof(void *));
12280 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012281 p->error_indicator = 1;
12282 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012283 return NULL;
12284 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012285 ssize_t _children_capacity = 1;
12286 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012287 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012288 if (p->error_indicator) {
12289 return NULL;
12290 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010012291 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012292 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010012293 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070012294 )
12295 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012296 _res = newline_var;
12297 if (_n == _children_capacity) {
12298 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012299 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12300 if (!_new_children) {
12301 p->error_indicator = 1;
12302 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012303 return NULL;
12304 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012305 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012306 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012307 _children[_n++] = _res;
12308 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012309 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012310 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012311 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012312 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12313 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012314 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012315 p->error_indicator = 1;
12316 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012317 return NULL;
12318 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012319 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12320 PyMem_Free(_children);
12321 _PyPegen_insert_memo(p, _start_mark, _loop0_2_type, _seq);
12322 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012323}
12324
12325// _loop0_4: ',' expression
12326static asdl_seq *
12327_loop0_4_rule(Parser *p)
12328{
12329 if (p->error_indicator) {
12330 return NULL;
12331 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012332 void *_res = NULL;
12333 int _mark = p->mark;
12334 int _start_mark = p->mark;
12335 void **_children = PyMem_Malloc(sizeof(void *));
12336 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012337 p->error_indicator = 1;
12338 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012339 return NULL;
12340 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012341 ssize_t _children_capacity = 1;
12342 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012343 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012344 if (p->error_indicator) {
12345 return NULL;
12346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012347 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012348 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012349 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012350 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012351 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012352 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012353 )
12354 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012355 _res = elem;
12356 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012357 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012358 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012359 return NULL;
12360 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012361 if (_n == _children_capacity) {
12362 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012363 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12364 if (!_new_children) {
12365 p->error_indicator = 1;
12366 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012367 return NULL;
12368 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012369 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012370 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012371 _children[_n++] = _res;
12372 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012373 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012374 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012375 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012376 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12377 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012378 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012379 p->error_indicator = 1;
12380 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012381 return NULL;
12382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012383 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12384 PyMem_Free(_children);
12385 _PyPegen_insert_memo(p, _start_mark, _loop0_4_type, _seq);
12386 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012387}
12388
12389// _gather_3: expression _loop0_4
12390static asdl_seq *
12391_gather_3_rule(Parser *p)
12392{
12393 if (p->error_indicator) {
12394 return NULL;
12395 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012396 asdl_seq * _res = NULL;
12397 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012398 { // expression _loop0_4
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012399 if (p->error_indicator) {
12400 return NULL;
12401 }
Guido van Rossumc001c092020-04-30 12:12:19 -070012402 expr_ty elem;
12403 asdl_seq * seq;
12404 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012405 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012406 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012407 (seq = _loop0_4_rule(p)) // _loop0_4
Guido van Rossumc001c092020-04-30 12:12:19 -070012408 )
12409 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012410 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012411 goto done;
12412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012413 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012414 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012415 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012416 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012417 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012418}
12419
12420// _loop0_6: ',' expression
12421static asdl_seq *
12422_loop0_6_rule(Parser *p)
12423{
12424 if (p->error_indicator) {
12425 return NULL;
12426 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012427 void *_res = NULL;
12428 int _mark = p->mark;
12429 int _start_mark = p->mark;
12430 void **_children = PyMem_Malloc(sizeof(void *));
12431 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012432 p->error_indicator = 1;
12433 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012434 return NULL;
12435 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012436 ssize_t _children_capacity = 1;
12437 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012438 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012439 if (p->error_indicator) {
12440 return NULL;
12441 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012442 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012443 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012444 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012445 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012446 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012447 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012448 )
12449 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012450 _res = elem;
12451 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012452 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012453 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012454 return NULL;
12455 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012456 if (_n == _children_capacity) {
12457 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012458 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12459 if (!_new_children) {
12460 p->error_indicator = 1;
12461 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012462 return NULL;
12463 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012464 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012465 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012466 _children[_n++] = _res;
12467 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012469 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012470 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012471 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12472 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012473 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012474 p->error_indicator = 1;
12475 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012476 return NULL;
12477 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012478 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12479 PyMem_Free(_children);
12480 _PyPegen_insert_memo(p, _start_mark, _loop0_6_type, _seq);
12481 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012482}
12483
12484// _gather_5: expression _loop0_6
12485static asdl_seq *
12486_gather_5_rule(Parser *p)
12487{
12488 if (p->error_indicator) {
12489 return NULL;
12490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012491 asdl_seq * _res = NULL;
12492 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012493 { // expression _loop0_6
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012494 if (p->error_indicator) {
12495 return NULL;
12496 }
Guido van Rossumc001c092020-04-30 12:12:19 -070012497 expr_ty elem;
12498 asdl_seq * seq;
12499 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012500 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012501 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012502 (seq = _loop0_6_rule(p)) // _loop0_6
Guido van Rossumc001c092020-04-30 12:12:19 -070012503 )
12504 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012505 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012506 goto done;
12507 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012508 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012510 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012511 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012512 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012513}
12514
12515// _loop0_8: ',' expression
12516static asdl_seq *
12517_loop0_8_rule(Parser *p)
12518{
12519 if (p->error_indicator) {
12520 return NULL;
12521 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012522 void *_res = NULL;
12523 int _mark = p->mark;
12524 int _start_mark = p->mark;
12525 void **_children = PyMem_Malloc(sizeof(void *));
12526 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012527 p->error_indicator = 1;
12528 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012529 return NULL;
12530 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012531 ssize_t _children_capacity = 1;
12532 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012533 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012534 if (p->error_indicator) {
12535 return NULL;
12536 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012537 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012538 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012539 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012540 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012541 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012542 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012543 )
12544 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012545 _res = elem;
12546 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012547 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012548 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012549 return NULL;
12550 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012551 if (_n == _children_capacity) {
12552 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012553 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12554 if (!_new_children) {
12555 p->error_indicator = 1;
12556 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012557 return NULL;
12558 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012559 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012561 _children[_n++] = _res;
12562 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012563 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012564 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012566 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12567 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012568 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012569 p->error_indicator = 1;
12570 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012571 return NULL;
12572 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012573 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12574 PyMem_Free(_children);
12575 _PyPegen_insert_memo(p, _start_mark, _loop0_8_type, _seq);
12576 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012577}
12578
12579// _gather_7: expression _loop0_8
12580static asdl_seq *
12581_gather_7_rule(Parser *p)
12582{
12583 if (p->error_indicator) {
12584 return NULL;
12585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012586 asdl_seq * _res = NULL;
12587 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012588 { // expression _loop0_8
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012589 if (p->error_indicator) {
12590 return NULL;
12591 }
Guido van Rossumc001c092020-04-30 12:12:19 -070012592 expr_ty elem;
12593 asdl_seq * seq;
12594 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012595 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012596 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012597 (seq = _loop0_8_rule(p)) // _loop0_8
Guido van Rossumc001c092020-04-30 12:12:19 -070012598 )
12599 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012600 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012601 goto done;
12602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012603 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012604 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012605 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012606 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012607 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012608}
12609
12610// _loop0_10: ',' expression
12611static asdl_seq *
12612_loop0_10_rule(Parser *p)
12613{
12614 if (p->error_indicator) {
12615 return NULL;
12616 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012617 void *_res = NULL;
12618 int _mark = p->mark;
12619 int _start_mark = p->mark;
12620 void **_children = PyMem_Malloc(sizeof(void *));
12621 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012622 p->error_indicator = 1;
12623 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012624 return NULL;
12625 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012626 ssize_t _children_capacity = 1;
12627 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012628 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012629 if (p->error_indicator) {
12630 return NULL;
12631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012632 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012633 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012634 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012635 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012636 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012637 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012638 )
12639 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012640 _res = elem;
12641 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012642 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012643 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012644 return NULL;
12645 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012646 if (_n == _children_capacity) {
12647 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012648 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12649 if (!_new_children) {
12650 p->error_indicator = 1;
12651 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012652 return NULL;
12653 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012654 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012656 _children[_n++] = _res;
12657 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012658 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012659 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012660 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012661 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12662 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012663 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012664 p->error_indicator = 1;
12665 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012666 return NULL;
12667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012668 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12669 PyMem_Free(_children);
12670 _PyPegen_insert_memo(p, _start_mark, _loop0_10_type, _seq);
12671 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012672}
12673
12674// _gather_9: expression _loop0_10
12675static asdl_seq *
12676_gather_9_rule(Parser *p)
12677{
12678 if (p->error_indicator) {
12679 return NULL;
12680 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012681 asdl_seq * _res = NULL;
12682 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012683 { // expression _loop0_10
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012684 if (p->error_indicator) {
12685 return NULL;
12686 }
Guido van Rossumc001c092020-04-30 12:12:19 -070012687 expr_ty elem;
12688 asdl_seq * seq;
12689 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012690 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012691 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012692 (seq = _loop0_10_rule(p)) // _loop0_10
Guido van Rossumc001c092020-04-30 12:12:19 -070012693 )
12694 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012695 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012696 goto done;
12697 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012698 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012699 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012700 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012701 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012702 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012703}
12704
12705// _loop1_11: statement
12706static asdl_seq *
12707_loop1_11_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012708{
12709 if (p->error_indicator) {
12710 return NULL;
12711 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012712 void *_res = NULL;
12713 int _mark = p->mark;
12714 int _start_mark = p->mark;
12715 void **_children = PyMem_Malloc(sizeof(void *));
12716 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012717 p->error_indicator = 1;
12718 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012719 return NULL;
12720 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012721 ssize_t _children_capacity = 1;
12722 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012723 { // statement
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012724 if (p->error_indicator) {
12725 return NULL;
12726 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012727 asdl_seq* statement_var;
12728 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010012729 (statement_var = statement_rule(p)) // statement
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012730 )
12731 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012732 _res = statement_var;
12733 if (_n == _children_capacity) {
12734 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012735 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12736 if (!_new_children) {
12737 p->error_indicator = 1;
12738 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012739 return NULL;
12740 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012741 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012743 _children[_n++] = _res;
12744 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012745 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012746 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012747 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012748 if (_n == 0 || p->error_indicator) {
12749 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012750 return NULL;
12751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012752 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12753 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012754 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012755 p->error_indicator = 1;
12756 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012757 return NULL;
12758 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012759 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12760 PyMem_Free(_children);
12761 _PyPegen_insert_memo(p, _start_mark, _loop1_11_type, _seq);
12762 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012763}
12764
Guido van Rossumc001c092020-04-30 12:12:19 -070012765// _loop0_13: ';' small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012766static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012767_loop0_13_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 { // ';' small_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012784 if (p->error_indicator) {
12785 return NULL;
12786 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012787 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012788 stmt_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012789 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012790 (_literal = _PyPegen_expect_token(p, 13)) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012791 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012792 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012793 )
12794 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012795 _res = elem;
12796 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012797 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012798 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012799 return NULL;
12800 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012801 if (_n == _children_capacity) {
12802 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012803 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12804 if (!_new_children) {
12805 p->error_indicator = 1;
12806 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012807 return NULL;
12808 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012809 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012810 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012811 _children[_n++] = _res;
12812 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012813 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012814 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012816 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12817 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012818 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012819 p->error_indicator = 1;
12820 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012821 return NULL;
12822 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012823 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12824 PyMem_Free(_children);
12825 _PyPegen_insert_memo(p, _start_mark, _loop0_13_type, _seq);
12826 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012827}
12828
Guido van Rossumc001c092020-04-30 12:12:19 -070012829// _gather_12: small_stmt _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012830static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012831_gather_12_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012832{
12833 if (p->error_indicator) {
12834 return NULL;
12835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012836 asdl_seq * _res = NULL;
12837 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012838 { // small_stmt _loop0_13
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012839 if (p->error_indicator) {
12840 return NULL;
12841 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012842 stmt_ty elem;
12843 asdl_seq * seq;
12844 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012845 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012846 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012847 (seq = _loop0_13_rule(p)) // _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012848 )
12849 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012850 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012851 goto done;
12852 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012853 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012854 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012855 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012856 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012857 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012858}
12859
Guido van Rossumc001c092020-04-30 12:12:19 -070012860// _tmp_14: 'import' | 'from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012861static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070012862_tmp_14_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012863{
12864 if (p->error_indicator) {
12865 return NULL;
12866 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012867 void * _res = NULL;
12868 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012869 { // 'import'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012870 if (p->error_indicator) {
12871 return NULL;
12872 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012873 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012874 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012875 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012876 )
12877 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012878 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012879 goto done;
12880 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012881 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012882 }
12883 { // 'from'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012884 if (p->error_indicator) {
12885 return NULL;
12886 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012887 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012888 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012889 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012890 )
12891 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012892 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012893 goto done;
12894 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012895 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012896 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012897 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012898 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012899 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012900}
12901
Guido van Rossumc001c092020-04-30 12:12:19 -070012902// _tmp_15: 'def' | '@' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012903static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070012904_tmp_15_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012905{
12906 if (p->error_indicator) {
12907 return NULL;
12908 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012909 void * _res = NULL;
12910 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012911 { // 'def'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012912 if (p->error_indicator) {
12913 return NULL;
12914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012915 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012916 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012917 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012918 )
12919 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012920 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012921 goto done;
12922 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012923 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012924 }
12925 { // '@'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012926 if (p->error_indicator) {
12927 return NULL;
12928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012929 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012930 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012931 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012932 )
12933 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012934 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012935 goto done;
12936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012937 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012938 }
12939 { // ASYNC
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012940 if (p->error_indicator) {
12941 return NULL;
12942 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010012943 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012944 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012945 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012946 )
12947 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012948 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012949 goto done;
12950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012951 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012952 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012953 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012954 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012955 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012956}
12957
Guido van Rossumc001c092020-04-30 12:12:19 -070012958// _tmp_16: 'class' | '@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012959static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070012960_tmp_16_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012961{
12962 if (p->error_indicator) {
12963 return NULL;
12964 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012965 void * _res = NULL;
12966 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012967 { // 'class'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012968 if (p->error_indicator) {
12969 return NULL;
12970 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012971 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012972 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012973 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012974 )
12975 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012976 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012977 goto done;
12978 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012979 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012980 }
12981 { // '@'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012982 if (p->error_indicator) {
12983 return NULL;
12984 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012985 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012986 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012987 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012988 )
12989 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012990 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012991 goto done;
12992 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012993 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012994 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012995 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012996 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012997 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012998}
12999
Guido van Rossumc001c092020-04-30 12:12:19 -070013000// _tmp_17: 'with' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013001static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013002_tmp_17_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013003{
13004 if (p->error_indicator) {
13005 return NULL;
13006 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013007 void * _res = NULL;
13008 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013009 { // 'with'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013010 if (p->error_indicator) {
13011 return NULL;
13012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013013 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013014 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013015 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013016 )
13017 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013018 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013019 goto done;
13020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013021 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013022 }
13023 { // ASYNC
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013024 if (p->error_indicator) {
13025 return NULL;
13026 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010013027 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013028 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013029 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013030 )
13031 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013032 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013033 goto done;
13034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013035 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013037 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013038 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013039 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013040}
13041
Guido van Rossumc001c092020-04-30 12:12:19 -070013042// _tmp_18: 'for' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013043static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013044_tmp_18_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013045{
13046 if (p->error_indicator) {
13047 return NULL;
13048 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013049 void * _res = NULL;
13050 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013051 { // 'for'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013052 if (p->error_indicator) {
13053 return NULL;
13054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013055 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013056 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013057 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013058 )
13059 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013060 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013061 goto done;
13062 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013063 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013064 }
13065 { // ASYNC
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013066 if (p->error_indicator) {
13067 return NULL;
13068 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010013069 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013070 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013071 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013072 )
13073 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013074 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013075 goto done;
13076 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013077 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013079 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013080 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013081 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013082}
13083
Guido van Rossumc001c092020-04-30 12:12:19 -070013084// _tmp_19: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013085static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013086_tmp_19_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013087{
13088 if (p->error_indicator) {
13089 return NULL;
13090 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013091 void * _res = NULL;
13092 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013093 { // '=' annotated_rhs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013094 if (p->error_indicator) {
13095 return NULL;
13096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013097 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013098 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013099 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013100 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013101 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013102 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013103 )
13104 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013105 _res = d;
13106 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013107 p->error_indicator = 1;
13108 return NULL;
13109 }
13110 goto done;
13111 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013112 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013113 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013114 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013115 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013116 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013117}
13118
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013119// _tmp_20: '(' single_target ')' | single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013120static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013121_tmp_20_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013122{
13123 if (p->error_indicator) {
13124 return NULL;
13125 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013126 void * _res = NULL;
13127 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013128 { // '(' single_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013129 if (p->error_indicator) {
13130 return NULL;
13131 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013132 Token * _literal;
13133 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013134 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013135 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013136 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013137 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013138 (b = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013139 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013140 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013141 )
13142 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013143 _res = b;
13144 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013145 p->error_indicator = 1;
13146 return NULL;
13147 }
13148 goto done;
13149 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013150 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013151 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013152 { // single_subscript_attribute_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013153 if (p->error_indicator) {
13154 return NULL;
13155 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013156 expr_ty single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013157 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013158 (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p)) // single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013159 )
13160 {
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013161 _res = single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013162 goto done;
13163 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013164 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013165 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013166 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013167 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013168 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013169}
13170
Guido van Rossumc001c092020-04-30 12:12:19 -070013171// _tmp_21: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013172static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013173_tmp_21_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013174{
13175 if (p->error_indicator) {
13176 return NULL;
13177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013178 void * _res = NULL;
13179 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013180 { // '=' annotated_rhs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013181 if (p->error_indicator) {
13182 return NULL;
13183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013184 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013185 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013186 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013187 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013188 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013189 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013190 )
13191 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013192 _res = d;
13193 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013194 p->error_indicator = 1;
13195 return NULL;
13196 }
13197 goto done;
13198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013199 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013201 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013202 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013203 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013204}
13205
Guido van Rossumc001c092020-04-30 12:12:19 -070013206// _loop1_22: (star_targets '=')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013207static asdl_seq *
13208_loop1_22_rule(Parser *p)
13209{
13210 if (p->error_indicator) {
13211 return NULL;
13212 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013213 void *_res = NULL;
13214 int _mark = p->mark;
13215 int _start_mark = p->mark;
13216 void **_children = PyMem_Malloc(sizeof(void *));
13217 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013218 p->error_indicator = 1;
13219 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013220 return NULL;
13221 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013222 ssize_t _children_capacity = 1;
13223 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013224 { // (star_targets '=')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013225 if (p->error_indicator) {
13226 return NULL;
13227 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013228 void *_tmp_135_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013229 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013230 (_tmp_135_var = _tmp_135_rule(p)) // star_targets '='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013231 )
13232 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013233 _res = _tmp_135_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013234 if (_n == _children_capacity) {
13235 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013236 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13237 if (!_new_children) {
13238 p->error_indicator = 1;
13239 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013240 return NULL;
13241 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013242 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013244 _children[_n++] = _res;
13245 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013247 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013249 if (_n == 0 || p->error_indicator) {
13250 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013251 return NULL;
13252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013253 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13254 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013255 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013256 p->error_indicator = 1;
13257 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013258 return NULL;
13259 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013260 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13261 PyMem_Free(_children);
13262 _PyPegen_insert_memo(p, _start_mark, _loop1_22_type, _seq);
13263 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013264}
13265
Guido van Rossumc001c092020-04-30 12:12:19 -070013266// _tmp_23: yield_expr | star_expressions
13267static void *
13268_tmp_23_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;
Guido van Rossumc001c092020-04-30 12:12:19 -070013275 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013276 if (p->error_indicator) {
13277 return NULL;
13278 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013279 expr_ty yield_expr_var;
13280 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013281 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070013282 )
13283 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013284 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013285 goto done;
13286 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013287 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013288 }
13289 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013290 if (p->error_indicator) {
13291 return NULL;
13292 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013293 expr_ty star_expressions_var;
13294 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013295 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070013296 )
13297 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013298 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013299 goto done;
13300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013301 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013302 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013303 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013304 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013305 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013306}
13307
13308// _tmp_24: yield_expr | star_expressions
13309static void *
13310_tmp_24_rule(Parser *p)
13311{
13312 if (p->error_indicator) {
13313 return NULL;
13314 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013315 void * _res = NULL;
13316 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013317 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013318 if (p->error_indicator) {
13319 return NULL;
13320 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013321 expr_ty yield_expr_var;
13322 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013323 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070013324 )
13325 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013326 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013327 goto done;
13328 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013329 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013330 }
13331 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013332 if (p->error_indicator) {
13333 return NULL;
13334 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013335 expr_ty star_expressions_var;
13336 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013337 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070013338 )
13339 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013340 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013341 goto done;
13342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013343 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013344 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013345 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013346 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013347 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013348}
13349
13350// _loop0_26: ',' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013351static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070013352_loop0_26_rule(Parser *p)
13353{
13354 if (p->error_indicator) {
13355 return NULL;
13356 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013357 void *_res = NULL;
13358 int _mark = p->mark;
13359 int _start_mark = p->mark;
13360 void **_children = PyMem_Malloc(sizeof(void *));
13361 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013362 p->error_indicator = 1;
13363 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013364 return NULL;
13365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013366 ssize_t _children_capacity = 1;
13367 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013368 { // ',' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013369 if (p->error_indicator) {
13370 return NULL;
13371 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013372 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070013373 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070013374 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013375 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070013376 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013377 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070013378 )
13379 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013380 _res = elem;
13381 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013382 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013383 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013384 return NULL;
13385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013386 if (_n == _children_capacity) {
13387 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013388 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13389 if (!_new_children) {
13390 p->error_indicator = 1;
13391 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013392 return NULL;
13393 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013394 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013395 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013396 _children[_n++] = _res;
13397 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013399 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013400 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013401 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13402 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013403 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013404 p->error_indicator = 1;
13405 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013406 return NULL;
13407 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013408 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13409 PyMem_Free(_children);
13410 _PyPegen_insert_memo(p, _start_mark, _loop0_26_type, _seq);
13411 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013412}
13413
13414// _gather_25: NAME _loop0_26
13415static asdl_seq *
13416_gather_25_rule(Parser *p)
13417{
13418 if (p->error_indicator) {
13419 return NULL;
13420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013421 asdl_seq * _res = NULL;
13422 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013423 { // NAME _loop0_26
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013424 if (p->error_indicator) {
13425 return NULL;
13426 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013427 expr_ty elem;
13428 asdl_seq * seq;
13429 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013430 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070013431 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013432 (seq = _loop0_26_rule(p)) // _loop0_26
Guido van Rossumc001c092020-04-30 12:12:19 -070013433 )
13434 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013435 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070013436 goto done;
13437 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013438 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013440 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013441 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013442 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013443}
13444
13445// _loop0_28: ',' NAME
13446static asdl_seq *
13447_loop0_28_rule(Parser *p)
13448{
13449 if (p->error_indicator) {
13450 return NULL;
13451 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013452 void *_res = NULL;
13453 int _mark = p->mark;
13454 int _start_mark = p->mark;
13455 void **_children = PyMem_Malloc(sizeof(void *));
13456 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013457 p->error_indicator = 1;
13458 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013459 return NULL;
13460 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013461 ssize_t _children_capacity = 1;
13462 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013463 { // ',' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013464 if (p->error_indicator) {
13465 return NULL;
13466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013467 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070013468 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070013469 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013470 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070013471 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013472 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070013473 )
13474 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013475 _res = elem;
13476 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013477 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013478 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013479 return NULL;
13480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013481 if (_n == _children_capacity) {
13482 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013483 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13484 if (!_new_children) {
13485 p->error_indicator = 1;
13486 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013487 return NULL;
13488 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013489 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013491 _children[_n++] = _res;
13492 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013494 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013495 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013496 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13497 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013498 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013499 p->error_indicator = 1;
13500 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013501 return NULL;
13502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013503 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13504 PyMem_Free(_children);
13505 _PyPegen_insert_memo(p, _start_mark, _loop0_28_type, _seq);
13506 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013507}
13508
13509// _gather_27: NAME _loop0_28
13510static asdl_seq *
13511_gather_27_rule(Parser *p)
13512{
13513 if (p->error_indicator) {
13514 return NULL;
13515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013516 asdl_seq * _res = NULL;
13517 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013518 { // NAME _loop0_28
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013519 if (p->error_indicator) {
13520 return NULL;
13521 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013522 expr_ty elem;
13523 asdl_seq * seq;
13524 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013525 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070013526 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013527 (seq = _loop0_28_rule(p)) // _loop0_28
Guido van Rossumc001c092020-04-30 12:12:19 -070013528 )
13529 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013530 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070013531 goto done;
13532 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013533 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013534 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013535 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013536 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013537 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013538}
13539
13540// _tmp_29: ',' expression
13541static void *
13542_tmp_29_rule(Parser *p)
13543{
13544 if (p->error_indicator) {
13545 return NULL;
13546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013547 void * _res = NULL;
13548 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013549 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013550 if (p->error_indicator) {
13551 return NULL;
13552 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013553 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070013554 expr_ty z;
13555 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013556 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070013557 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013558 (z = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070013559 )
13560 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013561 _res = z;
13562 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013563 p->error_indicator = 1;
13564 return NULL;
13565 }
13566 goto done;
13567 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013568 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013570 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013571 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013572 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013573}
13574
13575// _loop0_30: ('.' | '...')
13576static asdl_seq *
13577_loop0_30_rule(Parser *p)
13578{
13579 if (p->error_indicator) {
13580 return NULL;
13581 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013582 void *_res = NULL;
13583 int _mark = p->mark;
13584 int _start_mark = p->mark;
13585 void **_children = PyMem_Malloc(sizeof(void *));
13586 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013587 p->error_indicator = 1;
13588 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013589 return NULL;
13590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013591 ssize_t _children_capacity = 1;
13592 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013593 { // ('.' | '...')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013594 if (p->error_indicator) {
13595 return NULL;
13596 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013597 void *_tmp_136_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013598 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013599 (_tmp_136_var = _tmp_136_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070013600 )
13601 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013602 _res = _tmp_136_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013603 if (_n == _children_capacity) {
13604 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013605 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13606 if (!_new_children) {
13607 p->error_indicator = 1;
13608 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013609 return NULL;
13610 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013611 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013613 _children[_n++] = _res;
13614 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013616 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013617 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013618 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13619 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013620 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013621 p->error_indicator = 1;
13622 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013623 return NULL;
13624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013625 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13626 PyMem_Free(_children);
13627 _PyPegen_insert_memo(p, _start_mark, _loop0_30_type, _seq);
13628 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013629}
13630
13631// _loop1_31: ('.' | '...')
13632static asdl_seq *
13633_loop1_31_rule(Parser *p)
13634{
13635 if (p->error_indicator) {
13636 return NULL;
13637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013638 void *_res = NULL;
13639 int _mark = p->mark;
13640 int _start_mark = p->mark;
13641 void **_children = PyMem_Malloc(sizeof(void *));
13642 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013643 p->error_indicator = 1;
13644 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013645 return NULL;
13646 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013647 ssize_t _children_capacity = 1;
13648 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013649 { // ('.' | '...')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013650 if (p->error_indicator) {
13651 return NULL;
13652 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013653 void *_tmp_137_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013654 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013655 (_tmp_137_var = _tmp_137_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070013656 )
13657 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013658 _res = _tmp_137_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013659 if (_n == _children_capacity) {
13660 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013661 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13662 if (!_new_children) {
13663 p->error_indicator = 1;
13664 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013665 return NULL;
13666 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013667 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013668 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013669 _children[_n++] = _res;
13670 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013671 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013672 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013673 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013674 if (_n == 0 || p->error_indicator) {
13675 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013676 return NULL;
13677 }
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, _loop1_31_type, _seq);
13688 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013689}
13690
13691// _loop0_33: ',' import_from_as_name
13692static asdl_seq *
13693_loop0_33_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013694{
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();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013705 return NULL;
13706 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013707 ssize_t _children_capacity = 1;
13708 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013709 { // ',' import_from_as_name
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013710 if (p->error_indicator) {
13711 return NULL;
13712 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013713 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013714 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013715 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013716 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013717 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013718 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013719 )
13720 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013721 _res = elem;
13722 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013723 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013724 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013725 return NULL;
13726 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013727 if (_n == _children_capacity) {
13728 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013729 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13730 if (!_new_children) {
13731 p->error_indicator = 1;
13732 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013733 return NULL;
13734 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013735 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013736 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013737 _children[_n++] = _res;
13738 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013740 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013741 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013742 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13743 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013744 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013745 p->error_indicator = 1;
13746 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013747 return NULL;
13748 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013749 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13750 PyMem_Free(_children);
13751 _PyPegen_insert_memo(p, _start_mark, _loop0_33_type, _seq);
13752 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013753}
13754
Guido van Rossumc001c092020-04-30 12:12:19 -070013755// _gather_32: import_from_as_name _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013756static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070013757_gather_32_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013758{
13759 if (p->error_indicator) {
13760 return NULL;
13761 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013762 asdl_seq * _res = NULL;
13763 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013764 { // import_from_as_name _loop0_33
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013765 if (p->error_indicator) {
13766 return NULL;
13767 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013768 alias_ty elem;
13769 asdl_seq * seq;
13770 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013771 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013772 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013773 (seq = _loop0_33_rule(p)) // _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013774 )
13775 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013776 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013777 goto done;
13778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013779 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013781 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013782 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013783 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013784}
13785
Guido van Rossumc001c092020-04-30 12:12:19 -070013786// _tmp_34: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013787static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013788_tmp_34_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013789{
13790 if (p->error_indicator) {
13791 return NULL;
13792 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013793 void * _res = NULL;
13794 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013795 { // 'as' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013796 if (p->error_indicator) {
13797 return NULL;
13798 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013799 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013800 expr_ty z;
13801 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013802 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013803 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013804 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013805 )
13806 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013807 _res = z;
13808 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013809 p->error_indicator = 1;
13810 return NULL;
13811 }
13812 goto done;
13813 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013814 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013816 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013817 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013818 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013819}
13820
Guido van Rossumc001c092020-04-30 12:12:19 -070013821// _loop0_36: ',' dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013822static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070013823_loop0_36_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013824{
13825 if (p->error_indicator) {
13826 return NULL;
13827 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013828 void *_res = NULL;
13829 int _mark = p->mark;
13830 int _start_mark = p->mark;
13831 void **_children = PyMem_Malloc(sizeof(void *));
13832 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013833 p->error_indicator = 1;
13834 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013835 return NULL;
13836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013837 ssize_t _children_capacity = 1;
13838 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013839 { // ',' dotted_as_name
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013840 if (p->error_indicator) {
13841 return NULL;
13842 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013843 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013844 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013845 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013846 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013847 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013848 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013849 )
13850 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013851 _res = elem;
13852 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013853 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013854 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013855 return NULL;
13856 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013857 if (_n == _children_capacity) {
13858 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013859 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13860 if (!_new_children) {
13861 p->error_indicator = 1;
13862 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013863 return NULL;
13864 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013865 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013866 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013867 _children[_n++] = _res;
13868 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013869 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013870 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013871 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013872 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13873 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013874 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013875 p->error_indicator = 1;
13876 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013877 return NULL;
13878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013879 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13880 PyMem_Free(_children);
13881 _PyPegen_insert_memo(p, _start_mark, _loop0_36_type, _seq);
13882 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013883}
13884
Guido van Rossumc001c092020-04-30 12:12:19 -070013885// _gather_35: dotted_as_name _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013886static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070013887_gather_35_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013888{
13889 if (p->error_indicator) {
13890 return NULL;
13891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013892 asdl_seq * _res = NULL;
13893 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013894 { // dotted_as_name _loop0_36
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013895 if (p->error_indicator) {
13896 return NULL;
13897 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013898 alias_ty elem;
13899 asdl_seq * seq;
13900 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013901 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013902 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013903 (seq = _loop0_36_rule(p)) // _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013904 )
13905 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013906 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013907 goto done;
13908 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013909 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013911 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013912 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013913 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013914}
13915
Guido van Rossumc001c092020-04-30 12:12:19 -070013916// _tmp_37: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013917static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013918_tmp_37_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013919{
13920 if (p->error_indicator) {
13921 return NULL;
13922 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013923 void * _res = NULL;
13924 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013925 { // 'as' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013926 if (p->error_indicator) {
13927 return NULL;
13928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013929 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013930 expr_ty z;
13931 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013932 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013933 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013934 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013935 )
13936 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013937 _res = z;
13938 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013939 p->error_indicator = 1;
13940 return NULL;
13941 }
13942 goto done;
13943 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013944 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013945 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013946 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013947 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013948 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013949}
13950
Guido van Rossumc001c092020-04-30 12:12:19 -070013951// _loop0_39: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013952static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070013953_loop0_39_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013954{
13955 if (p->error_indicator) {
13956 return NULL;
13957 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013958 void *_res = NULL;
13959 int _mark = p->mark;
13960 int _start_mark = p->mark;
13961 void **_children = PyMem_Malloc(sizeof(void *));
13962 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013963 p->error_indicator = 1;
13964 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013965 return NULL;
13966 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013967 ssize_t _children_capacity = 1;
13968 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013969 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013970 if (p->error_indicator) {
13971 return NULL;
13972 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013973 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013974 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013975 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013976 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013977 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013978 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013979 )
13980 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013981 _res = elem;
13982 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013983 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013984 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013985 return NULL;
13986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013987 if (_n == _children_capacity) {
13988 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013989 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13990 if (!_new_children) {
13991 p->error_indicator = 1;
13992 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013993 return NULL;
13994 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013995 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013996 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013997 _children[_n++] = _res;
13998 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013999 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014000 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014001 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014002 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14003 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014004 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014005 p->error_indicator = 1;
14006 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014007 return NULL;
14008 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014009 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14010 PyMem_Free(_children);
14011 _PyPegen_insert_memo(p, _start_mark, _loop0_39_type, _seq);
14012 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014013}
14014
Guido van Rossumc001c092020-04-30 12:12:19 -070014015// _gather_38: with_item _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014016static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070014017_gather_38_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014018{
14019 if (p->error_indicator) {
14020 return NULL;
14021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014022 asdl_seq * _res = NULL;
14023 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014024 { // with_item _loop0_39
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014025 if (p->error_indicator) {
14026 return NULL;
14027 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014028 withitem_ty elem;
14029 asdl_seq * seq;
14030 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014031 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014032 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014033 (seq = _loop0_39_rule(p)) // _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014034 )
14035 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014036 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014037 goto done;
14038 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014039 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014040 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014041 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014042 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014043 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014044}
14045
Guido van Rossumc001c092020-04-30 12:12:19 -070014046// _loop0_41: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014047static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070014048_loop0_41_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014049{
14050 if (p->error_indicator) {
14051 return NULL;
14052 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014053 void *_res = NULL;
14054 int _mark = p->mark;
14055 int _start_mark = p->mark;
14056 void **_children = PyMem_Malloc(sizeof(void *));
14057 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014058 p->error_indicator = 1;
14059 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014060 return NULL;
14061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014062 ssize_t _children_capacity = 1;
14063 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014064 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014065 if (p->error_indicator) {
14066 return NULL;
14067 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014068 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014069 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014070 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014071 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014072 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014073 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014074 )
14075 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014076 _res = elem;
14077 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014078 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014079 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014080 return NULL;
14081 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014082 if (_n == _children_capacity) {
14083 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014084 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14085 if (!_new_children) {
14086 p->error_indicator = 1;
14087 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014088 return NULL;
14089 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014090 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014091 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014092 _children[_n++] = _res;
14093 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014095 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014097 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14098 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014099 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014100 p->error_indicator = 1;
14101 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014102 return NULL;
14103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014104 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14105 PyMem_Free(_children);
14106 _PyPegen_insert_memo(p, _start_mark, _loop0_41_type, _seq);
14107 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014108}
14109
Guido van Rossumc001c092020-04-30 12:12:19 -070014110// _gather_40: with_item _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014111static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070014112_gather_40_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014113{
14114 if (p->error_indicator) {
14115 return NULL;
14116 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014117 asdl_seq * _res = NULL;
14118 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014119 { // with_item _loop0_41
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014120 if (p->error_indicator) {
14121 return NULL;
14122 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014123 withitem_ty elem;
14124 asdl_seq * seq;
14125 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014126 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014127 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014128 (seq = _loop0_41_rule(p)) // _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014129 )
14130 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014131 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014132 goto done;
14133 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014134 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014135 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014136 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014137 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014138 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014139}
14140
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014141// _loop0_43: ',' with_item
14142static asdl_seq *
14143_loop0_43_rule(Parser *p)
14144{
14145 if (p->error_indicator) {
14146 return NULL;
14147 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014148 void *_res = NULL;
14149 int _mark = p->mark;
14150 int _start_mark = p->mark;
14151 void **_children = PyMem_Malloc(sizeof(void *));
14152 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014153 p->error_indicator = 1;
14154 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014155 return NULL;
14156 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014157 ssize_t _children_capacity = 1;
14158 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014159 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014160 if (p->error_indicator) {
14161 return NULL;
14162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014163 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014164 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014165 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014166 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014167 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014168 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014169 )
14170 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014171 _res = elem;
14172 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014173 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014174 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014175 return NULL;
14176 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014177 if (_n == _children_capacity) {
14178 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014179 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14180 if (!_new_children) {
14181 p->error_indicator = 1;
14182 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014183 return NULL;
14184 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014185 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014186 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014187 _children[_n++] = _res;
14188 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014189 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014190 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014191 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014192 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14193 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014194 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014195 p->error_indicator = 1;
14196 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014197 return NULL;
14198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014199 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14200 PyMem_Free(_children);
14201 _PyPegen_insert_memo(p, _start_mark, _loop0_43_type, _seq);
14202 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014203}
14204
14205// _gather_42: with_item _loop0_43
14206static asdl_seq *
14207_gather_42_rule(Parser *p)
14208{
14209 if (p->error_indicator) {
14210 return NULL;
14211 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014212 asdl_seq * _res = NULL;
14213 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014214 { // with_item _loop0_43
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014215 if (p->error_indicator) {
14216 return NULL;
14217 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014218 withitem_ty elem;
14219 asdl_seq * seq;
14220 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014221 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014222 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014223 (seq = _loop0_43_rule(p)) // _loop0_43
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014224 )
14225 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014226 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014227 goto done;
14228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014229 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014230 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014231 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014232 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014233 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014234}
14235
14236// _loop0_45: ',' with_item
14237static asdl_seq *
14238_loop0_45_rule(Parser *p)
14239{
14240 if (p->error_indicator) {
14241 return NULL;
14242 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014243 void *_res = NULL;
14244 int _mark = p->mark;
14245 int _start_mark = p->mark;
14246 void **_children = PyMem_Malloc(sizeof(void *));
14247 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014248 p->error_indicator = 1;
14249 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014250 return NULL;
14251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014252 ssize_t _children_capacity = 1;
14253 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014254 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014255 if (p->error_indicator) {
14256 return NULL;
14257 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014258 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014259 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014260 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014261 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014262 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014263 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014264 )
14265 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014266 _res = elem;
14267 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014268 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014269 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014270 return NULL;
14271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014272 if (_n == _children_capacity) {
14273 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014274 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14275 if (!_new_children) {
14276 p->error_indicator = 1;
14277 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014278 return NULL;
14279 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014280 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014281 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014282 _children[_n++] = _res;
14283 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014284 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014285 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014286 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014287 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14288 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014289 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014290 p->error_indicator = 1;
14291 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014292 return NULL;
14293 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014294 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14295 PyMem_Free(_children);
14296 _PyPegen_insert_memo(p, _start_mark, _loop0_45_type, _seq);
14297 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014298}
14299
14300// _gather_44: with_item _loop0_45
14301static asdl_seq *
14302_gather_44_rule(Parser *p)
14303{
14304 if (p->error_indicator) {
14305 return NULL;
14306 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014307 asdl_seq * _res = NULL;
14308 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014309 { // with_item _loop0_45
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014310 if (p->error_indicator) {
14311 return NULL;
14312 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014313 withitem_ty elem;
14314 asdl_seq * seq;
14315 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014316 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014317 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014318 (seq = _loop0_45_rule(p)) // _loop0_45
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014319 )
14320 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014321 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014322 goto done;
14323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014324 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014325 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014326 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014327 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014328 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014329}
14330
14331// _tmp_46: 'as' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014332static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014333_tmp_46_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014334{
14335 if (p->error_indicator) {
14336 return NULL;
14337 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014338 void * _res = NULL;
14339 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014340 { // 'as' target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014341 if (p->error_indicator) {
14342 return NULL;
14343 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014344 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014345 expr_ty t;
14346 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014347 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014348 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014349 (t = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014350 )
14351 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014352 _res = t;
14353 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014354 p->error_indicator = 1;
14355 return NULL;
14356 }
14357 goto done;
14358 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014359 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014360 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014361 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014362 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014363 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014364}
14365
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014366// _loop1_47: except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014367static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014368_loop1_47_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014369{
14370 if (p->error_indicator) {
14371 return NULL;
14372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014373 void *_res = NULL;
14374 int _mark = p->mark;
14375 int _start_mark = p->mark;
14376 void **_children = PyMem_Malloc(sizeof(void *));
14377 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014378 p->error_indicator = 1;
14379 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014380 return NULL;
14381 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014382 ssize_t _children_capacity = 1;
14383 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014384 { // except_block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014385 if (p->error_indicator) {
14386 return NULL;
14387 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014388 excepthandler_ty except_block_var;
14389 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014390 (except_block_var = except_block_rule(p)) // except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014391 )
14392 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014393 _res = except_block_var;
14394 if (_n == _children_capacity) {
14395 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014396 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14397 if (!_new_children) {
14398 p->error_indicator = 1;
14399 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014400 return NULL;
14401 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014402 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014403 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014404 _children[_n++] = _res;
14405 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014407 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014408 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014409 if (_n == 0 || p->error_indicator) {
14410 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014411 return NULL;
14412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014413 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14414 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014415 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014416 p->error_indicator = 1;
14417 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014418 return NULL;
14419 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014420 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14421 PyMem_Free(_children);
14422 _PyPegen_insert_memo(p, _start_mark, _loop1_47_type, _seq);
14423 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014424}
14425
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030014426// _tmp_48: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014427static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014428_tmp_48_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;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030014435 { // 'as' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014436 if (p->error_indicator) {
14437 return NULL;
14438 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014439 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014440 expr_ty z;
14441 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014442 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014443 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030014444 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014445 )
14446 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014447 _res = z;
14448 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014449 p->error_indicator = 1;
14450 return NULL;
14451 }
14452 goto done;
14453 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014454 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014455 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014456 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014457 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014458 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014459}
14460
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014461// _tmp_49: 'from' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014462static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014463_tmp_49_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014464{
14465 if (p->error_indicator) {
14466 return NULL;
14467 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014468 void * _res = NULL;
14469 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014470 { // 'from' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014471 if (p->error_indicator) {
14472 return NULL;
14473 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014474 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014475 expr_ty z;
14476 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014477 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014478 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014479 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014480 )
14481 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014482 _res = z;
14483 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014484 p->error_indicator = 1;
14485 return NULL;
14486 }
14487 goto done;
14488 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014489 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014491 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014492 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014493 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014494}
14495
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014496// _tmp_50: '->' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014497static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014498_tmp_50_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014499{
14500 if (p->error_indicator) {
14501 return NULL;
14502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014503 void * _res = NULL;
14504 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014505 { // '->' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014506 if (p->error_indicator) {
14507 return NULL;
14508 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014509 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070014510 expr_ty z;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014511 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014512 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014513 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014514 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014515 )
14516 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014517 _res = z;
14518 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014519 p->error_indicator = 1;
14520 return NULL;
14521 }
14522 goto done;
14523 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014524 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014525 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014526 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014527 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014528 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014529}
14530
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014531// _tmp_51: '->' expression
Guido van Rossumc001c092020-04-30 12:12:19 -070014532static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014533_tmp_51_rule(Parser *p)
14534{
14535 if (p->error_indicator) {
14536 return NULL;
14537 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014538 void * _res = NULL;
14539 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014540 { // '->' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014541 if (p->error_indicator) {
14542 return NULL;
14543 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014544 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014545 expr_ty z;
14546 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014547 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014548 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014549 (z = expression_rule(p)) // expression
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014550 )
14551 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014552 _res = z;
14553 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014554 p->error_indicator = 1;
14555 return NULL;
14556 }
14557 goto done;
14558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014559 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014561 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014562 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014563 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014564}
14565
14566// _tmp_52: NEWLINE INDENT
14567static void *
14568_tmp_52_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070014569{
14570 if (p->error_indicator) {
14571 return NULL;
14572 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014573 void * _res = NULL;
14574 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014575 { // NEWLINE INDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014576 if (p->error_indicator) {
14577 return NULL;
14578 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010014579 Token * indent_var;
14580 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070014581 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014582 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070014583 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014584 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070014585 )
14586 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014587 _res = _PyPegen_dummy_name(p, newline_var, indent_var);
Guido van Rossumc001c092020-04-30 12:12:19 -070014588 goto done;
14589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014590 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014591 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014592 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070014593 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014594 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070014595}
14596
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014597// _loop0_53: param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014598static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014599_loop0_53_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014600{
14601 if (p->error_indicator) {
14602 return NULL;
14603 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014604 void *_res = NULL;
14605 int _mark = p->mark;
14606 int _start_mark = p->mark;
14607 void **_children = PyMem_Malloc(sizeof(void *));
14608 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014609 p->error_indicator = 1;
14610 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014611 return NULL;
14612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014613 ssize_t _children_capacity = 1;
14614 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014615 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014616 if (p->error_indicator) {
14617 return NULL;
14618 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014619 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014620 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014621 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014622 )
14623 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014624 _res = param_no_default_var;
14625 if (_n == _children_capacity) {
14626 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014627 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14628 if (!_new_children) {
14629 p->error_indicator = 1;
14630 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014631 return NULL;
14632 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014633 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014634 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014635 _children[_n++] = _res;
14636 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014638 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014639 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014640 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14641 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014642 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014643 p->error_indicator = 1;
14644 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014645 return NULL;
14646 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014647 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14648 PyMem_Free(_children);
14649 _PyPegen_insert_memo(p, _start_mark, _loop0_53_type, _seq);
14650 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014651}
14652
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014653// _loop0_54: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014654static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014655_loop0_54_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014656{
14657 if (p->error_indicator) {
14658 return NULL;
14659 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014660 void *_res = NULL;
14661 int _mark = p->mark;
14662 int _start_mark = p->mark;
14663 void **_children = PyMem_Malloc(sizeof(void *));
14664 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014665 p->error_indicator = 1;
14666 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014667 return NULL;
14668 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014669 ssize_t _children_capacity = 1;
14670 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014671 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014672 if (p->error_indicator) {
14673 return NULL;
14674 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014675 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014676 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014677 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014678 )
14679 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014680 _res = param_with_default_var;
14681 if (_n == _children_capacity) {
14682 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014683 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14684 if (!_new_children) {
14685 p->error_indicator = 1;
14686 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014687 return NULL;
14688 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014689 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070014690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014691 _children[_n++] = _res;
14692 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014694 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014695 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014696 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14697 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014698 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014699 p->error_indicator = 1;
14700 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014701 return NULL;
14702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014703 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14704 PyMem_Free(_children);
14705 _PyPegen_insert_memo(p, _start_mark, _loop0_54_type, _seq);
14706 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070014707}
14708
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014709// _loop0_55: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014710static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014711_loop0_55_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070014712{
14713 if (p->error_indicator) {
14714 return NULL;
14715 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014716 void *_res = NULL;
14717 int _mark = p->mark;
14718 int _start_mark = p->mark;
14719 void **_children = PyMem_Malloc(sizeof(void *));
14720 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014721 p->error_indicator = 1;
14722 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014723 return NULL;
14724 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014725 ssize_t _children_capacity = 1;
14726 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014727 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014728 if (p->error_indicator) {
14729 return NULL;
14730 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014731 NameDefaultPair* param_with_default_var;
14732 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014733 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014734 )
14735 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014736 _res = param_with_default_var;
14737 if (_n == _children_capacity) {
14738 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014739 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14740 if (!_new_children) {
14741 p->error_indicator = 1;
14742 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014743 return NULL;
14744 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014745 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070014746 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014747 _children[_n++] = _res;
14748 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014749 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014750 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014752 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14753 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014754 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014755 p->error_indicator = 1;
14756 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014757 return NULL;
14758 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014759 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14760 PyMem_Free(_children);
14761 _PyPegen_insert_memo(p, _start_mark, _loop0_55_type, _seq);
14762 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070014763}
14764
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014765// _loop1_56: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014766static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014767_loop1_56_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070014768{
14769 if (p->error_indicator) {
14770 return NULL;
14771 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014772 void *_res = NULL;
14773 int _mark = p->mark;
14774 int _start_mark = p->mark;
14775 void **_children = PyMem_Malloc(sizeof(void *));
14776 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014777 p->error_indicator = 1;
14778 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014779 return NULL;
14780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014781 ssize_t _children_capacity = 1;
14782 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014783 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014784 if (p->error_indicator) {
14785 return NULL;
14786 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014787 arg_ty param_no_default_var;
14788 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014789 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014790 )
14791 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014792 _res = param_no_default_var;
14793 if (_n == _children_capacity) {
14794 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014795 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14796 if (!_new_children) {
14797 p->error_indicator = 1;
14798 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014799 return NULL;
14800 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014801 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014802 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014803 _children[_n++] = _res;
14804 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014805 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014806 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014807 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014808 if (_n == 0 || p->error_indicator) {
14809 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014810 return NULL;
14811 }
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();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014817 return NULL;
14818 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014819 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14820 PyMem_Free(_children);
14821 _PyPegen_insert_memo(p, _start_mark, _loop1_56_type, _seq);
14822 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014823}
14824
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014825// _loop0_57: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014826static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014827_loop0_57_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014828{
14829 if (p->error_indicator) {
14830 return NULL;
14831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014832 void *_res = NULL;
14833 int _mark = p->mark;
14834 int _start_mark = p->mark;
14835 void **_children = PyMem_Malloc(sizeof(void *));
14836 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014837 p->error_indicator = 1;
14838 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014839 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_with_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 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014848 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014849 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014850 )
14851 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014852 _res = param_with_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 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14869 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014870 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014871 p->error_indicator = 1;
14872 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014873 return NULL;
14874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014875 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14876 PyMem_Free(_children);
14877 _PyPegen_insert_memo(p, _start_mark, _loop0_57_type, _seq);
14878 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014879}
14880
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014881// _loop1_58: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014882static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014883_loop1_58_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014884{
14885 if (p->error_indicator) {
14886 return NULL;
14887 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014888 void *_res = NULL;
14889 int _mark = p->mark;
14890 int _start_mark = p->mark;
14891 void **_children = PyMem_Malloc(sizeof(void *));
14892 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014893 p->error_indicator = 1;
14894 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014895 return NULL;
14896 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014897 ssize_t _children_capacity = 1;
14898 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014899 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014900 if (p->error_indicator) {
14901 return NULL;
14902 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014903 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014904 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014905 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014906 )
14907 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014908 _res = param_with_default_var;
14909 if (_n == _children_capacity) {
14910 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014911 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14912 if (!_new_children) {
14913 p->error_indicator = 1;
14914 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014915 return NULL;
14916 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014917 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014918 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014919 _children[_n++] = _res;
14920 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014921 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014922 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014924 if (_n == 0 || p->error_indicator) {
14925 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070014926 return NULL;
14927 }
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();
Guido van Rossumc001c092020-04-30 12:12:19 -070014933 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, _loop1_58_type, _seq);
14938 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070014939}
14940
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014941// _loop1_59: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014942static asdl_seq *
14943_loop1_59_rule(Parser *p)
14944{
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();
Guido van Rossumc001c092020-04-30 12:12:19 -070014955 return NULL;
14956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014957 ssize_t _children_capacity = 1;
14958 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014959 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014960 if (p->error_indicator) {
14961 return NULL;
14962 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014963 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070014964 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014965 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014966 )
14967 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014968 _res = param_no_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;
Guido van Rossumc001c092020-04-30 12:12:19 -070014978 }
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_59_type, _seq);
14998 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070014999}
15000
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015001// _loop1_60: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015002static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015003_loop1_60_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070015004{
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_60_type, _seq);
15058 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015059}
15060
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015061// _loop0_61: param_no_default
15062static asdl_seq *
15063_loop0_61_rule(Parser *p)
15064{
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();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015075 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;
15084 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015085 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015086 )
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();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015095 return NULL;
15096 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015097 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015098 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015099 _children[_n++] = _res;
15100 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015102 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015104 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15105 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015106 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015107 p->error_indicator = 1;
15108 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015109 return NULL;
15110 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015111 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15112 PyMem_Free(_children);
15113 _PyPegen_insert_memo(p, _start_mark, _loop0_61_type, _seq);
15114 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015115}
15116
15117// _loop1_62: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015118static asdl_seq *
15119_loop1_62_rule(Parser *p)
15120{
15121 if (p->error_indicator) {
15122 return NULL;
15123 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015124 void *_res = NULL;
15125 int _mark = p->mark;
15126 int _start_mark = p->mark;
15127 void **_children = PyMem_Malloc(sizeof(void *));
15128 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015129 p->error_indicator = 1;
15130 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015131 return NULL;
15132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015133 ssize_t _children_capacity = 1;
15134 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015135 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015136 if (p->error_indicator) {
15137 return NULL;
15138 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015139 NameDefaultPair* param_with_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070015140 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015141 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015142 )
15143 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015144 _res = param_with_default_var;
15145 if (_n == _children_capacity) {
15146 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015147 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15148 if (!_new_children) {
15149 p->error_indicator = 1;
15150 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015151 return NULL;
15152 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015153 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070015154 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015155 _children[_n++] = _res;
15156 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015158 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015159 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015160 if (_n == 0 || p->error_indicator) {
15161 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070015162 return NULL;
15163 }
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();
Guido van Rossumc001c092020-04-30 12:12:19 -070015169 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, _loop1_62_type, _seq);
15174 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015175}
15176
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015177// _loop0_63: param_no_default
15178static asdl_seq *
15179_loop0_63_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();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015191 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_no_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 arg_ty param_no_default_var;
15200 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015201 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015202 )
15203 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015204 _res = param_no_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();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015211 return NULL;
15212 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015213 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015214 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015215 _children[_n++] = _res;
15216 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015218 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015220 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15221 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015222 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015223 p->error_indicator = 1;
15224 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015225 return NULL;
15226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015227 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15228 PyMem_Free(_children);
15229 _PyPegen_insert_memo(p, _start_mark, _loop0_63_type, _seq);
15230 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015231}
15232
15233// _loop1_64: param_with_default
15234static asdl_seq *
15235_loop1_64_rule(Parser *p)
15236{
15237 if (p->error_indicator) {
15238 return NULL;
15239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015240 void *_res = NULL;
15241 int _mark = p->mark;
15242 int _start_mark = p->mark;
15243 void **_children = PyMem_Malloc(sizeof(void *));
15244 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015245 p->error_indicator = 1;
15246 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015247 return NULL;
15248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015249 ssize_t _children_capacity = 1;
15250 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015251 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015252 if (p->error_indicator) {
15253 return NULL;
15254 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015255 NameDefaultPair* param_with_default_var;
15256 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015257 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015258 )
15259 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015260 _res = param_with_default_var;
15261 if (_n == _children_capacity) {
15262 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015263 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15264 if (!_new_children) {
15265 p->error_indicator = 1;
15266 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015267 return NULL;
15268 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015269 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015270 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015271 _children[_n++] = _res;
15272 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015273 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015274 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015275 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015276 if (_n == 0 || p->error_indicator) {
15277 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015278 return NULL;
15279 }
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, _loop1_64_type, _seq);
15290 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015291}
15292
15293// _loop0_65: param_maybe_default
15294static asdl_seq *
15295_loop0_65_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_maybe_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_maybe_default_var;
15316 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015317 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015318 )
15319 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015320 _res = param_maybe_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 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15337 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015338 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015339 p->error_indicator = 1;
15340 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015341 return NULL;
15342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015343 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15344 PyMem_Free(_children);
15345 _PyPegen_insert_memo(p, _start_mark, _loop0_65_type, _seq);
15346 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015347}
15348
15349// _loop1_66: param_maybe_default
15350static asdl_seq *
15351_loop1_66_rule(Parser *p)
15352{
15353 if (p->error_indicator) {
15354 return NULL;
15355 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015356 void *_res = NULL;
15357 int _mark = p->mark;
15358 int _start_mark = p->mark;
15359 void **_children = PyMem_Malloc(sizeof(void *));
15360 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015361 p->error_indicator = 1;
15362 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015363 return NULL;
15364 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015365 ssize_t _children_capacity = 1;
15366 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015367 { // param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015368 if (p->error_indicator) {
15369 return NULL;
15370 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015371 NameDefaultPair* param_maybe_default_var;
15372 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015373 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015374 )
15375 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015376 _res = param_maybe_default_var;
15377 if (_n == _children_capacity) {
15378 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015379 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15380 if (!_new_children) {
15381 p->error_indicator = 1;
15382 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015383 return NULL;
15384 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015385 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015387 _children[_n++] = _res;
15388 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015389 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015390 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015392 if (_n == 0 || p->error_indicator) {
15393 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015394 return NULL;
15395 }
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, _loop1_66_type, _seq);
15406 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015407}
15408
15409// _loop1_67: ('@' named_expression NEWLINE)
15410static asdl_seq *
15411_loop1_67_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 { // ('@' named_expression NEWLINE)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015428 if (p->error_indicator) {
15429 return NULL;
15430 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015431 void *_tmp_138_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015432 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015433 (_tmp_138_var = _tmp_138_rule(p)) // '@' named_expression NEWLINE
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015434 )
15435 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015436 _res = _tmp_138_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015437 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_67_type, _seq);
15466 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015467}
15468
15469// _tmp_68: '(' arguments? ')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015470static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015471_tmp_68_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015472{
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;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015478 { // '(' arguments? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015479 if (p->error_indicator) {
15480 return NULL;
15481 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015482 Token * _literal;
15483 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015484 void *z;
15485 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015486 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015487 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015488 (z = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015489 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015490 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015491 )
15492 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015493 _res = z;
15494 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015495 p->error_indicator = 1;
15496 return NULL;
15497 }
15498 goto done;
15499 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015500 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015501 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015502 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015503 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015504 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015505}
15506
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015507// _loop0_70: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015508static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015509_loop0_70_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015510{
15511 if (p->error_indicator) {
15512 return NULL;
15513 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015514 void *_res = NULL;
15515 int _mark = p->mark;
15516 int _start_mark = p->mark;
15517 void **_children = PyMem_Malloc(sizeof(void *));
15518 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015519 p->error_indicator = 1;
15520 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015521 return NULL;
15522 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015523 ssize_t _children_capacity = 1;
15524 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015525 { // ',' star_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015526 if (p->error_indicator) {
15527 return NULL;
15528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015529 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015530 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015531 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015532 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015533 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015534 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015535 )
15536 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015537 _res = elem;
15538 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015539 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015540 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015541 return NULL;
15542 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015543 if (_n == _children_capacity) {
15544 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015545 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15546 if (!_new_children) {
15547 p->error_indicator = 1;
15548 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015549 return NULL;
15550 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015551 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015552 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015553 _children[_n++] = _res;
15554 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015555 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015556 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015557 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015558 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15559 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015560 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015561 p->error_indicator = 1;
15562 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015563 return NULL;
15564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015565 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15566 PyMem_Free(_children);
15567 _PyPegen_insert_memo(p, _start_mark, _loop0_70_type, _seq);
15568 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015569}
15570
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015571// _gather_69: star_expression _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015572static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015573_gather_69_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015574{
15575 if (p->error_indicator) {
15576 return NULL;
15577 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015578 asdl_seq * _res = NULL;
15579 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015580 { // star_expression _loop0_70
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015581 if (p->error_indicator) {
15582 return NULL;
15583 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015584 expr_ty elem;
15585 asdl_seq * seq;
15586 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015587 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015588 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015589 (seq = _loop0_70_rule(p)) // _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015590 )
15591 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015592 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015593 goto done;
15594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015595 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015596 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015597 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015598 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015599 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015600}
15601
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015602// _loop1_71: (',' star_expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015603static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015604_loop1_71_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015605{
15606 if (p->error_indicator) {
15607 return NULL;
15608 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015609 void *_res = NULL;
15610 int _mark = p->mark;
15611 int _start_mark = p->mark;
15612 void **_children = PyMem_Malloc(sizeof(void *));
15613 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015614 p->error_indicator = 1;
15615 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015616 return NULL;
15617 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015618 ssize_t _children_capacity = 1;
15619 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015620 { // (',' star_expression)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015621 if (p->error_indicator) {
15622 return NULL;
15623 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015624 void *_tmp_139_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015625 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015626 (_tmp_139_var = _tmp_139_rule(p)) // ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015627 )
15628 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015629 _res = _tmp_139_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015630 if (_n == _children_capacity) {
15631 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015632 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15633 if (!_new_children) {
15634 p->error_indicator = 1;
15635 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015636 return NULL;
15637 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015638 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015639 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015640 _children[_n++] = _res;
15641 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015642 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015643 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015644 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015645 if (_n == 0 || p->error_indicator) {
15646 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015647 return NULL;
15648 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015649 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15650 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015651 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015652 p->error_indicator = 1;
15653 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015654 return NULL;
15655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015656 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15657 PyMem_Free(_children);
15658 _PyPegen_insert_memo(p, _start_mark, _loop1_71_type, _seq);
15659 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015660}
15661
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015662// _loop0_73: ',' star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015663static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015664_loop0_73_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_named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015681 if (p->error_indicator) {
15682 return NULL;
15683 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015684 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015685 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015686 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015687 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015688 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015689 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015690 )
15691 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015692 _res = elem;
15693 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015694 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015695 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015696 return NULL;
15697 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015698 if (_n == _children_capacity) {
15699 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015700 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15701 if (!_new_children) {
15702 p->error_indicator = 1;
15703 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015704 return NULL;
15705 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015706 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015707 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015708 _children[_n++] = _res;
15709 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015710 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015711 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015712 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015713 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15714 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015715 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015716 p->error_indicator = 1;
15717 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015718 return NULL;
15719 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015720 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15721 PyMem_Free(_children);
15722 _PyPegen_insert_memo(p, _start_mark, _loop0_73_type, _seq);
15723 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015724}
15725
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015726// _gather_72: star_named_expression _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015727static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015728_gather_72_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015729{
15730 if (p->error_indicator) {
15731 return NULL;
15732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015733 asdl_seq * _res = NULL;
15734 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015735 { // star_named_expression _loop0_73
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015736 if (p->error_indicator) {
15737 return NULL;
15738 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015739 expr_ty elem;
15740 asdl_seq * seq;
15741 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015742 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015743 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015744 (seq = _loop0_73_rule(p)) // _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015745 )
15746 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015747 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015748 goto done;
15749 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015750 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015752 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015753 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015754 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015755}
15756
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015757// _loop1_74: (',' expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015758static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015759_loop1_74_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015760{
15761 if (p->error_indicator) {
15762 return NULL;
15763 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015764 void *_res = NULL;
15765 int _mark = p->mark;
15766 int _start_mark = p->mark;
15767 void **_children = PyMem_Malloc(sizeof(void *));
15768 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015769 p->error_indicator = 1;
15770 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015771 return NULL;
15772 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015773 ssize_t _children_capacity = 1;
15774 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015775 { // (',' expression)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015776 if (p->error_indicator) {
15777 return NULL;
15778 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015779 void *_tmp_140_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015780 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015781 (_tmp_140_var = _tmp_140_rule(p)) // ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015782 )
15783 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015784 _res = _tmp_140_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015785 if (_n == _children_capacity) {
15786 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015787 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15788 if (!_new_children) {
15789 p->error_indicator = 1;
15790 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015791 return NULL;
15792 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015793 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015794 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015795 _children[_n++] = _res;
15796 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015797 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015798 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015799 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015800 if (_n == 0 || p->error_indicator) {
15801 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015802 return NULL;
15803 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015804 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15805 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015806 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015807 p->error_indicator = 1;
15808 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015809 return NULL;
15810 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015811 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15812 PyMem_Free(_children);
15813 _PyPegen_insert_memo(p, _start_mark, _loop1_74_type, _seq);
15814 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015815}
15816
Guido van Rossum3941d972020-05-01 09:42:03 -070015817// _loop0_75: lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015818static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015819_loop0_75_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;
Guido van Rossum3941d972020-05-01 09:42:03 -070015835 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015836 if (p->error_indicator) {
15837 return NULL;
15838 }
Guido van Rossum3941d972020-05-01 09:42:03 -070015839 arg_ty lambda_param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015840 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015841 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015842 )
15843 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015844 _res = lambda_param_no_default_var;
15845 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 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15861 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015862 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015863 p->error_indicator = 1;
15864 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015865 return NULL;
15866 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015867 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15868 PyMem_Free(_children);
15869 _PyPegen_insert_memo(p, _start_mark, _loop0_75_type, _seq);
15870 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015871}
15872
Guido van Rossum3941d972020-05-01 09:42:03 -070015873// _loop0_76: lambda_param_with_default
15874static asdl_seq *
15875_loop0_76_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015876{
15877 if (p->error_indicator) {
15878 return NULL;
15879 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015880 void *_res = NULL;
15881 int _mark = p->mark;
15882 int _start_mark = p->mark;
15883 void **_children = PyMem_Malloc(sizeof(void *));
15884 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015885 p->error_indicator = 1;
15886 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070015887 return NULL;
15888 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015889 ssize_t _children_capacity = 1;
15890 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070015891 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015892 if (p->error_indicator) {
15893 return NULL;
15894 }
Guido van Rossum3941d972020-05-01 09:42:03 -070015895 NameDefaultPair* lambda_param_with_default_var;
15896 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015897 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015898 )
15899 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015900 _res = lambda_param_with_default_var;
15901 if (_n == _children_capacity) {
15902 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015903 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15904 if (!_new_children) {
15905 p->error_indicator = 1;
15906 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070015907 return NULL;
15908 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015909 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015911 _children[_n++] = _res;
15912 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015913 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015914 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015915 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015916 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15917 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015918 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015919 p->error_indicator = 1;
15920 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070015921 return NULL;
15922 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015923 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15924 PyMem_Free(_children);
15925 _PyPegen_insert_memo(p, _start_mark, _loop0_76_type, _seq);
15926 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015927}
15928
Guido van Rossum3941d972020-05-01 09:42:03 -070015929// _loop0_77: lambda_param_with_default
15930static asdl_seq *
15931_loop0_77_rule(Parser *p)
15932{
15933 if (p->error_indicator) {
15934 return NULL;
15935 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015936 void *_res = NULL;
15937 int _mark = p->mark;
15938 int _start_mark = p->mark;
15939 void **_children = PyMem_Malloc(sizeof(void *));
15940 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015941 p->error_indicator = 1;
15942 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070015943 return NULL;
15944 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015945 ssize_t _children_capacity = 1;
15946 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070015947 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015948 if (p->error_indicator) {
15949 return NULL;
15950 }
Guido van Rossum3941d972020-05-01 09:42:03 -070015951 NameDefaultPair* lambda_param_with_default_var;
15952 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015953 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070015954 )
15955 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015956 _res = lambda_param_with_default_var;
15957 if (_n == _children_capacity) {
15958 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015959 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15960 if (!_new_children) {
15961 p->error_indicator = 1;
15962 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070015963 return NULL;
15964 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015965 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070015966 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015967 _children[_n++] = _res;
15968 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015969 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015970 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015972 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15973 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015974 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015975 p->error_indicator = 1;
15976 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070015977 return NULL;
15978 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015979 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15980 PyMem_Free(_children);
15981 _PyPegen_insert_memo(p, _start_mark, _loop0_77_type, _seq);
15982 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070015983}
15984
15985// _loop1_78: lambda_param_no_default
15986static asdl_seq *
15987_loop1_78_rule(Parser *p)
15988{
15989 if (p->error_indicator) {
15990 return NULL;
15991 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015992 void *_res = NULL;
15993 int _mark = p->mark;
15994 int _start_mark = p->mark;
15995 void **_children = PyMem_Malloc(sizeof(void *));
15996 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015997 p->error_indicator = 1;
15998 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070015999 return NULL;
16000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016001 ssize_t _children_capacity = 1;
16002 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016003 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016004 if (p->error_indicator) {
16005 return NULL;
16006 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016007 arg_ty lambda_param_no_default_var;
16008 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016009 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016010 )
16011 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016012 _res = lambda_param_no_default_var;
16013 if (_n == _children_capacity) {
16014 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016015 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16016 if (!_new_children) {
16017 p->error_indicator = 1;
16018 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016019 return NULL;
16020 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016021 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016022 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016023 _children[_n++] = _res;
16024 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016025 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016026 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016027 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016028 if (_n == 0 || p->error_indicator) {
16029 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016030 return NULL;
16031 }
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, _loop1_78_type, _seq);
16042 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016043}
16044
16045// _loop0_79: lambda_param_with_default
16046static asdl_seq *
16047_loop0_79_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_with_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 NameDefaultPair* lambda_param_with_default_var;
16068 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016069 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016070 )
16071 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016072 _res = lambda_param_with_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 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16089 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016090 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016091 p->error_indicator = 1;
16092 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016093 return NULL;
16094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016095 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16096 PyMem_Free(_children);
16097 _PyPegen_insert_memo(p, _start_mark, _loop0_79_type, _seq);
16098 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016099}
16100
16101// _loop1_80: lambda_param_with_default
16102static asdl_seq *
16103_loop1_80_rule(Parser *p)
16104{
16105 if (p->error_indicator) {
16106 return NULL;
16107 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016108 void *_res = NULL;
16109 int _mark = p->mark;
16110 int _start_mark = p->mark;
16111 void **_children = PyMem_Malloc(sizeof(void *));
16112 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016113 p->error_indicator = 1;
16114 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016115 return NULL;
16116 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016117 ssize_t _children_capacity = 1;
16118 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016119 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016120 if (p->error_indicator) {
16121 return NULL;
16122 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016123 NameDefaultPair* lambda_param_with_default_var;
16124 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016125 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016126 )
16127 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016128 _res = lambda_param_with_default_var;
16129 if (_n == _children_capacity) {
16130 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016131 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16132 if (!_new_children) {
16133 p->error_indicator = 1;
16134 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016135 return NULL;
16136 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016137 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016138 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016139 _children[_n++] = _res;
16140 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016141 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016142 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016143 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016144 if (_n == 0 || p->error_indicator) {
16145 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016146 return NULL;
16147 }
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, _loop1_80_type, _seq);
16158 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016159}
16160
16161// _loop1_81: lambda_param_no_default
16162static asdl_seq *
16163_loop1_81_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_no_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 arg_ty lambda_param_no_default_var;
16184 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016185 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016186 )
16187 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016188 _res = lambda_param_no_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_81_type, _seq);
16218 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016219}
16220
16221// _loop1_82: lambda_param_no_default
16222static asdl_seq *
16223_loop1_82_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_82_type, _seq);
16278 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016279}
16280
16281// _loop0_83: lambda_param_no_default
16282static asdl_seq *
16283_loop0_83_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 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16325 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016326 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016327 p->error_indicator = 1;
16328 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016329 return NULL;
16330 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016331 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16332 PyMem_Free(_children);
16333 _PyPegen_insert_memo(p, _start_mark, _loop0_83_type, _seq);
16334 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016335}
16336
16337// _loop1_84: lambda_param_with_default
16338static asdl_seq *
16339_loop1_84_rule(Parser *p)
16340{
16341 if (p->error_indicator) {
16342 return NULL;
16343 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016344 void *_res = NULL;
16345 int _mark = p->mark;
16346 int _start_mark = p->mark;
16347 void **_children = PyMem_Malloc(sizeof(void *));
16348 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016349 p->error_indicator = 1;
16350 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016351 return NULL;
16352 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016353 ssize_t _children_capacity = 1;
16354 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016355 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016356 if (p->error_indicator) {
16357 return NULL;
16358 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016359 NameDefaultPair* lambda_param_with_default_var;
16360 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016361 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016362 )
16363 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016364 _res = lambda_param_with_default_var;
16365 if (_n == _children_capacity) {
16366 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016367 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16368 if (!_new_children) {
16369 p->error_indicator = 1;
16370 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016371 return NULL;
16372 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016373 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016374 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016375 _children[_n++] = _res;
16376 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016377 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016378 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016379 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016380 if (_n == 0 || p->error_indicator) {
16381 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016382 return NULL;
16383 }
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, _loop1_84_type, _seq);
16394 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016395}
16396
16397// _loop0_85: lambda_param_no_default
16398static asdl_seq *
16399_loop0_85_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_no_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 arg_ty lambda_param_no_default_var;
16420 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016421 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016422 )
16423 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016424 _res = lambda_param_no_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 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16441 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016442 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016443 p->error_indicator = 1;
16444 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016445 return NULL;
16446 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016447 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16448 PyMem_Free(_children);
16449 _PyPegen_insert_memo(p, _start_mark, _loop0_85_type, _seq);
16450 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016451}
16452
16453// _loop1_86: lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016454static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016455_loop1_86_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016456{
16457 if (p->error_indicator) {
16458 return NULL;
16459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016460 void *_res = NULL;
16461 int _mark = p->mark;
16462 int _start_mark = p->mark;
16463 void **_children = PyMem_Malloc(sizeof(void *));
16464 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016465 p->error_indicator = 1;
16466 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016467 return NULL;
16468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016469 ssize_t _children_capacity = 1;
16470 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016471 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016472 if (p->error_indicator) {
16473 return NULL;
16474 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016475 NameDefaultPair* lambda_param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016476 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016477 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016478 )
16479 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016480 _res = lambda_param_with_default_var;
16481 if (_n == _children_capacity) {
16482 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016483 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16484 if (!_new_children) {
16485 p->error_indicator = 1;
16486 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016487 return NULL;
16488 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016489 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016491 _children[_n++] = _res;
16492 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016494 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016495 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016496 if (_n == 0 || p->error_indicator) {
16497 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016498 return NULL;
16499 }
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();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016505 return NULL;
16506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016507 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16508 PyMem_Free(_children);
16509 _PyPegen_insert_memo(p, _start_mark, _loop1_86_type, _seq);
16510 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016511}
16512
Guido van Rossum3941d972020-05-01 09:42:03 -070016513// _loop0_87: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016514static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016515_loop0_87_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_maybe_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_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016536 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016537 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016538 )
16539 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016540 _res = lambda_param_maybe_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 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16557 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016558 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016559 p->error_indicator = 1;
16560 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016561 return NULL;
16562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016563 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16564 PyMem_Free(_children);
16565 _PyPegen_insert_memo(p, _start_mark, _loop0_87_type, _seq);
16566 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016567}
16568
Guido van Rossum3941d972020-05-01 09:42:03 -070016569// _loop1_88: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016570static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016571_loop1_88_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016572{
16573 if (p->error_indicator) {
16574 return NULL;
16575 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016576 void *_res = NULL;
16577 int _mark = p->mark;
16578 int _start_mark = p->mark;
16579 void **_children = PyMem_Malloc(sizeof(void *));
16580 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016581 p->error_indicator = 1;
16582 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016583 return NULL;
16584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016585 ssize_t _children_capacity = 1;
16586 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016587 { // lambda_param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016588 if (p->error_indicator) {
16589 return NULL;
16590 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016591 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016592 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016593 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016594 )
16595 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016596 _res = lambda_param_maybe_default_var;
16597 if (_n == _children_capacity) {
16598 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016599 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16600 if (!_new_children) {
16601 p->error_indicator = 1;
16602 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016603 return NULL;
16604 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016605 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016606 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016607 _children[_n++] = _res;
16608 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016609 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016610 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016611 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016612 if (_n == 0 || p->error_indicator) {
16613 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016614 return NULL;
16615 }
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, _loop1_88_type, _seq);
16626 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016627}
16628
Guido van Rossum3941d972020-05-01 09:42:03 -070016629// _loop1_89: ('or' conjunction)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016630static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016631_loop1_89_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;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016647 { // ('or' conjunction)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016648 if (p->error_indicator) {
16649 return NULL;
16650 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016651 void *_tmp_141_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016652 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016653 (_tmp_141_var = _tmp_141_rule(p)) // 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016654 )
16655 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016656 _res = _tmp_141_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016657 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);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016674 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_89_type, _seq);
16686 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016687}
16688
Guido van Rossum3941d972020-05-01 09:42:03 -070016689// _loop1_90: ('and' inversion)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016690static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016691_loop1_90_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 { // ('and' inversion)
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_142_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016712 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016713 (_tmp_142_var = _tmp_142_rule(p)) // 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016714 )
16715 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016716 _res = _tmp_142_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_90_type, _seq);
16746 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016747}
16748
Guido van Rossum3941d972020-05-01 09:42:03 -070016749// _loop1_91: compare_op_bitwise_or_pair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016750static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016751_loop1_91_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 { // compare_op_bitwise_or_pair
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016768 if (p->error_indicator) {
16769 return NULL;
16770 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016771 CmpopExprPair* compare_op_bitwise_or_pair_var;
16772 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016773 (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 +010016774 )
16775 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016776 _res = compare_op_bitwise_or_pair_var;
16777 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_91_type, _seq);
16806 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016807}
16808
Guido van Rossum3941d972020-05-01 09:42:03 -070016809// _tmp_92: '!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010016810static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016811_tmp_92_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +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;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016818 { // '!='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016819 if (p->error_indicator) {
16820 return NULL;
16821 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010016822 Token * tok;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016823 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016824 (tok = _PyPegen_expect_token(p, 28)) // token='!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010016825 )
16826 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016827 _res = _PyPegen_check_barry_as_flufl ( p ) ? NULL : tok;
16828 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindo2b74c832020-04-27 18:02:07 +010016829 p->error_indicator = 1;
16830 return NULL;
16831 }
16832 goto done;
16833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016834 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016836 _res = NULL;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016837 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016838 return _res;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016839}
16840
Guido van Rossum3941d972020-05-01 09:42:03 -070016841// _loop0_94: ',' slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016842static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016843_loop0_94_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016844{
16845 if (p->error_indicator) {
16846 return NULL;
16847 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016848 void *_res = NULL;
16849 int _mark = p->mark;
16850 int _start_mark = p->mark;
16851 void **_children = PyMem_Malloc(sizeof(void *));
16852 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016853 p->error_indicator = 1;
16854 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016855 return NULL;
16856 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016857 ssize_t _children_capacity = 1;
16858 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016859 { // ',' slice
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016860 if (p->error_indicator) {
16861 return NULL;
16862 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016863 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016864 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016865 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016866 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016867 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016868 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016869 )
16870 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016871 _res = elem;
16872 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016873 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016874 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016875 return NULL;
16876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016877 if (_n == _children_capacity) {
16878 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016879 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16880 if (!_new_children) {
16881 p->error_indicator = 1;
16882 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016883 return NULL;
16884 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016885 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016886 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016887 _children[_n++] = _res;
16888 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016889 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016890 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016892 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16893 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016894 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016895 p->error_indicator = 1;
16896 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016897 return NULL;
16898 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016899 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16900 PyMem_Free(_children);
16901 _PyPegen_insert_memo(p, _start_mark, _loop0_94_type, _seq);
16902 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016903}
16904
Guido van Rossum3941d972020-05-01 09:42:03 -070016905// _gather_93: slice _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016906static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016907_gather_93_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016908{
16909 if (p->error_indicator) {
16910 return NULL;
16911 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016912 asdl_seq * _res = NULL;
16913 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016914 { // slice _loop0_94
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016915 if (p->error_indicator) {
16916 return NULL;
16917 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016918 expr_ty elem;
16919 asdl_seq * seq;
16920 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016921 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016922 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016923 (seq = _loop0_94_rule(p)) // _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016924 )
16925 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016926 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016927 goto done;
16928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016929 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016930 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016931 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016932 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016933 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016934}
16935
Guido van Rossum3941d972020-05-01 09:42:03 -070016936// _tmp_95: ':' expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016937static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016938_tmp_95_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016939{
16940 if (p->error_indicator) {
16941 return NULL;
16942 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016943 void * _res = NULL;
16944 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016945 { // ':' expression?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016946 if (p->error_indicator) {
16947 return NULL;
16948 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016949 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016950 void *d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016951 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016952 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016953 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016954 (d = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016955 )
16956 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016957 _res = d;
16958 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016959 p->error_indicator = 1;
16960 return NULL;
16961 }
16962 goto done;
16963 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016964 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016966 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016967 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016968 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016969}
16970
Guido van Rossum3941d972020-05-01 09:42:03 -070016971// _tmp_96: tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016972static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016973_tmp_96_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016974{
16975 if (p->error_indicator) {
16976 return NULL;
16977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016978 void * _res = NULL;
16979 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016980 { // tuple
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016981 if (p->error_indicator) {
16982 return NULL;
16983 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016984 expr_ty tuple_var;
16985 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016986 (tuple_var = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016987 )
16988 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016989 _res = tuple_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016990 goto done;
16991 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016992 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016993 }
16994 { // group
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016995 if (p->error_indicator) {
16996 return NULL;
16997 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016998 expr_ty group_var;
16999 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017000 (group_var = group_rule(p)) // group
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017001 )
17002 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017003 _res = group_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017004 goto done;
17005 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017006 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017007 }
17008 { // genexp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017009 if (p->error_indicator) {
17010 return NULL;
17011 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017012 expr_ty genexp_var;
17013 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017014 (genexp_var = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017015 )
17016 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017017 _res = genexp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017018 goto done;
17019 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017020 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017022 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017023 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017024 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017025}
17026
Guido van Rossum3941d972020-05-01 09:42:03 -070017027// _tmp_97: list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017028static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017029_tmp_97_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017030{
17031 if (p->error_indicator) {
17032 return NULL;
17033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017034 void * _res = NULL;
17035 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017036 { // list
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017037 if (p->error_indicator) {
17038 return NULL;
17039 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017040 expr_ty list_var;
17041 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017042 (list_var = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017043 )
17044 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017045 _res = list_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017046 goto done;
17047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017048 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017049 }
17050 { // listcomp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017051 if (p->error_indicator) {
17052 return NULL;
17053 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017054 expr_ty listcomp_var;
17055 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017056 (listcomp_var = listcomp_rule(p)) // listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017057 )
17058 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017059 _res = listcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017060 goto done;
17061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017062 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017063 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017064 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017065 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017066 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017067}
17068
Guido van Rossum3941d972020-05-01 09:42:03 -070017069// _tmp_98: dict | set | dictcomp | setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017070static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017071_tmp_98_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017072{
17073 if (p->error_indicator) {
17074 return NULL;
17075 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017076 void * _res = NULL;
17077 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017078 { // dict
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017079 if (p->error_indicator) {
17080 return NULL;
17081 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017082 expr_ty dict_var;
17083 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017084 (dict_var = dict_rule(p)) // dict
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017085 )
17086 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017087 _res = dict_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017088 goto done;
17089 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017090 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017091 }
17092 { // set
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017093 if (p->error_indicator) {
17094 return NULL;
17095 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017096 expr_ty set_var;
17097 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017098 (set_var = set_rule(p)) // set
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017099 )
17100 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017101 _res = set_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017102 goto done;
17103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017104 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017105 }
17106 { // dictcomp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017107 if (p->error_indicator) {
17108 return NULL;
17109 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017110 expr_ty dictcomp_var;
17111 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017112 (dictcomp_var = dictcomp_rule(p)) // dictcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017113 )
17114 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017115 _res = dictcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017116 goto done;
17117 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017118 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017119 }
17120 { // setcomp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017121 if (p->error_indicator) {
17122 return NULL;
17123 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017124 expr_ty setcomp_var;
17125 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017126 (setcomp_var = setcomp_rule(p)) // setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017127 )
17128 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017129 _res = setcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017130 goto done;
17131 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017132 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017133 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017134 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017135 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017136 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017137}
17138
Guido van Rossum3941d972020-05-01 09:42:03 -070017139// _loop1_99: STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017140static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017141_loop1_99_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017142{
17143 if (p->error_indicator) {
17144 return NULL;
17145 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017146 void *_res = NULL;
17147 int _mark = p->mark;
17148 int _start_mark = p->mark;
17149 void **_children = PyMem_Malloc(sizeof(void *));
17150 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017151 p->error_indicator = 1;
17152 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017153 return NULL;
17154 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017155 ssize_t _children_capacity = 1;
17156 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017157 { // STRING
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017158 if (p->error_indicator) {
17159 return NULL;
17160 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017161 expr_ty string_var;
17162 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010017163 (string_var = _PyPegen_string_token(p)) // STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017164 )
17165 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017166 _res = string_var;
17167 if (_n == _children_capacity) {
17168 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017169 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17170 if (!_new_children) {
17171 p->error_indicator = 1;
17172 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017173 return NULL;
17174 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017175 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017176 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017177 _children[_n++] = _res;
17178 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017179 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017180 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017181 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017182 if (_n == 0 || p->error_indicator) {
17183 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017184 return NULL;
17185 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017186 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17187 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017188 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017189 p->error_indicator = 1;
17190 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017191 return NULL;
17192 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017193 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17194 PyMem_Free(_children);
17195 _PyPegen_insert_memo(p, _start_mark, _loop1_99_type, _seq);
17196 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017197}
17198
Guido van Rossum3941d972020-05-01 09:42:03 -070017199// _tmp_100: star_named_expression ',' star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017200static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017201_tmp_100_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;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017208 { // star_named_expression ',' star_named_expressions?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017209 if (p->error_indicator) {
17210 return NULL;
17211 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017212 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017213 expr_ty y;
17214 void *z;
17215 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017216 (y = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017217 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017218 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017219 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017220 (z = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017221 )
17222 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017223 _res = _PyPegen_seq_insert_in_front ( p , y , z );
17224 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017225 p->error_indicator = 1;
17226 return NULL;
17227 }
17228 goto done;
17229 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017230 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017231 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017232 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017233 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017234 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017235}
17236
Guido van Rossum3941d972020-05-01 09:42:03 -070017237// _tmp_101: yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017238static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017239_tmp_101_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017240{
17241 if (p->error_indicator) {
17242 return NULL;
17243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017244 void * _res = NULL;
17245 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017246 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017247 if (p->error_indicator) {
17248 return NULL;
17249 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017250 expr_ty yield_expr_var;
17251 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017252 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017253 )
17254 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017255 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017256 goto done;
17257 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017258 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017259 }
17260 { // named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017261 if (p->error_indicator) {
17262 return NULL;
17263 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017264 expr_ty named_expression_var;
17265 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017266 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017267 )
17268 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017269 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017270 goto done;
17271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017272 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017273 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017274 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017275 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017276 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017277}
17278
Guido van Rossum3941d972020-05-01 09:42:03 -070017279// _loop0_103: ',' kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017280static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017281_loop0_103_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017282{
17283 if (p->error_indicator) {
17284 return NULL;
17285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017286 void *_res = NULL;
17287 int _mark = p->mark;
17288 int _start_mark = p->mark;
17289 void **_children = PyMem_Malloc(sizeof(void *));
17290 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017291 p->error_indicator = 1;
17292 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017293 return NULL;
17294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017295 ssize_t _children_capacity = 1;
17296 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017297 { // ',' kvpair
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017298 if (p->error_indicator) {
17299 return NULL;
17300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017301 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017302 KeyValuePair* elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017303 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017304 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017305 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017306 (elem = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017307 )
17308 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017309 _res = elem;
17310 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017311 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017312 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017313 return NULL;
17314 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017315 if (_n == _children_capacity) {
17316 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017317 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17318 if (!_new_children) {
17319 p->error_indicator = 1;
17320 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017321 return NULL;
17322 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017323 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017324 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017325 _children[_n++] = _res;
17326 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017327 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017328 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017329 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017330 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17331 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017332 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017333 p->error_indicator = 1;
17334 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017335 return NULL;
17336 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017337 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17338 PyMem_Free(_children);
17339 _PyPegen_insert_memo(p, _start_mark, _loop0_103_type, _seq);
17340 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017341}
17342
Guido van Rossum3941d972020-05-01 09:42:03 -070017343// _gather_102: kvpair _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017344static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017345_gather_102_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017346{
17347 if (p->error_indicator) {
17348 return NULL;
17349 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017350 asdl_seq * _res = NULL;
17351 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017352 { // kvpair _loop0_103
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017353 if (p->error_indicator) {
17354 return NULL;
17355 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017356 KeyValuePair* elem;
17357 asdl_seq * seq;
17358 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017359 (elem = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017360 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017361 (seq = _loop0_103_rule(p)) // _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017362 )
17363 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017364 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017365 goto done;
17366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017367 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017368 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017369 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017370 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017371 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017372}
17373
Guido van Rossum3941d972020-05-01 09:42:03 -070017374// _loop1_104: for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017375static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017376_loop1_104_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017377{
17378 if (p->error_indicator) {
17379 return NULL;
17380 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017381 void *_res = NULL;
17382 int _mark = p->mark;
17383 int _start_mark = p->mark;
17384 void **_children = PyMem_Malloc(sizeof(void *));
17385 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017386 p->error_indicator = 1;
17387 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017388 return NULL;
17389 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017390 ssize_t _children_capacity = 1;
17391 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017392 { // for_if_clause
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017393 if (p->error_indicator) {
17394 return NULL;
17395 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017396 comprehension_ty for_if_clause_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017397 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010017398 (for_if_clause_var = for_if_clause_rule(p)) // for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017399 )
17400 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017401 _res = for_if_clause_var;
17402 if (_n == _children_capacity) {
17403 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017404 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17405 if (!_new_children) {
17406 p->error_indicator = 1;
17407 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017408 return NULL;
17409 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017410 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017411 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017412 _children[_n++] = _res;
17413 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017414 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017415 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017416 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017417 if (_n == 0 || p->error_indicator) {
17418 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017419 return NULL;
17420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017421 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17422 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017423 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017424 p->error_indicator = 1;
17425 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017426 return NULL;
17427 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017428 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17429 PyMem_Free(_children);
17430 _PyPegen_insert_memo(p, _start_mark, _loop1_104_type, _seq);
17431 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017432}
17433
Guido van Rossum3941d972020-05-01 09:42:03 -070017434// _loop0_105: ('if' disjunction)
Pablo Galindo2b74c832020-04-27 18:02:07 +010017435static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017436_loop0_105_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +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 Galindo2b74c832020-04-27 18:02:07 +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 { // ('if' disjunction)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017453 if (p->error_indicator) {
17454 return NULL;
17455 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017456 void *_tmp_143_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017457 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017458 (_tmp_143_var = _tmp_143_rule(p)) // 'if' disjunction
Pablo Galindo2b74c832020-04-27 18:02:07 +010017459 )
17460 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017461 _res = _tmp_143_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017462 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 Galindo2b74c832020-04-27 18:02:07 +010017468 return NULL;
17469 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017470 _children = _new_children;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017471 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017472 _children[_n++] = _res;
17473 _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017475 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017476 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017477 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17478 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017479 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017480 p->error_indicator = 1;
17481 PyErr_NoMemory();
Pablo Galindo2b74c832020-04-27 18:02:07 +010017482 return NULL;
17483 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017484 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17485 PyMem_Free(_children);
17486 _PyPegen_insert_memo(p, _start_mark, _loop0_105_type, _seq);
17487 return _seq;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017488}
17489
Guido van Rossum3941d972020-05-01 09:42:03 -070017490// _loop0_106: ('if' disjunction)
Guido van Rossumc001c092020-04-30 12:12:19 -070017491static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017492_loop0_106_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070017493{
17494 if (p->error_indicator) {
17495 return NULL;
17496 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017497 void *_res = NULL;
17498 int _mark = p->mark;
17499 int _start_mark = p->mark;
17500 void **_children = PyMem_Malloc(sizeof(void *));
17501 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017502 p->error_indicator = 1;
17503 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017504 return NULL;
17505 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017506 ssize_t _children_capacity = 1;
17507 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017508 { // ('if' disjunction)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017509 if (p->error_indicator) {
17510 return NULL;
17511 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017512 void *_tmp_144_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017513 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017514 (_tmp_144_var = _tmp_144_rule(p)) // 'if' disjunction
Guido van Rossumc001c092020-04-30 12:12:19 -070017515 )
17516 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017517 _res = _tmp_144_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017518 if (_n == _children_capacity) {
17519 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017520 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17521 if (!_new_children) {
17522 p->error_indicator = 1;
17523 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017524 return NULL;
17525 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017526 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017528 _children[_n++] = _res;
17529 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017530 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017531 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017532 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017533 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17534 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017535 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017536 p->error_indicator = 1;
17537 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017538 return NULL;
17539 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017540 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17541 PyMem_Free(_children);
17542 _PyPegen_insert_memo(p, _start_mark, _loop0_106_type, _seq);
17543 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017544}
17545
Guido van Rossum3941d972020-05-01 09:42:03 -070017546// _tmp_107: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017547static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017548_tmp_107_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017549{
17550 if (p->error_indicator) {
17551 return NULL;
17552 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017553 void * _res = NULL;
17554 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017555 { // ',' args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017556 if (p->error_indicator) {
17557 return NULL;
17558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017559 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017560 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017561 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017562 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017563 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017564 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017565 )
17566 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017567 _res = c;
17568 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017569 p->error_indicator = 1;
17570 return NULL;
17571 }
Guido van Rossumc001c092020-04-30 12:12:19 -070017572 goto done;
17573 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017574 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017575 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017576 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070017577 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017578 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070017579}
17580
Guido van Rossum3941d972020-05-01 09:42:03 -070017581// _tmp_108: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017582static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017583_tmp_108_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017584{
17585 if (p->error_indicator) {
17586 return NULL;
17587 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017588 void * _res = NULL;
17589 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017590 { // ',' args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017591 if (p->error_indicator) {
17592 return NULL;
17593 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017594 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017595 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017596 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017597 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017598 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017599 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017600 )
17601 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017602 _res = c;
17603 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017604 p->error_indicator = 1;
17605 return NULL;
17606 }
17607 goto done;
17608 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017609 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017610 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017611 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017612 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017613 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017614}
17615
Guido van Rossum3941d972020-05-01 09:42:03 -070017616// _loop0_110: ',' kwarg_or_starred
17617static asdl_seq *
17618_loop0_110_rule(Parser *p)
17619{
17620 if (p->error_indicator) {
17621 return NULL;
17622 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017623 void *_res = NULL;
17624 int _mark = p->mark;
17625 int _start_mark = p->mark;
17626 void **_children = PyMem_Malloc(sizeof(void *));
17627 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017628 p->error_indicator = 1;
17629 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017630 return NULL;
17631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017632 ssize_t _children_capacity = 1;
17633 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070017634 { // ',' kwarg_or_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017635 if (p->error_indicator) {
17636 return NULL;
17637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017638 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070017639 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070017640 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017641 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070017642 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017643 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070017644 )
17645 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017646 _res = elem;
17647 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070017648 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017649 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070017650 return NULL;
17651 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017652 if (_n == _children_capacity) {
17653 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017654 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17655 if (!_new_children) {
17656 p->error_indicator = 1;
17657 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017658 return NULL;
17659 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017660 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070017661 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017662 _children[_n++] = _res;
17663 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017664 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017665 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017666 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017667 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17668 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017669 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017670 p->error_indicator = 1;
17671 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017672 return NULL;
17673 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017674 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17675 PyMem_Free(_children);
17676 _PyPegen_insert_memo(p, _start_mark, _loop0_110_type, _seq);
17677 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070017678}
17679
17680// _gather_109: kwarg_or_starred _loop0_110
17681static asdl_seq *
17682_gather_109_rule(Parser *p)
17683{
17684 if (p->error_indicator) {
17685 return NULL;
17686 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017687 asdl_seq * _res = NULL;
17688 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017689 { // kwarg_or_starred _loop0_110
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017690 if (p->error_indicator) {
17691 return NULL;
17692 }
Guido van Rossum3941d972020-05-01 09:42:03 -070017693 KeywordOrStarred* elem;
17694 asdl_seq * seq;
17695 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017696 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070017697 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017698 (seq = _loop0_110_rule(p)) // _loop0_110
Guido van Rossum3941d972020-05-01 09:42:03 -070017699 )
17700 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017701 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070017702 goto done;
17703 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017704 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017706 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070017707 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017708 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070017709}
17710
17711// _loop0_112: ',' kwarg_or_double_starred
17712static asdl_seq *
17713_loop0_112_rule(Parser *p)
17714{
17715 if (p->error_indicator) {
17716 return NULL;
17717 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017718 void *_res = NULL;
17719 int _mark = p->mark;
17720 int _start_mark = p->mark;
17721 void **_children = PyMem_Malloc(sizeof(void *));
17722 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017723 p->error_indicator = 1;
17724 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017725 return NULL;
17726 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017727 ssize_t _children_capacity = 1;
17728 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070017729 { // ',' kwarg_or_double_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017730 if (p->error_indicator) {
17731 return NULL;
17732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017733 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070017734 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070017735 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017736 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070017737 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017738 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070017739 )
17740 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017741 _res = elem;
17742 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070017743 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017744 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070017745 return NULL;
17746 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017747 if (_n == _children_capacity) {
17748 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017749 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17750 if (!_new_children) {
17751 p->error_indicator = 1;
17752 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017753 return NULL;
17754 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017755 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070017756 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017757 _children[_n++] = _res;
17758 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017759 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017760 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017761 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017762 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17763 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017764 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017765 p->error_indicator = 1;
17766 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017767 return NULL;
17768 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017769 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17770 PyMem_Free(_children);
17771 _PyPegen_insert_memo(p, _start_mark, _loop0_112_type, _seq);
17772 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070017773}
17774
17775// _gather_111: kwarg_or_double_starred _loop0_112
17776static asdl_seq *
17777_gather_111_rule(Parser *p)
17778{
17779 if (p->error_indicator) {
17780 return NULL;
17781 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017782 asdl_seq * _res = NULL;
17783 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017784 { // kwarg_or_double_starred _loop0_112
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017785 if (p->error_indicator) {
17786 return NULL;
17787 }
Guido van Rossum3941d972020-05-01 09:42:03 -070017788 KeywordOrStarred* elem;
17789 asdl_seq * seq;
17790 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017791 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070017792 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017793 (seq = _loop0_112_rule(p)) // _loop0_112
Guido van Rossum3941d972020-05-01 09:42:03 -070017794 )
17795 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017796 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070017797 goto done;
17798 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017799 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017800 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017801 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070017802 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017803 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070017804}
17805
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017806// _loop0_114: ',' kwarg_or_starred
Pablo Galindo2b74c832020-04-27 18:02:07 +010017807static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017808_loop0_114_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017809{
17810 if (p->error_indicator) {
17811 return NULL;
17812 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017813 void *_res = NULL;
17814 int _mark = p->mark;
17815 int _start_mark = p->mark;
17816 void **_children = PyMem_Malloc(sizeof(void *));
17817 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017818 p->error_indicator = 1;
17819 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017820 return NULL;
17821 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017822 ssize_t _children_capacity = 1;
17823 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070017824 { // ',' kwarg_or_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017825 if (p->error_indicator) {
17826 return NULL;
17827 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017828 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070017829 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070017830 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017831 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070017832 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017833 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070017834 )
17835 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017836 _res = elem;
17837 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070017838 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017839 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070017840 return NULL;
17841 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017842 if (_n == _children_capacity) {
17843 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017844 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17845 if (!_new_children) {
17846 p->error_indicator = 1;
17847 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070017848 return NULL;
17849 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017850 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070017851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017852 _children[_n++] = _res;
17853 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017854 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017855 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017856 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017857 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17858 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017859 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017860 p->error_indicator = 1;
17861 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070017862 return NULL;
17863 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017864 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17865 PyMem_Free(_children);
17866 _PyPegen_insert_memo(p, _start_mark, _loop0_114_type, _seq);
17867 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070017868}
17869
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017870// _gather_113: kwarg_or_starred _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070017871static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017872_gather_113_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070017873{
17874 if (p->error_indicator) {
17875 return NULL;
17876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017877 asdl_seq * _res = NULL;
17878 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017879 { // kwarg_or_starred _loop0_114
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017880 if (p->error_indicator) {
17881 return NULL;
17882 }
Guido van Rossumc001c092020-04-30 12:12:19 -070017883 KeywordOrStarred* elem;
17884 asdl_seq * seq;
17885 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017886 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070017887 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017888 (seq = _loop0_114_rule(p)) // _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070017889 )
17890 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017891 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070017892 goto done;
17893 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017894 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017895 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017896 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070017897 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017898 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070017899}
17900
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017901// _loop0_116: ',' kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070017902static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017903_loop0_116_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070017904{
17905 if (p->error_indicator) {
17906 return NULL;
17907 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017908 void *_res = NULL;
17909 int _mark = p->mark;
17910 int _start_mark = p->mark;
17911 void **_children = PyMem_Malloc(sizeof(void *));
17912 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017913 p->error_indicator = 1;
17914 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070017915 return NULL;
17916 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017917 ssize_t _children_capacity = 1;
17918 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070017919 { // ',' kwarg_or_double_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017920 if (p->error_indicator) {
17921 return NULL;
17922 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017923 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070017924 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070017925 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017926 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070017927 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017928 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070017929 )
17930 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017931 _res = elem;
17932 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070017933 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017934 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070017935 return NULL;
17936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017937 if (_n == _children_capacity) {
17938 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017939 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17940 if (!_new_children) {
17941 p->error_indicator = 1;
17942 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070017943 return NULL;
17944 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017945 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070017946 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017947 _children[_n++] = _res;
17948 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017949 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017950 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017951 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017952 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17953 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017954 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017955 p->error_indicator = 1;
17956 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070017957 return NULL;
17958 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017959 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17960 PyMem_Free(_children);
17961 _PyPegen_insert_memo(p, _start_mark, _loop0_116_type, _seq);
17962 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070017963}
17964
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017965// _gather_115: kwarg_or_double_starred _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070017966static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017967_gather_115_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070017968{
17969 if (p->error_indicator) {
17970 return NULL;
17971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017972 asdl_seq * _res = NULL;
17973 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017974 { // kwarg_or_double_starred _loop0_116
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017975 if (p->error_indicator) {
17976 return NULL;
17977 }
Guido van Rossumc001c092020-04-30 12:12:19 -070017978 KeywordOrStarred* elem;
17979 asdl_seq * seq;
17980 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017981 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070017982 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017983 (seq = _loop0_116_rule(p)) // _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070017984 )
17985 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017986 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070017987 goto done;
17988 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017989 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017990 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017991 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070017992 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017993 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070017994}
17995
Guido van Rossum3941d972020-05-01 09:42:03 -070017996// _loop0_117: (',' star_target)
Guido van Rossumc001c092020-04-30 12:12:19 -070017997static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017998_loop0_117_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017999{
18000 if (p->error_indicator) {
18001 return NULL;
18002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018003 void *_res = NULL;
18004 int _mark = p->mark;
18005 int _start_mark = p->mark;
18006 void **_children = PyMem_Malloc(sizeof(void *));
18007 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018008 p->error_indicator = 1;
18009 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018010 return NULL;
18011 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018012 ssize_t _children_capacity = 1;
18013 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018014 { // (',' star_target)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018015 if (p->error_indicator) {
18016 return NULL;
18017 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018018 void *_tmp_145_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018019 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018020 (_tmp_145_var = _tmp_145_rule(p)) // ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018021 )
18022 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018023 _res = _tmp_145_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018024 if (_n == _children_capacity) {
18025 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018026 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18027 if (!_new_children) {
18028 p->error_indicator = 1;
18029 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018030 return NULL;
18031 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018032 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018034 _children[_n++] = _res;
18035 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018037 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018038 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018039 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18040 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018041 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018042 p->error_indicator = 1;
18043 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018044 return NULL;
18045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018046 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18047 PyMem_Free(_children);
18048 _PyPegen_insert_memo(p, _start_mark, _loop0_117_type, _seq);
18049 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018050}
18051
Guido van Rossum3941d972020-05-01 09:42:03 -070018052// _loop0_119: ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018053static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018054_loop0_119_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070018055{
18056 if (p->error_indicator) {
18057 return NULL;
18058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018059 void *_res = NULL;
18060 int _mark = p->mark;
18061 int _start_mark = p->mark;
18062 void **_children = PyMem_Malloc(sizeof(void *));
18063 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018064 p->error_indicator = 1;
18065 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018066 return NULL;
18067 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018068 ssize_t _children_capacity = 1;
18069 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018070 { // ',' star_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018071 if (p->error_indicator) {
18072 return NULL;
18073 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018074 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018075 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018076 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018077 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018078 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018079 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018080 )
18081 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018082 _res = elem;
18083 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018084 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018085 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018086 return NULL;
18087 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018088 if (_n == _children_capacity) {
18089 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018090 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18091 if (!_new_children) {
18092 p->error_indicator = 1;
18093 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018094 return NULL;
18095 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018096 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018097 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018098 _children[_n++] = _res;
18099 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018100 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018101 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018102 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018103 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18104 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018105 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018106 p->error_indicator = 1;
18107 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018108 return NULL;
18109 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018110 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18111 PyMem_Free(_children);
18112 _PyPegen_insert_memo(p, _start_mark, _loop0_119_type, _seq);
18113 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018114}
18115
Guido van Rossum3941d972020-05-01 09:42:03 -070018116// _gather_118: star_target _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018117static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018118_gather_118_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018119{
18120 if (p->error_indicator) {
18121 return NULL;
18122 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018123 asdl_seq * _res = NULL;
18124 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070018125 { // star_target _loop0_119
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018126 if (p->error_indicator) {
18127 return NULL;
18128 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018129 expr_ty elem;
18130 asdl_seq * seq;
18131 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018132 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018133 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018134 (seq = _loop0_119_rule(p)) // _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018135 )
18136 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018137 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018138 goto done;
18139 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018140 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018141 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018142 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018143 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018144 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018145}
18146
Guido van Rossum3941d972020-05-01 09:42:03 -070018147// _tmp_120: !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018148static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070018149_tmp_120_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018150{
18151 if (p->error_indicator) {
18152 return NULL;
18153 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018154 void * _res = NULL;
18155 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018156 { // !'*' star_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018157 if (p->error_indicator) {
18158 return NULL;
18159 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018160 expr_ty star_target_var;
18161 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018162 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018163 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018164 (star_target_var = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018165 )
18166 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018167 _res = star_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018168 goto done;
18169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018170 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018172 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018173 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018174 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018175}
18176
Guido van Rossum3941d972020-05-01 09:42:03 -070018177// _loop0_122: ',' del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018178static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018179_loop0_122_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018180{
18181 if (p->error_indicator) {
18182 return NULL;
18183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018184 void *_res = NULL;
18185 int _mark = p->mark;
18186 int _start_mark = p->mark;
18187 void **_children = PyMem_Malloc(sizeof(void *));
18188 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018189 p->error_indicator = 1;
18190 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018191 return NULL;
18192 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018193 ssize_t _children_capacity = 1;
18194 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018195 { // ',' del_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018196 if (p->error_indicator) {
18197 return NULL;
18198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018199 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018200 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018201 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018202 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018203 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018204 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018205 )
18206 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018207 _res = elem;
18208 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018209 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018210 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018211 return NULL;
18212 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018213 if (_n == _children_capacity) {
18214 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018215 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18216 if (!_new_children) {
18217 p->error_indicator = 1;
18218 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018219 return NULL;
18220 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018221 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018223 _children[_n++] = _res;
18224 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018225 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018226 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018228 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18229 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018230 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018231 p->error_indicator = 1;
18232 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018233 return NULL;
18234 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018235 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18236 PyMem_Free(_children);
18237 _PyPegen_insert_memo(p, _start_mark, _loop0_122_type, _seq);
18238 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018239}
18240
Guido van Rossum3941d972020-05-01 09:42:03 -070018241// _gather_121: del_target _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018242static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018243_gather_121_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018244{
18245 if (p->error_indicator) {
18246 return NULL;
18247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018248 asdl_seq * _res = NULL;
18249 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070018250 { // del_target _loop0_122
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018251 if (p->error_indicator) {
18252 return NULL;
18253 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018254 expr_ty elem;
18255 asdl_seq * seq;
18256 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018257 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018258 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018259 (seq = _loop0_122_rule(p)) // _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018260 )
18261 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018262 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018263 goto done;
18264 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018265 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018266 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018267 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018268 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018269 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018270}
18271
Guido van Rossum3941d972020-05-01 09:42:03 -070018272// _loop0_124: ',' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018273static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018274_loop0_124_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018275{
18276 if (p->error_indicator) {
18277 return NULL;
18278 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018279 void *_res = NULL;
18280 int _mark = p->mark;
18281 int _start_mark = p->mark;
18282 void **_children = PyMem_Malloc(sizeof(void *));
18283 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018284 p->error_indicator = 1;
18285 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018286 return NULL;
18287 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018288 ssize_t _children_capacity = 1;
18289 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018290 { // ',' target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018291 if (p->error_indicator) {
18292 return NULL;
18293 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018294 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018295 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018296 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018297 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018298 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018299 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018300 )
18301 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018302 _res = elem;
18303 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018304 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018305 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018306 return NULL;
18307 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018308 if (_n == _children_capacity) {
18309 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018310 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18311 if (!_new_children) {
18312 p->error_indicator = 1;
18313 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018314 return NULL;
18315 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018316 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018318 _children[_n++] = _res;
18319 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018320 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018321 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018323 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18324 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018325 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018326 p->error_indicator = 1;
18327 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018328 return NULL;
18329 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018330 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18331 PyMem_Free(_children);
18332 _PyPegen_insert_memo(p, _start_mark, _loop0_124_type, _seq);
18333 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018334}
18335
Guido van Rossum3941d972020-05-01 09:42:03 -070018336// _gather_123: target _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018337static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018338_gather_123_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018339{
18340 if (p->error_indicator) {
18341 return NULL;
18342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018343 asdl_seq * _res = NULL;
18344 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070018345 { // target _loop0_124
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018346 if (p->error_indicator) {
18347 return NULL;
18348 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018349 expr_ty elem;
18350 asdl_seq * seq;
18351 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018352 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018353 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018354 (seq = _loop0_124_rule(p)) // _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018355 )
18356 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018357 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018358 goto done;
18359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018360 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018361 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018362 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018363 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018364 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018365}
18366
Guido van Rossum3941d972020-05-01 09:42:03 -070018367// _tmp_125: args | expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018368static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070018369_tmp_125_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018370{
18371 if (p->error_indicator) {
18372 return NULL;
18373 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018374 void * _res = NULL;
18375 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018376 { // args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018377 if (p->error_indicator) {
18378 return NULL;
18379 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018380 expr_ty args_var;
18381 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018382 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018383 )
18384 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018385 _res = args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018386 goto done;
18387 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018388 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018389 }
18390 { // expression for_if_clauses
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018391 if (p->error_indicator) {
18392 return NULL;
18393 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018394 expr_ty expression_var;
18395 asdl_seq* for_if_clauses_var;
18396 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018397 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018398 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018399 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018400 )
18401 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018402 _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018403 goto done;
18404 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018405 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018407 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018408 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018409 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018410}
18411
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018412// _loop0_126: star_named_expressions
18413static asdl_seq *
18414_loop0_126_rule(Parser *p)
18415{
18416 if (p->error_indicator) {
18417 return NULL;
18418 }
18419 void *_res = NULL;
18420 int _mark = p->mark;
18421 int _start_mark = p->mark;
18422 void **_children = PyMem_Malloc(sizeof(void *));
18423 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018424 p->error_indicator = 1;
18425 PyErr_NoMemory();
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018426 return NULL;
18427 }
18428 ssize_t _children_capacity = 1;
18429 ssize_t _n = 0;
18430 { // star_named_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018431 if (p->error_indicator) {
18432 return NULL;
18433 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018434 asdl_seq* star_named_expressions_var;
18435 while (
18436 (star_named_expressions_var = star_named_expressions_rule(p)) // star_named_expressions
18437 )
18438 {
18439 _res = star_named_expressions_var;
18440 if (_n == _children_capacity) {
18441 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018442 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18443 if (!_new_children) {
18444 p->error_indicator = 1;
18445 PyErr_NoMemory();
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018446 return NULL;
18447 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018448 _children = _new_children;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018449 }
18450 _children[_n++] = _res;
18451 _mark = p->mark;
18452 }
18453 p->mark = _mark;
18454 }
18455 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18456 if (!_seq) {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018457 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018458 p->error_indicator = 1;
18459 PyErr_NoMemory();
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018460 return NULL;
18461 }
18462 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18463 PyMem_Free(_children);
18464 _PyPegen_insert_memo(p, _start_mark, _loop0_126_type, _seq);
18465 return _seq;
18466}
18467
18468// _tmp_127: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018469static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018470_tmp_127_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018471{
18472 if (p->error_indicator) {
18473 return NULL;
18474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018475 void * _res = NULL;
18476 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018477 { // '=' annotated_rhs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018478 if (p->error_indicator) {
18479 return NULL;
18480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018481 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018482 expr_ty annotated_rhs_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018483 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018484 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018485 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018486 (annotated_rhs_var = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018487 )
18488 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018489 _res = _PyPegen_dummy_name(p, _literal, annotated_rhs_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018490 goto done;
18491 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018492 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018494 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018495 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018496 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018497}
18498
Pablo Galindo16ab0702020-05-15 02:04:52 +010018499// _tmp_128: yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018500static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018501_tmp_128_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018502{
18503 if (p->error_indicator) {
18504 return NULL;
18505 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018506 void * _res = NULL;
18507 int _mark = p->mark;
Pablo Galindo16ab0702020-05-15 02:04:52 +010018508 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018509 if (p->error_indicator) {
18510 return NULL;
18511 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010018512 expr_ty yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018513 if (
Pablo Galindo16ab0702020-05-15 02:04:52 +010018514 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018515 )
18516 {
Pablo Galindo16ab0702020-05-15 02:04:52 +010018517 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018518 goto done;
18519 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018520 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018521 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010018522 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018523 if (p->error_indicator) {
18524 return NULL;
18525 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010018526 expr_ty star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018527 if (
Pablo Galindo16ab0702020-05-15 02:04:52 +010018528 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018529 )
18530 {
Pablo Galindo16ab0702020-05-15 02:04:52 +010018531 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018532 goto done;
18533 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018534 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018535 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018536 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018537 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018538 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018539}
18540
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018541// _tmp_129: yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018542static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018543_tmp_129_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018544{
18545 if (p->error_indicator) {
18546 return NULL;
18547 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018548 void * _res = NULL;
18549 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018550 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018551 if (p->error_indicator) {
18552 return NULL;
18553 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018554 expr_ty yield_expr_var;
18555 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018556 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018557 )
18558 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018559 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018560 goto done;
18561 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018562 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018563 }
18564 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018565 if (p->error_indicator) {
18566 return NULL;
18567 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018568 expr_ty star_expressions_var;
18569 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018570 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018571 )
18572 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018573 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018574 goto done;
18575 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018576 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018577 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018578 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018579 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018580 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018581}
18582
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018583// _tmp_130: '[' | '(' | '{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018584static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018585_tmp_130_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018586{
18587 if (p->error_indicator) {
18588 return NULL;
18589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018590 void * _res = NULL;
18591 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018592 { // '['
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018593 if (p->error_indicator) {
18594 return NULL;
18595 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018596 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018597 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018598 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018599 )
18600 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018601 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018602 goto done;
18603 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018604 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018605 }
18606 { // '('
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018607 if (p->error_indicator) {
18608 return NULL;
18609 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018610 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018611 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018612 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018613 )
18614 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018615 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018616 goto done;
18617 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018618 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018619 }
18620 { // '{'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018621 if (p->error_indicator) {
18622 return NULL;
18623 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018624 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018625 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018626 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018627 )
18628 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018629 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018630 goto done;
18631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018632 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018633 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018634 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018635 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018636 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018637}
18638
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018639// _loop0_131: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018640static asdl_seq *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018641_loop0_131_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018642{
18643 if (p->error_indicator) {
18644 return NULL;
18645 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018646 void *_res = NULL;
18647 int _mark = p->mark;
18648 int _start_mark = p->mark;
18649 void **_children = PyMem_Malloc(sizeof(void *));
18650 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018651 p->error_indicator = 1;
18652 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018653 return NULL;
18654 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018655 ssize_t _children_capacity = 1;
18656 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070018657 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018658 if (p->error_indicator) {
18659 return NULL;
18660 }
Guido van Rossumc001c092020-04-30 12:12:19 -070018661 arg_ty param_no_default_var;
18662 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018663 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018664 )
18665 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018666 _res = param_no_default_var;
18667 if (_n == _children_capacity) {
18668 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018669 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18670 if (!_new_children) {
18671 p->error_indicator = 1;
18672 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018673 return NULL;
18674 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018675 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070018676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018677 _children[_n++] = _res;
18678 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018679 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018680 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018681 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018682 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18683 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018684 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018685 p->error_indicator = 1;
18686 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018687 return NULL;
18688 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018689 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18690 PyMem_Free(_children);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018691 _PyPegen_insert_memo(p, _start_mark, _loop0_131_type, _seq);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018692 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018693}
18694
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018695// _tmp_132: slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018696static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018697_tmp_132_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018698{
18699 if (p->error_indicator) {
18700 return NULL;
18701 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018702 void * _res = NULL;
18703 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018704 { // slash_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018705 if (p->error_indicator) {
18706 return NULL;
18707 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018708 SlashWithDefault* slash_with_default_var;
18709 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018710 (slash_with_default_var = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018711 )
18712 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018713 _res = slash_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018714 goto done;
18715 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018716 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018717 }
Guido van Rossumc001c092020-04-30 12:12:19 -070018718 { // param_with_default+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018719 if (p->error_indicator) {
18720 return NULL;
18721 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018722 asdl_seq * _loop1_146_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018723 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018724 (_loop1_146_var = _loop1_146_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018725 )
18726 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018727 _res = _loop1_146_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018728 goto done;
18729 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018730 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018731 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018732 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018733 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018734 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018735}
18736
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018737// _tmp_133: ')' | ',' (')' | '**')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018738static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018739_tmp_133_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018740{
18741 if (p->error_indicator) {
18742 return NULL;
18743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018744 void * _res = NULL;
18745 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018746 { // ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018747 if (p->error_indicator) {
18748 return NULL;
18749 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018750 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018751 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018752 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018753 )
18754 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018755 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018756 goto done;
18757 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018758 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018759 }
18760 { // ',' (')' | '**')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018761 if (p->error_indicator) {
18762 return NULL;
18763 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018764 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018765 void *_tmp_147_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018766 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018767 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018768 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018769 (_tmp_147_var = _tmp_147_rule(p)) // ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018770 )
18771 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018772 _res = _PyPegen_dummy_name(p, _literal, _tmp_147_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018773 goto done;
18774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018775 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018776 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018777 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018778 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018779 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018780}
18781
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018782// _tmp_134: ':' | ',' (':' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018783static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018784_tmp_134_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018785{
18786 if (p->error_indicator) {
18787 return NULL;
18788 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018789 void * _res = NULL;
18790 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018791 { // ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018792 if (p->error_indicator) {
18793 return NULL;
18794 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018795 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018796 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018797 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018798 )
18799 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018800 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018801 goto done;
18802 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018803 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018804 }
18805 { // ',' (':' | '**')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018806 if (p->error_indicator) {
18807 return NULL;
18808 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018809 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018810 void *_tmp_148_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018811 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018812 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018813 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018814 (_tmp_148_var = _tmp_148_rule(p)) // ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018815 )
18816 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018817 _res = _PyPegen_dummy_name(p, _literal, _tmp_148_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018818 goto done;
18819 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018820 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018821 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018822 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018823 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018824 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018825}
18826
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018827// _tmp_135: star_targets '='
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018828static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018829_tmp_135_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018830{
18831 if (p->error_indicator) {
18832 return NULL;
18833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018834 void * _res = NULL;
18835 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018836 { // star_targets '='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018837 if (p->error_indicator) {
18838 return NULL;
18839 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018840 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018841 expr_ty z;
18842 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018843 (z = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018844 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018845 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018846 )
18847 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018848 _res = z;
18849 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018850 p->error_indicator = 1;
18851 return NULL;
18852 }
18853 goto done;
18854 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018855 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018856 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018857 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018858 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018859 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018860}
18861
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018862// _tmp_136: '.' | '...'
18863static void *
18864_tmp_136_rule(Parser *p)
18865{
18866 if (p->error_indicator) {
18867 return NULL;
18868 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018869 void * _res = NULL;
18870 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018871 { // '.'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018872 if (p->error_indicator) {
18873 return NULL;
18874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018875 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018876 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018877 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018878 )
18879 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018880 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018881 goto done;
18882 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018883 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018884 }
18885 { // '...'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018886 if (p->error_indicator) {
18887 return NULL;
18888 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018889 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018890 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018891 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018892 )
18893 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018894 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018895 goto done;
18896 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018897 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018898 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018899 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018900 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018901 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018902}
18903
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018904// _tmp_137: '.' | '...'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018905static void *
18906_tmp_137_rule(Parser *p)
18907{
18908 if (p->error_indicator) {
18909 return NULL;
18910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018911 void * _res = NULL;
18912 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018913 { // '.'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018914 if (p->error_indicator) {
18915 return NULL;
18916 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018917 Token * _literal;
18918 if (
18919 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
18920 )
18921 {
18922 _res = _literal;
18923 goto done;
18924 }
18925 p->mark = _mark;
18926 }
18927 { // '...'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018928 if (p->error_indicator) {
18929 return NULL;
18930 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018931 Token * _literal;
18932 if (
18933 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
18934 )
18935 {
18936 _res = _literal;
18937 goto done;
18938 }
18939 p->mark = _mark;
18940 }
18941 _res = NULL;
18942 done:
18943 return _res;
18944}
18945
18946// _tmp_138: '@' named_expression NEWLINE
18947static void *
18948_tmp_138_rule(Parser *p)
18949{
18950 if (p->error_indicator) {
18951 return NULL;
18952 }
18953 void * _res = NULL;
18954 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018955 { // '@' named_expression NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018956 if (p->error_indicator) {
18957 return NULL;
18958 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018959 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018960 expr_ty f;
Pablo Galindob796b3f2020-05-01 12:32:26 +010018961 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018962 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018963 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018964 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018965 (f = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018966 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018967 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018968 )
18969 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018970 _res = f;
18971 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018972 p->error_indicator = 1;
18973 return NULL;
18974 }
18975 goto done;
18976 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018977 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018978 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018979 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018980 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018981 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018982}
18983
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018984// _tmp_139: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018985static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018986_tmp_139_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018987{
18988 if (p->error_indicator) {
18989 return NULL;
18990 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018991 void * _res = NULL;
18992 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018993 { // ',' star_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018994 if (p->error_indicator) {
18995 return NULL;
18996 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018997 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018998 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018999 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019000 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019001 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019002 (c = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019003 )
19004 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019005 _res = c;
19006 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019007 p->error_indicator = 1;
19008 return NULL;
19009 }
19010 goto done;
19011 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019012 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019013 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019014 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019015 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019016 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019017}
19018
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019019// _tmp_140: ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019020static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019021_tmp_140_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019022{
19023 if (p->error_indicator) {
19024 return NULL;
19025 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019026 void * _res = NULL;
19027 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019028 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019029 if (p->error_indicator) {
19030 return NULL;
19031 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019032 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019033 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019034 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019035 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019036 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019037 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019038 )
19039 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019040 _res = c;
19041 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019042 p->error_indicator = 1;
19043 return NULL;
19044 }
19045 goto done;
19046 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019047 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019048 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019049 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019050 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019051 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019052}
19053
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019054// _tmp_141: 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019055static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019056_tmp_141_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019057{
19058 if (p->error_indicator) {
19059 return NULL;
19060 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019061 void * _res = NULL;
19062 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019063 { // 'or' conjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019064 if (p->error_indicator) {
19065 return NULL;
19066 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019067 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019068 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019069 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019070 (_keyword = _PyPegen_expect_token(p, 532)) // token='or'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019071 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019072 (c = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019073 )
19074 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019075 _res = c;
19076 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019077 p->error_indicator = 1;
19078 return NULL;
19079 }
19080 goto done;
19081 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019082 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019083 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019084 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019085 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019086 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019087}
19088
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019089// _tmp_142: 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019090static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019091_tmp_142_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019092{
19093 if (p->error_indicator) {
19094 return NULL;
19095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019096 void * _res = NULL;
19097 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019098 { // 'and' inversion
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019099 if (p->error_indicator) {
19100 return NULL;
19101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019102 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019103 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019104 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019105 (_keyword = _PyPegen_expect_token(p, 533)) // token='and'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019106 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019107 (c = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019108 )
19109 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019110 _res = c;
19111 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019112 p->error_indicator = 1;
19113 return NULL;
19114 }
19115 goto done;
19116 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019117 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019119 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019120 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019121 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019122}
19123
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019124// _tmp_143: 'if' disjunction
19125static void *
19126_tmp_143_rule(Parser *p)
19127{
19128 if (p->error_indicator) {
19129 return NULL;
19130 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019131 void * _res = NULL;
19132 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019133 { // 'if' disjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019134 if (p->error_indicator) {
19135 return NULL;
19136 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019137 Token * _keyword;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019138 expr_ty z;
19139 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019140 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019141 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019142 (z = disjunction_rule(p)) // disjunction
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019143 )
19144 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019145 _res = z;
19146 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019147 p->error_indicator = 1;
19148 return NULL;
19149 }
19150 goto done;
19151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019152 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019153 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019154 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019155 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019156 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019157}
19158
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019159// _tmp_144: 'if' disjunction
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019160static void *
19161_tmp_144_rule(Parser *p)
19162{
19163 if (p->error_indicator) {
19164 return NULL;
19165 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019166 void * _res = NULL;
19167 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019168 { // 'if' disjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019169 if (p->error_indicator) {
19170 return NULL;
19171 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019172 Token * _keyword;
19173 expr_ty z;
19174 if (
19175 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
19176 &&
19177 (z = disjunction_rule(p)) // disjunction
19178 )
19179 {
19180 _res = z;
19181 if (_res == NULL && PyErr_Occurred()) {
19182 p->error_indicator = 1;
19183 return NULL;
19184 }
19185 goto done;
19186 }
19187 p->mark = _mark;
19188 }
19189 _res = NULL;
19190 done:
19191 return _res;
19192}
19193
19194// _tmp_145: ',' star_target
19195static void *
19196_tmp_145_rule(Parser *p)
19197{
19198 if (p->error_indicator) {
19199 return NULL;
19200 }
19201 void * _res = NULL;
19202 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019203 { // ',' star_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019204 if (p->error_indicator) {
19205 return NULL;
19206 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019207 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019208 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019209 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019210 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019211 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019212 (c = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019213 )
19214 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019215 _res = c;
19216 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019217 p->error_indicator = 1;
19218 return NULL;
19219 }
19220 goto done;
19221 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019222 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019223 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019224 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019225 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019226 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019227}
19228
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019229// _loop1_146: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019230static asdl_seq *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019231_loop1_146_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070019232{
19233 if (p->error_indicator) {
19234 return NULL;
19235 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019236 void *_res = NULL;
19237 int _mark = p->mark;
19238 int _start_mark = p->mark;
19239 void **_children = PyMem_Malloc(sizeof(void *));
19240 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019241 p->error_indicator = 1;
19242 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070019243 return NULL;
19244 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019245 ssize_t _children_capacity = 1;
19246 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070019247 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019248 if (p->error_indicator) {
19249 return NULL;
19250 }
Guido van Rossumc001c092020-04-30 12:12:19 -070019251 NameDefaultPair* param_with_default_var;
19252 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010019253 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070019254 )
19255 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019256 _res = param_with_default_var;
19257 if (_n == _children_capacity) {
19258 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019259 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19260 if (!_new_children) {
19261 p->error_indicator = 1;
19262 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070019263 return NULL;
19264 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019265 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070019266 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019267 _children[_n++] = _res;
19268 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070019269 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019270 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070019271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019272 if (_n == 0 || p->error_indicator) {
19273 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070019274 return NULL;
19275 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019276 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19277 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019278 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019279 p->error_indicator = 1;
19280 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070019281 return NULL;
19282 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019283 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19284 PyMem_Free(_children);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019285 _PyPegen_insert_memo(p, _start_mark, _loop1_146_type, _seq);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019286 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070019287}
19288
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019289// _tmp_147: ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019290static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019291_tmp_147_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019292{
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;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019298 { // ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019299 if (p->error_indicator) {
19300 return NULL;
19301 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019302 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019303 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019304 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019305 )
19306 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019307 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019308 goto done;
19309 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019310 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019311 }
19312 { // '**'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019313 if (p->error_indicator) {
19314 return NULL;
19315 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019316 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019317 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019318 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019319 )
19320 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019321 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019322 goto done;
19323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019324 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019325 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019326 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019327 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019328 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019329}
19330
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019331// _tmp_148: ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019332static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019333_tmp_148_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019334{
19335 if (p->error_indicator) {
19336 return NULL;
19337 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019338 void * _res = NULL;
19339 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019340 { // ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019341 if (p->error_indicator) {
19342 return NULL;
19343 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019344 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019345 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019346 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019347 )
19348 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019349 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019350 goto done;
19351 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019352 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019353 }
19354 { // '**'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019355 if (p->error_indicator) {
19356 return NULL;
19357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019358 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019359 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019360 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019361 )
19362 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019363 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019364 goto done;
19365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019366 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019367 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019368 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019369 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019370 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019371}
19372
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019373void *
19374_PyPegen_parse(Parser *p)
19375{
19376 // Initialize keywords
19377 p->keywords = reserved_keywords;
19378 p->n_keyword_lists = n_keyword_lists;
19379
19380 // Run parser
19381 void *result = NULL;
19382 if (p->start_rule == Py_file_input) {
19383 result = file_rule(p);
19384 } else if (p->start_rule == Py_single_input) {
19385 result = interactive_rule(p);
19386 } else if (p->start_rule == Py_eval_input) {
19387 result = eval_rule(p);
Guido van Rossumc001c092020-04-30 12:12:19 -070019388 } else if (p->start_rule == Py_func_type_input) {
19389 result = func_type_rule(p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019390 } else if (p->start_rule == Py_fstring_input) {
19391 result = fstring_rule(p);
19392 }
19393
19394 return result;
19395}
19396
19397// The end