blob: f4c5692212768daf88b6754aca1cf53a807d3d09 [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? $
686 void *a;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100687 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100688 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100689 (a = statements_rule(p), 1) // statements?
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100690 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100691 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100692 )
693 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100694 _res = _PyPegen_make_module ( p , a );
695 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100696 p->error_indicator = 1;
697 return NULL;
698 }
699 goto done;
700 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100701 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100703 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100704 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100705 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100706}
707
708// interactive: statement_newline
709static mod_ty
710interactive_rule(Parser *p)
711{
712 if (p->error_indicator) {
713 return NULL;
714 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100715 mod_ty _res = NULL;
716 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100717 { // statement_newline
718 asdl_seq* a;
719 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100720 (a = statement_newline_rule(p)) // statement_newline
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100721 )
722 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100723 _res = Interactive ( a , p -> arena );
724 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100725 p->error_indicator = 1;
726 return NULL;
727 }
728 goto done;
729 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100730 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100731 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100732 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100733 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100734 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100735}
736
737// eval: expressions NEWLINE* $
738static mod_ty
739eval_rule(Parser *p)
740{
741 if (p->error_indicator) {
742 return NULL;
743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100744 mod_ty _res = NULL;
745 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100746 { // expressions NEWLINE* $
747 asdl_seq * _loop0_1_var;
748 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100749 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100750 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100751 (a = expressions_rule(p)) // expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100752 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100753 (_loop0_1_var = _loop0_1_rule(p)) // NEWLINE*
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100754 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100755 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100756 )
757 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100758 _res = Expression ( a , p -> arena );
759 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100760 p->error_indicator = 1;
761 return NULL;
762 }
763 goto done;
764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100765 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100766 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100767 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100768 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100769 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100770}
771
Guido van Rossumc001c092020-04-30 12:12:19 -0700772// func_type: '(' type_expressions? ')' '->' expression NEWLINE* $
773static mod_ty
774func_type_rule(Parser *p)
775{
776 if (p->error_indicator) {
777 return NULL;
778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100779 mod_ty _res = NULL;
780 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700781 { // '(' type_expressions? ')' '->' expression NEWLINE* $
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100782 Token * _literal;
783 Token * _literal_1;
784 Token * _literal_2;
Guido van Rossumc001c092020-04-30 12:12:19 -0700785 asdl_seq * _loop0_2_var;
786 void *a;
787 expr_ty b;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100788 Token * endmarker_var;
Guido van Rossumc001c092020-04-30 12:12:19 -0700789 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100790 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Guido van Rossumc001c092020-04-30 12:12:19 -0700791 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100792 (a = type_expressions_rule(p), 1) // type_expressions?
Guido van Rossumc001c092020-04-30 12:12:19 -0700793 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100794 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -0700795 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100796 (_literal_2 = _PyPegen_expect_token(p, 51)) // token='->'
Guido van Rossumc001c092020-04-30 12:12:19 -0700797 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100798 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700799 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100800 (_loop0_2_var = _loop0_2_rule(p)) // NEWLINE*
Guido van Rossumc001c092020-04-30 12:12:19 -0700801 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100802 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Guido van Rossumc001c092020-04-30 12:12:19 -0700803 )
804 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100805 _res = FunctionType ( a , b , p -> arena );
806 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700807 p->error_indicator = 1;
808 return NULL;
809 }
810 goto done;
811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100812 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700813 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100814 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -0700815 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100816 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -0700817}
818
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100819// fstring: star_expressions
820static expr_ty
821fstring_rule(Parser *p)
822{
823 if (p->error_indicator) {
824 return NULL;
825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100826 expr_ty _res = NULL;
827 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100828 { // star_expressions
829 expr_ty star_expressions_var;
830 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100831 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100832 )
833 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100834 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100835 goto done;
836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100837 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100838 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100839 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100840 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100841 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100842}
843
Guido van Rossumc001c092020-04-30 12:12:19 -0700844// type_expressions:
845// | ','.expression+ ',' '*' expression ',' '**' expression
846// | ','.expression+ ',' '*' expression
847// | ','.expression+ ',' '**' expression
Shantanu603d3542020-05-03 22:08:14 -0700848// | '*' expression ',' '**' expression
849// | '*' expression
850// | '**' expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700851// | ','.expression+
852static asdl_seq*
853type_expressions_rule(Parser *p)
854{
855 if (p->error_indicator) {
856 return NULL;
857 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100858 asdl_seq* _res = NULL;
859 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700860 { // ','.expression+ ',' '*' expression ',' '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100861 Token * _literal;
862 Token * _literal_1;
863 Token * _literal_2;
864 Token * _literal_3;
Guido van Rossumc001c092020-04-30 12:12:19 -0700865 asdl_seq * a;
866 expr_ty b;
867 expr_ty c;
Guido van Rossumc001c092020-04-30 12:12:19 -0700868 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100869 (a = _gather_3_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700870 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100871 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700872 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100873 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Guido van Rossumc001c092020-04-30 12:12:19 -0700874 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100875 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700876 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100877 (_literal_2 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700878 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100879 (_literal_3 = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -0700880 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100881 (c = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700882 )
883 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100884 _res = _PyPegen_seq_append_to_end ( p , CHECK ( _PyPegen_seq_append_to_end ( p , a , b ) ) , c );
885 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700886 p->error_indicator = 1;
887 return NULL;
888 }
889 goto done;
890 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100891 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700892 }
893 { // ','.expression+ ',' '*' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100894 Token * _literal;
895 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -0700896 asdl_seq * a;
897 expr_ty b;
Guido van Rossumc001c092020-04-30 12:12:19 -0700898 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100899 (a = _gather_5_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700900 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100901 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700902 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100903 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Guido van Rossumc001c092020-04-30 12:12:19 -0700904 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100905 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700906 )
907 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100908 _res = _PyPegen_seq_append_to_end ( p , a , b );
909 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700910 p->error_indicator = 1;
911 return NULL;
912 }
913 goto done;
914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100915 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700916 }
917 { // ','.expression+ ',' '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100918 Token * _literal;
919 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -0700920 asdl_seq * a;
921 expr_ty b;
Guido van Rossumc001c092020-04-30 12:12:19 -0700922 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100923 (a = _gather_7_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700924 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100925 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700926 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100927 (_literal_1 = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -0700928 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100929 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700930 )
931 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100932 _res = _PyPegen_seq_append_to_end ( p , a , b );
933 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700934 p->error_indicator = 1;
935 return NULL;
936 }
937 goto done;
938 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100939 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700940 }
Shantanu603d3542020-05-03 22:08:14 -0700941 { // '*' expression ',' '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100942 Token * _literal;
943 Token * _literal_1;
944 Token * _literal_2;
Shantanu603d3542020-05-03 22:08:14 -0700945 expr_ty a;
946 expr_ty b;
Shantanu603d3542020-05-03 22:08:14 -0700947 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100948 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Shantanu603d3542020-05-03 22:08:14 -0700949 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100950 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700951 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100952 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Shantanu603d3542020-05-03 22:08:14 -0700953 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100954 (_literal_2 = _PyPegen_expect_token(p, 35)) // token='**'
Shantanu603d3542020-05-03 22:08:14 -0700955 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100956 (b = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700957 )
958 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100959 _res = _PyPegen_seq_append_to_end ( p , CHECK ( _PyPegen_singleton_seq ( p , a ) ) , b );
960 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -0700961 p->error_indicator = 1;
962 return NULL;
963 }
964 goto done;
965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100966 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -0700967 }
968 { // '*' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100969 Token * _literal;
Shantanu603d3542020-05-03 22:08:14 -0700970 expr_ty a;
Shantanu603d3542020-05-03 22:08:14 -0700971 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100972 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Shantanu603d3542020-05-03 22:08:14 -0700973 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100974 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700975 )
976 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100977 _res = _PyPegen_singleton_seq ( p , a );
978 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -0700979 p->error_indicator = 1;
980 return NULL;
981 }
982 goto done;
983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100984 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -0700985 }
986 { // '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100987 Token * _literal;
Shantanu603d3542020-05-03 22:08:14 -0700988 expr_ty a;
Shantanu603d3542020-05-03 22:08:14 -0700989 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100990 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Shantanu603d3542020-05-03 22:08:14 -0700991 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100992 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700993 )
994 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100995 _res = _PyPegen_singleton_seq ( p , a );
996 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -0700997 p->error_indicator = 1;
998 return NULL;
999 }
1000 goto done;
1001 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001002 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -07001003 }
Guido van Rossumc001c092020-04-30 12:12:19 -07001004 { // ','.expression+
1005 asdl_seq * _gather_9_var;
1006 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001007 (_gather_9_var = _gather_9_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -07001008 )
1009 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001010 _res = _gather_9_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07001011 goto done;
1012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001013 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07001014 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001015 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07001016 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001017 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07001018}
1019
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001020// statements: statement+
1021static asdl_seq*
1022statements_rule(Parser *p)
1023{
1024 if (p->error_indicator) {
1025 return NULL;
1026 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001027 asdl_seq* _res = NULL;
1028 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001029 { // statement+
1030 asdl_seq * a;
1031 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001032 (a = _loop1_11_rule(p)) // statement+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001033 )
1034 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001035 _res = _PyPegen_seq_flatten ( p , a );
1036 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001037 p->error_indicator = 1;
1038 return NULL;
1039 }
1040 goto done;
1041 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001042 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001043 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001044 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001045 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001046 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001047}
1048
1049// statement: compound_stmt | simple_stmt
1050static asdl_seq*
1051statement_rule(Parser *p)
1052{
1053 if (p->error_indicator) {
1054 return NULL;
1055 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001056 asdl_seq* _res = NULL;
1057 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001058 { // compound_stmt
1059 stmt_ty a;
1060 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001061 (a = compound_stmt_rule(p)) // compound_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001062 )
1063 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001064 _res = _PyPegen_singleton_seq ( p , a );
1065 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001066 p->error_indicator = 1;
1067 return NULL;
1068 }
1069 goto done;
1070 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001071 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001072 }
1073 { // simple_stmt
1074 asdl_seq* simple_stmt_var;
1075 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001076 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001077 )
1078 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001079 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001080 goto done;
1081 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001082 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001083 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001084 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001085 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001086 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001087}
1088
1089// statement_newline: compound_stmt NEWLINE | simple_stmt | NEWLINE | $
1090static asdl_seq*
1091statement_newline_rule(Parser *p)
1092{
1093 if (p->error_indicator) {
1094 return NULL;
1095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001096 asdl_seq* _res = NULL;
1097 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001098 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1099 p->error_indicator = 1;
1100 return NULL;
1101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001102 int _start_lineno = p->tokens[_mark]->lineno;
1103 UNUSED(_start_lineno); // Only used by EXTRA macro
1104 int _start_col_offset = p->tokens[_mark]->col_offset;
1105 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001106 { // compound_stmt NEWLINE
1107 stmt_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001108 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001109 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001110 (a = compound_stmt_rule(p)) // compound_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001111 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001112 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001113 )
1114 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001115 _res = _PyPegen_singleton_seq ( p , a );
1116 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001117 p->error_indicator = 1;
1118 return NULL;
1119 }
1120 goto done;
1121 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001122 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001123 }
1124 { // simple_stmt
1125 asdl_seq* simple_stmt_var;
1126 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001127 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001128 )
1129 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001130 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001131 goto done;
1132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001133 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001134 }
1135 { // NEWLINE
Pablo Galindob796b3f2020-05-01 12:32:26 +01001136 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001137 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001138 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001139 )
1140 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001141 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1142 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001143 return NULL;
1144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001145 int _end_lineno = _token->end_lineno;
1146 UNUSED(_end_lineno); // Only used by EXTRA macro
1147 int _end_col_offset = _token->end_col_offset;
1148 UNUSED(_end_col_offset); // Only used by EXTRA macro
1149 _res = _PyPegen_singleton_seq ( p , CHECK ( _Py_Pass ( EXTRA ) ) );
1150 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001151 p->error_indicator = 1;
1152 return NULL;
1153 }
1154 goto done;
1155 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001156 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001157 }
1158 { // $
Pablo Galindob796b3f2020-05-01 12:32:26 +01001159 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001160 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001161 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001162 )
1163 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001164 _res = _PyPegen_interactive_exit ( p );
1165 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001166 p->error_indicator = 1;
1167 return NULL;
1168 }
1169 goto done;
1170 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001171 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001172 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001173 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001174 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001175 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001176}
1177
1178// simple_stmt: small_stmt !';' NEWLINE | ';'.small_stmt+ ';'? NEWLINE
1179static asdl_seq*
1180simple_stmt_rule(Parser *p)
1181{
1182 if (p->error_indicator) {
1183 return NULL;
1184 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001185 asdl_seq* _res = NULL;
1186 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001187 { // small_stmt !';' NEWLINE
1188 stmt_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001189 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001190 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001191 (a = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001192 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001193 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 13) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001194 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001195 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001196 )
1197 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001198 _res = _PyPegen_singleton_seq ( p , a );
1199 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001200 p->error_indicator = 1;
1201 return NULL;
1202 }
1203 goto done;
1204 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001205 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001206 }
1207 { // ';'.small_stmt+ ';'? NEWLINE
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001208 void *_opt_var;
1209 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001210 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001211 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001212 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001213 (a = _gather_12_rule(p)) // ';'.small_stmt+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001214 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001215 (_opt_var = _PyPegen_expect_token(p, 13), 1) // ';'?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001216 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001217 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001218 )
1219 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001220 _res = a;
1221 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001222 p->error_indicator = 1;
1223 return NULL;
1224 }
1225 goto done;
1226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001227 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001229 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001230 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001231 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001232}
1233
1234// small_stmt:
1235// | assignment
1236// | star_expressions
1237// | &'return' return_stmt
1238// | &('import' | 'from') import_stmt
1239// | &'raise' raise_stmt
1240// | 'pass'
1241// | &'del' del_stmt
1242// | &'yield' yield_stmt
1243// | &'assert' assert_stmt
1244// | 'break'
1245// | 'continue'
1246// | &'global' global_stmt
1247// | &'nonlocal' nonlocal_stmt
1248static stmt_ty
1249small_stmt_rule(Parser *p)
1250{
1251 if (p->error_indicator) {
1252 return NULL;
1253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001254 stmt_ty _res = NULL;
1255 if (_PyPegen_is_memoized(p, small_stmt_type, &_res))
1256 return _res;
1257 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001258 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1259 p->error_indicator = 1;
1260 return NULL;
1261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001262 int _start_lineno = p->tokens[_mark]->lineno;
1263 UNUSED(_start_lineno); // Only used by EXTRA macro
1264 int _start_col_offset = p->tokens[_mark]->col_offset;
1265 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001266 { // assignment
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +03001267 stmt_ty assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001268 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001269 (assignment_var = assignment_rule(p)) // assignment
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001270 )
1271 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001272 _res = assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001273 goto done;
1274 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001275 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001276 }
1277 { // star_expressions
1278 expr_ty e;
1279 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001280 (e = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001281 )
1282 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001283 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1284 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001285 return NULL;
1286 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001287 int _end_lineno = _token->end_lineno;
1288 UNUSED(_end_lineno); // Only used by EXTRA macro
1289 int _end_col_offset = _token->end_col_offset;
1290 UNUSED(_end_col_offset); // Only used by EXTRA macro
1291 _res = _Py_Expr ( e , EXTRA );
1292 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001293 p->error_indicator = 1;
1294 return NULL;
1295 }
1296 goto done;
1297 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001298 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001299 }
1300 { // &'return' return_stmt
1301 stmt_ty return_stmt_var;
1302 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001303 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 500) // token='return'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001304 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001305 (return_stmt_var = return_stmt_rule(p)) // return_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001306 )
1307 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001308 _res = return_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001309 goto done;
1310 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001311 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001312 }
1313 { // &('import' | 'from') import_stmt
1314 stmt_ty import_stmt_var;
1315 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001316 _PyPegen_lookahead(1, _tmp_14_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001317 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001318 (import_stmt_var = import_stmt_rule(p)) // import_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001319 )
1320 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001321 _res = import_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001322 goto done;
1323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001324 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001325 }
1326 { // &'raise' raise_stmt
1327 stmt_ty raise_stmt_var;
1328 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001329 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 501) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001330 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001331 (raise_stmt_var = raise_stmt_rule(p)) // raise_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001332 )
1333 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001334 _res = raise_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001335 goto done;
1336 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001337 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001338 }
1339 { // 'pass'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001340 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001341 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001342 (_keyword = _PyPegen_expect_token(p, 502)) // token='pass'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001343 )
1344 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001345 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1346 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001347 return NULL;
1348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001349 int _end_lineno = _token->end_lineno;
1350 UNUSED(_end_lineno); // Only used by EXTRA macro
1351 int _end_col_offset = _token->end_col_offset;
1352 UNUSED(_end_col_offset); // Only used by EXTRA macro
1353 _res = _Py_Pass ( EXTRA );
1354 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001355 p->error_indicator = 1;
1356 return NULL;
1357 }
1358 goto done;
1359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001360 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001361 }
1362 { // &'del' del_stmt
1363 stmt_ty del_stmt_var;
1364 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001365 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 503) // token='del'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001366 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001367 (del_stmt_var = del_stmt_rule(p)) // del_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001368 )
1369 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001370 _res = del_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001371 goto done;
1372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001373 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001374 }
1375 { // &'yield' yield_stmt
1376 stmt_ty yield_stmt_var;
1377 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001378 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 504) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001379 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001380 (yield_stmt_var = yield_stmt_rule(p)) // yield_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001381 )
1382 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001383 _res = yield_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001384 goto done;
1385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001386 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001387 }
1388 { // &'assert' assert_stmt
1389 stmt_ty assert_stmt_var;
1390 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001391 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 505) // token='assert'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001392 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001393 (assert_stmt_var = assert_stmt_rule(p)) // assert_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001394 )
1395 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001396 _res = assert_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001397 goto done;
1398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001399 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001400 }
1401 { // 'break'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001402 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001403 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001404 (_keyword = _PyPegen_expect_token(p, 506)) // token='break'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001405 )
1406 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001407 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1408 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001409 return NULL;
1410 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001411 int _end_lineno = _token->end_lineno;
1412 UNUSED(_end_lineno); // Only used by EXTRA macro
1413 int _end_col_offset = _token->end_col_offset;
1414 UNUSED(_end_col_offset); // Only used by EXTRA macro
1415 _res = _Py_Break ( EXTRA );
1416 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001417 p->error_indicator = 1;
1418 return NULL;
1419 }
1420 goto done;
1421 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001422 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001423 }
1424 { // 'continue'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001425 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001426 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001427 (_keyword = _PyPegen_expect_token(p, 507)) // token='continue'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001428 )
1429 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001430 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1431 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001432 return NULL;
1433 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001434 int _end_lineno = _token->end_lineno;
1435 UNUSED(_end_lineno); // Only used by EXTRA macro
1436 int _end_col_offset = _token->end_col_offset;
1437 UNUSED(_end_col_offset); // Only used by EXTRA macro
1438 _res = _Py_Continue ( EXTRA );
1439 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001440 p->error_indicator = 1;
1441 return NULL;
1442 }
1443 goto done;
1444 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001445 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001446 }
1447 { // &'global' global_stmt
1448 stmt_ty global_stmt_var;
1449 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001450 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 508) // token='global'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001451 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001452 (global_stmt_var = global_stmt_rule(p)) // global_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001453 )
1454 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001455 _res = global_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001456 goto done;
1457 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001458 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001459 }
1460 { // &'nonlocal' nonlocal_stmt
1461 stmt_ty nonlocal_stmt_var;
1462 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001463 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 509) // token='nonlocal'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001464 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001465 (nonlocal_stmt_var = nonlocal_stmt_rule(p)) // nonlocal_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001466 )
1467 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001468 _res = nonlocal_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001469 goto done;
1470 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001471 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001473 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001474 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001475 _PyPegen_insert_memo(p, _mark, small_stmt_type, _res);
1476 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001477}
1478
1479// compound_stmt:
1480// | &('def' | '@' | ASYNC) function_def
1481// | &'if' if_stmt
1482// | &('class' | '@') class_def
1483// | &('with' | ASYNC) with_stmt
1484// | &('for' | ASYNC) for_stmt
1485// | &'try' try_stmt
1486// | &'while' while_stmt
1487static stmt_ty
1488compound_stmt_rule(Parser *p)
1489{
1490 if (p->error_indicator) {
1491 return NULL;
1492 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001493 stmt_ty _res = NULL;
1494 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001495 { // &('def' | '@' | ASYNC) function_def
1496 stmt_ty function_def_var;
1497 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001498 _PyPegen_lookahead(1, _tmp_15_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001499 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001500 (function_def_var = function_def_rule(p)) // function_def
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001501 )
1502 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001503 _res = function_def_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001504 goto done;
1505 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001506 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001507 }
1508 { // &'if' if_stmt
1509 stmt_ty if_stmt_var;
1510 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001511 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 510) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001512 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001513 (if_stmt_var = if_stmt_rule(p)) // if_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001514 )
1515 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001516 _res = if_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001517 goto done;
1518 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001519 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001520 }
1521 { // &('class' | '@') class_def
1522 stmt_ty class_def_var;
1523 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001524 _PyPegen_lookahead(1, _tmp_16_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001525 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001526 (class_def_var = class_def_rule(p)) // class_def
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001527 )
1528 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001529 _res = class_def_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001530 goto done;
1531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001532 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001533 }
1534 { // &('with' | ASYNC) with_stmt
1535 stmt_ty with_stmt_var;
1536 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001537 _PyPegen_lookahead(1, _tmp_17_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001538 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001539 (with_stmt_var = with_stmt_rule(p)) // with_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001540 )
1541 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001542 _res = with_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001543 goto done;
1544 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001545 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001546 }
1547 { // &('for' | ASYNC) for_stmt
1548 stmt_ty for_stmt_var;
1549 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001550 _PyPegen_lookahead(1, _tmp_18_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001551 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001552 (for_stmt_var = for_stmt_rule(p)) // for_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001553 )
1554 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001555 _res = for_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001556 goto done;
1557 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001558 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001559 }
1560 { // &'try' try_stmt
1561 stmt_ty try_stmt_var;
1562 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001563 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 511) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001564 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001565 (try_stmt_var = try_stmt_rule(p)) // try_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001566 )
1567 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001568 _res = try_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001569 goto done;
1570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001571 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001572 }
1573 { // &'while' while_stmt
1574 stmt_ty while_stmt_var;
1575 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001576 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 512) // token='while'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001577 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001578 (while_stmt_var = while_stmt_rule(p)) // while_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001579 )
1580 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001581 _res = while_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001582 goto done;
1583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001584 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001586 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001587 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001588 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001589}
1590
1591// assignment:
1592// | NAME ':' expression ['=' annotated_rhs]
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001593// | ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
Guido van Rossumc001c092020-04-30 12:12:19 -07001594// | ((star_targets '='))+ (yield_expr | star_expressions) TYPE_COMMENT?
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001595// | single_target augassign (yield_expr | star_expressions)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001596// | invalid_assignment
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +03001597static stmt_ty
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001598assignment_rule(Parser *p)
1599{
1600 if (p->error_indicator) {
1601 return NULL;
1602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001603 stmt_ty _res = NULL;
1604 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001605 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1606 p->error_indicator = 1;
1607 return NULL;
1608 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001609 int _start_lineno = p->tokens[_mark]->lineno;
1610 UNUSED(_start_lineno); // Only used by EXTRA macro
1611 int _start_col_offset = p->tokens[_mark]->col_offset;
1612 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001613 { // NAME ':' expression ['=' annotated_rhs]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001614 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001615 expr_ty a;
1616 expr_ty b;
1617 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001618 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001619 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001620 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001621 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001622 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001623 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001624 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001625 (c = _tmp_19_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001626 )
1627 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001628 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1629 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001630 return NULL;
1631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001632 int _end_lineno = _token->end_lineno;
1633 UNUSED(_end_lineno); // Only used by EXTRA macro
1634 int _end_col_offset = _token->end_col_offset;
1635 UNUSED(_end_col_offset); // Only used by EXTRA macro
1636 _res = CHECK_VERSION ( 6 , "Variable annotation syntax is" , _Py_AnnAssign ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , b , c , 1 , EXTRA ) );
1637 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001638 p->error_indicator = 1;
1639 return NULL;
1640 }
1641 goto done;
1642 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001643 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001644 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001645 { // ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001646 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001647 void *a;
1648 expr_ty b;
1649 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001650 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001651 (a = _tmp_20_rule(p)) // '(' single_target ')' | single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001652 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001653 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001654 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001655 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001656 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001657 (c = _tmp_21_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001658 )
1659 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001660 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1661 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001662 return NULL;
1663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001664 int _end_lineno = _token->end_lineno;
1665 UNUSED(_end_lineno); // Only used by EXTRA macro
1666 int _end_col_offset = _token->end_col_offset;
1667 UNUSED(_end_col_offset); // Only used by EXTRA macro
1668 _res = CHECK_VERSION ( 6 , "Variable annotations syntax is" , _Py_AnnAssign ( a , b , c , 0 , EXTRA ) );
1669 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001670 p->error_indicator = 1;
1671 return NULL;
1672 }
1673 goto done;
1674 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001675 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001676 }
Guido van Rossumc001c092020-04-30 12:12:19 -07001677 { // ((star_targets '='))+ (yield_expr | star_expressions) TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001678 asdl_seq * a;
1679 void *b;
Guido van Rossumc001c092020-04-30 12:12:19 -07001680 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001681 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001682 (a = _loop1_22_rule(p)) // ((star_targets '='))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001683 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001684 (b = _tmp_23_rule(p)) // yield_expr | star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -07001685 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001686 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001687 )
1688 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001689 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1690 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001691 return NULL;
1692 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001693 int _end_lineno = _token->end_lineno;
1694 UNUSED(_end_lineno); // Only used by EXTRA macro
1695 int _end_col_offset = _token->end_col_offset;
1696 UNUSED(_end_col_offset); // Only used by EXTRA macro
1697 _res = _Py_Assign ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
1698 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001699 p->error_indicator = 1;
1700 return NULL;
1701 }
1702 goto done;
1703 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001704 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001705 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001706 { // single_target augassign (yield_expr | star_expressions)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001707 expr_ty a;
1708 AugOperator* b;
1709 void *c;
1710 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001711 (a = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001712 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001713 (b = augassign_rule(p)) // augassign
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001714 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001715 (c = _tmp_24_rule(p)) // yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001716 )
1717 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001718 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1719 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001720 return NULL;
1721 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001722 int _end_lineno = _token->end_lineno;
1723 UNUSED(_end_lineno); // Only used by EXTRA macro
1724 int _end_col_offset = _token->end_col_offset;
1725 UNUSED(_end_col_offset); // Only used by EXTRA macro
1726 _res = _Py_AugAssign ( a , b -> kind , c , EXTRA );
1727 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001728 p->error_indicator = 1;
1729 return NULL;
1730 }
1731 goto done;
1732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001733 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001734 }
1735 { // invalid_assignment
1736 void *invalid_assignment_var;
1737 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001738 (invalid_assignment_var = invalid_assignment_rule(p)) // invalid_assignment
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001739 )
1740 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001741 _res = invalid_assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001742 goto done;
1743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001744 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001745 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001746 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001747 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001748 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001749}
1750
1751// augassign:
1752// | '+='
1753// | '-='
1754// | '*='
1755// | '@='
1756// | '/='
1757// | '%='
1758// | '&='
1759// | '|='
1760// | '^='
1761// | '<<='
1762// | '>>='
1763// | '**='
1764// | '//='
1765static AugOperator*
1766augassign_rule(Parser *p)
1767{
1768 if (p->error_indicator) {
1769 return NULL;
1770 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001771 AugOperator* _res = NULL;
1772 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001773 { // '+='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001774 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001775 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001776 (_literal = _PyPegen_expect_token(p, 36)) // token='+='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001777 )
1778 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001779 _res = _PyPegen_augoperator ( p , Add );
1780 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001781 p->error_indicator = 1;
1782 return NULL;
1783 }
1784 goto done;
1785 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001786 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001787 }
1788 { // '-='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001789 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001790 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001791 (_literal = _PyPegen_expect_token(p, 37)) // token='-='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001792 )
1793 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001794 _res = _PyPegen_augoperator ( p , Sub );
1795 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001796 p->error_indicator = 1;
1797 return NULL;
1798 }
1799 goto done;
1800 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001801 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001802 }
1803 { // '*='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001804 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001805 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001806 (_literal = _PyPegen_expect_token(p, 38)) // token='*='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001807 )
1808 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001809 _res = _PyPegen_augoperator ( p , Mult );
1810 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001811 p->error_indicator = 1;
1812 return NULL;
1813 }
1814 goto done;
1815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001816 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001817 }
1818 { // '@='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001819 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001820 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001821 (_literal = _PyPegen_expect_token(p, 50)) // token='@='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001822 )
1823 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001824 _res = CHECK_VERSION ( 5 , "The '@' operator is" , _PyPegen_augoperator ( p , MatMult ) );
1825 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001826 p->error_indicator = 1;
1827 return NULL;
1828 }
1829 goto done;
1830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001831 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001832 }
1833 { // '/='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001834 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001835 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001836 (_literal = _PyPegen_expect_token(p, 39)) // token='/='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001837 )
1838 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001839 _res = _PyPegen_augoperator ( p , Div );
1840 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001841 p->error_indicator = 1;
1842 return NULL;
1843 }
1844 goto done;
1845 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001846 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001847 }
1848 { // '%='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001849 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001850 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001851 (_literal = _PyPegen_expect_token(p, 40)) // token='%='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001852 )
1853 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001854 _res = _PyPegen_augoperator ( p , Mod );
1855 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001856 p->error_indicator = 1;
1857 return NULL;
1858 }
1859 goto done;
1860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001861 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001862 }
1863 { // '&='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001864 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001865 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001866 (_literal = _PyPegen_expect_token(p, 41)) // token='&='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001867 )
1868 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001869 _res = _PyPegen_augoperator ( p , BitAnd );
1870 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001871 p->error_indicator = 1;
1872 return NULL;
1873 }
1874 goto done;
1875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001876 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001877 }
1878 { // '|='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001879 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001880 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001881 (_literal = _PyPegen_expect_token(p, 42)) // token='|='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001882 )
1883 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001884 _res = _PyPegen_augoperator ( p , BitOr );
1885 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001886 p->error_indicator = 1;
1887 return NULL;
1888 }
1889 goto done;
1890 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001891 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001892 }
1893 { // '^='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001894 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001895 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001896 (_literal = _PyPegen_expect_token(p, 43)) // token='^='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001897 )
1898 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001899 _res = _PyPegen_augoperator ( p , BitXor );
1900 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001901 p->error_indicator = 1;
1902 return NULL;
1903 }
1904 goto done;
1905 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001906 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001907 }
1908 { // '<<='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001909 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001910 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001911 (_literal = _PyPegen_expect_token(p, 44)) // token='<<='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001912 )
1913 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001914 _res = _PyPegen_augoperator ( p , LShift );
1915 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001916 p->error_indicator = 1;
1917 return NULL;
1918 }
1919 goto done;
1920 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001921 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001922 }
1923 { // '>>='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001924 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001925 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001926 (_literal = _PyPegen_expect_token(p, 45)) // token='>>='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001927 )
1928 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001929 _res = _PyPegen_augoperator ( p , RShift );
1930 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001931 p->error_indicator = 1;
1932 return NULL;
1933 }
1934 goto done;
1935 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001936 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001937 }
1938 { // '**='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001939 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001940 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001941 (_literal = _PyPegen_expect_token(p, 46)) // token='**='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001942 )
1943 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001944 _res = _PyPegen_augoperator ( p , Pow );
1945 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001946 p->error_indicator = 1;
1947 return NULL;
1948 }
1949 goto done;
1950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001951 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001952 }
1953 { // '//='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001954 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001955 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001956 (_literal = _PyPegen_expect_token(p, 48)) // token='//='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001957 )
1958 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001959 _res = _PyPegen_augoperator ( p , FloorDiv );
1960 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001961 p->error_indicator = 1;
1962 return NULL;
1963 }
1964 goto done;
1965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001966 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001967 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001968 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001969 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001970 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001971}
1972
1973// global_stmt: 'global' ','.NAME+
1974static stmt_ty
1975global_stmt_rule(Parser *p)
1976{
1977 if (p->error_indicator) {
1978 return NULL;
1979 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001980 stmt_ty _res = NULL;
1981 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001982 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1983 p->error_indicator = 1;
1984 return NULL;
1985 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001986 int _start_lineno = p->tokens[_mark]->lineno;
1987 UNUSED(_start_lineno); // Only used by EXTRA macro
1988 int _start_col_offset = p->tokens[_mark]->col_offset;
1989 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001990 { // 'global' ','.NAME+
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001991 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001992 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001993 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001994 (_keyword = _PyPegen_expect_token(p, 508)) // token='global'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001995 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001996 (a = _gather_25_rule(p)) // ','.NAME+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001997 )
1998 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001999 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2000 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002001 return NULL;
2002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002003 int _end_lineno = _token->end_lineno;
2004 UNUSED(_end_lineno); // Only used by EXTRA macro
2005 int _end_col_offset = _token->end_col_offset;
2006 UNUSED(_end_col_offset); // Only used by EXTRA macro
2007 _res = _Py_Global ( CHECK ( _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2008 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002009 p->error_indicator = 1;
2010 return NULL;
2011 }
2012 goto done;
2013 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002014 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002015 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002016 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002017 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002018 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002019}
2020
2021// nonlocal_stmt: 'nonlocal' ','.NAME+
2022static stmt_ty
2023nonlocal_stmt_rule(Parser *p)
2024{
2025 if (p->error_indicator) {
2026 return NULL;
2027 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002028 stmt_ty _res = NULL;
2029 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002030 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2031 p->error_indicator = 1;
2032 return NULL;
2033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002034 int _start_lineno = p->tokens[_mark]->lineno;
2035 UNUSED(_start_lineno); // Only used by EXTRA macro
2036 int _start_col_offset = p->tokens[_mark]->col_offset;
2037 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002038 { // 'nonlocal' ','.NAME+
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002039 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002040 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002041 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002042 (_keyword = _PyPegen_expect_token(p, 509)) // token='nonlocal'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002043 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002044 (a = _gather_27_rule(p)) // ','.NAME+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002045 )
2046 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002047 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2048 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002049 return NULL;
2050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002051 int _end_lineno = _token->end_lineno;
2052 UNUSED(_end_lineno); // Only used by EXTRA macro
2053 int _end_col_offset = _token->end_col_offset;
2054 UNUSED(_end_col_offset); // Only used by EXTRA macro
2055 _res = _Py_Nonlocal ( CHECK ( _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2056 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002057 p->error_indicator = 1;
2058 return NULL;
2059 }
2060 goto done;
2061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002062 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002063 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002064 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002065 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002066 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002067}
2068
2069// yield_stmt: yield_expr
2070static stmt_ty
2071yield_stmt_rule(Parser *p)
2072{
2073 if (p->error_indicator) {
2074 return NULL;
2075 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002076 stmt_ty _res = NULL;
2077 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002078 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2079 p->error_indicator = 1;
2080 return NULL;
2081 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002082 int _start_lineno = p->tokens[_mark]->lineno;
2083 UNUSED(_start_lineno); // Only used by EXTRA macro
2084 int _start_col_offset = p->tokens[_mark]->col_offset;
2085 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002086 { // yield_expr
2087 expr_ty y;
2088 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002089 (y = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002090 )
2091 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002092 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2093 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002094 return NULL;
2095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002096 int _end_lineno = _token->end_lineno;
2097 UNUSED(_end_lineno); // Only used by EXTRA macro
2098 int _end_col_offset = _token->end_col_offset;
2099 UNUSED(_end_col_offset); // Only used by EXTRA macro
2100 _res = _Py_Expr ( y , EXTRA );
2101 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002102 p->error_indicator = 1;
2103 return NULL;
2104 }
2105 goto done;
2106 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002107 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002108 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002109 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002110 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002111 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002112}
2113
2114// assert_stmt: 'assert' expression [',' expression]
2115static stmt_ty
2116assert_stmt_rule(Parser *p)
2117{
2118 if (p->error_indicator) {
2119 return NULL;
2120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002121 stmt_ty _res = NULL;
2122 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002123 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2124 p->error_indicator = 1;
2125 return NULL;
2126 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002127 int _start_lineno = p->tokens[_mark]->lineno;
2128 UNUSED(_start_lineno); // Only used by EXTRA macro
2129 int _start_col_offset = p->tokens[_mark]->col_offset;
2130 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002131 { // 'assert' expression [',' expression]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002132 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002133 expr_ty a;
2134 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002135 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002136 (_keyword = _PyPegen_expect_token(p, 505)) // token='assert'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002137 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002138 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002139 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002140 (b = _tmp_29_rule(p), 1) // [',' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002141 )
2142 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002143 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2144 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002145 return NULL;
2146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002147 int _end_lineno = _token->end_lineno;
2148 UNUSED(_end_lineno); // Only used by EXTRA macro
2149 int _end_col_offset = _token->end_col_offset;
2150 UNUSED(_end_col_offset); // Only used by EXTRA macro
2151 _res = _Py_Assert ( a , b , EXTRA );
2152 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002153 p->error_indicator = 1;
2154 return NULL;
2155 }
2156 goto done;
2157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002158 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002159 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002160 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002161 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002162 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002163}
2164
2165// del_stmt: 'del' del_targets
2166static stmt_ty
2167del_stmt_rule(Parser *p)
2168{
2169 if (p->error_indicator) {
2170 return NULL;
2171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002172 stmt_ty _res = NULL;
2173 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002174 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2175 p->error_indicator = 1;
2176 return NULL;
2177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002178 int _start_lineno = p->tokens[_mark]->lineno;
2179 UNUSED(_start_lineno); // Only used by EXTRA macro
2180 int _start_col_offset = p->tokens[_mark]->col_offset;
2181 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002182 { // 'del' del_targets
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002183 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002184 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002185 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002186 (_keyword = _PyPegen_expect_token(p, 503)) // token='del'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002187 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002188 (a = del_targets_rule(p)) // del_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002189 )
2190 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002191 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2192 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002193 return NULL;
2194 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002195 int _end_lineno = _token->end_lineno;
2196 UNUSED(_end_lineno); // Only used by EXTRA macro
2197 int _end_col_offset = _token->end_col_offset;
2198 UNUSED(_end_col_offset); // Only used by EXTRA macro
2199 _res = _Py_Delete ( a , EXTRA );
2200 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002201 p->error_indicator = 1;
2202 return NULL;
2203 }
2204 goto done;
2205 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002206 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002208 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002209 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002210 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002211}
2212
2213// import_stmt: import_name | import_from
2214static stmt_ty
2215import_stmt_rule(Parser *p)
2216{
2217 if (p->error_indicator) {
2218 return NULL;
2219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002220 stmt_ty _res = NULL;
2221 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002222 { // import_name
2223 stmt_ty import_name_var;
2224 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002225 (import_name_var = import_name_rule(p)) // import_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002226 )
2227 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002228 _res = import_name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002229 goto done;
2230 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002231 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002232 }
2233 { // import_from
2234 stmt_ty import_from_var;
2235 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002236 (import_from_var = import_from_rule(p)) // import_from
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002237 )
2238 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002239 _res = import_from_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002240 goto done;
2241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002242 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002244 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002245 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002246 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002247}
2248
2249// import_name: 'import' dotted_as_names
2250static stmt_ty
2251import_name_rule(Parser *p)
2252{
2253 if (p->error_indicator) {
2254 return NULL;
2255 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002256 stmt_ty _res = NULL;
2257 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002258 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2259 p->error_indicator = 1;
2260 return NULL;
2261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002262 int _start_lineno = p->tokens[_mark]->lineno;
2263 UNUSED(_start_lineno); // Only used by EXTRA macro
2264 int _start_col_offset = p->tokens[_mark]->col_offset;
2265 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002266 { // 'import' dotted_as_names
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002267 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002268 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002269 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002270 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002271 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002272 (a = dotted_as_names_rule(p)) // dotted_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002273 )
2274 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002275 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2276 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002277 return NULL;
2278 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002279 int _end_lineno = _token->end_lineno;
2280 UNUSED(_end_lineno); // Only used by EXTRA macro
2281 int _end_col_offset = _token->end_col_offset;
2282 UNUSED(_end_col_offset); // Only used by EXTRA macro
2283 _res = _Py_Import ( a , EXTRA );
2284 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002285 p->error_indicator = 1;
2286 return NULL;
2287 }
2288 goto done;
2289 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002290 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002292 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002293 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002294 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002295}
2296
2297// import_from:
2298// | 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
2299// | 'from' (('.' | '...'))+ 'import' import_from_targets
2300static stmt_ty
2301import_from_rule(Parser *p)
2302{
2303 if (p->error_indicator) {
2304 return NULL;
2305 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002306 stmt_ty _res = NULL;
2307 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002308 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2309 p->error_indicator = 1;
2310 return NULL;
2311 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002312 int _start_lineno = p->tokens[_mark]->lineno;
2313 UNUSED(_start_lineno); // Only used by EXTRA macro
2314 int _start_col_offset = p->tokens[_mark]->col_offset;
2315 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002316 { // 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002317 Token * _keyword;
2318 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002319 asdl_seq * a;
2320 expr_ty b;
2321 asdl_seq* c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002322 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002323 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002324 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002325 (a = _loop0_30_rule(p)) // (('.' | '...'))*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002326 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002327 (b = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002328 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002329 (_keyword_1 = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002330 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002331 (c = import_from_targets_rule(p)) // import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002332 )
2333 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002334 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2335 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002336 return NULL;
2337 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002338 int _end_lineno = _token->end_lineno;
2339 UNUSED(_end_lineno); // Only used by EXTRA macro
2340 int _end_col_offset = _token->end_col_offset;
2341 UNUSED(_end_col_offset); // Only used by EXTRA macro
2342 _res = _Py_ImportFrom ( b -> v . Name . id , c , _PyPegen_seq_count_dots ( a ) , EXTRA );
2343 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002344 p->error_indicator = 1;
2345 return NULL;
2346 }
2347 goto done;
2348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002349 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002350 }
2351 { // 'from' (('.' | '...'))+ 'import' import_from_targets
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002352 Token * _keyword;
2353 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002354 asdl_seq * a;
2355 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002356 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002357 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002358 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002359 (a = _loop1_31_rule(p)) // (('.' | '...'))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002360 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002361 (_keyword_1 = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002362 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002363 (b = import_from_targets_rule(p)) // import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002364 )
2365 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002366 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2367 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002368 return NULL;
2369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002370 int _end_lineno = _token->end_lineno;
2371 UNUSED(_end_lineno); // Only used by EXTRA macro
2372 int _end_col_offset = _token->end_col_offset;
2373 UNUSED(_end_col_offset); // Only used by EXTRA macro
2374 _res = _Py_ImportFrom ( NULL , b , _PyPegen_seq_count_dots ( a ) , EXTRA );
2375 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002376 p->error_indicator = 1;
2377 return NULL;
2378 }
2379 goto done;
2380 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002381 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002383 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002384 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002385 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002386}
2387
2388// import_from_targets: '(' import_from_as_names ','? ')' | import_from_as_names | '*'
2389static asdl_seq*
2390import_from_targets_rule(Parser *p)
2391{
2392 if (p->error_indicator) {
2393 return NULL;
2394 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002395 asdl_seq* _res = NULL;
2396 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002397 { // '(' import_from_as_names ','? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002398 Token * _literal;
2399 Token * _literal_1;
2400 void *_opt_var;
2401 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002402 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002403 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002404 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002405 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002406 (a = import_from_as_names_rule(p)) // import_from_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002407 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002408 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002409 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002410 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002411 )
2412 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002413 _res = a;
2414 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002415 p->error_indicator = 1;
2416 return NULL;
2417 }
2418 goto done;
2419 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002420 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002421 }
2422 { // import_from_as_names
2423 asdl_seq* import_from_as_names_var;
2424 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002425 (import_from_as_names_var = import_from_as_names_rule(p)) // import_from_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002426 )
2427 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002428 _res = import_from_as_names_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002429 goto done;
2430 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002431 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002432 }
2433 { // '*'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002434 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002435 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002436 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002437 )
2438 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002439 _res = _PyPegen_singleton_seq ( p , CHECK ( _PyPegen_alias_for_star ( p ) ) );
2440 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002441 p->error_indicator = 1;
2442 return NULL;
2443 }
2444 goto done;
2445 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002446 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002447 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002448 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002449 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002450 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002451}
2452
2453// import_from_as_names: ','.import_from_as_name+
2454static asdl_seq*
2455import_from_as_names_rule(Parser *p)
2456{
2457 if (p->error_indicator) {
2458 return NULL;
2459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002460 asdl_seq* _res = NULL;
2461 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002462 { // ','.import_from_as_name+
2463 asdl_seq * a;
2464 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002465 (a = _gather_32_rule(p)) // ','.import_from_as_name+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002466 )
2467 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002468 _res = a;
2469 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002470 p->error_indicator = 1;
2471 return NULL;
2472 }
2473 goto done;
2474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002475 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002476 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002477 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002478 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002479 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002480}
2481
2482// import_from_as_name: NAME ['as' NAME]
2483static alias_ty
2484import_from_as_name_rule(Parser *p)
2485{
2486 if (p->error_indicator) {
2487 return NULL;
2488 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002489 alias_ty _res = NULL;
2490 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002491 { // NAME ['as' NAME]
2492 expr_ty a;
2493 void *b;
2494 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002495 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002496 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002497 (b = _tmp_34_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002498 )
2499 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002500 _res = _Py_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , p -> arena );
2501 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002502 p->error_indicator = 1;
2503 return NULL;
2504 }
2505 goto done;
2506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002507 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002508 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002509 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002510 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002511 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002512}
2513
2514// dotted_as_names: ','.dotted_as_name+
2515static asdl_seq*
2516dotted_as_names_rule(Parser *p)
2517{
2518 if (p->error_indicator) {
2519 return NULL;
2520 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002521 asdl_seq* _res = NULL;
2522 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002523 { // ','.dotted_as_name+
2524 asdl_seq * a;
2525 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002526 (a = _gather_35_rule(p)) // ','.dotted_as_name+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002527 )
2528 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002529 _res = a;
2530 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002531 p->error_indicator = 1;
2532 return NULL;
2533 }
2534 goto done;
2535 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002536 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002537 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002538 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002539 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002540 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002541}
2542
2543// dotted_as_name: dotted_name ['as' NAME]
2544static alias_ty
2545dotted_as_name_rule(Parser *p)
2546{
2547 if (p->error_indicator) {
2548 return NULL;
2549 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002550 alias_ty _res = NULL;
2551 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002552 { // dotted_name ['as' NAME]
2553 expr_ty a;
2554 void *b;
2555 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002556 (a = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002557 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002558 (b = _tmp_37_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002559 )
2560 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002561 _res = _Py_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , p -> arena );
2562 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002563 p->error_indicator = 1;
2564 return NULL;
2565 }
2566 goto done;
2567 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002568 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002570 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002571 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002572 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002573}
2574
2575// Left-recursive
2576// dotted_name: dotted_name '.' NAME | NAME
2577static expr_ty dotted_name_raw(Parser *);
2578static expr_ty
2579dotted_name_rule(Parser *p)
2580{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002581 expr_ty _res = NULL;
2582 if (_PyPegen_is_memoized(p, dotted_name_type, &_res))
2583 return _res;
2584 int _mark = p->mark;
2585 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002586 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002587 int tmpvar_0 = _PyPegen_update_memo(p, _mark, dotted_name_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002588 if (tmpvar_0) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002589 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002591 p->mark = _mark;
2592 void *_raw = dotted_name_raw(p);
2593 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002594 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002595 _resmark = p->mark;
2596 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002597 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002598 p->mark = _resmark;
2599 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002600}
2601static expr_ty
2602dotted_name_raw(Parser *p)
2603{
2604 if (p->error_indicator) {
2605 return NULL;
2606 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002607 expr_ty _res = NULL;
2608 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002609 { // dotted_name '.' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002610 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002611 expr_ty a;
2612 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002613 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002614 (a = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002615 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002616 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002617 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002618 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002619 )
2620 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002621 _res = _PyPegen_join_names_with_dot ( p , a , b );
2622 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002623 p->error_indicator = 1;
2624 return NULL;
2625 }
2626 goto done;
2627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002628 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002629 }
2630 { // NAME
2631 expr_ty name_var;
2632 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002633 (name_var = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002634 )
2635 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002636 _res = name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002637 goto done;
2638 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002639 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002640 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002641 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002642 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002643 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002644}
2645
2646// if_stmt:
2647// | 'if' named_expression ':' block elif_stmt
2648// | 'if' named_expression ':' block else_block?
2649static stmt_ty
2650if_stmt_rule(Parser *p)
2651{
2652 if (p->error_indicator) {
2653 return NULL;
2654 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002655 stmt_ty _res = NULL;
2656 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002657 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2658 p->error_indicator = 1;
2659 return NULL;
2660 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002661 int _start_lineno = p->tokens[_mark]->lineno;
2662 UNUSED(_start_lineno); // Only used by EXTRA macro
2663 int _start_col_offset = p->tokens[_mark]->col_offset;
2664 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002665 { // 'if' named_expression ':' block elif_stmt
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002666 Token * _keyword;
2667 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002668 expr_ty a;
2669 asdl_seq* b;
2670 stmt_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002671 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002672 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002673 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002674 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002675 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002676 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002677 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002678 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002679 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002680 (c = elif_stmt_rule(p)) // elif_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002681 )
2682 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002683 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2684 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002685 return NULL;
2686 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002687 int _end_lineno = _token->end_lineno;
2688 UNUSED(_end_lineno); // Only used by EXTRA macro
2689 int _end_col_offset = _token->end_col_offset;
2690 UNUSED(_end_col_offset); // Only used by EXTRA macro
2691 _res = _Py_If ( a , b , CHECK ( _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
2692 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002693 p->error_indicator = 1;
2694 return NULL;
2695 }
2696 goto done;
2697 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002698 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002699 }
2700 { // 'if' named_expression ':' block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002701 Token * _keyword;
2702 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002703 expr_ty a;
2704 asdl_seq* b;
2705 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002706 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002707 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002708 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002709 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002710 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002711 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002712 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002713 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002714 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002715 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002716 )
2717 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002718 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2719 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002720 return NULL;
2721 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002722 int _end_lineno = _token->end_lineno;
2723 UNUSED(_end_lineno); // Only used by EXTRA macro
2724 int _end_col_offset = _token->end_col_offset;
2725 UNUSED(_end_col_offset); // Only used by EXTRA macro
2726 _res = _Py_If ( a , b , c , EXTRA );
2727 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002728 p->error_indicator = 1;
2729 return NULL;
2730 }
2731 goto done;
2732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002733 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002734 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002735 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002736 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002737 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002738}
2739
2740// elif_stmt:
2741// | 'elif' named_expression ':' block elif_stmt
2742// | 'elif' named_expression ':' block else_block?
2743static stmt_ty
2744elif_stmt_rule(Parser *p)
2745{
2746 if (p->error_indicator) {
2747 return NULL;
2748 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002749 stmt_ty _res = NULL;
2750 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002751 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2752 p->error_indicator = 1;
2753 return NULL;
2754 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002755 int _start_lineno = p->tokens[_mark]->lineno;
2756 UNUSED(_start_lineno); // Only used by EXTRA macro
2757 int _start_col_offset = p->tokens[_mark]->col_offset;
2758 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002759 { // 'elif' named_expression ':' block elif_stmt
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002760 Token * _keyword;
2761 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002762 expr_ty a;
2763 asdl_seq* b;
2764 stmt_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002765 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002766 (_keyword = _PyPegen_expect_token(p, 515)) // token='elif'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002767 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002768 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002769 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002770 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002771 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002772 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002773 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002774 (c = elif_stmt_rule(p)) // elif_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002775 )
2776 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002777 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2778 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002779 return NULL;
2780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002781 int _end_lineno = _token->end_lineno;
2782 UNUSED(_end_lineno); // Only used by EXTRA macro
2783 int _end_col_offset = _token->end_col_offset;
2784 UNUSED(_end_col_offset); // Only used by EXTRA macro
2785 _res = _Py_If ( a , b , CHECK ( _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
2786 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002787 p->error_indicator = 1;
2788 return NULL;
2789 }
2790 goto done;
2791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002792 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002793 }
2794 { // 'elif' named_expression ':' block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002795 Token * _keyword;
2796 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002797 expr_ty a;
2798 asdl_seq* b;
2799 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002800 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002801 (_keyword = _PyPegen_expect_token(p, 515)) // token='elif'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002802 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002803 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002804 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002805 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002806 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002807 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002808 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002809 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002810 )
2811 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002812 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2813 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002814 return NULL;
2815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002816 int _end_lineno = _token->end_lineno;
2817 UNUSED(_end_lineno); // Only used by EXTRA macro
2818 int _end_col_offset = _token->end_col_offset;
2819 UNUSED(_end_col_offset); // Only used by EXTRA macro
2820 _res = _Py_If ( a , b , c , EXTRA );
2821 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002822 p->error_indicator = 1;
2823 return NULL;
2824 }
2825 goto done;
2826 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002827 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002828 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002829 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002830 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002831 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002832}
2833
2834// else_block: 'else' ':' block
2835static asdl_seq*
2836else_block_rule(Parser *p)
2837{
2838 if (p->error_indicator) {
2839 return NULL;
2840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002841 asdl_seq* _res = NULL;
2842 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002843 { // 'else' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002844 Token * _keyword;
2845 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002846 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002847 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002848 (_keyword = _PyPegen_expect_token(p, 516)) // token='else'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002849 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002850 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002851 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002852 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002853 )
2854 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002855 _res = b;
2856 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002857 p->error_indicator = 1;
2858 return NULL;
2859 }
2860 goto done;
2861 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002862 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002863 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002864 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002865 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002866 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002867}
2868
2869// while_stmt: 'while' named_expression ':' block else_block?
2870static stmt_ty
2871while_stmt_rule(Parser *p)
2872{
2873 if (p->error_indicator) {
2874 return NULL;
2875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002876 stmt_ty _res = NULL;
2877 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002878 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2879 p->error_indicator = 1;
2880 return NULL;
2881 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002882 int _start_lineno = p->tokens[_mark]->lineno;
2883 UNUSED(_start_lineno); // Only used by EXTRA macro
2884 int _start_col_offset = p->tokens[_mark]->col_offset;
2885 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002886 { // 'while' named_expression ':' block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002887 Token * _keyword;
2888 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002889 expr_ty a;
2890 asdl_seq* b;
2891 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002892 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002893 (_keyword = _PyPegen_expect_token(p, 512)) // token='while'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002894 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002895 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002896 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002897 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002898 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002899 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002900 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002901 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002902 )
2903 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002904 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2905 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002906 return NULL;
2907 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002908 int _end_lineno = _token->end_lineno;
2909 UNUSED(_end_lineno); // Only used by EXTRA macro
2910 int _end_col_offset = _token->end_col_offset;
2911 UNUSED(_end_col_offset); // Only used by EXTRA macro
2912 _res = _Py_While ( a , b , c , EXTRA );
2913 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002914 p->error_indicator = 1;
2915 return NULL;
2916 }
2917 goto done;
2918 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002919 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002920 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002921 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002922 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002923 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002924}
2925
Guido van Rossumc001c092020-04-30 12:12:19 -07002926// for_stmt:
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002927// | 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
2928// | ASYNC 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002929static stmt_ty
2930for_stmt_rule(Parser *p)
2931{
2932 if (p->error_indicator) {
2933 return NULL;
2934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002935 stmt_ty _res = NULL;
2936 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002937 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2938 p->error_indicator = 1;
2939 return NULL;
2940 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002941 int _start_lineno = p->tokens[_mark]->lineno;
2942 UNUSED(_start_lineno); // Only used by EXTRA macro
2943 int _start_col_offset = p->tokens[_mark]->col_offset;
2944 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002945 { // 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002946 Token * _keyword;
2947 Token * _keyword_1;
2948 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002949 asdl_seq* b;
2950 void *el;
2951 expr_ty ex;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002952 expr_ty t;
Guido van Rossumc001c092020-04-30 12:12:19 -07002953 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002954 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002955 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002956 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002957 (t = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002958 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002959 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002960 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002961 (ex = star_expressions_rule(p)) // star_expressions
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002962 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002963 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002964 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002965 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002966 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002967 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002968 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002969 (el = else_block_rule(p), 1) // else_block?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002970 )
2971 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002972 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2973 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002974 return NULL;
2975 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002976 int _end_lineno = _token->end_lineno;
2977 UNUSED(_end_lineno); // Only used by EXTRA macro
2978 int _end_col_offset = _token->end_col_offset;
2979 UNUSED(_end_col_offset); // Only used by EXTRA macro
2980 _res = _Py_For ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
2981 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002982 p->error_indicator = 1;
2983 return NULL;
2984 }
2985 goto done;
2986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002987 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002988 }
2989 { // ASYNC 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002990 Token * _keyword;
2991 Token * _keyword_1;
2992 Token * _literal;
Pablo Galindob796b3f2020-05-01 12:32:26 +01002993 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002994 asdl_seq* b;
2995 void *el;
2996 expr_ty ex;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002997 expr_ty t;
2998 void *tc;
2999 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003000 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003001 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003002 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003003 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003004 (t = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003005 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003006 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003007 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003008 (ex = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003009 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003010 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003011 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003012 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07003013 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003014 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003015 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003016 (el = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003017 )
3018 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003019 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3020 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003021 return NULL;
3022 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003023 int _end_lineno = _token->end_lineno;
3024 UNUSED(_end_lineno); // Only used by EXTRA macro
3025 int _end_col_offset = _token->end_col_offset;
3026 UNUSED(_end_col_offset); // Only used by EXTRA macro
3027 _res = CHECK_VERSION ( 5 , "Async for loops are" , _Py_AsyncFor ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
3028 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003029 p->error_indicator = 1;
3030 return NULL;
3031 }
3032 goto done;
3033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003034 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003035 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003036 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003037 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003038 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003039}
3040
3041// with_stmt:
Pablo Galindo99db2a12020-05-06 22:54:34 +01003042// | 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003043// | 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindo99db2a12020-05-06 22:54:34 +01003044// | ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003045// | ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003046static stmt_ty
3047with_stmt_rule(Parser *p)
3048{
3049 if (p->error_indicator) {
3050 return NULL;
3051 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003052 stmt_ty _res = NULL;
3053 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003054 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3055 p->error_indicator = 1;
3056 return NULL;
3057 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003058 int _start_lineno = p->tokens[_mark]->lineno;
3059 UNUSED(_start_lineno); // Only used by EXTRA macro
3060 int _start_col_offset = p->tokens[_mark]->col_offset;
3061 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindo99db2a12020-05-06 22:54:34 +01003062 { // 'with' '(' ','.with_item+ ','? ')' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003063 Token * _keyword;
3064 Token * _literal;
3065 Token * _literal_1;
3066 Token * _literal_2;
3067 void *_opt_var;
3068 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003069 asdl_seq * a;
3070 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003071 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003072 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003073 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003074 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003075 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003076 (a = _gather_38_rule(p)) // ','.with_item+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003077 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003078 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindo99db2a12020-05-06 22:54:34 +01003079 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003080 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003081 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003082 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003083 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003084 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003085 )
3086 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003087 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3088 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003089 return NULL;
3090 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003091 int _end_lineno = _token->end_lineno;
3092 UNUSED(_end_lineno); // Only used by EXTRA macro
3093 int _end_col_offset = _token->end_col_offset;
3094 UNUSED(_end_col_offset); // Only used by EXTRA macro
3095 _res = _Py_With ( a , b , NULL , EXTRA );
3096 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003097 p->error_indicator = 1;
3098 return NULL;
3099 }
3100 goto done;
3101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003102 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003103 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003104 { // 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003105 Token * _keyword;
3106 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003107 asdl_seq * a;
3108 asdl_seq* b;
Guido van Rossumc001c092020-04-30 12:12:19 -07003109 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003110 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003111 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003112 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003113 (a = _gather_40_rule(p)) // ','.with_item+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003114 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003115 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003116 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003117 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07003118 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003119 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003120 )
3121 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003122 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3123 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003124 return NULL;
3125 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003126 int _end_lineno = _token->end_lineno;
3127 UNUSED(_end_lineno); // Only used by EXTRA macro
3128 int _end_col_offset = _token->end_col_offset;
3129 UNUSED(_end_col_offset); // Only used by EXTRA macro
3130 _res = _Py_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
3131 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003132 p->error_indicator = 1;
3133 return NULL;
3134 }
3135 goto done;
3136 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003137 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003138 }
Pablo Galindo99db2a12020-05-06 22:54:34 +01003139 { // ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003140 Token * _keyword;
3141 Token * _literal;
3142 Token * _literal_1;
3143 Token * _literal_2;
3144 void *_opt_var;
3145 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003146 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003147 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003148 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003149 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003150 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003151 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003152 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003153 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003154 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003155 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003156 (a = _gather_42_rule(p)) // ','.with_item+
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003157 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003158 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindo99db2a12020-05-06 22:54:34 +01003159 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003160 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003161 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003162 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003163 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003164 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003165 )
3166 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003167 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3168 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003169 return NULL;
3170 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003171 int _end_lineno = _token->end_lineno;
3172 UNUSED(_end_lineno); // Only used by EXTRA macro
3173 int _end_col_offset = _token->end_col_offset;
3174 UNUSED(_end_col_offset); // Only used by EXTRA macro
3175 _res = CHECK_VERSION ( 5 , "Async with statements are" , _Py_AsyncWith ( a , b , NULL , EXTRA ) );
3176 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003177 p->error_indicator = 1;
3178 return NULL;
3179 }
3180 goto done;
3181 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003182 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003183 }
3184 { // ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003185 Token * _keyword;
3186 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003187 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003188 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003189 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003190 void *tc;
3191 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003192 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003193 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003194 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003195 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003196 (a = _gather_44_rule(p)) // ','.with_item+
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003197 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003198 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003199 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003200 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003201 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003202 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003203 )
3204 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003205 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3206 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003207 return NULL;
3208 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003209 int _end_lineno = _token->end_lineno;
3210 UNUSED(_end_lineno); // Only used by EXTRA macro
3211 int _end_col_offset = _token->end_col_offset;
3212 UNUSED(_end_col_offset); // Only used by EXTRA macro
3213 _res = CHECK_VERSION ( 5 , "Async with statements are" , _Py_AsyncWith ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
3214 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003215 p->error_indicator = 1;
3216 return NULL;
3217 }
3218 goto done;
3219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003220 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003221 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003222 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003223 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003224 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003225}
3226
3227// with_item: expression ['as' target]
3228static withitem_ty
3229with_item_rule(Parser *p)
3230{
3231 if (p->error_indicator) {
3232 return NULL;
3233 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003234 withitem_ty _res = NULL;
3235 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003236 { // expression ['as' target]
3237 expr_ty e;
3238 void *o;
3239 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003240 (e = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003241 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003242 (o = _tmp_46_rule(p), 1) // ['as' target]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003243 )
3244 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003245 _res = _Py_withitem ( e , o , p -> arena );
3246 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003247 p->error_indicator = 1;
3248 return NULL;
3249 }
3250 goto done;
3251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003252 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003254 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003255 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003256 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003257}
3258
3259// try_stmt:
3260// | 'try' ':' block finally_block
3261// | 'try' ':' block except_block+ else_block? finally_block?
3262static stmt_ty
3263try_stmt_rule(Parser *p)
3264{
3265 if (p->error_indicator) {
3266 return NULL;
3267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003268 stmt_ty _res = NULL;
3269 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003270 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3271 p->error_indicator = 1;
3272 return NULL;
3273 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003274 int _start_lineno = p->tokens[_mark]->lineno;
3275 UNUSED(_start_lineno); // Only used by EXTRA macro
3276 int _start_col_offset = p->tokens[_mark]->col_offset;
3277 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003278 { // 'try' ':' block finally_block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003279 Token * _keyword;
3280 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003281 asdl_seq* b;
3282 asdl_seq* f;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003283 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003284 (_keyword = _PyPegen_expect_token(p, 511)) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003285 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003286 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003287 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003288 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003289 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003290 (f = finally_block_rule(p)) // finally_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003291 )
3292 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003293 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3294 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003295 return NULL;
3296 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003297 int _end_lineno = _token->end_lineno;
3298 UNUSED(_end_lineno); // Only used by EXTRA macro
3299 int _end_col_offset = _token->end_col_offset;
3300 UNUSED(_end_col_offset); // Only used by EXTRA macro
3301 _res = _Py_Try ( b , NULL , NULL , f , EXTRA );
3302 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003303 p->error_indicator = 1;
3304 return NULL;
3305 }
3306 goto done;
3307 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003308 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003309 }
3310 { // 'try' ':' block except_block+ else_block? finally_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003311 Token * _keyword;
3312 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003313 asdl_seq* b;
3314 void *el;
3315 asdl_seq * ex;
3316 void *f;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003317 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003318 (_keyword = _PyPegen_expect_token(p, 511)) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003319 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003320 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003321 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003322 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003323 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003324 (ex = _loop1_47_rule(p)) // except_block+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003325 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003326 (el = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003327 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003328 (f = finally_block_rule(p), 1) // finally_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003329 )
3330 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003331 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3332 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003333 return NULL;
3334 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003335 int _end_lineno = _token->end_lineno;
3336 UNUSED(_end_lineno); // Only used by EXTRA macro
3337 int _end_col_offset = _token->end_col_offset;
3338 UNUSED(_end_col_offset); // Only used by EXTRA macro
3339 _res = _Py_Try ( b , ex , el , f , EXTRA );
3340 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003341 p->error_indicator = 1;
3342 return NULL;
3343 }
3344 goto done;
3345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003346 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003347 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003348 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003349 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003350 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003351}
3352
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03003353// except_block: 'except' expression ['as' NAME] ':' block | 'except' ':' block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003354static excepthandler_ty
3355except_block_rule(Parser *p)
3356{
3357 if (p->error_indicator) {
3358 return NULL;
3359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003360 excepthandler_ty _res = NULL;
3361 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003362 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3363 p->error_indicator = 1;
3364 return NULL;
3365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003366 int _start_lineno = p->tokens[_mark]->lineno;
3367 UNUSED(_start_lineno); // Only used by EXTRA macro
3368 int _start_col_offset = p->tokens[_mark]->col_offset;
3369 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03003370 { // 'except' expression ['as' NAME] ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003371 Token * _keyword;
3372 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003373 asdl_seq* b;
3374 expr_ty e;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003375 void *t;
3376 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003377 (_keyword = _PyPegen_expect_token(p, 520)) // token='except'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003378 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003379 (e = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003380 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03003381 (t = _tmp_48_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003382 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003383 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003384 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003385 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003386 )
3387 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003388 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3389 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003390 return NULL;
3391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003392 int _end_lineno = _token->end_lineno;
3393 UNUSED(_end_lineno); // Only used by EXTRA macro
3394 int _end_col_offset = _token->end_col_offset;
3395 UNUSED(_end_col_offset); // Only used by EXTRA macro
3396 _res = _Py_ExceptHandler ( e , ( t ) ? ( ( expr_ty ) t ) -> v . Name . id : NULL , b , EXTRA );
3397 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003398 p->error_indicator = 1;
3399 return NULL;
3400 }
3401 goto done;
3402 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003403 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003404 }
3405 { // 'except' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003406 Token * _keyword;
3407 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003408 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003409 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003410 (_keyword = _PyPegen_expect_token(p, 520)) // token='except'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003411 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003412 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003413 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003414 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003415 )
3416 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003417 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3418 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003419 return NULL;
3420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003421 int _end_lineno = _token->end_lineno;
3422 UNUSED(_end_lineno); // Only used by EXTRA macro
3423 int _end_col_offset = _token->end_col_offset;
3424 UNUSED(_end_col_offset); // Only used by EXTRA macro
3425 _res = _Py_ExceptHandler ( NULL , NULL , b , EXTRA );
3426 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003427 p->error_indicator = 1;
3428 return NULL;
3429 }
3430 goto done;
3431 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003432 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003433 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003434 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003435 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003436 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003437}
3438
3439// finally_block: 'finally' ':' block
3440static asdl_seq*
3441finally_block_rule(Parser *p)
3442{
3443 if (p->error_indicator) {
3444 return NULL;
3445 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003446 asdl_seq* _res = NULL;
3447 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003448 { // 'finally' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003449 Token * _keyword;
3450 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003451 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003452 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003453 (_keyword = _PyPegen_expect_token(p, 521)) // token='finally'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003454 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003455 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003456 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003457 (a = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003458 )
3459 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003460 _res = a;
3461 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003462 p->error_indicator = 1;
3463 return NULL;
3464 }
3465 goto done;
3466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003467 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003469 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003470 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003471 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003472}
3473
3474// return_stmt: 'return' star_expressions?
3475static stmt_ty
3476return_stmt_rule(Parser *p)
3477{
3478 if (p->error_indicator) {
3479 return NULL;
3480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003481 stmt_ty _res = NULL;
3482 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003483 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3484 p->error_indicator = 1;
3485 return NULL;
3486 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003487 int _start_lineno = p->tokens[_mark]->lineno;
3488 UNUSED(_start_lineno); // Only used by EXTRA macro
3489 int _start_col_offset = p->tokens[_mark]->col_offset;
3490 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003491 { // 'return' star_expressions?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003492 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003493 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003494 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003495 (_keyword = _PyPegen_expect_token(p, 500)) // token='return'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003496 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003497 (a = star_expressions_rule(p), 1) // star_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003498 )
3499 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003500 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3501 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003502 return NULL;
3503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003504 int _end_lineno = _token->end_lineno;
3505 UNUSED(_end_lineno); // Only used by EXTRA macro
3506 int _end_col_offset = _token->end_col_offset;
3507 UNUSED(_end_col_offset); // Only used by EXTRA macro
3508 _res = _Py_Return ( a , EXTRA );
3509 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003510 p->error_indicator = 1;
3511 return NULL;
3512 }
3513 goto done;
3514 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003515 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003516 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003517 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003518 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003519 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003520}
3521
3522// raise_stmt: 'raise' expression ['from' expression] | 'raise'
3523static stmt_ty
3524raise_stmt_rule(Parser *p)
3525{
3526 if (p->error_indicator) {
3527 return NULL;
3528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003529 stmt_ty _res = NULL;
3530 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003531 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3532 p->error_indicator = 1;
3533 return NULL;
3534 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003535 int _start_lineno = p->tokens[_mark]->lineno;
3536 UNUSED(_start_lineno); // Only used by EXTRA macro
3537 int _start_col_offset = p->tokens[_mark]->col_offset;
3538 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003539 { // 'raise' expression ['from' expression]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003540 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003541 expr_ty a;
3542 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003543 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003544 (_keyword = _PyPegen_expect_token(p, 501)) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003545 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003546 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003547 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003548 (b = _tmp_49_rule(p), 1) // ['from' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003549 )
3550 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003551 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3552 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003553 return NULL;
3554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003555 int _end_lineno = _token->end_lineno;
3556 UNUSED(_end_lineno); // Only used by EXTRA macro
3557 int _end_col_offset = _token->end_col_offset;
3558 UNUSED(_end_col_offset); // Only used by EXTRA macro
3559 _res = _Py_Raise ( a , b , EXTRA );
3560 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003561 p->error_indicator = 1;
3562 return NULL;
3563 }
3564 goto done;
3565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003566 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003567 }
3568 { // 'raise'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003569 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003570 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003571 (_keyword = _PyPegen_expect_token(p, 501)) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003572 )
3573 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003574 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3575 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003576 return NULL;
3577 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003578 int _end_lineno = _token->end_lineno;
3579 UNUSED(_end_lineno); // Only used by EXTRA macro
3580 int _end_col_offset = _token->end_col_offset;
3581 UNUSED(_end_col_offset); // Only used by EXTRA macro
3582 _res = _Py_Raise ( NULL , NULL , EXTRA );
3583 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003584 p->error_indicator = 1;
3585 return NULL;
3586 }
3587 goto done;
3588 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003589 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003591 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003592 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003593 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003594}
3595
3596// function_def: decorators function_def_raw | function_def_raw
3597static stmt_ty
3598function_def_rule(Parser *p)
3599{
3600 if (p->error_indicator) {
3601 return NULL;
3602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003603 stmt_ty _res = NULL;
3604 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003605 { // decorators function_def_raw
3606 asdl_seq* d;
3607 stmt_ty f;
3608 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003609 (d = decorators_rule(p)) // decorators
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003610 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003611 (f = function_def_raw_rule(p)) // function_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003612 )
3613 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003614 _res = _PyPegen_function_def_decorators ( p , d , f );
3615 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003616 p->error_indicator = 1;
3617 return NULL;
3618 }
3619 goto done;
3620 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003621 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003622 }
3623 { // function_def_raw
3624 stmt_ty function_def_raw_var;
3625 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003626 (function_def_raw_var = function_def_raw_rule(p)) // function_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003627 )
3628 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003629 _res = function_def_raw_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003630 goto done;
3631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003632 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003633 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003634 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003635 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003636 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003637}
3638
Guido van Rossumc001c092020-04-30 12:12:19 -07003639// function_def_raw:
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003640// | 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
3641// | ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003642static stmt_ty
3643function_def_raw_rule(Parser *p)
3644{
3645 if (p->error_indicator) {
3646 return NULL;
3647 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003648 stmt_ty _res = NULL;
3649 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003650 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3651 p->error_indicator = 1;
3652 return NULL;
3653 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003654 int _start_lineno = p->tokens[_mark]->lineno;
3655 UNUSED(_start_lineno); // Only used by EXTRA macro
3656 int _start_col_offset = p->tokens[_mark]->col_offset;
3657 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003658 { // 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003659 Token * _keyword;
3660 Token * _literal;
3661 Token * _literal_1;
3662 Token * _literal_2;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003663 void *a;
3664 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003665 expr_ty n;
3666 void *params;
Guido van Rossumc001c092020-04-30 12:12:19 -07003667 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003668 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003669 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003670 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003671 (n = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003672 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003673 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003674 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003675 (params = params_rule(p), 1) // params?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003676 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003677 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003678 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003679 (a = _tmp_50_rule(p), 1) // ['->' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003680 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003681 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003682 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003683 (tc = func_type_comment_rule(p), 1) // func_type_comment?
Guido van Rossumc001c092020-04-30 12:12:19 -07003684 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003685 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003686 )
3687 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003688 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3689 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003690 return NULL;
3691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003692 int _end_lineno = _token->end_lineno;
3693 UNUSED(_end_lineno); // Only used by EXTRA macro
3694 int _end_col_offset = _token->end_col_offset;
3695 UNUSED(_end_col_offset); // Only used by EXTRA macro
3696 _res = _Py_FunctionDef ( n -> v . Name . id , ( params ) ? params : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
3697 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003698 p->error_indicator = 1;
3699 return NULL;
3700 }
3701 goto done;
3702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003703 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003704 }
3705 { // ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003706 Token * _keyword;
3707 Token * _literal;
3708 Token * _literal_1;
3709 Token * _literal_2;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003710 void *a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003711 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003712 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003713 expr_ty n;
3714 void *params;
3715 void *tc;
3716 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003717 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003718 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003719 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003720 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003721 (n = _PyPegen_name_token(p)) // NAME
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003722 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003723 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003724 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003725 (params = params_rule(p), 1) // params?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003726 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003727 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003728 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003729 (a = _tmp_51_rule(p), 1) // ['->' expression]
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003730 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003731 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003732 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003733 (tc = func_type_comment_rule(p), 1) // func_type_comment?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003734 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003735 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003736 )
3737 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003738 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3739 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003740 return NULL;
3741 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003742 int _end_lineno = _token->end_lineno;
3743 UNUSED(_end_lineno); // Only used by EXTRA macro
3744 int _end_col_offset = _token->end_col_offset;
3745 UNUSED(_end_col_offset); // Only used by EXTRA macro
3746 _res = CHECK_VERSION ( 5 , "Async functions are" , _Py_AsyncFunctionDef ( n -> v . Name . id , ( params ) ? params : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
3747 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003748 p->error_indicator = 1;
3749 return NULL;
3750 }
3751 goto done;
3752 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003753 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003754 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003755 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003756 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003757 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003758}
3759
Guido van Rossumc001c092020-04-30 12:12:19 -07003760// func_type_comment:
3761// | NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
3762// | invalid_double_type_comments
3763// | TYPE_COMMENT
Pablo Galindod9552412020-05-01 16:32:09 +01003764static Token*
Guido van Rossumc001c092020-04-30 12:12:19 -07003765func_type_comment_rule(Parser *p)
3766{
3767 if (p->error_indicator) {
3768 return NULL;
3769 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003770 Token* _res = NULL;
3771 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003772 { // NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
Pablo Galindob796b3f2020-05-01 12:32:26 +01003773 Token * newline_var;
3774 Token * t;
Guido van Rossumc001c092020-04-30 12:12:19 -07003775 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003776 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -07003777 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003778 (t = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -07003779 &&
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003780 _PyPegen_lookahead(1, _tmp_52_rule, p)
Guido van Rossumc001c092020-04-30 12:12:19 -07003781 )
3782 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003783 _res = t;
3784 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07003785 p->error_indicator = 1;
3786 return NULL;
3787 }
3788 goto done;
3789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003790 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003791 }
3792 { // invalid_double_type_comments
3793 void *invalid_double_type_comments_var;
3794 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003795 (invalid_double_type_comments_var = invalid_double_type_comments_rule(p)) // invalid_double_type_comments
Guido van Rossumc001c092020-04-30 12:12:19 -07003796 )
3797 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003798 _res = invalid_double_type_comments_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07003799 goto done;
3800 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003801 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003802 }
3803 { // TYPE_COMMENT
Pablo Galindob796b3f2020-05-01 12:32:26 +01003804 Token * type_comment_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07003805 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003806 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -07003807 )
3808 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003809 _res = type_comment_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07003810 goto done;
3811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003812 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003813 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003814 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07003815 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003816 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07003817}
3818
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003819// params: invalid_parameters | parameters
3820static arguments_ty
3821params_rule(Parser *p)
3822{
3823 if (p->error_indicator) {
3824 return NULL;
3825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003826 arguments_ty _res = NULL;
3827 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003828 { // invalid_parameters
3829 void *invalid_parameters_var;
3830 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003831 (invalid_parameters_var = invalid_parameters_rule(p)) // invalid_parameters
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003832 )
3833 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003834 _res = invalid_parameters_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003835 goto done;
3836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003837 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003838 }
3839 { // parameters
3840 arguments_ty parameters_var;
3841 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003842 (parameters_var = parameters_rule(p)) // parameters
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003843 )
3844 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003845 _res = parameters_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003846 goto done;
3847 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003848 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003849 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003850 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003851 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003852 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003853}
3854
3855// parameters:
Guido van Rossumc001c092020-04-30 12:12:19 -07003856// | slash_no_default param_no_default* param_with_default* star_etc?
3857// | slash_with_default param_with_default* star_etc?
3858// | param_no_default+ param_with_default* star_etc?
3859// | param_with_default+ star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003860// | star_etc
3861static arguments_ty
3862parameters_rule(Parser *p)
3863{
3864 if (p->error_indicator) {
3865 return NULL;
3866 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003867 arguments_ty _res = NULL;
3868 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003869 { // slash_no_default param_no_default* param_with_default* star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003870 asdl_seq* a;
Guido van Rossumc001c092020-04-30 12:12:19 -07003871 asdl_seq * b;
3872 asdl_seq * c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003873 void *d;
3874 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003875 (a = slash_no_default_rule(p)) // slash_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003876 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003877 (b = _loop0_53_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003878 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003879 (c = _loop0_54_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003880 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003881 (d = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003882 )
3883 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003884 _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
3885 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003886 p->error_indicator = 1;
3887 return NULL;
3888 }
3889 goto done;
3890 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003891 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003892 }
Guido van Rossumc001c092020-04-30 12:12:19 -07003893 { // slash_with_default param_with_default* star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003894 SlashWithDefault* a;
Guido van Rossumc001c092020-04-30 12:12:19 -07003895 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003896 void *c;
3897 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003898 (a = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003899 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003900 (b = _loop0_55_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003901 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003902 (c = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003903 )
3904 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003905 _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
3906 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003907 p->error_indicator = 1;
3908 return NULL;
3909 }
3910 goto done;
3911 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003912 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003913 }
Guido van Rossumc001c092020-04-30 12:12:19 -07003914 { // param_no_default+ param_with_default* star_etc?
3915 asdl_seq * a;
3916 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003917 void *c;
3918 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003919 (a = _loop1_56_rule(p)) // param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003920 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003921 (b = _loop0_57_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003922 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003923 (c = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003924 )
3925 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003926 _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
3927 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003928 p->error_indicator = 1;
3929 return NULL;
3930 }
3931 goto done;
3932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003933 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003934 }
Guido van Rossumc001c092020-04-30 12:12:19 -07003935 { // param_with_default+ star_etc?
3936 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003937 void *b;
3938 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003939 (a = _loop1_58_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003940 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003941 (b = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003942 )
3943 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003944 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
3945 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003946 p->error_indicator = 1;
3947 return NULL;
3948 }
3949 goto done;
3950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003951 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003952 }
3953 { // star_etc
3954 StarEtc* a;
3955 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003956 (a = star_etc_rule(p)) // star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003957 )
3958 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003959 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
3960 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003961 p->error_indicator = 1;
3962 return NULL;
3963 }
3964 goto done;
3965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003966 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003967 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003968 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003969 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003970 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003971}
3972
Guido van Rossumc001c092020-04-30 12:12:19 -07003973// slash_no_default: param_no_default+ '/' ',' | param_no_default+ '/' &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003974static asdl_seq*
Guido van Rossumc001c092020-04-30 12:12:19 -07003975slash_no_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003976{
3977 if (p->error_indicator) {
3978 return NULL;
3979 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003980 asdl_seq* _res = NULL;
3981 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003982 { // param_no_default+ '/' ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003983 Token * _literal;
3984 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07003985 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003986 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003987 (a = _loop1_59_rule(p)) // param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003988 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003989 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003990 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003991 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07003992 )
3993 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003994 _res = a;
3995 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07003996 p->error_indicator = 1;
3997 return NULL;
3998 }
3999 goto done;
4000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004001 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004002 }
4003 { // param_no_default+ '/' &')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004004 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004005 asdl_seq * a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004006 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004007 (a = _loop1_60_rule(p)) // param_no_default+
Guido van Rossumc001c092020-04-30 12:12:19 -07004008 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004009 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossumc001c092020-04-30 12:12:19 -07004010 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004011 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004012 )
4013 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004014 _res = a;
4015 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004016 p->error_indicator = 1;
4017 return NULL;
4018 }
4019 goto done;
4020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004021 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004022 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004023 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004024 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004025 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004026}
4027
Guido van Rossumc001c092020-04-30 12:12:19 -07004028// slash_with_default:
4029// | param_no_default* param_with_default+ '/' ','
4030// | param_no_default* param_with_default+ '/' &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004031static SlashWithDefault*
4032slash_with_default_rule(Parser *p)
4033{
4034 if (p->error_indicator) {
4035 return NULL;
4036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004037 SlashWithDefault* _res = NULL;
4038 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004039 { // param_no_default* param_with_default+ '/' ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004040 Token * _literal;
4041 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07004042 asdl_seq * a;
4043 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004044 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004045 (a = _loop0_61_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004046 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004047 (b = _loop1_62_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004048 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004049 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004050 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004051 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004052 )
4053 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004054 _res = _PyPegen_slash_with_default ( p , a , b );
4055 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004056 p->error_indicator = 1;
4057 return NULL;
4058 }
4059 goto done;
4060 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004061 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004062 }
4063 { // param_no_default* param_with_default+ '/' &')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004064 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004065 asdl_seq * a;
4066 asdl_seq * b;
Guido van Rossumc001c092020-04-30 12:12:19 -07004067 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004068 (a = _loop0_63_rule(p)) // param_no_default*
Guido van Rossumc001c092020-04-30 12:12:19 -07004069 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004070 (b = _loop1_64_rule(p)) // param_with_default+
Guido van Rossumc001c092020-04-30 12:12:19 -07004071 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004072 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossumc001c092020-04-30 12:12:19 -07004073 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004074 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004075 )
4076 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004077 _res = _PyPegen_slash_with_default ( p , a , b );
4078 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004079 p->error_indicator = 1;
4080 return NULL;
4081 }
4082 goto done;
4083 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004084 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004085 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004086 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004087 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004088 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004089}
4090
4091// star_etc:
Guido van Rossumc001c092020-04-30 12:12:19 -07004092// | '*' param_no_default param_maybe_default* kwds?
4093// | '*' ',' param_maybe_default+ kwds?
4094// | kwds
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004095// | invalid_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004096static StarEtc*
4097star_etc_rule(Parser *p)
4098{
4099 if (p->error_indicator) {
4100 return NULL;
4101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004102 StarEtc* _res = NULL;
4103 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004104 { // '*' param_no_default param_maybe_default* kwds?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004105 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004106 arg_ty a;
4107 asdl_seq * b;
4108 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004109 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004110 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004111 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004112 (a = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004113 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004114 (b = _loop0_65_rule(p)) // param_maybe_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004115 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004116 (c = kwds_rule(p), 1) // kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004117 )
4118 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004119 _res = _PyPegen_star_etc ( p , a , b , c );
4120 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004121 p->error_indicator = 1;
4122 return NULL;
4123 }
4124 goto done;
4125 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004126 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004127 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004128 { // '*' ',' param_maybe_default+ kwds?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004129 Token * _literal;
4130 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004131 asdl_seq * b;
4132 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004133 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004134 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004135 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004136 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004137 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004138 (b = _loop1_66_rule(p)) // param_maybe_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004139 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004140 (c = kwds_rule(p), 1) // kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004141 )
4142 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004143 _res = _PyPegen_star_etc ( p , NULL , b , c );
4144 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004145 p->error_indicator = 1;
4146 return NULL;
4147 }
4148 goto done;
4149 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004150 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004151 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004152 { // kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004153 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004154 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004155 (a = kwds_rule(p)) // kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004156 )
4157 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004158 _res = _PyPegen_star_etc ( p , NULL , NULL , a );
4159 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004160 p->error_indicator = 1;
4161 return NULL;
4162 }
4163 goto done;
4164 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004165 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004166 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004167 { // invalid_star_etc
4168 void *invalid_star_etc_var;
4169 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004170 (invalid_star_etc_var = invalid_star_etc_rule(p)) // invalid_star_etc
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004171 )
4172 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004173 _res = invalid_star_etc_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004174 goto done;
4175 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004176 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004178 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004179 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004180 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004181}
4182
Guido van Rossumc001c092020-04-30 12:12:19 -07004183// kwds: '**' param_no_default
4184static arg_ty
4185kwds_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004186{
4187 if (p->error_indicator) {
4188 return NULL;
4189 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004190 arg_ty _res = NULL;
4191 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004192 { // '**' param_no_default
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004193 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004194 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004195 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004196 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -07004197 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004198 (a = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -07004199 )
4200 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004201 _res = a;
4202 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004203 p->error_indicator = 1;
4204 return NULL;
4205 }
4206 goto done;
4207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004208 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004210 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07004211 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004212 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07004213}
4214
4215// param_no_default: param ',' TYPE_COMMENT? | param TYPE_COMMENT? &')'
4216static arg_ty
4217param_no_default_rule(Parser *p)
4218{
4219 if (p->error_indicator) {
4220 return NULL;
4221 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004222 arg_ty _res = NULL;
4223 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004224 { // param ',' TYPE_COMMENT?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004225 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004226 arg_ty a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004227 void *tc;
4228 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004229 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004230 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004231 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004232 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004233 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004234 )
4235 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004236 _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
4237 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004238 p->error_indicator = 1;
4239 return NULL;
4240 }
4241 goto done;
4242 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004243 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004244 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004245 { // param TYPE_COMMENT? &')'
4246 arg_ty a;
4247 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004248 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004249 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004250 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004251 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004252 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004253 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004254 )
4255 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004256 _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
4257 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004258 p->error_indicator = 1;
4259 return NULL;
4260 }
4261 goto done;
4262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004263 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004264 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004265 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004266 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004267 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004268}
4269
Guido van Rossumc001c092020-04-30 12:12:19 -07004270// param_with_default: param default ',' TYPE_COMMENT? | param default TYPE_COMMENT? &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004271static NameDefaultPair*
Guido van Rossumc001c092020-04-30 12:12:19 -07004272param_with_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004273{
4274 if (p->error_indicator) {
4275 return NULL;
4276 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004277 NameDefaultPair* _res = NULL;
4278 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004279 { // param default ',' TYPE_COMMENT?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004280 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004281 arg_ty a;
4282 expr_ty c;
Guido van Rossumc001c092020-04-30 12:12:19 -07004283 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004284 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004285 (a = param_rule(p)) // param
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004286 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004287 (c = default_rule(p)) // default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004288 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004289 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004290 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004291 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004292 )
4293 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004294 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4295 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004296 p->error_indicator = 1;
4297 return NULL;
4298 }
4299 goto done;
4300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004301 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004302 }
4303 { // param default TYPE_COMMENT? &')'
4304 arg_ty a;
4305 expr_ty c;
4306 void *tc;
4307 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004308 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004309 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004310 (c = default_rule(p)) // default
Guido van Rossumc001c092020-04-30 12:12:19 -07004311 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004312 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004313 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004314 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -07004315 )
4316 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004317 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4318 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004319 p->error_indicator = 1;
4320 return NULL;
4321 }
4322 goto done;
4323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004324 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004325 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004326 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004327 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004328 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004329}
4330
Guido van Rossumc001c092020-04-30 12:12:19 -07004331// param_maybe_default:
4332// | param default? ',' TYPE_COMMENT?
4333// | param default? TYPE_COMMENT? &')'
4334static NameDefaultPair*
4335param_maybe_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004336{
4337 if (p->error_indicator) {
4338 return NULL;
4339 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004340 NameDefaultPair* _res = NULL;
4341 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004342 { // param default? ',' TYPE_COMMENT?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004343 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004344 arg_ty a;
4345 void *c;
Guido van Rossumc001c092020-04-30 12:12:19 -07004346 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004347 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004348 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004349 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004350 (c = default_rule(p), 1) // default?
Guido van Rossumc001c092020-04-30 12:12:19 -07004351 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004352 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004353 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004354 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004355 )
4356 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004357 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4358 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004359 p->error_indicator = 1;
4360 return NULL;
4361 }
4362 goto done;
4363 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004364 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004365 }
4366 { // param default? TYPE_COMMENT? &')'
4367 arg_ty a;
4368 void *c;
4369 void *tc;
4370 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004371 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004372 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004373 (c = default_rule(p), 1) // default?
Guido van Rossumc001c092020-04-30 12:12:19 -07004374 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004375 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004376 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004377 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -07004378 )
4379 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004380 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4381 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004382 p->error_indicator = 1;
4383 return NULL;
4384 }
4385 goto done;
4386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004387 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004388 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004389 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004390 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004391 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004392}
4393
Guido van Rossumc001c092020-04-30 12:12:19 -07004394// param: NAME annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004395static arg_ty
Guido van Rossumc001c092020-04-30 12:12:19 -07004396param_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004397{
4398 if (p->error_indicator) {
4399 return NULL;
4400 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004401 arg_ty _res = NULL;
4402 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004403 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4404 p->error_indicator = 1;
4405 return NULL;
4406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004407 int _start_lineno = p->tokens[_mark]->lineno;
4408 UNUSED(_start_lineno); // Only used by EXTRA macro
4409 int _start_col_offset = p->tokens[_mark]->col_offset;
4410 UNUSED(_start_col_offset); // Only used by EXTRA macro
Guido van Rossumc001c092020-04-30 12:12:19 -07004411 { // NAME annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004412 expr_ty a;
4413 void *b;
4414 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004415 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004416 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004417 (b = annotation_rule(p), 1) // annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004418 )
4419 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004420 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4421 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004422 return NULL;
4423 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004424 int _end_lineno = _token->end_lineno;
4425 UNUSED(_end_lineno); // Only used by EXTRA macro
4426 int _end_col_offset = _token->end_col_offset;
4427 UNUSED(_end_col_offset); // Only used by EXTRA macro
4428 _res = _Py_arg ( a -> v . Name . id , b , NULL , EXTRA );
4429 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004430 p->error_indicator = 1;
4431 return NULL;
4432 }
4433 goto done;
4434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004435 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004436 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004437 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004438 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004439 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004440}
4441
Guido van Rossumc001c092020-04-30 12:12:19 -07004442// annotation: ':' expression
4443static expr_ty
4444annotation_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004445{
4446 if (p->error_indicator) {
4447 return NULL;
4448 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004449 expr_ty _res = NULL;
4450 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004451 { // ':' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004452 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004453 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004454 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004455 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004456 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004457 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004458 )
4459 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004460 _res = a;
4461 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004462 p->error_indicator = 1;
4463 return NULL;
4464 }
4465 goto done;
4466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004467 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004469 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004470 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004471 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004472}
4473
Guido van Rossumc001c092020-04-30 12:12:19 -07004474// default: '=' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004475static expr_ty
Guido van Rossumc001c092020-04-30 12:12:19 -07004476default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004477{
4478 if (p->error_indicator) {
4479 return NULL;
4480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004481 expr_ty _res = NULL;
4482 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004483 { // '=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004484 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004485 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004486 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004487 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Guido van Rossumc001c092020-04-30 12:12:19 -07004488 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004489 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004490 )
4491 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004492 _res = a;
4493 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004494 p->error_indicator = 1;
4495 return NULL;
4496 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004497 goto done;
4498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004499 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004501 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004502 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004503 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004504}
4505
4506// decorators: (('@' named_expression NEWLINE))+
4507static asdl_seq*
4508decorators_rule(Parser *p)
4509{
4510 if (p->error_indicator) {
4511 return NULL;
4512 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004513 asdl_seq* _res = NULL;
4514 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004515 { // (('@' named_expression NEWLINE))+
4516 asdl_seq * a;
4517 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004518 (a = _loop1_67_rule(p)) // (('@' named_expression NEWLINE))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004519 )
4520 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004521 _res = a;
4522 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004523 p->error_indicator = 1;
4524 return NULL;
4525 }
4526 goto done;
4527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004528 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004529 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004530 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004531 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004532 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004533}
4534
4535// class_def: decorators class_def_raw | class_def_raw
4536static stmt_ty
4537class_def_rule(Parser *p)
4538{
4539 if (p->error_indicator) {
4540 return NULL;
4541 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004542 stmt_ty _res = NULL;
4543 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004544 { // decorators class_def_raw
4545 asdl_seq* a;
4546 stmt_ty b;
4547 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004548 (a = decorators_rule(p)) // decorators
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004549 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004550 (b = class_def_raw_rule(p)) // class_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004551 )
4552 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004553 _res = _PyPegen_class_def_decorators ( p , a , b );
4554 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004555 p->error_indicator = 1;
4556 return NULL;
4557 }
4558 goto done;
4559 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004560 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004561 }
4562 { // class_def_raw
4563 stmt_ty class_def_raw_var;
4564 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004565 (class_def_raw_var = class_def_raw_rule(p)) // class_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004566 )
4567 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004568 _res = class_def_raw_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004569 goto done;
4570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004571 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004572 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004573 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004574 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004575 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004576}
4577
4578// class_def_raw: 'class' NAME ['(' arguments? ')'] ':' block
4579static stmt_ty
4580class_def_raw_rule(Parser *p)
4581{
4582 if (p->error_indicator) {
4583 return NULL;
4584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004585 stmt_ty _res = NULL;
4586 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004587 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4588 p->error_indicator = 1;
4589 return NULL;
4590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004591 int _start_lineno = p->tokens[_mark]->lineno;
4592 UNUSED(_start_lineno); // Only used by EXTRA macro
4593 int _start_col_offset = p->tokens[_mark]->col_offset;
4594 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004595 { // 'class' NAME ['(' arguments? ')'] ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004596 Token * _keyword;
4597 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004598 expr_ty a;
4599 void *b;
4600 asdl_seq* c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004601 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004602 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004603 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004604 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004605 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004606 (b = _tmp_68_rule(p), 1) // ['(' arguments? ')']
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004607 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004608 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004609 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004610 (c = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004611 )
4612 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004613 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4614 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004615 return NULL;
4616 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004617 int _end_lineno = _token->end_lineno;
4618 UNUSED(_end_lineno); // Only used by EXTRA macro
4619 int _end_col_offset = _token->end_col_offset;
4620 UNUSED(_end_col_offset); // Only used by EXTRA macro
4621 _res = _Py_ClassDef ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , c , NULL , EXTRA );
4622 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004623 p->error_indicator = 1;
4624 return NULL;
4625 }
4626 goto done;
4627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004628 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004629 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004630 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004631 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004632 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004633}
4634
4635// block: NEWLINE INDENT statements DEDENT | simple_stmt | invalid_block
4636static asdl_seq*
4637block_rule(Parser *p)
4638{
4639 if (p->error_indicator) {
4640 return NULL;
4641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004642 asdl_seq* _res = NULL;
4643 if (_PyPegen_is_memoized(p, block_type, &_res))
4644 return _res;
4645 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004646 { // NEWLINE INDENT statements DEDENT
4647 asdl_seq* a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01004648 Token * dedent_var;
4649 Token * indent_var;
4650 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004651 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004652 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004653 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004654 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004655 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004656 (a = statements_rule(p)) // statements
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004657 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004658 (dedent_var = _PyPegen_expect_token(p, DEDENT)) // token='DEDENT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004659 )
4660 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004661 _res = a;
4662 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004663 p->error_indicator = 1;
4664 return NULL;
4665 }
4666 goto done;
4667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004668 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004669 }
4670 { // simple_stmt
4671 asdl_seq* simple_stmt_var;
4672 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004673 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004674 )
4675 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004676 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004677 goto done;
4678 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004679 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004680 }
4681 { // invalid_block
4682 void *invalid_block_var;
4683 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004684 (invalid_block_var = invalid_block_rule(p)) // invalid_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004685 )
4686 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004687 _res = invalid_block_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004688 goto done;
4689 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004690 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004692 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004693 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004694 _PyPegen_insert_memo(p, _mark, block_type, _res);
4695 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004696}
4697
4698// expressions_list: ','.star_expression+ ','?
4699static asdl_seq*
4700expressions_list_rule(Parser *p)
4701{
4702 if (p->error_indicator) {
4703 return NULL;
4704 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004705 asdl_seq* _res = NULL;
4706 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004707 { // ','.star_expression+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004708 void *_opt_var;
4709 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004710 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004711 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004712 (a = _gather_69_rule(p)) // ','.star_expression+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004713 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004714 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004715 )
4716 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004717 _res = a;
4718 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004719 p->error_indicator = 1;
4720 return NULL;
4721 }
4722 goto done;
4723 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004724 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004725 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004726 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004727 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004728 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004729}
4730
4731// star_expressions:
4732// | star_expression ((',' star_expression))+ ','?
4733// | star_expression ','
4734// | star_expression
4735static expr_ty
4736star_expressions_rule(Parser *p)
4737{
4738 if (p->error_indicator) {
4739 return NULL;
4740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004741 expr_ty _res = NULL;
4742 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004743 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4744 p->error_indicator = 1;
4745 return NULL;
4746 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004747 int _start_lineno = p->tokens[_mark]->lineno;
4748 UNUSED(_start_lineno); // Only used by EXTRA macro
4749 int _start_col_offset = p->tokens[_mark]->col_offset;
4750 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004751 { // star_expression ((',' star_expression))+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004752 void *_opt_var;
4753 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004754 expr_ty a;
4755 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004756 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004757 (a = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004758 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004759 (b = _loop1_71_rule(p)) // ((',' star_expression))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004760 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004761 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004762 )
4763 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004764 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4765 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004766 return NULL;
4767 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004768 int _end_lineno = _token->end_lineno;
4769 UNUSED(_end_lineno); // Only used by EXTRA macro
4770 int _end_col_offset = _token->end_col_offset;
4771 UNUSED(_end_col_offset); // Only used by EXTRA macro
4772 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
4773 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004774 p->error_indicator = 1;
4775 return NULL;
4776 }
4777 goto done;
4778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004779 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004780 }
4781 { // star_expression ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004782 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004783 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004784 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004785 (a = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004786 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004787 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004788 )
4789 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004790 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4791 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004792 return NULL;
4793 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004794 int _end_lineno = _token->end_lineno;
4795 UNUSED(_end_lineno); // Only used by EXTRA macro
4796 int _end_col_offset = _token->end_col_offset;
4797 UNUSED(_end_col_offset); // Only used by EXTRA macro
4798 _res = _Py_Tuple ( CHECK ( _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
4799 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004800 p->error_indicator = 1;
4801 return NULL;
4802 }
4803 goto done;
4804 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004805 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004806 }
4807 { // star_expression
4808 expr_ty star_expression_var;
4809 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004810 (star_expression_var = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004811 )
4812 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004813 _res = star_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004814 goto done;
4815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004816 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004818 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004819 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004820 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004821}
4822
4823// star_expression: '*' bitwise_or | expression
4824static expr_ty
4825star_expression_rule(Parser *p)
4826{
4827 if (p->error_indicator) {
4828 return NULL;
4829 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004830 expr_ty _res = NULL;
4831 if (_PyPegen_is_memoized(p, star_expression_type, &_res))
4832 return _res;
4833 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004834 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4835 p->error_indicator = 1;
4836 return NULL;
4837 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004838 int _start_lineno = p->tokens[_mark]->lineno;
4839 UNUSED(_start_lineno); // Only used by EXTRA macro
4840 int _start_col_offset = p->tokens[_mark]->col_offset;
4841 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004842 { // '*' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004843 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004844 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004845 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004846 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004847 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004848 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004849 )
4850 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004851 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4852 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004853 return NULL;
4854 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004855 int _end_lineno = _token->end_lineno;
4856 UNUSED(_end_lineno); // Only used by EXTRA macro
4857 int _end_col_offset = _token->end_col_offset;
4858 UNUSED(_end_col_offset); // Only used by EXTRA macro
4859 _res = _Py_Starred ( a , Load , EXTRA );
4860 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004861 p->error_indicator = 1;
4862 return NULL;
4863 }
4864 goto done;
4865 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004866 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004867 }
4868 { // expression
4869 expr_ty expression_var;
4870 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004871 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004872 )
4873 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004874 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004875 goto done;
4876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004877 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004879 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004880 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004881 _PyPegen_insert_memo(p, _mark, star_expression_type, _res);
4882 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004883}
4884
4885// star_named_expressions: ','.star_named_expression+ ','?
4886static asdl_seq*
4887star_named_expressions_rule(Parser *p)
4888{
4889 if (p->error_indicator) {
4890 return NULL;
4891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004892 asdl_seq* _res = NULL;
4893 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004894 { // ','.star_named_expression+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004895 void *_opt_var;
4896 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004897 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004898 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004899 (a = _gather_72_rule(p)) // ','.star_named_expression+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004900 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004901 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004902 )
4903 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004904 _res = a;
4905 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004906 p->error_indicator = 1;
4907 return NULL;
4908 }
4909 goto done;
4910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004911 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004913 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004914 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004915 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004916}
4917
4918// star_named_expression: '*' bitwise_or | named_expression
4919static expr_ty
4920star_named_expression_rule(Parser *p)
4921{
4922 if (p->error_indicator) {
4923 return NULL;
4924 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004925 expr_ty _res = NULL;
4926 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004927 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4928 p->error_indicator = 1;
4929 return NULL;
4930 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004931 int _start_lineno = p->tokens[_mark]->lineno;
4932 UNUSED(_start_lineno); // Only used by EXTRA macro
4933 int _start_col_offset = p->tokens[_mark]->col_offset;
4934 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004935 { // '*' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004936 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004937 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004938 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004939 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004940 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004941 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004942 )
4943 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004944 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4945 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004946 return NULL;
4947 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004948 int _end_lineno = _token->end_lineno;
4949 UNUSED(_end_lineno); // Only used by EXTRA macro
4950 int _end_col_offset = _token->end_col_offset;
4951 UNUSED(_end_col_offset); // Only used by EXTRA macro
4952 _res = _Py_Starred ( a , Load , EXTRA );
4953 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004954 p->error_indicator = 1;
4955 return NULL;
4956 }
4957 goto done;
4958 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004959 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004960 }
4961 { // named_expression
4962 expr_ty named_expression_var;
4963 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004964 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004965 )
4966 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004967 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004968 goto done;
4969 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004970 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004972 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004973 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004974 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004975}
4976
4977// named_expression: NAME ':=' expression | expression !':=' | invalid_named_expression
4978static expr_ty
4979named_expression_rule(Parser *p)
4980{
4981 if (p->error_indicator) {
4982 return NULL;
4983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004984 expr_ty _res = NULL;
4985 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004986 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4987 p->error_indicator = 1;
4988 return NULL;
4989 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004990 int _start_lineno = p->tokens[_mark]->lineno;
4991 UNUSED(_start_lineno); // Only used by EXTRA macro
4992 int _start_col_offset = p->tokens[_mark]->col_offset;
4993 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004994 { // NAME ':=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004995 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004996 expr_ty a;
4997 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004998 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004999 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005000 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005001 (_literal = _PyPegen_expect_token(p, 53)) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005002 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005003 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005004 )
5005 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005006 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5007 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005008 return NULL;
5009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005010 int _end_lineno = _token->end_lineno;
5011 UNUSED(_end_lineno); // Only used by EXTRA macro
5012 int _end_col_offset = _token->end_col_offset;
5013 UNUSED(_end_col_offset); // Only used by EXTRA macro
5014 _res = _Py_NamedExpr ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , b , EXTRA );
5015 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005016 p->error_indicator = 1;
5017 return NULL;
5018 }
5019 goto done;
5020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005021 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005022 }
5023 { // expression !':='
5024 expr_ty expression_var;
5025 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005026 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005027 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005028 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005029 )
5030 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005031 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005032 goto done;
5033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005034 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005035 }
5036 { // invalid_named_expression
5037 void *invalid_named_expression_var;
5038 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005039 (invalid_named_expression_var = invalid_named_expression_rule(p)) // invalid_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005040 )
5041 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005042 _res = invalid_named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005043 goto done;
5044 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005045 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005046 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005047 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005048 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005049 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005050}
5051
5052// annotated_rhs: yield_expr | star_expressions
5053static expr_ty
5054annotated_rhs_rule(Parser *p)
5055{
5056 if (p->error_indicator) {
5057 return NULL;
5058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005059 expr_ty _res = NULL;
5060 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005061 { // yield_expr
5062 expr_ty yield_expr_var;
5063 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005064 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005065 )
5066 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005067 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005068 goto done;
5069 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005070 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005071 }
5072 { // star_expressions
5073 expr_ty star_expressions_var;
5074 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005075 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005076 )
5077 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005078 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005079 goto done;
5080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005081 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005083 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005084 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005085 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005086}
5087
5088// expressions: expression ((',' expression))+ ','? | expression ',' | expression
5089static expr_ty
5090expressions_rule(Parser *p)
5091{
5092 if (p->error_indicator) {
5093 return NULL;
5094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005095 expr_ty _res = NULL;
5096 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005097 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5098 p->error_indicator = 1;
5099 return NULL;
5100 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005101 int _start_lineno = p->tokens[_mark]->lineno;
5102 UNUSED(_start_lineno); // Only used by EXTRA macro
5103 int _start_col_offset = p->tokens[_mark]->col_offset;
5104 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005105 { // expression ((',' expression))+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005106 void *_opt_var;
5107 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005108 expr_ty a;
5109 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005110 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005111 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005112 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005113 (b = _loop1_74_rule(p)) // ((',' expression))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005114 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005115 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005116 )
5117 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005118 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5119 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005120 return NULL;
5121 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005122 int _end_lineno = _token->end_lineno;
5123 UNUSED(_end_lineno); // Only used by EXTRA macro
5124 int _end_col_offset = _token->end_col_offset;
5125 UNUSED(_end_col_offset); // Only used by EXTRA macro
5126 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
5127 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005128 p->error_indicator = 1;
5129 return NULL;
5130 }
5131 goto done;
5132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005133 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005134 }
5135 { // expression ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005136 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005137 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005138 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005139 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005140 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005141 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005142 )
5143 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005144 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5145 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005146 return NULL;
5147 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005148 int _end_lineno = _token->end_lineno;
5149 UNUSED(_end_lineno); // Only used by EXTRA macro
5150 int _end_col_offset = _token->end_col_offset;
5151 UNUSED(_end_col_offset); // Only used by EXTRA macro
5152 _res = _Py_Tuple ( CHECK ( _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
5153 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005154 p->error_indicator = 1;
5155 return NULL;
5156 }
5157 goto done;
5158 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005159 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005160 }
5161 { // expression
5162 expr_ty expression_var;
5163 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005164 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005165 )
5166 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005167 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005168 goto done;
5169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005170 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005172 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005173 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005174 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005175}
5176
5177// expression: disjunction 'if' disjunction 'else' expression | disjunction | lambdef
5178static expr_ty
5179expression_rule(Parser *p)
5180{
5181 if (p->error_indicator) {
5182 return NULL;
5183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005184 expr_ty _res = NULL;
5185 if (_PyPegen_is_memoized(p, expression_type, &_res))
5186 return _res;
5187 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005188 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5189 p->error_indicator = 1;
5190 return NULL;
5191 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005192 int _start_lineno = p->tokens[_mark]->lineno;
5193 UNUSED(_start_lineno); // Only used by EXTRA macro
5194 int _start_col_offset = p->tokens[_mark]->col_offset;
5195 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005196 { // disjunction 'if' disjunction 'else' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005197 Token * _keyword;
5198 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005199 expr_ty a;
5200 expr_ty b;
5201 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005202 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005203 (a = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005204 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005205 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005206 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005207 (b = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005208 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005209 (_keyword_1 = _PyPegen_expect_token(p, 516)) // token='else'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005210 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005211 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005212 )
5213 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005214 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5215 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005216 return NULL;
5217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005218 int _end_lineno = _token->end_lineno;
5219 UNUSED(_end_lineno); // Only used by EXTRA macro
5220 int _end_col_offset = _token->end_col_offset;
5221 UNUSED(_end_col_offset); // Only used by EXTRA macro
5222 _res = _Py_IfExp ( b , a , c , EXTRA );
5223 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005224 p->error_indicator = 1;
5225 return NULL;
5226 }
5227 goto done;
5228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005229 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005230 }
5231 { // disjunction
5232 expr_ty disjunction_var;
5233 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005234 (disjunction_var = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005235 )
5236 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005237 _res = disjunction_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005238 goto done;
5239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005240 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005241 }
5242 { // lambdef
5243 expr_ty lambdef_var;
5244 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005245 (lambdef_var = lambdef_rule(p)) // lambdef
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005246 )
5247 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005248 _res = lambdef_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005249 goto done;
5250 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005251 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005253 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005254 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005255 _PyPegen_insert_memo(p, _mark, expression_type, _res);
5256 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005257}
5258
5259// lambdef: 'lambda' lambda_parameters? ':' expression
5260static expr_ty
5261lambdef_rule(Parser *p)
5262{
5263 if (p->error_indicator) {
5264 return NULL;
5265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005266 expr_ty _res = NULL;
5267 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005268 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5269 p->error_indicator = 1;
5270 return NULL;
5271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005272 int _start_lineno = p->tokens[_mark]->lineno;
5273 UNUSED(_start_lineno); // Only used by EXTRA macro
5274 int _start_col_offset = p->tokens[_mark]->col_offset;
5275 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005276 { // 'lambda' lambda_parameters? ':' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005277 Token * _keyword;
5278 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005279 void *a;
5280 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005281 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005282 (_keyword = _PyPegen_expect_token(p, 524)) // token='lambda'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005283 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005284 (a = lambda_parameters_rule(p), 1) // lambda_parameters?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005285 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005286 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005287 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005288 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005289 )
5290 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005291 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5292 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005293 return NULL;
5294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005295 int _end_lineno = _token->end_lineno;
5296 UNUSED(_end_lineno); // Only used by EXTRA macro
5297 int _end_col_offset = _token->end_col_offset;
5298 UNUSED(_end_col_offset); // Only used by EXTRA macro
5299 _res = _Py_Lambda ( ( a ) ? a : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , EXTRA );
5300 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005301 p->error_indicator = 1;
5302 return NULL;
5303 }
5304 goto done;
5305 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005306 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005307 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005308 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005309 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005310 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005311}
5312
5313// lambda_parameters:
Guido van Rossum3941d972020-05-01 09:42:03 -07005314// | lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
5315// | lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
5316// | lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
5317// | lambda_param_with_default+ lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005318// | lambda_star_etc
5319static arguments_ty
5320lambda_parameters_rule(Parser *p)
5321{
5322 if (p->error_indicator) {
5323 return NULL;
5324 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005325 arguments_ty _res = NULL;
5326 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005327 { // lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005328 asdl_seq* a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005329 asdl_seq * b;
5330 asdl_seq * c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005331 void *d;
5332 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005333 (a = lambda_slash_no_default_rule(p)) // lambda_slash_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005334 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005335 (b = _loop0_75_rule(p)) // lambda_param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005336 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005337 (c = _loop0_76_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005338 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005339 (d = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005340 )
5341 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005342 _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
5343 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005344 p->error_indicator = 1;
5345 return NULL;
5346 }
5347 goto done;
5348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005349 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005350 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005351 { // lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005352 SlashWithDefault* a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005353 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005354 void *c;
5355 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005356 (a = lambda_slash_with_default_rule(p)) // lambda_slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005357 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005358 (b = _loop0_77_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005359 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005360 (c = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005361 )
5362 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005363 _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
5364 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005365 p->error_indicator = 1;
5366 return NULL;
5367 }
5368 goto done;
5369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005370 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005371 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005372 { // lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
5373 asdl_seq * a;
5374 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005375 void *c;
5376 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005377 (a = _loop1_78_rule(p)) // lambda_param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005378 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005379 (b = _loop0_79_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005380 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005381 (c = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005382 )
5383 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005384 _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
5385 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005386 p->error_indicator = 1;
5387 return NULL;
5388 }
5389 goto done;
5390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005391 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005392 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005393 { // lambda_param_with_default+ lambda_star_etc?
5394 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005395 void *b;
5396 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005397 (a = _loop1_80_rule(p)) // lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005398 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005399 (b = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005400 )
5401 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005402 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
5403 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005404 p->error_indicator = 1;
5405 return NULL;
5406 }
5407 goto done;
5408 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005409 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005410 }
5411 { // lambda_star_etc
5412 StarEtc* a;
5413 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005414 (a = lambda_star_etc_rule(p)) // lambda_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005415 )
5416 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005417 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
5418 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005419 p->error_indicator = 1;
5420 return NULL;
5421 }
5422 goto done;
5423 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005424 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005426 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005427 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005428 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005429}
5430
Guido van Rossum3941d972020-05-01 09:42:03 -07005431// lambda_slash_no_default:
5432// | lambda_param_no_default+ '/' ','
5433// | lambda_param_no_default+ '/' &':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005434static asdl_seq*
Guido van Rossum3941d972020-05-01 09:42:03 -07005435lambda_slash_no_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005436{
5437 if (p->error_indicator) {
5438 return NULL;
5439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005440 asdl_seq* _res = NULL;
5441 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005442 { // lambda_param_no_default+ '/' ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005443 Token * _literal;
5444 Token * _literal_1;
Guido van Rossum3941d972020-05-01 09:42:03 -07005445 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005446 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005447 (a = _loop1_81_rule(p)) // lambda_param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005448 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005449 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005450 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005451 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005452 )
5453 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005454 _res = a;
5455 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005456 p->error_indicator = 1;
5457 return NULL;
5458 }
5459 goto done;
5460 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005461 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005462 }
5463 { // lambda_param_no_default+ '/' &':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005464 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005465 asdl_seq * a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005466 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005467 (a = _loop1_82_rule(p)) // lambda_param_no_default+
Guido van Rossum3941d972020-05-01 09:42:03 -07005468 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005469 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossum3941d972020-05-01 09:42:03 -07005470 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005471 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005472 )
5473 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005474 _res = a;
5475 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005476 p->error_indicator = 1;
5477 return NULL;
5478 }
5479 goto done;
5480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005481 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005482 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005483 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005484 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005485 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005486}
5487
Guido van Rossum3941d972020-05-01 09:42:03 -07005488// lambda_slash_with_default:
5489// | lambda_param_no_default* lambda_param_with_default+ '/' ','
5490// | lambda_param_no_default* lambda_param_with_default+ '/' &':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005491static SlashWithDefault*
5492lambda_slash_with_default_rule(Parser *p)
5493{
5494 if (p->error_indicator) {
5495 return NULL;
5496 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005497 SlashWithDefault* _res = NULL;
5498 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005499 { // lambda_param_no_default* lambda_param_with_default+ '/' ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005500 Token * _literal;
5501 Token * _literal_1;
Guido van Rossum3941d972020-05-01 09:42:03 -07005502 asdl_seq * a;
5503 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005504 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005505 (a = _loop0_83_rule(p)) // lambda_param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005506 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005507 (b = _loop1_84_rule(p)) // lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005508 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005509 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005510 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005511 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005512 )
5513 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005514 _res = _PyPegen_slash_with_default ( p , a , b );
5515 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005516 p->error_indicator = 1;
5517 return NULL;
5518 }
5519 goto done;
5520 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005521 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005522 }
5523 { // lambda_param_no_default* lambda_param_with_default+ '/' &':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005524 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005525 asdl_seq * a;
5526 asdl_seq * b;
Guido van Rossum3941d972020-05-01 09:42:03 -07005527 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005528 (a = _loop0_85_rule(p)) // lambda_param_no_default*
Guido van Rossum3941d972020-05-01 09:42:03 -07005529 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005530 (b = _loop1_86_rule(p)) // lambda_param_with_default+
Guido van Rossum3941d972020-05-01 09:42:03 -07005531 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005532 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossum3941d972020-05-01 09:42:03 -07005533 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005534 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005535 )
5536 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005537 _res = _PyPegen_slash_with_default ( p , a , b );
5538 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005539 p->error_indicator = 1;
5540 return NULL;
5541 }
5542 goto done;
5543 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005544 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005545 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005546 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005547 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005548 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005549}
5550
5551// lambda_star_etc:
Guido van Rossum3941d972020-05-01 09:42:03 -07005552// | '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
5553// | '*' ',' lambda_param_maybe_default+ lambda_kwds?
5554// | lambda_kwds
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005555// | invalid_lambda_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005556static StarEtc*
5557lambda_star_etc_rule(Parser *p)
5558{
5559 if (p->error_indicator) {
5560 return NULL;
5561 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005562 StarEtc* _res = NULL;
5563 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005564 { // '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005565 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005566 arg_ty a;
5567 asdl_seq * b;
5568 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005569 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005570 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005571 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005572 (a = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005573 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005574 (b = _loop0_87_rule(p)) // lambda_param_maybe_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005575 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005576 (c = lambda_kwds_rule(p), 1) // lambda_kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005577 )
5578 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005579 _res = _PyPegen_star_etc ( p , a , b , c );
5580 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005581 p->error_indicator = 1;
5582 return NULL;
5583 }
5584 goto done;
5585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005586 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005587 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005588 { // '*' ',' lambda_param_maybe_default+ lambda_kwds?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005589 Token * _literal;
5590 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005591 asdl_seq * b;
5592 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005593 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005594 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005595 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005596 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005597 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005598 (b = _loop1_88_rule(p)) // lambda_param_maybe_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005599 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005600 (c = lambda_kwds_rule(p), 1) // lambda_kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005601 )
5602 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005603 _res = _PyPegen_star_etc ( p , NULL , b , c );
5604 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005605 p->error_indicator = 1;
5606 return NULL;
5607 }
5608 goto done;
5609 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005610 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005611 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005612 { // lambda_kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005613 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005614 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005615 (a = lambda_kwds_rule(p)) // lambda_kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005616 )
5617 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005618 _res = _PyPegen_star_etc ( p , NULL , NULL , a );
5619 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005620 p->error_indicator = 1;
5621 return NULL;
5622 }
5623 goto done;
5624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005625 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005626 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005627 { // invalid_lambda_star_etc
5628 void *invalid_lambda_star_etc_var;
5629 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005630 (invalid_lambda_star_etc_var = invalid_lambda_star_etc_rule(p)) // invalid_lambda_star_etc
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005631 )
5632 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005633 _res = invalid_lambda_star_etc_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005634 goto done;
5635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005636 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005638 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005639 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005640 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005641}
5642
Guido van Rossum3941d972020-05-01 09:42:03 -07005643// lambda_kwds: '**' lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005644static arg_ty
Guido van Rossum3941d972020-05-01 09:42:03 -07005645lambda_kwds_rule(Parser *p)
5646{
5647 if (p->error_indicator) {
5648 return NULL;
5649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005650 arg_ty _res = NULL;
5651 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005652 { // '**' lambda_param_no_default
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005653 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005654 arg_ty a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005655 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005656 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossum3941d972020-05-01 09:42:03 -07005657 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005658 (a = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -07005659 )
5660 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005661 _res = a;
5662 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005663 p->error_indicator = 1;
5664 return NULL;
5665 }
5666 goto done;
5667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005668 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005669 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005670 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07005671 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005672 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07005673}
5674
5675// lambda_param_no_default: lambda_param ',' | lambda_param &':'
5676static arg_ty
5677lambda_param_no_default_rule(Parser *p)
5678{
5679 if (p->error_indicator) {
5680 return NULL;
5681 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005682 arg_ty _res = NULL;
5683 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005684 { // lambda_param ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005685 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005686 arg_ty a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005687 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005688 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005689 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005690 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005691 )
5692 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005693 _res = a;
5694 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005695 p->error_indicator = 1;
5696 return NULL;
5697 }
5698 goto done;
5699 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005700 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005701 }
5702 { // lambda_param &':'
5703 arg_ty a;
5704 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005705 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005706 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005707 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07005708 )
5709 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005710 _res = a;
5711 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005712 p->error_indicator = 1;
5713 return NULL;
5714 }
5715 goto done;
5716 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005717 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005718 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005719 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07005720 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005721 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07005722}
5723
5724// lambda_param_with_default: lambda_param default ',' | lambda_param default &':'
5725static NameDefaultPair*
5726lambda_param_with_default_rule(Parser *p)
5727{
5728 if (p->error_indicator) {
5729 return NULL;
5730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005731 NameDefaultPair* _res = NULL;
5732 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005733 { // lambda_param default ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005734 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005735 arg_ty a;
5736 expr_ty c;
Guido van Rossum3941d972020-05-01 09:42:03 -07005737 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005738 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005739 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005740 (c = default_rule(p)) // default
Guido van Rossum3941d972020-05-01 09:42:03 -07005741 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005742 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005743 )
5744 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005745 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
5746 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005747 p->error_indicator = 1;
5748 return NULL;
5749 }
5750 goto done;
5751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005752 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005753 }
5754 { // lambda_param default &':'
5755 arg_ty a;
5756 expr_ty c;
5757 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005758 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005759 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005760 (c = default_rule(p)) // default
Guido van Rossum3941d972020-05-01 09:42:03 -07005761 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005762 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07005763 )
5764 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005765 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
5766 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005767 p->error_indicator = 1;
5768 return NULL;
5769 }
5770 goto done;
5771 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005772 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005774 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07005775 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005776 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07005777}
5778
5779// lambda_param_maybe_default: lambda_param default? ',' | lambda_param default? &':'
5780static NameDefaultPair*
5781lambda_param_maybe_default_rule(Parser *p)
5782{
5783 if (p->error_indicator) {
5784 return NULL;
5785 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005786 NameDefaultPair* _res = NULL;
5787 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005788 { // lambda_param default? ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005789 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005790 arg_ty a;
5791 void *c;
Guido van Rossum3941d972020-05-01 09:42:03 -07005792 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005793 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005794 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005795 (c = default_rule(p), 1) // default?
Guido van Rossum3941d972020-05-01 09:42:03 -07005796 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005797 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005798 )
5799 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005800 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
5801 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005802 p->error_indicator = 1;
5803 return NULL;
5804 }
5805 goto done;
5806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005807 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005808 }
5809 { // lambda_param default? &':'
5810 arg_ty a;
5811 void *c;
5812 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005813 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005814 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005815 (c = default_rule(p), 1) // default?
Guido van Rossum3941d972020-05-01 09:42:03 -07005816 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005817 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07005818 )
5819 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005820 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
5821 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005822 p->error_indicator = 1;
5823 return NULL;
5824 }
5825 goto done;
5826 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005827 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005828 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005829 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07005830 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005831 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07005832}
5833
5834// lambda_param: NAME
5835static arg_ty
5836lambda_param_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005837{
5838 if (p->error_indicator) {
5839 return NULL;
5840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005841 arg_ty _res = NULL;
5842 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005843 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5844 p->error_indicator = 1;
5845 return NULL;
5846 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005847 int _start_lineno = p->tokens[_mark]->lineno;
5848 UNUSED(_start_lineno); // Only used by EXTRA macro
5849 int _start_col_offset = p->tokens[_mark]->col_offset;
5850 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005851 { // NAME
5852 expr_ty a;
5853 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005854 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005855 )
5856 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005857 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5858 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005859 return NULL;
5860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005861 int _end_lineno = _token->end_lineno;
5862 UNUSED(_end_lineno); // Only used by EXTRA macro
5863 int _end_col_offset = _token->end_col_offset;
5864 UNUSED(_end_col_offset); // Only used by EXTRA macro
5865 _res = _Py_arg ( a -> v . Name . id , NULL , NULL , EXTRA );
5866 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005867 p->error_indicator = 1;
5868 return NULL;
5869 }
5870 goto done;
5871 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005872 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005873 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005874 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005875 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005876 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005877}
5878
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005879// disjunction: conjunction (('or' conjunction))+ | conjunction
5880static expr_ty
5881disjunction_rule(Parser *p)
5882{
5883 if (p->error_indicator) {
5884 return NULL;
5885 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005886 expr_ty _res = NULL;
5887 if (_PyPegen_is_memoized(p, disjunction_type, &_res))
5888 return _res;
5889 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005890 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5891 p->error_indicator = 1;
5892 return NULL;
5893 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005894 int _start_lineno = p->tokens[_mark]->lineno;
5895 UNUSED(_start_lineno); // Only used by EXTRA macro
5896 int _start_col_offset = p->tokens[_mark]->col_offset;
5897 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005898 { // conjunction (('or' conjunction))+
5899 expr_ty a;
5900 asdl_seq * b;
5901 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005902 (a = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005903 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005904 (b = _loop1_89_rule(p)) // (('or' conjunction))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005905 )
5906 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005907 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5908 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005909 return NULL;
5910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005911 int _end_lineno = _token->end_lineno;
5912 UNUSED(_end_lineno); // Only used by EXTRA macro
5913 int _end_col_offset = _token->end_col_offset;
5914 UNUSED(_end_col_offset); // Only used by EXTRA macro
5915 _res = _Py_BoolOp ( Or , CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
5916 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005917 p->error_indicator = 1;
5918 return NULL;
5919 }
5920 goto done;
5921 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005922 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005923 }
5924 { // conjunction
5925 expr_ty conjunction_var;
5926 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005927 (conjunction_var = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005928 )
5929 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005930 _res = conjunction_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005931 goto done;
5932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005933 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005935 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005936 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005937 _PyPegen_insert_memo(p, _mark, disjunction_type, _res);
5938 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005939}
5940
5941// conjunction: inversion (('and' inversion))+ | inversion
5942static expr_ty
5943conjunction_rule(Parser *p)
5944{
5945 if (p->error_indicator) {
5946 return NULL;
5947 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005948 expr_ty _res = NULL;
5949 if (_PyPegen_is_memoized(p, conjunction_type, &_res))
5950 return _res;
5951 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005952 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5953 p->error_indicator = 1;
5954 return NULL;
5955 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005956 int _start_lineno = p->tokens[_mark]->lineno;
5957 UNUSED(_start_lineno); // Only used by EXTRA macro
5958 int _start_col_offset = p->tokens[_mark]->col_offset;
5959 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005960 { // inversion (('and' inversion))+
5961 expr_ty a;
5962 asdl_seq * b;
5963 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005964 (a = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005965 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005966 (b = _loop1_90_rule(p)) // (('and' inversion))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005967 )
5968 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005969 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5970 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005971 return NULL;
5972 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005973 int _end_lineno = _token->end_lineno;
5974 UNUSED(_end_lineno); // Only used by EXTRA macro
5975 int _end_col_offset = _token->end_col_offset;
5976 UNUSED(_end_col_offset); // Only used by EXTRA macro
5977 _res = _Py_BoolOp ( And , CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
5978 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005979 p->error_indicator = 1;
5980 return NULL;
5981 }
5982 goto done;
5983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005984 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005985 }
5986 { // inversion
5987 expr_ty inversion_var;
5988 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005989 (inversion_var = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005990 )
5991 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005992 _res = inversion_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005993 goto done;
5994 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005995 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005996 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005997 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005998 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005999 _PyPegen_insert_memo(p, _mark, conjunction_type, _res);
6000 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006001}
6002
6003// inversion: 'not' inversion | comparison
6004static expr_ty
6005inversion_rule(Parser *p)
6006{
6007 if (p->error_indicator) {
6008 return NULL;
6009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006010 expr_ty _res = NULL;
6011 if (_PyPegen_is_memoized(p, inversion_type, &_res))
6012 return _res;
6013 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006014 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6015 p->error_indicator = 1;
6016 return NULL;
6017 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006018 int _start_lineno = p->tokens[_mark]->lineno;
6019 UNUSED(_start_lineno); // Only used by EXTRA macro
6020 int _start_col_offset = p->tokens[_mark]->col_offset;
6021 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006022 { // 'not' inversion
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006023 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006024 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006025 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006026 (_keyword = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006027 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006028 (a = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006029 )
6030 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006031 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6032 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006033 return NULL;
6034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006035 int _end_lineno = _token->end_lineno;
6036 UNUSED(_end_lineno); // Only used by EXTRA macro
6037 int _end_col_offset = _token->end_col_offset;
6038 UNUSED(_end_col_offset); // Only used by EXTRA macro
6039 _res = _Py_UnaryOp ( Not , a , EXTRA );
6040 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006041 p->error_indicator = 1;
6042 return NULL;
6043 }
6044 goto done;
6045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006046 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006047 }
6048 { // comparison
6049 expr_ty comparison_var;
6050 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006051 (comparison_var = comparison_rule(p)) // comparison
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006052 )
6053 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006054 _res = comparison_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006055 goto done;
6056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006057 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006059 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006060 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006061 _PyPegen_insert_memo(p, _mark, inversion_type, _res);
6062 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006063}
6064
6065// comparison: bitwise_or compare_op_bitwise_or_pair+ | bitwise_or
6066static expr_ty
6067comparison_rule(Parser *p)
6068{
6069 if (p->error_indicator) {
6070 return NULL;
6071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006072 expr_ty _res = NULL;
6073 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006074 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6075 p->error_indicator = 1;
6076 return NULL;
6077 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006078 int _start_lineno = p->tokens[_mark]->lineno;
6079 UNUSED(_start_lineno); // Only used by EXTRA macro
6080 int _start_col_offset = p->tokens[_mark]->col_offset;
6081 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006082 { // bitwise_or compare_op_bitwise_or_pair+
6083 expr_ty a;
6084 asdl_seq * b;
6085 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006086 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006087 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006088 (b = _loop1_91_rule(p)) // compare_op_bitwise_or_pair+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006089 )
6090 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006091 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6092 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006093 return NULL;
6094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006095 int _end_lineno = _token->end_lineno;
6096 UNUSED(_end_lineno); // Only used by EXTRA macro
6097 int _end_col_offset = _token->end_col_offset;
6098 UNUSED(_end_col_offset); // Only used by EXTRA macro
6099 _res = _Py_Compare ( a , CHECK ( _PyPegen_get_cmpops ( p , b ) ) , CHECK ( _PyPegen_get_exprs ( p , b ) ) , EXTRA );
6100 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006101 p->error_indicator = 1;
6102 return NULL;
6103 }
6104 goto done;
6105 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006106 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006107 }
6108 { // bitwise_or
6109 expr_ty bitwise_or_var;
6110 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006111 (bitwise_or_var = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006112 )
6113 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006114 _res = bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006115 goto done;
6116 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006117 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006119 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006120 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006121 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006122}
6123
6124// compare_op_bitwise_or_pair:
6125// | eq_bitwise_or
6126// | noteq_bitwise_or
6127// | lte_bitwise_or
6128// | lt_bitwise_or
6129// | gte_bitwise_or
6130// | gt_bitwise_or
6131// | notin_bitwise_or
6132// | in_bitwise_or
6133// | isnot_bitwise_or
6134// | is_bitwise_or
6135static CmpopExprPair*
6136compare_op_bitwise_or_pair_rule(Parser *p)
6137{
6138 if (p->error_indicator) {
6139 return NULL;
6140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006141 CmpopExprPair* _res = NULL;
6142 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006143 { // eq_bitwise_or
6144 CmpopExprPair* eq_bitwise_or_var;
6145 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006146 (eq_bitwise_or_var = eq_bitwise_or_rule(p)) // eq_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006147 )
6148 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006149 _res = eq_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006150 goto done;
6151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006152 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006153 }
6154 { // noteq_bitwise_or
6155 CmpopExprPair* noteq_bitwise_or_var;
6156 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006157 (noteq_bitwise_or_var = noteq_bitwise_or_rule(p)) // noteq_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006158 )
6159 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006160 _res = noteq_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006161 goto done;
6162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006163 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006164 }
6165 { // lte_bitwise_or
6166 CmpopExprPair* lte_bitwise_or_var;
6167 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006168 (lte_bitwise_or_var = lte_bitwise_or_rule(p)) // lte_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006169 )
6170 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006171 _res = lte_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006172 goto done;
6173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006174 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006175 }
6176 { // lt_bitwise_or
6177 CmpopExprPair* lt_bitwise_or_var;
6178 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006179 (lt_bitwise_or_var = lt_bitwise_or_rule(p)) // lt_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006180 )
6181 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006182 _res = lt_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006183 goto done;
6184 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006185 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006186 }
6187 { // gte_bitwise_or
6188 CmpopExprPair* gte_bitwise_or_var;
6189 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006190 (gte_bitwise_or_var = gte_bitwise_or_rule(p)) // gte_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006191 )
6192 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006193 _res = gte_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006194 goto done;
6195 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006196 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006197 }
6198 { // gt_bitwise_or
6199 CmpopExprPair* gt_bitwise_or_var;
6200 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006201 (gt_bitwise_or_var = gt_bitwise_or_rule(p)) // gt_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006202 )
6203 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006204 _res = gt_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006205 goto done;
6206 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006207 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006208 }
6209 { // notin_bitwise_or
6210 CmpopExprPair* notin_bitwise_or_var;
6211 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006212 (notin_bitwise_or_var = notin_bitwise_or_rule(p)) // notin_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006213 )
6214 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006215 _res = notin_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006216 goto done;
6217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006218 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006219 }
6220 { // in_bitwise_or
6221 CmpopExprPair* in_bitwise_or_var;
6222 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006223 (in_bitwise_or_var = in_bitwise_or_rule(p)) // in_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006224 )
6225 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006226 _res = in_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006227 goto done;
6228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006229 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006230 }
6231 { // isnot_bitwise_or
6232 CmpopExprPair* isnot_bitwise_or_var;
6233 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006234 (isnot_bitwise_or_var = isnot_bitwise_or_rule(p)) // isnot_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006235 )
6236 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006237 _res = isnot_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006238 goto done;
6239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006240 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006241 }
6242 { // is_bitwise_or
6243 CmpopExprPair* is_bitwise_or_var;
6244 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006245 (is_bitwise_or_var = is_bitwise_or_rule(p)) // is_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006246 )
6247 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006248 _res = is_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006249 goto done;
6250 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006251 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006253 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006254 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006255 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006256}
6257
6258// eq_bitwise_or: '==' bitwise_or
6259static CmpopExprPair*
6260eq_bitwise_or_rule(Parser *p)
6261{
6262 if (p->error_indicator) {
6263 return NULL;
6264 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006265 CmpopExprPair* _res = NULL;
6266 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006267 { // '==' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006268 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006269 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006270 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006271 (_literal = _PyPegen_expect_token(p, 27)) // token='=='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006272 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006273 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006274 )
6275 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006276 _res = _PyPegen_cmpop_expr_pair ( p , Eq , a );
6277 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006278 p->error_indicator = 1;
6279 return NULL;
6280 }
6281 goto done;
6282 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006283 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006284 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006285 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006286 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006287 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006288}
6289
Pablo Galindo2b74c832020-04-27 18:02:07 +01006290// noteq_bitwise_or: ('!=') bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006291static CmpopExprPair*
6292noteq_bitwise_or_rule(Parser *p)
6293{
6294 if (p->error_indicator) {
6295 return NULL;
6296 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006297 CmpopExprPair* _res = NULL;
6298 int _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +01006299 { // ('!=') bitwise_or
Guido van Rossum3941d972020-05-01 09:42:03 -07006300 void *_tmp_92_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006301 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006302 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006303 (_tmp_92_var = _tmp_92_rule(p)) // '!='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006304 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006305 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006306 )
6307 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006308 _res = _PyPegen_cmpop_expr_pair ( p , NotEq , a );
6309 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006310 p->error_indicator = 1;
6311 return NULL;
6312 }
6313 goto done;
6314 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006315 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006317 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006318 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006319 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006320}
6321
6322// lte_bitwise_or: '<=' bitwise_or
6323static CmpopExprPair*
6324lte_bitwise_or_rule(Parser *p)
6325{
6326 if (p->error_indicator) {
6327 return NULL;
6328 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006329 CmpopExprPair* _res = NULL;
6330 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006331 { // '<=' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006332 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006333 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006334 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006335 (_literal = _PyPegen_expect_token(p, 29)) // token='<='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006336 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006337 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006338 )
6339 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006340 _res = _PyPegen_cmpop_expr_pair ( p , LtE , a );
6341 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006342 p->error_indicator = 1;
6343 return NULL;
6344 }
6345 goto done;
6346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006347 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006349 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006350 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006351 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006352}
6353
6354// lt_bitwise_or: '<' bitwise_or
6355static CmpopExprPair*
6356lt_bitwise_or_rule(Parser *p)
6357{
6358 if (p->error_indicator) {
6359 return NULL;
6360 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006361 CmpopExprPair* _res = NULL;
6362 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006363 { // '<' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006364 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006365 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006366 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006367 (_literal = _PyPegen_expect_token(p, 20)) // token='<'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006368 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006369 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006370 )
6371 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006372 _res = _PyPegen_cmpop_expr_pair ( p , Lt , a );
6373 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006374 p->error_indicator = 1;
6375 return NULL;
6376 }
6377 goto done;
6378 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006379 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006380 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006381 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006382 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006383 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006384}
6385
6386// gte_bitwise_or: '>=' bitwise_or
6387static CmpopExprPair*
6388gte_bitwise_or_rule(Parser *p)
6389{
6390 if (p->error_indicator) {
6391 return NULL;
6392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006393 CmpopExprPair* _res = NULL;
6394 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006395 { // '>=' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006396 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006397 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006398 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006399 (_literal = _PyPegen_expect_token(p, 30)) // token='>='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006400 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006401 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006402 )
6403 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006404 _res = _PyPegen_cmpop_expr_pair ( p , GtE , a );
6405 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006406 p->error_indicator = 1;
6407 return NULL;
6408 }
6409 goto done;
6410 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006411 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006413 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006414 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006415 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006416}
6417
6418// gt_bitwise_or: '>' bitwise_or
6419static CmpopExprPair*
6420gt_bitwise_or_rule(Parser *p)
6421{
6422 if (p->error_indicator) {
6423 return NULL;
6424 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006425 CmpopExprPair* _res = NULL;
6426 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006427 { // '>' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006428 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006429 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006430 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006431 (_literal = _PyPegen_expect_token(p, 21)) // token='>'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006432 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006433 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006434 )
6435 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006436 _res = _PyPegen_cmpop_expr_pair ( p , Gt , a );
6437 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006438 p->error_indicator = 1;
6439 return NULL;
6440 }
6441 goto done;
6442 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006443 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006444 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006445 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006446 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006447 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006448}
6449
6450// notin_bitwise_or: 'not' 'in' bitwise_or
6451static CmpopExprPair*
6452notin_bitwise_or_rule(Parser *p)
6453{
6454 if (p->error_indicator) {
6455 return NULL;
6456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006457 CmpopExprPair* _res = NULL;
6458 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006459 { // 'not' 'in' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006460 Token * _keyword;
6461 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006462 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006463 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006464 (_keyword = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006465 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006466 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006467 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006468 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006469 )
6470 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006471 _res = _PyPegen_cmpop_expr_pair ( p , NotIn , a );
6472 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006473 p->error_indicator = 1;
6474 return NULL;
6475 }
6476 goto done;
6477 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006478 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006480 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006481 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006482 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006483}
6484
6485// in_bitwise_or: 'in' bitwise_or
6486static CmpopExprPair*
6487in_bitwise_or_rule(Parser *p)
6488{
6489 if (p->error_indicator) {
6490 return NULL;
6491 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006492 CmpopExprPair* _res = NULL;
6493 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006494 { // 'in' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006495 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006496 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006497 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006498 (_keyword = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006499 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006500 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006501 )
6502 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006503 _res = _PyPegen_cmpop_expr_pair ( p , In , a );
6504 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006505 p->error_indicator = 1;
6506 return NULL;
6507 }
6508 goto done;
6509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006510 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006512 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006513 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006514 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006515}
6516
6517// isnot_bitwise_or: 'is' 'not' bitwise_or
6518static CmpopExprPair*
6519isnot_bitwise_or_rule(Parser *p)
6520{
6521 if (p->error_indicator) {
6522 return NULL;
6523 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006524 CmpopExprPair* _res = NULL;
6525 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006526 { // 'is' 'not' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006527 Token * _keyword;
6528 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006529 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006530 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006531 (_keyword = _PyPegen_expect_token(p, 526)) // token='is'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006532 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006533 (_keyword_1 = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006534 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006535 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006536 )
6537 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006538 _res = _PyPegen_cmpop_expr_pair ( p , IsNot , a );
6539 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006540 p->error_indicator = 1;
6541 return NULL;
6542 }
6543 goto done;
6544 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006545 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006547 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006548 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006549 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006550}
6551
6552// is_bitwise_or: 'is' bitwise_or
6553static CmpopExprPair*
6554is_bitwise_or_rule(Parser *p)
6555{
6556 if (p->error_indicator) {
6557 return NULL;
6558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006559 CmpopExprPair* _res = NULL;
6560 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006561 { // 'is' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006562 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006563 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006564 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006565 (_keyword = _PyPegen_expect_token(p, 526)) // token='is'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006566 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006567 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006568 )
6569 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006570 _res = _PyPegen_cmpop_expr_pair ( p , Is , a );
6571 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006572 p->error_indicator = 1;
6573 return NULL;
6574 }
6575 goto done;
6576 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006577 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006578 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006579 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006580 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006581 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006582}
6583
6584// Left-recursive
6585// bitwise_or: bitwise_or '|' bitwise_xor | bitwise_xor
6586static expr_ty bitwise_or_raw(Parser *);
6587static expr_ty
6588bitwise_or_rule(Parser *p)
6589{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006590 expr_ty _res = NULL;
6591 if (_PyPegen_is_memoized(p, bitwise_or_type, &_res))
6592 return _res;
6593 int _mark = p->mark;
6594 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006595 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006596 int tmpvar_1 = _PyPegen_update_memo(p, _mark, bitwise_or_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006597 if (tmpvar_1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006598 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006599 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006600 p->mark = _mark;
6601 void *_raw = bitwise_or_raw(p);
6602 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006603 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006604 _resmark = p->mark;
6605 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006606 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006607 p->mark = _resmark;
6608 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006609}
6610static expr_ty
6611bitwise_or_raw(Parser *p)
6612{
6613 if (p->error_indicator) {
6614 return NULL;
6615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006616 expr_ty _res = NULL;
6617 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006618 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6619 p->error_indicator = 1;
6620 return NULL;
6621 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006622 int _start_lineno = p->tokens[_mark]->lineno;
6623 UNUSED(_start_lineno); // Only used by EXTRA macro
6624 int _start_col_offset = p->tokens[_mark]->col_offset;
6625 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006626 { // bitwise_or '|' bitwise_xor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006627 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006628 expr_ty a;
6629 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006630 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006631 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006632 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006633 (_literal = _PyPegen_expect_token(p, 18)) // token='|'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006634 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006635 (b = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006636 )
6637 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006638 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6639 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006640 return NULL;
6641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006642 int _end_lineno = _token->end_lineno;
6643 UNUSED(_end_lineno); // Only used by EXTRA macro
6644 int _end_col_offset = _token->end_col_offset;
6645 UNUSED(_end_col_offset); // Only used by EXTRA macro
6646 _res = _Py_BinOp ( a , BitOr , b , EXTRA );
6647 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006648 p->error_indicator = 1;
6649 return NULL;
6650 }
6651 goto done;
6652 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006653 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006654 }
6655 { // bitwise_xor
6656 expr_ty bitwise_xor_var;
6657 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006658 (bitwise_xor_var = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006659 )
6660 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006661 _res = bitwise_xor_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006662 goto done;
6663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006664 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006665 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006666 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006667 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006668 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006669}
6670
6671// Left-recursive
6672// bitwise_xor: bitwise_xor '^' bitwise_and | bitwise_and
6673static expr_ty bitwise_xor_raw(Parser *);
6674static expr_ty
6675bitwise_xor_rule(Parser *p)
6676{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006677 expr_ty _res = NULL;
6678 if (_PyPegen_is_memoized(p, bitwise_xor_type, &_res))
6679 return _res;
6680 int _mark = p->mark;
6681 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006682 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006683 int tmpvar_2 = _PyPegen_update_memo(p, _mark, bitwise_xor_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006684 if (tmpvar_2) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006685 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006686 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006687 p->mark = _mark;
6688 void *_raw = bitwise_xor_raw(p);
6689 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006690 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006691 _resmark = p->mark;
6692 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006694 p->mark = _resmark;
6695 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006696}
6697static expr_ty
6698bitwise_xor_raw(Parser *p)
6699{
6700 if (p->error_indicator) {
6701 return NULL;
6702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006703 expr_ty _res = NULL;
6704 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006705 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6706 p->error_indicator = 1;
6707 return NULL;
6708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006709 int _start_lineno = p->tokens[_mark]->lineno;
6710 UNUSED(_start_lineno); // Only used by EXTRA macro
6711 int _start_col_offset = p->tokens[_mark]->col_offset;
6712 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006713 { // bitwise_xor '^' bitwise_and
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006714 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006715 expr_ty a;
6716 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006717 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006718 (a = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006719 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006720 (_literal = _PyPegen_expect_token(p, 32)) // token='^'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006721 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006722 (b = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006723 )
6724 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006725 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6726 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006727 return NULL;
6728 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006729 int _end_lineno = _token->end_lineno;
6730 UNUSED(_end_lineno); // Only used by EXTRA macro
6731 int _end_col_offset = _token->end_col_offset;
6732 UNUSED(_end_col_offset); // Only used by EXTRA macro
6733 _res = _Py_BinOp ( a , BitXor , b , EXTRA );
6734 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006735 p->error_indicator = 1;
6736 return NULL;
6737 }
6738 goto done;
6739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006740 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006741 }
6742 { // bitwise_and
6743 expr_ty bitwise_and_var;
6744 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006745 (bitwise_and_var = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006746 )
6747 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006748 _res = bitwise_and_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006749 goto done;
6750 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006751 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006752 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006753 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006754 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006755 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006756}
6757
6758// Left-recursive
6759// bitwise_and: bitwise_and '&' shift_expr | shift_expr
6760static expr_ty bitwise_and_raw(Parser *);
6761static expr_ty
6762bitwise_and_rule(Parser *p)
6763{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006764 expr_ty _res = NULL;
6765 if (_PyPegen_is_memoized(p, bitwise_and_type, &_res))
6766 return _res;
6767 int _mark = p->mark;
6768 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006769 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006770 int tmpvar_3 = _PyPegen_update_memo(p, _mark, bitwise_and_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006771 if (tmpvar_3) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006772 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006774 p->mark = _mark;
6775 void *_raw = bitwise_and_raw(p);
6776 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006777 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006778 _resmark = p->mark;
6779 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006781 p->mark = _resmark;
6782 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006783}
6784static expr_ty
6785bitwise_and_raw(Parser *p)
6786{
6787 if (p->error_indicator) {
6788 return NULL;
6789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006790 expr_ty _res = NULL;
6791 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006792 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6793 p->error_indicator = 1;
6794 return NULL;
6795 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006796 int _start_lineno = p->tokens[_mark]->lineno;
6797 UNUSED(_start_lineno); // Only used by EXTRA macro
6798 int _start_col_offset = p->tokens[_mark]->col_offset;
6799 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006800 { // bitwise_and '&' shift_expr
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006801 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006802 expr_ty a;
6803 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006804 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006805 (a = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006806 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006807 (_literal = _PyPegen_expect_token(p, 19)) // token='&'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006808 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006809 (b = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006810 )
6811 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006812 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6813 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006814 return NULL;
6815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006816 int _end_lineno = _token->end_lineno;
6817 UNUSED(_end_lineno); // Only used by EXTRA macro
6818 int _end_col_offset = _token->end_col_offset;
6819 UNUSED(_end_col_offset); // Only used by EXTRA macro
6820 _res = _Py_BinOp ( a , BitAnd , b , EXTRA );
6821 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006822 p->error_indicator = 1;
6823 return NULL;
6824 }
6825 goto done;
6826 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006827 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006828 }
6829 { // shift_expr
6830 expr_ty shift_expr_var;
6831 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006832 (shift_expr_var = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006833 )
6834 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006835 _res = shift_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006836 goto done;
6837 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006838 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006839 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006840 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006841 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006842 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006843}
6844
6845// Left-recursive
6846// shift_expr: shift_expr '<<' sum | shift_expr '>>' sum | sum
6847static expr_ty shift_expr_raw(Parser *);
6848static expr_ty
6849shift_expr_rule(Parser *p)
6850{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006851 expr_ty _res = NULL;
6852 if (_PyPegen_is_memoized(p, shift_expr_type, &_res))
6853 return _res;
6854 int _mark = p->mark;
6855 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006856 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006857 int tmpvar_4 = _PyPegen_update_memo(p, _mark, shift_expr_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006858 if (tmpvar_4) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006859 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006861 p->mark = _mark;
6862 void *_raw = shift_expr_raw(p);
6863 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006864 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006865 _resmark = p->mark;
6866 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006867 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006868 p->mark = _resmark;
6869 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006870}
6871static expr_ty
6872shift_expr_raw(Parser *p)
6873{
6874 if (p->error_indicator) {
6875 return NULL;
6876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006877 expr_ty _res = NULL;
6878 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006879 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6880 p->error_indicator = 1;
6881 return NULL;
6882 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006883 int _start_lineno = p->tokens[_mark]->lineno;
6884 UNUSED(_start_lineno); // Only used by EXTRA macro
6885 int _start_col_offset = p->tokens[_mark]->col_offset;
6886 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006887 { // shift_expr '<<' sum
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006888 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006889 expr_ty a;
6890 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006891 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006892 (a = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006893 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006894 (_literal = _PyPegen_expect_token(p, 33)) // token='<<'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006895 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006896 (b = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006897 )
6898 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006899 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6900 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006901 return NULL;
6902 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006903 int _end_lineno = _token->end_lineno;
6904 UNUSED(_end_lineno); // Only used by EXTRA macro
6905 int _end_col_offset = _token->end_col_offset;
6906 UNUSED(_end_col_offset); // Only used by EXTRA macro
6907 _res = _Py_BinOp ( a , LShift , b , EXTRA );
6908 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006909 p->error_indicator = 1;
6910 return NULL;
6911 }
6912 goto done;
6913 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006914 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006915 }
6916 { // shift_expr '>>' sum
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006917 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006918 expr_ty a;
6919 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006920 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006921 (a = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006922 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006923 (_literal = _PyPegen_expect_token(p, 34)) // token='>>'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006924 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006925 (b = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006926 )
6927 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006928 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6929 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006930 return NULL;
6931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006932 int _end_lineno = _token->end_lineno;
6933 UNUSED(_end_lineno); // Only used by EXTRA macro
6934 int _end_col_offset = _token->end_col_offset;
6935 UNUSED(_end_col_offset); // Only used by EXTRA macro
6936 _res = _Py_BinOp ( a , RShift , b , EXTRA );
6937 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006938 p->error_indicator = 1;
6939 return NULL;
6940 }
6941 goto done;
6942 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006943 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006944 }
6945 { // sum
6946 expr_ty sum_var;
6947 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006948 (sum_var = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006949 )
6950 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006951 _res = sum_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006952 goto done;
6953 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006954 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006955 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006956 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006957 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006958 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006959}
6960
6961// Left-recursive
6962// sum: sum '+' term | sum '-' term | term
6963static expr_ty sum_raw(Parser *);
6964static expr_ty
6965sum_rule(Parser *p)
6966{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006967 expr_ty _res = NULL;
6968 if (_PyPegen_is_memoized(p, sum_type, &_res))
6969 return _res;
6970 int _mark = p->mark;
6971 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006972 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006973 int tmpvar_5 = _PyPegen_update_memo(p, _mark, sum_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006974 if (tmpvar_5) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006975 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006976 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006977 p->mark = _mark;
6978 void *_raw = sum_raw(p);
6979 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006980 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006981 _resmark = p->mark;
6982 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006984 p->mark = _resmark;
6985 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006986}
6987static expr_ty
6988sum_raw(Parser *p)
6989{
6990 if (p->error_indicator) {
6991 return NULL;
6992 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006993 expr_ty _res = NULL;
6994 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006995 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6996 p->error_indicator = 1;
6997 return NULL;
6998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006999 int _start_lineno = p->tokens[_mark]->lineno;
7000 UNUSED(_start_lineno); // Only used by EXTRA macro
7001 int _start_col_offset = p->tokens[_mark]->col_offset;
7002 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007003 { // sum '+' term
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007004 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007005 expr_ty a;
7006 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007007 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007008 (a = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007009 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007010 (_literal = _PyPegen_expect_token(p, 14)) // token='+'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007011 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007012 (b = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007013 )
7014 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007015 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7016 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007017 return NULL;
7018 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007019 int _end_lineno = _token->end_lineno;
7020 UNUSED(_end_lineno); // Only used by EXTRA macro
7021 int _end_col_offset = _token->end_col_offset;
7022 UNUSED(_end_col_offset); // Only used by EXTRA macro
7023 _res = _Py_BinOp ( a , Add , b , EXTRA );
7024 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007025 p->error_indicator = 1;
7026 return NULL;
7027 }
7028 goto done;
7029 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007030 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007031 }
7032 { // sum '-' term
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007033 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007034 expr_ty a;
7035 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007036 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007037 (a = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007038 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007039 (_literal = _PyPegen_expect_token(p, 15)) // token='-'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007040 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007041 (b = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007042 )
7043 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007044 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7045 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007046 return NULL;
7047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007048 int _end_lineno = _token->end_lineno;
7049 UNUSED(_end_lineno); // Only used by EXTRA macro
7050 int _end_col_offset = _token->end_col_offset;
7051 UNUSED(_end_col_offset); // Only used by EXTRA macro
7052 _res = _Py_BinOp ( a , Sub , b , EXTRA );
7053 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007054 p->error_indicator = 1;
7055 return NULL;
7056 }
7057 goto done;
7058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007059 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007060 }
7061 { // term
7062 expr_ty term_var;
7063 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007064 (term_var = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007065 )
7066 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007067 _res = term_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007068 goto done;
7069 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007070 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007072 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007073 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007074 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007075}
7076
7077// Left-recursive
7078// term:
7079// | term '*' factor
7080// | term '/' factor
7081// | term '//' factor
7082// | term '%' factor
7083// | term '@' factor
7084// | factor
7085static expr_ty term_raw(Parser *);
7086static expr_ty
7087term_rule(Parser *p)
7088{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007089 expr_ty _res = NULL;
7090 if (_PyPegen_is_memoized(p, term_type, &_res))
7091 return _res;
7092 int _mark = p->mark;
7093 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007094 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007095 int tmpvar_6 = _PyPegen_update_memo(p, _mark, term_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007096 if (tmpvar_6) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007097 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007098 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007099 p->mark = _mark;
7100 void *_raw = term_raw(p);
7101 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007102 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007103 _resmark = p->mark;
7104 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007105 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007106 p->mark = _resmark;
7107 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007108}
7109static expr_ty
7110term_raw(Parser *p)
7111{
7112 if (p->error_indicator) {
7113 return NULL;
7114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007115 expr_ty _res = NULL;
7116 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007117 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7118 p->error_indicator = 1;
7119 return NULL;
7120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007121 int _start_lineno = p->tokens[_mark]->lineno;
7122 UNUSED(_start_lineno); // Only used by EXTRA macro
7123 int _start_col_offset = p->tokens[_mark]->col_offset;
7124 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007125 { // term '*' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007126 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007127 expr_ty a;
7128 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007129 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007130 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007131 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007132 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007133 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007134 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007135 )
7136 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007137 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7138 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007139 return NULL;
7140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007141 int _end_lineno = _token->end_lineno;
7142 UNUSED(_end_lineno); // Only used by EXTRA macro
7143 int _end_col_offset = _token->end_col_offset;
7144 UNUSED(_end_col_offset); // Only used by EXTRA macro
7145 _res = _Py_BinOp ( a , Mult , b , EXTRA );
7146 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007147 p->error_indicator = 1;
7148 return NULL;
7149 }
7150 goto done;
7151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007152 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007153 }
7154 { // term '/' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007155 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007156 expr_ty a;
7157 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007158 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007159 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007160 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007161 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007162 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007163 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007164 )
7165 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007166 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7167 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007168 return NULL;
7169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007170 int _end_lineno = _token->end_lineno;
7171 UNUSED(_end_lineno); // Only used by EXTRA macro
7172 int _end_col_offset = _token->end_col_offset;
7173 UNUSED(_end_col_offset); // Only used by EXTRA macro
7174 _res = _Py_BinOp ( a , Div , b , EXTRA );
7175 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007176 p->error_indicator = 1;
7177 return NULL;
7178 }
7179 goto done;
7180 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007181 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007182 }
7183 { // term '//' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007184 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007185 expr_ty a;
7186 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007187 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007188 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007189 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007190 (_literal = _PyPegen_expect_token(p, 47)) // token='//'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007191 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007192 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007193 )
7194 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007195 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7196 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007197 return NULL;
7198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007199 int _end_lineno = _token->end_lineno;
7200 UNUSED(_end_lineno); // Only used by EXTRA macro
7201 int _end_col_offset = _token->end_col_offset;
7202 UNUSED(_end_col_offset); // Only used by EXTRA macro
7203 _res = _Py_BinOp ( a , FloorDiv , b , EXTRA );
7204 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007205 p->error_indicator = 1;
7206 return NULL;
7207 }
7208 goto done;
7209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007210 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007211 }
7212 { // term '%' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007213 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007214 expr_ty a;
7215 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007216 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007217 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007218 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007219 (_literal = _PyPegen_expect_token(p, 24)) // token='%'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007220 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007221 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007222 )
7223 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007224 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7225 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007226 return NULL;
7227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007228 int _end_lineno = _token->end_lineno;
7229 UNUSED(_end_lineno); // Only used by EXTRA macro
7230 int _end_col_offset = _token->end_col_offset;
7231 UNUSED(_end_col_offset); // Only used by EXTRA macro
7232 _res = _Py_BinOp ( a , Mod , b , EXTRA );
7233 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007234 p->error_indicator = 1;
7235 return NULL;
7236 }
7237 goto done;
7238 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007239 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007240 }
7241 { // term '@' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007242 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007243 expr_ty a;
7244 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007245 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007246 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007247 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007248 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007249 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007250 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007251 )
7252 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007253 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7254 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007255 return NULL;
7256 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007257 int _end_lineno = _token->end_lineno;
7258 UNUSED(_end_lineno); // Only used by EXTRA macro
7259 int _end_col_offset = _token->end_col_offset;
7260 UNUSED(_end_col_offset); // Only used by EXTRA macro
7261 _res = CHECK_VERSION ( 5 , "The '@' operator is" , _Py_BinOp ( a , MatMult , b , EXTRA ) );
7262 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007263 p->error_indicator = 1;
7264 return NULL;
7265 }
7266 goto done;
7267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007268 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007269 }
7270 { // factor
7271 expr_ty factor_var;
7272 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007273 (factor_var = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007274 )
7275 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007276 _res = factor_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007277 goto done;
7278 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007279 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007280 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007281 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007282 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007283 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007284}
7285
7286// factor: '+' factor | '-' factor | '~' factor | power
7287static expr_ty
7288factor_rule(Parser *p)
7289{
7290 if (p->error_indicator) {
7291 return NULL;
7292 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007293 expr_ty _res = NULL;
7294 if (_PyPegen_is_memoized(p, factor_type, &_res))
7295 return _res;
7296 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007297 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7298 p->error_indicator = 1;
7299 return NULL;
7300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007301 int _start_lineno = p->tokens[_mark]->lineno;
7302 UNUSED(_start_lineno); // Only used by EXTRA macro
7303 int _start_col_offset = p->tokens[_mark]->col_offset;
7304 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007305 { // '+' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007306 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007307 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007308 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007309 (_literal = _PyPegen_expect_token(p, 14)) // token='+'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007310 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007311 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007312 )
7313 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007314 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7315 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007316 return NULL;
7317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007318 int _end_lineno = _token->end_lineno;
7319 UNUSED(_end_lineno); // Only used by EXTRA macro
7320 int _end_col_offset = _token->end_col_offset;
7321 UNUSED(_end_col_offset); // Only used by EXTRA macro
7322 _res = _Py_UnaryOp ( UAdd , a , EXTRA );
7323 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007324 p->error_indicator = 1;
7325 return NULL;
7326 }
7327 goto done;
7328 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007329 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007330 }
7331 { // '-' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007332 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007333 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007334 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007335 (_literal = _PyPegen_expect_token(p, 15)) // token='-'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007336 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007337 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007338 )
7339 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007340 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7341 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007342 return NULL;
7343 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007344 int _end_lineno = _token->end_lineno;
7345 UNUSED(_end_lineno); // Only used by EXTRA macro
7346 int _end_col_offset = _token->end_col_offset;
7347 UNUSED(_end_col_offset); // Only used by EXTRA macro
7348 _res = _Py_UnaryOp ( USub , a , EXTRA );
7349 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007350 p->error_indicator = 1;
7351 return NULL;
7352 }
7353 goto done;
7354 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007355 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007356 }
7357 { // '~' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007358 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007359 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007360 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007361 (_literal = _PyPegen_expect_token(p, 31)) // token='~'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007362 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007363 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007364 )
7365 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007366 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7367 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007368 return NULL;
7369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007370 int _end_lineno = _token->end_lineno;
7371 UNUSED(_end_lineno); // Only used by EXTRA macro
7372 int _end_col_offset = _token->end_col_offset;
7373 UNUSED(_end_col_offset); // Only used by EXTRA macro
7374 _res = _Py_UnaryOp ( Invert , a , EXTRA );
7375 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007376 p->error_indicator = 1;
7377 return NULL;
7378 }
7379 goto done;
7380 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007381 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007382 }
7383 { // power
7384 expr_ty power_var;
7385 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007386 (power_var = power_rule(p)) // power
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007387 )
7388 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007389 _res = power_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007390 goto done;
7391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007392 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007394 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007395 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007396 _PyPegen_insert_memo(p, _mark, factor_type, _res);
7397 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007398}
7399
7400// power: await_primary '**' factor | await_primary
7401static expr_ty
7402power_rule(Parser *p)
7403{
7404 if (p->error_indicator) {
7405 return NULL;
7406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007407 expr_ty _res = NULL;
7408 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007409 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7410 p->error_indicator = 1;
7411 return NULL;
7412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007413 int _start_lineno = p->tokens[_mark]->lineno;
7414 UNUSED(_start_lineno); // Only used by EXTRA macro
7415 int _start_col_offset = p->tokens[_mark]->col_offset;
7416 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007417 { // await_primary '**' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007418 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007419 expr_ty a;
7420 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007421 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007422 (a = await_primary_rule(p)) // await_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007423 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007424 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007425 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007426 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007427 )
7428 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007429 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7430 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007431 return NULL;
7432 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007433 int _end_lineno = _token->end_lineno;
7434 UNUSED(_end_lineno); // Only used by EXTRA macro
7435 int _end_col_offset = _token->end_col_offset;
7436 UNUSED(_end_col_offset); // Only used by EXTRA macro
7437 _res = _Py_BinOp ( a , Pow , b , EXTRA );
7438 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007439 p->error_indicator = 1;
7440 return NULL;
7441 }
7442 goto done;
7443 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007444 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007445 }
7446 { // await_primary
7447 expr_ty await_primary_var;
7448 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007449 (await_primary_var = await_primary_rule(p)) // await_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007450 )
7451 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007452 _res = await_primary_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007453 goto done;
7454 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007455 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007457 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007458 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007459 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007460}
7461
7462// await_primary: AWAIT primary | primary
7463static expr_ty
7464await_primary_rule(Parser *p)
7465{
7466 if (p->error_indicator) {
7467 return NULL;
7468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007469 expr_ty _res = NULL;
7470 if (_PyPegen_is_memoized(p, await_primary_type, &_res))
7471 return _res;
7472 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007473 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7474 p->error_indicator = 1;
7475 return NULL;
7476 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007477 int _start_lineno = p->tokens[_mark]->lineno;
7478 UNUSED(_start_lineno); // Only used by EXTRA macro
7479 int _start_col_offset = p->tokens[_mark]->col_offset;
7480 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007481 { // AWAIT primary
7482 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01007483 Token * await_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007484 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007485 (await_var = _PyPegen_expect_token(p, AWAIT)) // token='AWAIT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007486 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007487 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007488 )
7489 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007490 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7491 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007492 return NULL;
7493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007494 int _end_lineno = _token->end_lineno;
7495 UNUSED(_end_lineno); // Only used by EXTRA macro
7496 int _end_col_offset = _token->end_col_offset;
7497 UNUSED(_end_col_offset); // Only used by EXTRA macro
7498 _res = CHECK_VERSION ( 5 , "Await expressions are" , _Py_Await ( a , EXTRA ) );
7499 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007500 p->error_indicator = 1;
7501 return NULL;
7502 }
7503 goto done;
7504 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007505 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007506 }
7507 { // primary
7508 expr_ty primary_var;
7509 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007510 (primary_var = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007511 )
7512 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007513 _res = primary_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007514 goto done;
7515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007516 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007517 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007518 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007519 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007520 _PyPegen_insert_memo(p, _mark, await_primary_type, _res);
7521 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007522}
7523
7524// Left-recursive
7525// primary:
7526// | primary '.' NAME
7527// | primary genexp
7528// | primary '(' arguments? ')'
7529// | primary '[' slices ']'
7530// | atom
7531static expr_ty primary_raw(Parser *);
7532static expr_ty
7533primary_rule(Parser *p)
7534{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007535 expr_ty _res = NULL;
7536 if (_PyPegen_is_memoized(p, primary_type, &_res))
7537 return _res;
7538 int _mark = p->mark;
7539 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007540 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007541 int tmpvar_7 = _PyPegen_update_memo(p, _mark, primary_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007542 if (tmpvar_7) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007543 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007544 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007545 p->mark = _mark;
7546 void *_raw = primary_raw(p);
7547 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007548 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007549 _resmark = p->mark;
7550 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007551 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007552 p->mark = _resmark;
7553 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007554}
7555static expr_ty
7556primary_raw(Parser *p)
7557{
7558 if (p->error_indicator) {
7559 return NULL;
7560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007561 expr_ty _res = NULL;
7562 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007563 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7564 p->error_indicator = 1;
7565 return NULL;
7566 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007567 int _start_lineno = p->tokens[_mark]->lineno;
7568 UNUSED(_start_lineno); // Only used by EXTRA macro
7569 int _start_col_offset = p->tokens[_mark]->col_offset;
7570 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007571 { // primary '.' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007572 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007573 expr_ty a;
7574 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007575 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007576 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007577 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007578 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007579 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007580 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007581 )
7582 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007583 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7584 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007585 return NULL;
7586 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007587 int _end_lineno = _token->end_lineno;
7588 UNUSED(_end_lineno); // Only used by EXTRA macro
7589 int _end_col_offset = _token->end_col_offset;
7590 UNUSED(_end_col_offset); // Only used by EXTRA macro
7591 _res = _Py_Attribute ( a , b -> v . Name . id , Load , EXTRA );
7592 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007593 p->error_indicator = 1;
7594 return NULL;
7595 }
7596 goto done;
7597 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007598 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007599 }
7600 { // primary genexp
7601 expr_ty a;
7602 expr_ty b;
7603 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007604 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007605 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007606 (b = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007607 )
7608 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007609 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7610 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007611 return NULL;
7612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007613 int _end_lineno = _token->end_lineno;
7614 UNUSED(_end_lineno); // Only used by EXTRA macro
7615 int _end_col_offset = _token->end_col_offset;
7616 UNUSED(_end_col_offset); // Only used by EXTRA macro
7617 _res = _Py_Call ( a , CHECK ( _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
7618 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007619 p->error_indicator = 1;
7620 return NULL;
7621 }
7622 goto done;
7623 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007624 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007625 }
7626 { // primary '(' arguments? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007627 Token * _literal;
7628 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007629 expr_ty a;
7630 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007631 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007632 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007633 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007634 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007635 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007636 (b = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007637 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007638 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007639 )
7640 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007641 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7642 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007643 return NULL;
7644 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007645 int _end_lineno = _token->end_lineno;
7646 UNUSED(_end_lineno); // Only used by EXTRA macro
7647 int _end_col_offset = _token->end_col_offset;
7648 UNUSED(_end_col_offset); // Only used by EXTRA macro
7649 _res = _Py_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
7650 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007651 p->error_indicator = 1;
7652 return NULL;
7653 }
7654 goto done;
7655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007656 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007657 }
7658 { // primary '[' slices ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007659 Token * _literal;
7660 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007661 expr_ty a;
7662 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007663 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007664 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007665 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007666 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007667 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007668 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007669 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007670 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007671 )
7672 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007673 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7674 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007675 return NULL;
7676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007677 int _end_lineno = _token->end_lineno;
7678 UNUSED(_end_lineno); // Only used by EXTRA macro
7679 int _end_col_offset = _token->end_col_offset;
7680 UNUSED(_end_col_offset); // Only used by EXTRA macro
7681 _res = _Py_Subscript ( a , b , Load , EXTRA );
7682 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007683 p->error_indicator = 1;
7684 return NULL;
7685 }
7686 goto done;
7687 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007688 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007689 }
7690 { // atom
7691 expr_ty atom_var;
7692 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007693 (atom_var = atom_rule(p)) // atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007694 )
7695 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007696 _res = atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007697 goto done;
7698 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007699 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007700 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007701 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007702 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007703 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007704}
7705
7706// slices: slice !',' | ','.slice+ ','?
7707static expr_ty
7708slices_rule(Parser *p)
7709{
7710 if (p->error_indicator) {
7711 return NULL;
7712 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007713 expr_ty _res = NULL;
7714 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007715 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7716 p->error_indicator = 1;
7717 return NULL;
7718 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007719 int _start_lineno = p->tokens[_mark]->lineno;
7720 UNUSED(_start_lineno); // Only used by EXTRA macro
7721 int _start_col_offset = p->tokens[_mark]->col_offset;
7722 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007723 { // slice !','
7724 expr_ty a;
7725 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007726 (a = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007727 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007728 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007729 )
7730 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007731 _res = a;
7732 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007733 p->error_indicator = 1;
7734 return NULL;
7735 }
7736 goto done;
7737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007738 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007739 }
7740 { // ','.slice+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007741 void *_opt_var;
7742 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007743 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007744 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007745 (a = _gather_93_rule(p)) // ','.slice+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007746 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007747 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007748 )
7749 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007750 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7751 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007752 return NULL;
7753 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007754 int _end_lineno = _token->end_lineno;
7755 UNUSED(_end_lineno); // Only used by EXTRA macro
7756 int _end_col_offset = _token->end_col_offset;
7757 UNUSED(_end_col_offset); // Only used by EXTRA macro
7758 _res = _Py_Tuple ( a , Load , EXTRA );
7759 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007760 p->error_indicator = 1;
7761 return NULL;
7762 }
7763 goto done;
7764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007765 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007766 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007767 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007768 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007769 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007770}
7771
7772// slice: expression? ':' expression? [':' expression?] | expression
7773static expr_ty
7774slice_rule(Parser *p)
7775{
7776 if (p->error_indicator) {
7777 return NULL;
7778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007779 expr_ty _res = NULL;
7780 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007781 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7782 p->error_indicator = 1;
7783 return NULL;
7784 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007785 int _start_lineno = p->tokens[_mark]->lineno;
7786 UNUSED(_start_lineno); // Only used by EXTRA macro
7787 int _start_col_offset = p->tokens[_mark]->col_offset;
7788 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007789 { // expression? ':' expression? [':' expression?]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007790 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007791 void *a;
7792 void *b;
7793 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007794 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007795 (a = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007796 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007797 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007798 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007799 (b = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007800 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007801 (c = _tmp_95_rule(p), 1) // [':' expression?]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007802 )
7803 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007804 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7805 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007806 return NULL;
7807 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007808 int _end_lineno = _token->end_lineno;
7809 UNUSED(_end_lineno); // Only used by EXTRA macro
7810 int _end_col_offset = _token->end_col_offset;
7811 UNUSED(_end_col_offset); // Only used by EXTRA macro
7812 _res = _Py_Slice ( a , b , c , EXTRA );
7813 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007814 p->error_indicator = 1;
7815 return NULL;
7816 }
7817 goto done;
7818 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007819 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007820 }
7821 { // expression
7822 expr_ty a;
7823 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007824 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007825 )
7826 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007827 _res = a;
7828 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007829 p->error_indicator = 1;
7830 return NULL;
7831 }
7832 goto done;
7833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007834 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007836 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007837 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007838 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007839}
7840
7841// atom:
7842// | NAME
7843// | 'True'
7844// | 'False'
7845// | 'None'
7846// | '__new_parser__'
7847// | &STRING strings
7848// | NUMBER
7849// | &'(' (tuple | group | genexp)
7850// | &'[' (list | listcomp)
7851// | &'{' (dict | set | dictcomp | setcomp)
7852// | '...'
7853static expr_ty
7854atom_rule(Parser *p)
7855{
7856 if (p->error_indicator) {
7857 return NULL;
7858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007859 expr_ty _res = NULL;
7860 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007861 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7862 p->error_indicator = 1;
7863 return NULL;
7864 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007865 int _start_lineno = p->tokens[_mark]->lineno;
7866 UNUSED(_start_lineno); // Only used by EXTRA macro
7867 int _start_col_offset = p->tokens[_mark]->col_offset;
7868 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007869 { // NAME
7870 expr_ty name_var;
7871 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007872 (name_var = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007873 )
7874 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007875 _res = name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007876 goto done;
7877 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007878 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007879 }
7880 { // 'True'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007881 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007882 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007883 (_keyword = _PyPegen_expect_token(p, 527)) // token='True'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007884 )
7885 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007886 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7887 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007888 return NULL;
7889 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007890 int _end_lineno = _token->end_lineno;
7891 UNUSED(_end_lineno); // Only used by EXTRA macro
7892 int _end_col_offset = _token->end_col_offset;
7893 UNUSED(_end_col_offset); // Only used by EXTRA macro
7894 _res = _Py_Constant ( Py_True , NULL , EXTRA );
7895 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007896 p->error_indicator = 1;
7897 return NULL;
7898 }
7899 goto done;
7900 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007901 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007902 }
7903 { // 'False'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007904 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007905 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007906 (_keyword = _PyPegen_expect_token(p, 528)) // token='False'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007907 )
7908 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007909 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7910 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007911 return NULL;
7912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007913 int _end_lineno = _token->end_lineno;
7914 UNUSED(_end_lineno); // Only used by EXTRA macro
7915 int _end_col_offset = _token->end_col_offset;
7916 UNUSED(_end_col_offset); // Only used by EXTRA macro
7917 _res = _Py_Constant ( Py_False , NULL , EXTRA );
7918 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007919 p->error_indicator = 1;
7920 return NULL;
7921 }
7922 goto done;
7923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007924 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007925 }
7926 { // 'None'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007927 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007928 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007929 (_keyword = _PyPegen_expect_token(p, 529)) // token='None'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007930 )
7931 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007932 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7933 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007934 return NULL;
7935 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007936 int _end_lineno = _token->end_lineno;
7937 UNUSED(_end_lineno); // Only used by EXTRA macro
7938 int _end_col_offset = _token->end_col_offset;
7939 UNUSED(_end_col_offset); // Only used by EXTRA macro
7940 _res = _Py_Constant ( Py_None , NULL , EXTRA );
7941 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007942 p->error_indicator = 1;
7943 return NULL;
7944 }
7945 goto done;
7946 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007947 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007948 }
7949 { // '__new_parser__'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007950 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007951 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007952 (_keyword = _PyPegen_expect_token(p, 530)) // token='__new_parser__'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007953 )
7954 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007955 _res = RAISE_SYNTAX_ERROR ( "You found it!" );
7956 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007957 p->error_indicator = 1;
7958 return NULL;
7959 }
7960 goto done;
7961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007962 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007963 }
7964 { // &STRING strings
7965 expr_ty strings_var;
7966 if (
7967 _PyPegen_lookahead(1, _PyPegen_string_token, p)
7968 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007969 (strings_var = strings_rule(p)) // strings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007970 )
7971 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007972 _res = strings_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007973 goto done;
7974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007975 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007976 }
7977 { // NUMBER
7978 expr_ty number_var;
7979 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007980 (number_var = _PyPegen_number_token(p)) // NUMBER
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007981 )
7982 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007983 _res = number_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007984 goto done;
7985 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007986 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007987 }
7988 { // &'(' (tuple | group | genexp)
Guido van Rossum3941d972020-05-01 09:42:03 -07007989 void *_tmp_96_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007990 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007991 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007992 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007993 (_tmp_96_var = _tmp_96_rule(p)) // tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007994 )
7995 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007996 _res = _tmp_96_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007997 goto done;
7998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007999 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008000 }
Pablo Galindo2b74c832020-04-27 18:02:07 +01008001 { // &'[' (list | listcomp)
Guido van Rossum3941d972020-05-01 09:42:03 -07008002 void *_tmp_97_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008003 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008004 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008005 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008006 (_tmp_97_var = _tmp_97_rule(p)) // list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008007 )
8008 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008009 _res = _tmp_97_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008010 goto done;
8011 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008012 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008013 }
Pablo Galindo2b74c832020-04-27 18:02:07 +01008014 { // &'{' (dict | set | dictcomp | setcomp)
Guido van Rossum3941d972020-05-01 09:42:03 -07008015 void *_tmp_98_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008016 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008017 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25) // token='{'
Pablo Galindo2b74c832020-04-27 18:02:07 +01008018 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008019 (_tmp_98_var = _tmp_98_rule(p)) // dict | set | dictcomp | setcomp
Pablo Galindo2b74c832020-04-27 18:02:07 +01008020 )
8021 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008022 _res = _tmp_98_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008023 goto done;
8024 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008025 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008026 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008027 { // '...'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008028 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008029 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008030 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008031 )
8032 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008033 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8034 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008035 return NULL;
8036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008037 int _end_lineno = _token->end_lineno;
8038 UNUSED(_end_lineno); // Only used by EXTRA macro
8039 int _end_col_offset = _token->end_col_offset;
8040 UNUSED(_end_col_offset); // Only used by EXTRA macro
8041 _res = _Py_Constant ( Py_Ellipsis , NULL , EXTRA );
8042 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008043 p->error_indicator = 1;
8044 return NULL;
8045 }
8046 goto done;
8047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008048 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008049 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008050 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008051 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008052 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008053}
8054
8055// strings: STRING+
8056static expr_ty
8057strings_rule(Parser *p)
8058{
8059 if (p->error_indicator) {
8060 return NULL;
8061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008062 expr_ty _res = NULL;
8063 if (_PyPegen_is_memoized(p, strings_type, &_res))
8064 return _res;
8065 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008066 { // STRING+
8067 asdl_seq * a;
8068 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008069 (a = _loop1_99_rule(p)) // STRING+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008070 )
8071 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008072 _res = _PyPegen_concatenate_strings ( p , a );
8073 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008074 p->error_indicator = 1;
8075 return NULL;
8076 }
8077 goto done;
8078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008079 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008081 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008082 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008083 _PyPegen_insert_memo(p, _mark, strings_type, _res);
8084 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008085}
8086
8087// list: '[' star_named_expressions? ']'
8088static expr_ty
8089list_rule(Parser *p)
8090{
8091 if (p->error_indicator) {
8092 return NULL;
8093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008094 expr_ty _res = NULL;
8095 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008096 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8097 p->error_indicator = 1;
8098 return NULL;
8099 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008100 int _start_lineno = p->tokens[_mark]->lineno;
8101 UNUSED(_start_lineno); // Only used by EXTRA macro
8102 int _start_col_offset = p->tokens[_mark]->col_offset;
8103 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008104 { // '[' star_named_expressions? ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008105 Token * _literal;
8106 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008107 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008108 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008109 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008110 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008111 (a = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008112 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008113 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008114 )
8115 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008116 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8117 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008118 return NULL;
8119 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008120 int _end_lineno = _token->end_lineno;
8121 UNUSED(_end_lineno); // Only used by EXTRA macro
8122 int _end_col_offset = _token->end_col_offset;
8123 UNUSED(_end_col_offset); // Only used by EXTRA macro
8124 _res = _Py_List ( a , Load , EXTRA );
8125 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008126 p->error_indicator = 1;
8127 return NULL;
8128 }
8129 goto done;
8130 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008131 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008133 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008134 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008135 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008136}
8137
8138// listcomp: '[' named_expression for_if_clauses ']' | invalid_comprehension
8139static expr_ty
8140listcomp_rule(Parser *p)
8141{
8142 if (p->error_indicator) {
8143 return NULL;
8144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008145 expr_ty _res = NULL;
8146 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008147 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8148 p->error_indicator = 1;
8149 return NULL;
8150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008151 int _start_lineno = p->tokens[_mark]->lineno;
8152 UNUSED(_start_lineno); // Only used by EXTRA macro
8153 int _start_col_offset = p->tokens[_mark]->col_offset;
8154 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008155 { // '[' named_expression for_if_clauses ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008156 Token * _literal;
8157 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008158 expr_ty a;
8159 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008160 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008161 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008162 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008163 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008164 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008165 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008166 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008167 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008168 )
8169 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008170 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8171 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008172 return NULL;
8173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008174 int _end_lineno = _token->end_lineno;
8175 UNUSED(_end_lineno); // Only used by EXTRA macro
8176 int _end_col_offset = _token->end_col_offset;
8177 UNUSED(_end_col_offset); // Only used by EXTRA macro
8178 _res = _Py_ListComp ( a , b , EXTRA );
8179 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008180 p->error_indicator = 1;
8181 return NULL;
8182 }
8183 goto done;
8184 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008185 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008186 }
8187 { // invalid_comprehension
8188 void *invalid_comprehension_var;
8189 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008190 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008191 )
8192 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008193 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008194 goto done;
8195 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008196 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008197 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008198 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008199 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008200 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008201}
8202
8203// tuple: '(' [star_named_expression ',' star_named_expressions?] ')'
8204static expr_ty
8205tuple_rule(Parser *p)
8206{
8207 if (p->error_indicator) {
8208 return NULL;
8209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008210 expr_ty _res = NULL;
8211 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008212 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8213 p->error_indicator = 1;
8214 return NULL;
8215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008216 int _start_lineno = p->tokens[_mark]->lineno;
8217 UNUSED(_start_lineno); // Only used by EXTRA macro
8218 int _start_col_offset = p->tokens[_mark]->col_offset;
8219 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008220 { // '(' [star_named_expression ',' star_named_expressions?] ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008221 Token * _literal;
8222 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008223 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008224 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008225 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008226 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008227 (a = _tmp_100_rule(p), 1) // [star_named_expression ',' star_named_expressions?]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008228 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008229 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008230 )
8231 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008232 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8233 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008234 return NULL;
8235 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008236 int _end_lineno = _token->end_lineno;
8237 UNUSED(_end_lineno); // Only used by EXTRA macro
8238 int _end_col_offset = _token->end_col_offset;
8239 UNUSED(_end_col_offset); // Only used by EXTRA macro
8240 _res = _Py_Tuple ( a , Load , EXTRA );
8241 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008242 p->error_indicator = 1;
8243 return NULL;
8244 }
8245 goto done;
8246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008247 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008249 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008250 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008251 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008252}
8253
8254// group: '(' (yield_expr | named_expression) ')'
8255static expr_ty
8256group_rule(Parser *p)
8257{
8258 if (p->error_indicator) {
8259 return NULL;
8260 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008261 expr_ty _res = NULL;
8262 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008263 { // '(' (yield_expr | named_expression) ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008264 Token * _literal;
8265 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008266 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008267 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008268 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008269 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008270 (a = _tmp_101_rule(p)) // yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008271 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008272 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008273 )
8274 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008275 _res = a;
8276 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008277 p->error_indicator = 1;
8278 return NULL;
8279 }
8280 goto done;
8281 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008282 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008283 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008284 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008285 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008286 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008287}
8288
8289// genexp: '(' expression for_if_clauses ')' | invalid_comprehension
8290static expr_ty
8291genexp_rule(Parser *p)
8292{
8293 if (p->error_indicator) {
8294 return NULL;
8295 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008296 expr_ty _res = NULL;
8297 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008298 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8299 p->error_indicator = 1;
8300 return NULL;
8301 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008302 int _start_lineno = p->tokens[_mark]->lineno;
8303 UNUSED(_start_lineno); // Only used by EXTRA macro
8304 int _start_col_offset = p->tokens[_mark]->col_offset;
8305 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008306 { // '(' expression for_if_clauses ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008307 Token * _literal;
8308 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008309 expr_ty a;
8310 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008311 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008312 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008313 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008314 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008315 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008316 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008317 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008318 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008319 )
8320 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008321 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8322 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008323 return NULL;
8324 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008325 int _end_lineno = _token->end_lineno;
8326 UNUSED(_end_lineno); // Only used by EXTRA macro
8327 int _end_col_offset = _token->end_col_offset;
8328 UNUSED(_end_col_offset); // Only used by EXTRA macro
8329 _res = _Py_GeneratorExp ( a , b , EXTRA );
8330 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008331 p->error_indicator = 1;
8332 return NULL;
8333 }
8334 goto done;
8335 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008336 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008337 }
8338 { // invalid_comprehension
8339 void *invalid_comprehension_var;
8340 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008341 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008342 )
8343 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008344 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008345 goto done;
8346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008347 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008349 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008350 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008351 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008352}
8353
8354// set: '{' expressions_list '}'
8355static expr_ty
8356set_rule(Parser *p)
8357{
8358 if (p->error_indicator) {
8359 return NULL;
8360 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008361 expr_ty _res = NULL;
8362 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008363 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8364 p->error_indicator = 1;
8365 return NULL;
8366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008367 int _start_lineno = p->tokens[_mark]->lineno;
8368 UNUSED(_start_lineno); // Only used by EXTRA macro
8369 int _start_col_offset = p->tokens[_mark]->col_offset;
8370 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008371 { // '{' expressions_list '}'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008372 Token * _literal;
8373 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008374 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008375 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008376 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008377 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008378 (a = expressions_list_rule(p)) // expressions_list
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008379 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008380 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008381 )
8382 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008383 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8384 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008385 return NULL;
8386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008387 int _end_lineno = _token->end_lineno;
8388 UNUSED(_end_lineno); // Only used by EXTRA macro
8389 int _end_col_offset = _token->end_col_offset;
8390 UNUSED(_end_col_offset); // Only used by EXTRA macro
8391 _res = _Py_Set ( a , EXTRA );
8392 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008393 p->error_indicator = 1;
8394 return NULL;
8395 }
8396 goto done;
8397 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008398 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008399 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008400 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008401 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008402 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008403}
8404
8405// setcomp: '{' expression for_if_clauses '}' | invalid_comprehension
8406static expr_ty
8407setcomp_rule(Parser *p)
8408{
8409 if (p->error_indicator) {
8410 return NULL;
8411 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008412 expr_ty _res = NULL;
8413 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008414 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8415 p->error_indicator = 1;
8416 return NULL;
8417 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008418 int _start_lineno = p->tokens[_mark]->lineno;
8419 UNUSED(_start_lineno); // Only used by EXTRA macro
8420 int _start_col_offset = p->tokens[_mark]->col_offset;
8421 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008422 { // '{' expression for_if_clauses '}'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008423 Token * _literal;
8424 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008425 expr_ty a;
8426 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008427 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008428 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008429 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008430 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008431 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008432 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008433 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008434 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008435 )
8436 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008437 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8438 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008439 return NULL;
8440 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008441 int _end_lineno = _token->end_lineno;
8442 UNUSED(_end_lineno); // Only used by EXTRA macro
8443 int _end_col_offset = _token->end_col_offset;
8444 UNUSED(_end_col_offset); // Only used by EXTRA macro
8445 _res = _Py_SetComp ( a , b , EXTRA );
8446 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008447 p->error_indicator = 1;
8448 return NULL;
8449 }
8450 goto done;
8451 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008452 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008453 }
8454 { // invalid_comprehension
8455 void *invalid_comprehension_var;
8456 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008457 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008458 )
8459 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008460 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008461 goto done;
8462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008463 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008465 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008466 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008467 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008468}
8469
8470// dict: '{' kvpairs? '}'
8471static expr_ty
8472dict_rule(Parser *p)
8473{
8474 if (p->error_indicator) {
8475 return NULL;
8476 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008477 expr_ty _res = NULL;
8478 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008479 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8480 p->error_indicator = 1;
8481 return NULL;
8482 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008483 int _start_lineno = p->tokens[_mark]->lineno;
8484 UNUSED(_start_lineno); // Only used by EXTRA macro
8485 int _start_col_offset = p->tokens[_mark]->col_offset;
8486 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008487 { // '{' kvpairs? '}'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008488 Token * _literal;
8489 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008490 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008491 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008492 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008493 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008494 (a = kvpairs_rule(p), 1) // kvpairs?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008495 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008496 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008497 )
8498 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008499 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8500 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008501 return NULL;
8502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008503 int _end_lineno = _token->end_lineno;
8504 UNUSED(_end_lineno); // Only used by EXTRA macro
8505 int _end_col_offset = _token->end_col_offset;
8506 UNUSED(_end_col_offset); // Only used by EXTRA macro
8507 _res = _Py_Dict ( CHECK ( _PyPegen_get_keys ( p , a ) ) , CHECK ( _PyPegen_get_values ( p , a ) ) , EXTRA );
8508 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008509 p->error_indicator = 1;
8510 return NULL;
8511 }
8512 goto done;
8513 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008514 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008516 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008517 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008518 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008519}
8520
8521// dictcomp: '{' kvpair for_if_clauses '}'
8522static expr_ty
8523dictcomp_rule(Parser *p)
8524{
8525 if (p->error_indicator) {
8526 return NULL;
8527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008528 expr_ty _res = NULL;
8529 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008530 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8531 p->error_indicator = 1;
8532 return NULL;
8533 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008534 int _start_lineno = p->tokens[_mark]->lineno;
8535 UNUSED(_start_lineno); // Only used by EXTRA macro
8536 int _start_col_offset = p->tokens[_mark]->col_offset;
8537 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008538 { // '{' kvpair for_if_clauses '}'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008539 Token * _literal;
8540 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008541 KeyValuePair* a;
8542 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008543 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008544 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008545 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008546 (a = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008547 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008548 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008549 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008550 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008551 )
8552 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008553 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8554 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008555 return NULL;
8556 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008557 int _end_lineno = _token->end_lineno;
8558 UNUSED(_end_lineno); // Only used by EXTRA macro
8559 int _end_col_offset = _token->end_col_offset;
8560 UNUSED(_end_col_offset); // Only used by EXTRA macro
8561 _res = _Py_DictComp ( a -> key , a -> value , b , EXTRA );
8562 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008563 p->error_indicator = 1;
8564 return NULL;
8565 }
8566 goto done;
8567 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008568 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008570 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008571 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008572 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008573}
8574
8575// kvpairs: ','.kvpair+ ','?
8576static asdl_seq*
8577kvpairs_rule(Parser *p)
8578{
8579 if (p->error_indicator) {
8580 return NULL;
8581 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008582 asdl_seq* _res = NULL;
8583 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008584 { // ','.kvpair+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008585 void *_opt_var;
8586 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008587 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008588 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008589 (a = _gather_102_rule(p)) // ','.kvpair+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008590 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008591 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008592 )
8593 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008594 _res = a;
8595 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008596 p->error_indicator = 1;
8597 return NULL;
8598 }
8599 goto done;
8600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008601 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008603 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008604 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008605 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008606}
8607
8608// kvpair: '**' bitwise_or | expression ':' expression
8609static KeyValuePair*
8610kvpair_rule(Parser *p)
8611{
8612 if (p->error_indicator) {
8613 return NULL;
8614 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008615 KeyValuePair* _res = NULL;
8616 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008617 { // '**' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008618 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008619 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008620 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008621 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008622 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008623 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008624 )
8625 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008626 _res = _PyPegen_key_value_pair ( p , NULL , a );
8627 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008628 p->error_indicator = 1;
8629 return NULL;
8630 }
8631 goto done;
8632 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008633 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008634 }
8635 { // expression ':' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008636 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008637 expr_ty a;
8638 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008639 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008640 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008641 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008642 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008643 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008644 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008645 )
8646 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008647 _res = _PyPegen_key_value_pair ( p , a , b );
8648 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008649 p->error_indicator = 1;
8650 return NULL;
8651 }
8652 goto done;
8653 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008654 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008656 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008657 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008658 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008659}
8660
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008661// for_if_clauses: for_if_clause+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008662static asdl_seq*
8663for_if_clauses_rule(Parser *p)
8664{
8665 if (p->error_indicator) {
8666 return NULL;
8667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008668 asdl_seq* _res = NULL;
8669 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008670 { // for_if_clause+
Guido van Rossum3941d972020-05-01 09:42:03 -07008671 asdl_seq * _loop1_104_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008672 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008673 (_loop1_104_var = _loop1_104_rule(p)) // for_if_clause+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008674 )
8675 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008676 _res = _loop1_104_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008677 goto done;
8678 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008679 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008680 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008681 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008682 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008683 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008684}
8685
8686// for_if_clause:
8687// | ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*
8688// | 'for' star_targets 'in' disjunction (('if' disjunction))*
8689static comprehension_ty
8690for_if_clause_rule(Parser *p)
8691{
8692 if (p->error_indicator) {
8693 return NULL;
8694 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008695 comprehension_ty _res = NULL;
8696 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008697 { // ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008698 Token * _keyword;
8699 Token * _keyword_1;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008700 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01008701 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008702 expr_ty b;
8703 asdl_seq * c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008704 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008705 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008706 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008707 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008708 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008709 (a = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008710 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008711 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008712 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008713 (b = disjunction_rule(p)) // disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008714 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008715 (c = _loop0_105_rule(p)) // (('if' disjunction))*
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008716 )
8717 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008718 _res = CHECK_VERSION ( 6 , "Async comprehensions are" , _Py_comprehension ( a , b , c , 1 , p -> arena ) );
8719 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008720 p->error_indicator = 1;
8721 return NULL;
8722 }
8723 goto done;
8724 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008725 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008726 }
8727 { // 'for' star_targets 'in' disjunction (('if' disjunction))*
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008728 Token * _keyword;
8729 Token * _keyword_1;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008730 expr_ty a;
8731 expr_ty b;
8732 asdl_seq * c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008733 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008734 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008735 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008736 (a = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008737 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008738 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008739 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008740 (b = disjunction_rule(p)) // disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008741 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008742 (c = _loop0_106_rule(p)) // (('if' disjunction))*
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008743 )
8744 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008745 _res = _Py_comprehension ( a , b , c , 0 , p -> arena );
8746 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008747 p->error_indicator = 1;
8748 return NULL;
8749 }
8750 goto done;
8751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008752 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008753 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008754 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008755 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008756 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008757}
8758
8759// yield_expr: 'yield' 'from' expression | 'yield' star_expressions?
8760static expr_ty
8761yield_expr_rule(Parser *p)
8762{
8763 if (p->error_indicator) {
8764 return NULL;
8765 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008766 expr_ty _res = NULL;
8767 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008768 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8769 p->error_indicator = 1;
8770 return NULL;
8771 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008772 int _start_lineno = p->tokens[_mark]->lineno;
8773 UNUSED(_start_lineno); // Only used by EXTRA macro
8774 int _start_col_offset = p->tokens[_mark]->col_offset;
8775 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008776 { // 'yield' 'from' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008777 Token * _keyword;
8778 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008779 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008780 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008781 (_keyword = _PyPegen_expect_token(p, 504)) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008782 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008783 (_keyword_1 = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008784 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008785 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008786 )
8787 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008788 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8789 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008790 return NULL;
8791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008792 int _end_lineno = _token->end_lineno;
8793 UNUSED(_end_lineno); // Only used by EXTRA macro
8794 int _end_col_offset = _token->end_col_offset;
8795 UNUSED(_end_col_offset); // Only used by EXTRA macro
8796 _res = _Py_YieldFrom ( a , EXTRA );
8797 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008798 p->error_indicator = 1;
8799 return NULL;
8800 }
8801 goto done;
8802 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008803 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008804 }
8805 { // 'yield' star_expressions?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008806 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008807 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008808 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008809 (_keyword = _PyPegen_expect_token(p, 504)) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008810 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008811 (a = star_expressions_rule(p), 1) // star_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008812 )
8813 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008814 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8815 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008816 return NULL;
8817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008818 int _end_lineno = _token->end_lineno;
8819 UNUSED(_end_lineno); // Only used by EXTRA macro
8820 int _end_col_offset = _token->end_col_offset;
8821 UNUSED(_end_col_offset); // Only used by EXTRA macro
8822 _res = _Py_Yield ( a , EXTRA );
8823 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008824 p->error_indicator = 1;
8825 return NULL;
8826 }
8827 goto done;
8828 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008829 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008831 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008832 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008833 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008834}
8835
8836// arguments: args ','? &')' | incorrect_arguments
8837static expr_ty
8838arguments_rule(Parser *p)
8839{
8840 if (p->error_indicator) {
8841 return NULL;
8842 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008843 expr_ty _res = NULL;
8844 if (_PyPegen_is_memoized(p, arguments_type, &_res))
8845 return _res;
8846 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008847 { // args ','? &')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008848 void *_opt_var;
8849 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008850 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008851 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008852 (a = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008853 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008854 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008855 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008856 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008857 )
8858 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008859 _res = a;
8860 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008861 p->error_indicator = 1;
8862 return NULL;
8863 }
8864 goto done;
8865 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008866 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008867 }
8868 { // incorrect_arguments
8869 void *incorrect_arguments_var;
8870 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008871 (incorrect_arguments_var = incorrect_arguments_rule(p)) // incorrect_arguments
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008872 )
8873 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008874 _res = incorrect_arguments_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008875 goto done;
8876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008877 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008879 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008880 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008881 _PyPegen_insert_memo(p, _mark, arguments_type, _res);
8882 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008883}
8884
8885// args: starred_expression [',' args] | kwargs | named_expression [',' args]
8886static expr_ty
8887args_rule(Parser *p)
8888{
8889 if (p->error_indicator) {
8890 return NULL;
8891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008892 expr_ty _res = NULL;
8893 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008894 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8895 p->error_indicator = 1;
8896 return NULL;
8897 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008898 int _start_lineno = p->tokens[_mark]->lineno;
8899 UNUSED(_start_lineno); // Only used by EXTRA macro
8900 int _start_col_offset = p->tokens[_mark]->col_offset;
8901 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008902 { // starred_expression [',' args]
8903 expr_ty a;
8904 void *b;
8905 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008906 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008907 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008908 (b = _tmp_107_rule(p), 1) // [',' args]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008909 )
8910 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008911 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8912 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008913 return NULL;
8914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008915 int _end_lineno = _token->end_lineno;
8916 UNUSED(_end_lineno); // Only used by EXTRA macro
8917 int _end_col_offset = _token->end_col_offset;
8918 UNUSED(_end_col_offset); // Only used by EXTRA macro
8919 _res = _Py_Call ( _PyPegen_dummy_name ( p ) , ( b ) ? CHECK ( _PyPegen_seq_insert_in_front ( p , a , ( ( expr_ty ) b ) -> v . Call . args ) ) : CHECK ( _PyPegen_singleton_seq ( p , a ) ) , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
8920 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008921 p->error_indicator = 1;
8922 return NULL;
8923 }
8924 goto done;
8925 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008926 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008927 }
8928 { // kwargs
8929 asdl_seq* a;
8930 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008931 (a = kwargs_rule(p)) // kwargs
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008932 )
8933 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008934 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8935 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008936 return NULL;
8937 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008938 int _end_lineno = _token->end_lineno;
8939 UNUSED(_end_lineno); // Only used by EXTRA macro
8940 int _end_col_offset = _token->end_col_offset;
8941 UNUSED(_end_col_offset); // Only used by EXTRA macro
8942 _res = _Py_Call ( _PyPegen_dummy_name ( p ) , CHECK_NULL_ALLOWED ( _PyPegen_seq_extract_starred_exprs ( p , a ) ) , CHECK_NULL_ALLOWED ( _PyPegen_seq_delete_starred_exprs ( p , a ) ) , EXTRA );
8943 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008944 p->error_indicator = 1;
8945 return NULL;
8946 }
8947 goto done;
8948 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008949 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008950 }
8951 { // named_expression [',' args]
8952 expr_ty a;
8953 void *b;
8954 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008955 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008956 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008957 (b = _tmp_108_rule(p), 1) // [',' args]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008958 )
8959 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008960 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8961 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008962 return NULL;
8963 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008964 int _end_lineno = _token->end_lineno;
8965 UNUSED(_end_lineno); // Only used by EXTRA macro
8966 int _end_col_offset = _token->end_col_offset;
8967 UNUSED(_end_col_offset); // Only used by EXTRA macro
8968 _res = _Py_Call ( _PyPegen_dummy_name ( p ) , ( b ) ? CHECK ( _PyPegen_seq_insert_in_front ( p , a , ( ( expr_ty ) b ) -> v . Call . args ) ) : CHECK ( _PyPegen_singleton_seq ( p , a ) ) , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
8969 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008970 p->error_indicator = 1;
8971 return NULL;
8972 }
8973 goto done;
8974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008975 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008976 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008977 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008978 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008979 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008980}
8981
8982// kwargs:
8983// | ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
8984// | ','.kwarg_or_starred+
8985// | ','.kwarg_or_double_starred+
8986static asdl_seq*
8987kwargs_rule(Parser *p)
8988{
8989 if (p->error_indicator) {
8990 return NULL;
8991 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008992 asdl_seq* _res = NULL;
8993 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008994 { // ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008995 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008996 asdl_seq * a;
8997 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008998 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008999 (a = _gather_109_rule(p)) // ','.kwarg_or_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009000 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009001 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009002 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009003 (b = _gather_111_rule(p)) // ','.kwarg_or_double_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009004 )
9005 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009006 _res = _PyPegen_join_sequences ( p , a , b );
9007 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009008 p->error_indicator = 1;
9009 return NULL;
9010 }
9011 goto done;
9012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009013 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009014 }
9015 { // ','.kwarg_or_starred+
Guido van Rossum3941d972020-05-01 09:42:03 -07009016 asdl_seq * _gather_113_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009017 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009018 (_gather_113_var = _gather_113_rule(p)) // ','.kwarg_or_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009019 )
9020 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009021 _res = _gather_113_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009022 goto done;
9023 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009024 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009025 }
9026 { // ','.kwarg_or_double_starred+
Guido van Rossum3941d972020-05-01 09:42:03 -07009027 asdl_seq * _gather_115_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009028 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009029 (_gather_115_var = _gather_115_rule(p)) // ','.kwarg_or_double_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009030 )
9031 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009032 _res = _gather_115_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009033 goto done;
9034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009035 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009037 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009038 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009039 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009040}
9041
9042// starred_expression: '*' expression
9043static expr_ty
9044starred_expression_rule(Parser *p)
9045{
9046 if (p->error_indicator) {
9047 return NULL;
9048 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009049 expr_ty _res = NULL;
9050 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009051 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9052 p->error_indicator = 1;
9053 return NULL;
9054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009055 int _start_lineno = p->tokens[_mark]->lineno;
9056 UNUSED(_start_lineno); // Only used by EXTRA macro
9057 int _start_col_offset = p->tokens[_mark]->col_offset;
9058 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009059 { // '*' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009060 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009061 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009062 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009063 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009064 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009065 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009066 )
9067 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009068 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9069 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009070 return NULL;
9071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009072 int _end_lineno = _token->end_lineno;
9073 UNUSED(_end_lineno); // Only used by EXTRA macro
9074 int _end_col_offset = _token->end_col_offset;
9075 UNUSED(_end_col_offset); // Only used by EXTRA macro
9076 _res = _Py_Starred ( a , Load , EXTRA );
9077 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009078 p->error_indicator = 1;
9079 return NULL;
9080 }
9081 goto done;
9082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009083 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009084 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009085 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009086 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009087 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009088}
9089
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009090// kwarg_or_starred: NAME '=' expression | starred_expression | invalid_kwarg
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009091static KeywordOrStarred*
9092kwarg_or_starred_rule(Parser *p)
9093{
9094 if (p->error_indicator) {
9095 return NULL;
9096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009097 KeywordOrStarred* _res = NULL;
9098 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009099 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9100 p->error_indicator = 1;
9101 return NULL;
9102 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009103 int _start_lineno = p->tokens[_mark]->lineno;
9104 UNUSED(_start_lineno); // Only used by EXTRA macro
9105 int _start_col_offset = p->tokens[_mark]->col_offset;
9106 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009107 { // NAME '=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009108 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009109 expr_ty a;
9110 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009111 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009112 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009113 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009114 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009115 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009116 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009117 )
9118 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009119 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9120 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009121 return NULL;
9122 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009123 int _end_lineno = _token->end_lineno;
9124 UNUSED(_end_lineno); // Only used by EXTRA macro
9125 int _end_col_offset = _token->end_col_offset;
9126 UNUSED(_end_col_offset); // Only used by EXTRA macro
9127 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
9128 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009129 p->error_indicator = 1;
9130 return NULL;
9131 }
9132 goto done;
9133 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009134 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009135 }
9136 { // starred_expression
9137 expr_ty a;
9138 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009139 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009140 )
9141 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009142 _res = _PyPegen_keyword_or_starred ( p , a , 0 );
9143 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009144 p->error_indicator = 1;
9145 return NULL;
9146 }
9147 goto done;
9148 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009149 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009150 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009151 { // invalid_kwarg
9152 void *invalid_kwarg_var;
9153 if (
9154 (invalid_kwarg_var = invalid_kwarg_rule(p)) // invalid_kwarg
9155 )
9156 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009157 _res = invalid_kwarg_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009158 goto done;
9159 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009160 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009161 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009162 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009163 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009164 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009165}
9166
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009167// kwarg_or_double_starred: NAME '=' expression | '**' expression | invalid_kwarg
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009168static KeywordOrStarred*
9169kwarg_or_double_starred_rule(Parser *p)
9170{
9171 if (p->error_indicator) {
9172 return NULL;
9173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009174 KeywordOrStarred* _res = NULL;
9175 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009176 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9177 p->error_indicator = 1;
9178 return NULL;
9179 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009180 int _start_lineno = p->tokens[_mark]->lineno;
9181 UNUSED(_start_lineno); // Only used by EXTRA macro
9182 int _start_col_offset = p->tokens[_mark]->col_offset;
9183 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009184 { // NAME '=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009185 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009186 expr_ty a;
9187 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009188 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009189 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009190 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009191 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009192 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009193 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009194 )
9195 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009196 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9197 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009198 return NULL;
9199 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009200 int _end_lineno = _token->end_lineno;
9201 UNUSED(_end_lineno); // Only used by EXTRA macro
9202 int _end_col_offset = _token->end_col_offset;
9203 UNUSED(_end_col_offset); // Only used by EXTRA macro
9204 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
9205 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009206 p->error_indicator = 1;
9207 return NULL;
9208 }
9209 goto done;
9210 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009211 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009212 }
9213 { // '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009214 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009215 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009216 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009217 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009218 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009219 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009220 )
9221 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009222 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9223 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009224 return NULL;
9225 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009226 int _end_lineno = _token->end_lineno;
9227 UNUSED(_end_lineno); // Only used by EXTRA macro
9228 int _end_col_offset = _token->end_col_offset;
9229 UNUSED(_end_col_offset); // Only used by EXTRA macro
9230 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( NULL , a , EXTRA ) ) , 1 );
9231 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009232 p->error_indicator = 1;
9233 return NULL;
9234 }
9235 goto done;
9236 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009237 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009238 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009239 { // invalid_kwarg
9240 void *invalid_kwarg_var;
9241 if (
9242 (invalid_kwarg_var = invalid_kwarg_rule(p)) // invalid_kwarg
9243 )
9244 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009245 _res = invalid_kwarg_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009246 goto done;
9247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009248 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009249 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009250 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009251 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009252 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009253}
9254
9255// star_targets: star_target !',' | star_target ((',' star_target))* ','?
9256static expr_ty
9257star_targets_rule(Parser *p)
9258{
9259 if (p->error_indicator) {
9260 return NULL;
9261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009262 expr_ty _res = NULL;
9263 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009264 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9265 p->error_indicator = 1;
9266 return NULL;
9267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009268 int _start_lineno = p->tokens[_mark]->lineno;
9269 UNUSED(_start_lineno); // Only used by EXTRA macro
9270 int _start_col_offset = p->tokens[_mark]->col_offset;
9271 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009272 { // star_target !','
9273 expr_ty a;
9274 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009275 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009276 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009277 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009278 )
9279 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009280 _res = a;
9281 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009282 p->error_indicator = 1;
9283 return NULL;
9284 }
9285 goto done;
9286 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009287 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009288 }
9289 { // star_target ((',' star_target))* ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009290 void *_opt_var;
9291 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009292 expr_ty a;
9293 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009294 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009295 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009296 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009297 (b = _loop0_117_rule(p)) // ((',' star_target))*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009298 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009299 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009300 )
9301 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009302 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9303 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009304 return NULL;
9305 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009306 int _end_lineno = _token->end_lineno;
9307 UNUSED(_end_lineno); // Only used by EXTRA macro
9308 int _end_col_offset = _token->end_col_offset;
9309 UNUSED(_end_col_offset); // Only used by EXTRA macro
9310 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Store , EXTRA );
9311 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009312 p->error_indicator = 1;
9313 return NULL;
9314 }
9315 goto done;
9316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009317 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009318 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009319 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009320 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009321 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009322}
9323
9324// star_targets_seq: ','.star_target+ ','?
9325static asdl_seq*
9326star_targets_seq_rule(Parser *p)
9327{
9328 if (p->error_indicator) {
9329 return NULL;
9330 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009331 asdl_seq* _res = NULL;
9332 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009333 { // ','.star_target+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009334 void *_opt_var;
9335 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009336 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009337 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009338 (a = _gather_118_rule(p)) // ','.star_target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009339 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009340 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009341 )
9342 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009343 _res = a;
9344 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009345 p->error_indicator = 1;
9346 return NULL;
9347 }
9348 goto done;
9349 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009350 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009351 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009352 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009353 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009354 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009355}
9356
9357// star_target:
9358// | '*' (!'*' star_target)
9359// | t_primary '.' NAME !t_lookahead
9360// | t_primary '[' slices ']' !t_lookahead
9361// | star_atom
9362static expr_ty
9363star_target_rule(Parser *p)
9364{
9365 if (p->error_indicator) {
9366 return NULL;
9367 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009368 expr_ty _res = NULL;
9369 if (_PyPegen_is_memoized(p, star_target_type, &_res))
9370 return _res;
9371 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009372 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9373 p->error_indicator = 1;
9374 return NULL;
9375 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009376 int _start_lineno = p->tokens[_mark]->lineno;
9377 UNUSED(_start_lineno); // Only used by EXTRA macro
9378 int _start_col_offset = p->tokens[_mark]->col_offset;
9379 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009380 { // '*' (!'*' star_target)
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009381 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009382 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009383 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009384 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009385 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009386 (a = _tmp_120_rule(p)) // !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009387 )
9388 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009389 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9390 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009391 return NULL;
9392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009393 int _end_lineno = _token->end_lineno;
9394 UNUSED(_end_lineno); // Only used by EXTRA macro
9395 int _end_col_offset = _token->end_col_offset;
9396 UNUSED(_end_col_offset); // Only used by EXTRA macro
9397 _res = _Py_Starred ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , Store , EXTRA );
9398 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009399 p->error_indicator = 1;
9400 return NULL;
9401 }
9402 goto done;
9403 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009404 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009405 }
9406 { // t_primary '.' NAME !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009407 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009408 expr_ty a;
9409 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009410 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009411 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009412 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009413 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009414 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009415 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009416 &&
9417 _PyPegen_lookahead(0, t_lookahead_rule, p)
9418 )
9419 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009420 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9421 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009422 return NULL;
9423 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009424 int _end_lineno = _token->end_lineno;
9425 UNUSED(_end_lineno); // Only used by EXTRA macro
9426 int _end_col_offset = _token->end_col_offset;
9427 UNUSED(_end_col_offset); // Only used by EXTRA macro
9428 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
9429 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009430 p->error_indicator = 1;
9431 return NULL;
9432 }
9433 goto done;
9434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009435 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009436 }
9437 { // t_primary '[' slices ']' !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009438 Token * _literal;
9439 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009440 expr_ty a;
9441 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009442 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009443 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009444 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009445 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009446 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009447 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009448 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009449 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009450 &&
9451 _PyPegen_lookahead(0, t_lookahead_rule, p)
9452 )
9453 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009454 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9455 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009456 return NULL;
9457 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009458 int _end_lineno = _token->end_lineno;
9459 UNUSED(_end_lineno); // Only used by EXTRA macro
9460 int _end_col_offset = _token->end_col_offset;
9461 UNUSED(_end_col_offset); // Only used by EXTRA macro
9462 _res = _Py_Subscript ( a , b , Store , EXTRA );
9463 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009464 p->error_indicator = 1;
9465 return NULL;
9466 }
9467 goto done;
9468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009469 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009470 }
9471 { // star_atom
9472 expr_ty star_atom_var;
9473 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009474 (star_atom_var = star_atom_rule(p)) // star_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009475 )
9476 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009477 _res = star_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009478 goto done;
9479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009480 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009481 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009482 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009483 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009484 _PyPegen_insert_memo(p, _mark, star_target_type, _res);
9485 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009486}
9487
9488// star_atom:
9489// | NAME
9490// | '(' star_target ')'
9491// | '(' star_targets_seq? ')'
9492// | '[' star_targets_seq? ']'
9493static expr_ty
9494star_atom_rule(Parser *p)
9495{
9496 if (p->error_indicator) {
9497 return NULL;
9498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009499 expr_ty _res = NULL;
9500 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009501 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9502 p->error_indicator = 1;
9503 return NULL;
9504 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009505 int _start_lineno = p->tokens[_mark]->lineno;
9506 UNUSED(_start_lineno); // Only used by EXTRA macro
9507 int _start_col_offset = p->tokens[_mark]->col_offset;
9508 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009509 { // NAME
9510 expr_ty a;
9511 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009512 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009513 )
9514 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009515 _res = _PyPegen_set_expr_context ( p , a , Store );
9516 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009517 p->error_indicator = 1;
9518 return NULL;
9519 }
9520 goto done;
9521 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009522 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009523 }
9524 { // '(' star_target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009525 Token * _literal;
9526 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009527 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009528 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009529 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009530 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009531 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009532 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009533 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009534 )
9535 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009536 _res = _PyPegen_set_expr_context ( p , a , Store );
9537 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009538 p->error_indicator = 1;
9539 return NULL;
9540 }
9541 goto done;
9542 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009543 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009544 }
9545 { // '(' star_targets_seq? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009546 Token * _literal;
9547 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009548 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009549 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009550 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009551 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009552 (a = star_targets_seq_rule(p), 1) // star_targets_seq?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009553 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009554 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009555 )
9556 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009557 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9558 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009559 return NULL;
9560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009561 int _end_lineno = _token->end_lineno;
9562 UNUSED(_end_lineno); // Only used by EXTRA macro
9563 int _end_col_offset = _token->end_col_offset;
9564 UNUSED(_end_col_offset); // Only used by EXTRA macro
9565 _res = _Py_Tuple ( a , Store , EXTRA );
9566 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009567 p->error_indicator = 1;
9568 return NULL;
9569 }
9570 goto done;
9571 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009572 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009573 }
9574 { // '[' star_targets_seq? ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009575 Token * _literal;
9576 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009577 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009578 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009579 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009580 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009581 (a = star_targets_seq_rule(p), 1) // star_targets_seq?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009582 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009583 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009584 )
9585 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009586 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9587 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009588 return NULL;
9589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009590 int _end_lineno = _token->end_lineno;
9591 UNUSED(_end_lineno); // Only used by EXTRA macro
9592 int _end_col_offset = _token->end_col_offset;
9593 UNUSED(_end_col_offset); // Only used by EXTRA macro
9594 _res = _Py_List ( a , Store , EXTRA );
9595 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009596 p->error_indicator = 1;
9597 return NULL;
9598 }
9599 goto done;
9600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009601 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009603 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009604 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009605 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009606}
9607
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03009608// single_target: single_subscript_attribute_target | NAME | '(' single_target ')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009609static expr_ty
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03009610single_target_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009611{
9612 if (p->error_indicator) {
9613 return NULL;
9614 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009615 expr_ty _res = NULL;
9616 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03009617 { // single_subscript_attribute_target
9618 expr_ty single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009619 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03009620 (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p)) // single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009621 )
9622 {
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03009623 _res = single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009624 goto done;
9625 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009626 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009627 }
9628 { // NAME
9629 expr_ty a;
9630 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009631 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009632 )
9633 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009634 _res = _PyPegen_set_expr_context ( p , a , Store );
9635 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009636 p->error_indicator = 1;
9637 return NULL;
9638 }
9639 goto done;
9640 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009641 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009642 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03009643 { // '(' single_target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009644 Token * _literal;
9645 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009646 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009647 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009648 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009649 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03009650 (a = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009651 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009652 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009653 )
9654 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009655 _res = a;
9656 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009657 p->error_indicator = 1;
9658 return NULL;
9659 }
9660 goto done;
9661 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009662 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009664 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009665 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009666 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009667}
9668
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03009669// single_subscript_attribute_target:
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009670// | t_primary '.' NAME !t_lookahead
9671// | t_primary '[' slices ']' !t_lookahead
9672static expr_ty
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03009673single_subscript_attribute_target_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009674{
9675 if (p->error_indicator) {
9676 return NULL;
9677 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009678 expr_ty _res = NULL;
9679 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009680 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9681 p->error_indicator = 1;
9682 return NULL;
9683 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009684 int _start_lineno = p->tokens[_mark]->lineno;
9685 UNUSED(_start_lineno); // Only used by EXTRA macro
9686 int _start_col_offset = p->tokens[_mark]->col_offset;
9687 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009688 { // t_primary '.' NAME !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009689 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009690 expr_ty a;
9691 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009692 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009693 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009694 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009695 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009696 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009697 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009698 &&
9699 _PyPegen_lookahead(0, t_lookahead_rule, p)
9700 )
9701 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009702 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9703 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009704 return NULL;
9705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009706 int _end_lineno = _token->end_lineno;
9707 UNUSED(_end_lineno); // Only used by EXTRA macro
9708 int _end_col_offset = _token->end_col_offset;
9709 UNUSED(_end_col_offset); // Only used by EXTRA macro
9710 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
9711 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009712 p->error_indicator = 1;
9713 return NULL;
9714 }
9715 goto done;
9716 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009717 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009718 }
9719 { // t_primary '[' slices ']' !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009720 Token * _literal;
9721 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009722 expr_ty a;
9723 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009724 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009725 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009726 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009727 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009728 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009729 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009730 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009731 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009732 &&
9733 _PyPegen_lookahead(0, t_lookahead_rule, p)
9734 )
9735 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009736 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9737 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009738 return NULL;
9739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009740 int _end_lineno = _token->end_lineno;
9741 UNUSED(_end_lineno); // Only used by EXTRA macro
9742 int _end_col_offset = _token->end_col_offset;
9743 UNUSED(_end_col_offset); // Only used by EXTRA macro
9744 _res = _Py_Subscript ( a , b , Store , EXTRA );
9745 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009746 p->error_indicator = 1;
9747 return NULL;
9748 }
9749 goto done;
9750 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009751 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009752 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009753 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009754 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009755 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009756}
9757
9758// del_targets: ','.del_target+ ','?
9759static asdl_seq*
9760del_targets_rule(Parser *p)
9761{
9762 if (p->error_indicator) {
9763 return NULL;
9764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009765 asdl_seq* _res = NULL;
9766 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009767 { // ','.del_target+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009768 void *_opt_var;
9769 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009770 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009771 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009772 (a = _gather_121_rule(p)) // ','.del_target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009773 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009774 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009775 )
9776 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009777 _res = a;
9778 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009779 p->error_indicator = 1;
9780 return NULL;
9781 }
9782 goto done;
9783 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009784 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009785 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009786 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009787 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009788 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009789}
9790
9791// del_target:
Shantanu27c0d9b2020-05-11 14:53:58 -07009792// | t_primary '.' NAME &del_target_end
9793// | t_primary '[' slices ']' &del_target_end
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009794// | del_t_atom
9795static expr_ty
9796del_target_rule(Parser *p)
9797{
9798 if (p->error_indicator) {
9799 return NULL;
9800 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009801 expr_ty _res = NULL;
9802 if (_PyPegen_is_memoized(p, del_target_type, &_res))
9803 return _res;
9804 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009805 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9806 p->error_indicator = 1;
9807 return NULL;
9808 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009809 int _start_lineno = p->tokens[_mark]->lineno;
9810 UNUSED(_start_lineno); // Only used by EXTRA macro
9811 int _start_col_offset = p->tokens[_mark]->col_offset;
9812 UNUSED(_start_col_offset); // Only used by EXTRA macro
Shantanu27c0d9b2020-05-11 14:53:58 -07009813 { // t_primary '.' NAME &del_target_end
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009814 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009815 expr_ty a;
9816 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009817 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009818 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009819 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009820 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009821 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009822 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009823 &&
Shantanu27c0d9b2020-05-11 14:53:58 -07009824 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009825 )
9826 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009827 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9828 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009829 return NULL;
9830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009831 int _end_lineno = _token->end_lineno;
9832 UNUSED(_end_lineno); // Only used by EXTRA macro
9833 int _end_col_offset = _token->end_col_offset;
9834 UNUSED(_end_col_offset); // Only used by EXTRA macro
9835 _res = _Py_Attribute ( a , b -> v . Name . id , Del , EXTRA );
9836 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009837 p->error_indicator = 1;
9838 return NULL;
9839 }
9840 goto done;
9841 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009842 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009843 }
Shantanu27c0d9b2020-05-11 14:53:58 -07009844 { // t_primary '[' slices ']' &del_target_end
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009845 Token * _literal;
9846 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009847 expr_ty a;
9848 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009849 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009850 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009851 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009852 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009853 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009854 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009855 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009856 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009857 &&
Shantanu27c0d9b2020-05-11 14:53:58 -07009858 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009859 )
9860 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009861 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9862 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009863 return NULL;
9864 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009865 int _end_lineno = _token->end_lineno;
9866 UNUSED(_end_lineno); // Only used by EXTRA macro
9867 int _end_col_offset = _token->end_col_offset;
9868 UNUSED(_end_col_offset); // Only used by EXTRA macro
9869 _res = _Py_Subscript ( a , b , Del , EXTRA );
9870 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009871 p->error_indicator = 1;
9872 return NULL;
9873 }
9874 goto done;
9875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009876 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009877 }
9878 { // del_t_atom
9879 expr_ty del_t_atom_var;
9880 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009881 (del_t_atom_var = del_t_atom_rule(p)) // del_t_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009882 )
9883 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009884 _res = del_t_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009885 goto done;
9886 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009887 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009888 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009889 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009890 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009891 _PyPegen_insert_memo(p, _mark, del_target_type, _res);
9892 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009893}
9894
Shantanu27c0d9b2020-05-11 14:53:58 -07009895// del_t_atom:
9896// | NAME &del_target_end
9897// | '(' del_target ')'
9898// | '(' del_targets? ')'
9899// | '[' del_targets? ']'
9900// | invalid_del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009901static expr_ty
9902del_t_atom_rule(Parser *p)
9903{
9904 if (p->error_indicator) {
9905 return NULL;
9906 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009907 expr_ty _res = NULL;
9908 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009909 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9910 p->error_indicator = 1;
9911 return NULL;
9912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009913 int _start_lineno = p->tokens[_mark]->lineno;
9914 UNUSED(_start_lineno); // Only used by EXTRA macro
9915 int _start_col_offset = p->tokens[_mark]->col_offset;
9916 UNUSED(_start_col_offset); // Only used by EXTRA macro
Shantanu27c0d9b2020-05-11 14:53:58 -07009917 { // NAME &del_target_end
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009918 expr_ty a;
9919 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009920 (a = _PyPegen_name_token(p)) // NAME
Shantanu27c0d9b2020-05-11 14:53:58 -07009921 &&
9922 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009923 )
9924 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009925 _res = _PyPegen_set_expr_context ( p , a , Del );
9926 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009927 p->error_indicator = 1;
9928 return NULL;
9929 }
9930 goto done;
9931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009932 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009933 }
9934 { // '(' del_target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009935 Token * _literal;
9936 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009937 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009938 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009939 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009940 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009941 (a = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009942 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009943 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009944 )
9945 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009946 _res = _PyPegen_set_expr_context ( p , a , Del );
9947 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009948 p->error_indicator = 1;
9949 return NULL;
9950 }
9951 goto done;
9952 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009953 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009954 }
9955 { // '(' del_targets? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009956 Token * _literal;
9957 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009958 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009959 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009960 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009961 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009962 (a = del_targets_rule(p), 1) // del_targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009963 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009964 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009965 )
9966 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009967 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9968 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009969 return NULL;
9970 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009971 int _end_lineno = _token->end_lineno;
9972 UNUSED(_end_lineno); // Only used by EXTRA macro
9973 int _end_col_offset = _token->end_col_offset;
9974 UNUSED(_end_col_offset); // Only used by EXTRA macro
9975 _res = _Py_Tuple ( a , Del , EXTRA );
9976 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009977 p->error_indicator = 1;
9978 return NULL;
9979 }
9980 goto done;
9981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009982 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009983 }
9984 { // '[' del_targets? ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009985 Token * _literal;
9986 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009987 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009988 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009989 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009990 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009991 (a = del_targets_rule(p), 1) // del_targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009992 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009993 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009994 )
9995 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009996 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9997 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009998 return NULL;
9999 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010000 int _end_lineno = _token->end_lineno;
10001 UNUSED(_end_lineno); // Only used by EXTRA macro
10002 int _end_col_offset = _token->end_col_offset;
10003 UNUSED(_end_col_offset); // Only used by EXTRA macro
10004 _res = _Py_List ( a , Del , EXTRA );
10005 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010006 p->error_indicator = 1;
10007 return NULL;
10008 }
10009 goto done;
10010 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010011 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010012 }
Shantanu27c0d9b2020-05-11 14:53:58 -070010013 { // invalid_del_target
10014 void *invalid_del_target_var;
10015 if (
10016 (invalid_del_target_var = invalid_del_target_rule(p)) // invalid_del_target
10017 )
10018 {
10019 _res = invalid_del_target_var;
10020 goto done;
10021 }
10022 p->mark = _mark;
10023 }
10024 _res = NULL;
10025 done:
10026 return _res;
10027}
10028
10029// del_target_end: ')' | ']' | ',' | ';' | NEWLINE
10030static void *
10031del_target_end_rule(Parser *p)
10032{
10033 if (p->error_indicator) {
10034 return NULL;
10035 }
10036 void * _res = NULL;
10037 int _mark = p->mark;
10038 { // ')'
10039 Token * _literal;
10040 if (
10041 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
10042 )
10043 {
10044 _res = _literal;
10045 goto done;
10046 }
10047 p->mark = _mark;
10048 }
10049 { // ']'
10050 Token * _literal;
10051 if (
10052 (_literal = _PyPegen_expect_token(p, 10)) // token=']'
10053 )
10054 {
10055 _res = _literal;
10056 goto done;
10057 }
10058 p->mark = _mark;
10059 }
10060 { // ','
10061 Token * _literal;
10062 if (
10063 (_literal = _PyPegen_expect_token(p, 12)) // token=','
10064 )
10065 {
10066 _res = _literal;
10067 goto done;
10068 }
10069 p->mark = _mark;
10070 }
10071 { // ';'
10072 Token * _literal;
10073 if (
10074 (_literal = _PyPegen_expect_token(p, 13)) // token=';'
10075 )
10076 {
10077 _res = _literal;
10078 goto done;
10079 }
10080 p->mark = _mark;
10081 }
10082 { // NEWLINE
10083 Token * newline_var;
10084 if (
10085 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
10086 )
10087 {
10088 _res = newline_var;
10089 goto done;
10090 }
10091 p->mark = _mark;
10092 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010093 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010094 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010095 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010096}
10097
10098// targets: ','.target+ ','?
10099static asdl_seq*
10100targets_rule(Parser *p)
10101{
10102 if (p->error_indicator) {
10103 return NULL;
10104 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010105 asdl_seq* _res = NULL;
10106 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010107 { // ','.target+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010108 void *_opt_var;
10109 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010110 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010111 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010112 (a = _gather_123_rule(p)) // ','.target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010113 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010114 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010115 )
10116 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010117 _res = a;
10118 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010119 p->error_indicator = 1;
10120 return NULL;
10121 }
10122 goto done;
10123 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010124 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010125 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010126 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010127 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010128 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010129}
10130
10131// target:
10132// | t_primary '.' NAME !t_lookahead
10133// | t_primary '[' slices ']' !t_lookahead
10134// | t_atom
10135static expr_ty
10136target_rule(Parser *p)
10137{
10138 if (p->error_indicator) {
10139 return NULL;
10140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010141 expr_ty _res = NULL;
10142 if (_PyPegen_is_memoized(p, target_type, &_res))
10143 return _res;
10144 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010145 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10146 p->error_indicator = 1;
10147 return NULL;
10148 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010149 int _start_lineno = p->tokens[_mark]->lineno;
10150 UNUSED(_start_lineno); // Only used by EXTRA macro
10151 int _start_col_offset = p->tokens[_mark]->col_offset;
10152 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010153 { // t_primary '.' NAME !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010154 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010155 expr_ty a;
10156 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010157 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010158 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010159 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010160 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010161 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010162 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010163 &&
10164 _PyPegen_lookahead(0, t_lookahead_rule, p)
10165 )
10166 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010167 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10168 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010169 return NULL;
10170 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010171 int _end_lineno = _token->end_lineno;
10172 UNUSED(_end_lineno); // Only used by EXTRA macro
10173 int _end_col_offset = _token->end_col_offset;
10174 UNUSED(_end_col_offset); // Only used by EXTRA macro
10175 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
10176 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010177 p->error_indicator = 1;
10178 return NULL;
10179 }
10180 goto done;
10181 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010182 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010183 }
10184 { // t_primary '[' slices ']' !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010185 Token * _literal;
10186 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010187 expr_ty a;
10188 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010189 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010190 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010191 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010192 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010193 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010194 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010195 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010196 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010197 &&
10198 _PyPegen_lookahead(0, t_lookahead_rule, p)
10199 )
10200 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010201 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10202 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010203 return NULL;
10204 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010205 int _end_lineno = _token->end_lineno;
10206 UNUSED(_end_lineno); // Only used by EXTRA macro
10207 int _end_col_offset = _token->end_col_offset;
10208 UNUSED(_end_col_offset); // Only used by EXTRA macro
10209 _res = _Py_Subscript ( a , b , Store , EXTRA );
10210 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010211 p->error_indicator = 1;
10212 return NULL;
10213 }
10214 goto done;
10215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010216 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010217 }
10218 { // t_atom
10219 expr_ty t_atom_var;
10220 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010221 (t_atom_var = t_atom_rule(p)) // t_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010222 )
10223 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010224 _res = t_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010225 goto done;
10226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010227 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010229 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010230 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010231 _PyPegen_insert_memo(p, _mark, target_type, _res);
10232 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010233}
10234
10235// Left-recursive
10236// t_primary:
10237// | t_primary '.' NAME &t_lookahead
10238// | t_primary '[' slices ']' &t_lookahead
10239// | t_primary genexp &t_lookahead
10240// | t_primary '(' arguments? ')' &t_lookahead
10241// | atom &t_lookahead
10242static expr_ty t_primary_raw(Parser *);
10243static expr_ty
10244t_primary_rule(Parser *p)
10245{
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010246 expr_ty _res = NULL;
10247 if (_PyPegen_is_memoized(p, t_primary_type, &_res))
10248 return _res;
10249 int _mark = p->mark;
10250 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010251 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010252 int tmpvar_8 = _PyPegen_update_memo(p, _mark, t_primary_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010253 if (tmpvar_8) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010254 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010255 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010256 p->mark = _mark;
10257 void *_raw = t_primary_raw(p);
10258 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010259 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010260 _resmark = p->mark;
10261 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010263 p->mark = _resmark;
10264 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010265}
10266static expr_ty
10267t_primary_raw(Parser *p)
10268{
10269 if (p->error_indicator) {
10270 return NULL;
10271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010272 expr_ty _res = NULL;
10273 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010274 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10275 p->error_indicator = 1;
10276 return NULL;
10277 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010278 int _start_lineno = p->tokens[_mark]->lineno;
10279 UNUSED(_start_lineno); // Only used by EXTRA macro
10280 int _start_col_offset = p->tokens[_mark]->col_offset;
10281 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010282 { // t_primary '.' NAME &t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010283 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010284 expr_ty a;
10285 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010286 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010287 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010288 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010289 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010290 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010291 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010292 &&
10293 _PyPegen_lookahead(1, t_lookahead_rule, p)
10294 )
10295 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010296 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10297 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010298 return NULL;
10299 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010300 int _end_lineno = _token->end_lineno;
10301 UNUSED(_end_lineno); // Only used by EXTRA macro
10302 int _end_col_offset = _token->end_col_offset;
10303 UNUSED(_end_col_offset); // Only used by EXTRA macro
10304 _res = _Py_Attribute ( a , b -> v . Name . id , Load , EXTRA );
10305 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010306 p->error_indicator = 1;
10307 return NULL;
10308 }
10309 goto done;
10310 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010311 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010312 }
10313 { // t_primary '[' slices ']' &t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010314 Token * _literal;
10315 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010316 expr_ty a;
10317 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010318 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010319 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010320 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010321 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010322 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010323 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010324 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010325 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010326 &&
10327 _PyPegen_lookahead(1, t_lookahead_rule, p)
10328 )
10329 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010330 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10331 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010332 return NULL;
10333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010334 int _end_lineno = _token->end_lineno;
10335 UNUSED(_end_lineno); // Only used by EXTRA macro
10336 int _end_col_offset = _token->end_col_offset;
10337 UNUSED(_end_col_offset); // Only used by EXTRA macro
10338 _res = _Py_Subscript ( a , b , Load , EXTRA );
10339 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010340 p->error_indicator = 1;
10341 return NULL;
10342 }
10343 goto done;
10344 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010345 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010346 }
10347 { // t_primary genexp &t_lookahead
10348 expr_ty a;
10349 expr_ty b;
10350 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010351 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010352 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010353 (b = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010354 &&
10355 _PyPegen_lookahead(1, t_lookahead_rule, p)
10356 )
10357 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010358 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10359 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010360 return NULL;
10361 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010362 int _end_lineno = _token->end_lineno;
10363 UNUSED(_end_lineno); // Only used by EXTRA macro
10364 int _end_col_offset = _token->end_col_offset;
10365 UNUSED(_end_col_offset); // Only used by EXTRA macro
10366 _res = _Py_Call ( a , CHECK ( _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
10367 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010368 p->error_indicator = 1;
10369 return NULL;
10370 }
10371 goto done;
10372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010373 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010374 }
10375 { // t_primary '(' arguments? ')' &t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010376 Token * _literal;
10377 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010378 expr_ty a;
10379 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010380 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010381 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010382 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010383 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010384 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010385 (b = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010386 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010387 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010388 &&
10389 _PyPegen_lookahead(1, t_lookahead_rule, p)
10390 )
10391 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010392 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10393 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010394 return NULL;
10395 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010396 int _end_lineno = _token->end_lineno;
10397 UNUSED(_end_lineno); // Only used by EXTRA macro
10398 int _end_col_offset = _token->end_col_offset;
10399 UNUSED(_end_col_offset); // Only used by EXTRA macro
10400 _res = _Py_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
10401 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010402 p->error_indicator = 1;
10403 return NULL;
10404 }
10405 goto done;
10406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010407 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010408 }
10409 { // atom &t_lookahead
10410 expr_ty a;
10411 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010412 (a = atom_rule(p)) // atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010413 &&
10414 _PyPegen_lookahead(1, t_lookahead_rule, p)
10415 )
10416 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010417 _res = a;
10418 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010419 p->error_indicator = 1;
10420 return NULL;
10421 }
10422 goto done;
10423 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010424 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010426 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010427 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010428 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010429}
10430
10431// t_lookahead: '(' | '[' | '.'
10432static void *
10433t_lookahead_rule(Parser *p)
10434{
10435 if (p->error_indicator) {
10436 return NULL;
10437 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010438 void * _res = NULL;
10439 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010440 { // '('
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010441 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010442 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010443 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010444 )
10445 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010446 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010447 goto done;
10448 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010449 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010450 }
10451 { // '['
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010452 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010453 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010454 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010455 )
10456 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010457 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010458 goto done;
10459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010460 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010461 }
10462 { // '.'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010463 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010464 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010465 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010466 )
10467 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010468 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010469 goto done;
10470 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010471 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010473 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010474 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010475 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010476}
10477
10478// t_atom: NAME | '(' target ')' | '(' targets? ')' | '[' targets? ']'
10479static expr_ty
10480t_atom_rule(Parser *p)
10481{
10482 if (p->error_indicator) {
10483 return NULL;
10484 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010485 expr_ty _res = NULL;
10486 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010487 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10488 p->error_indicator = 1;
10489 return NULL;
10490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010491 int _start_lineno = p->tokens[_mark]->lineno;
10492 UNUSED(_start_lineno); // Only used by EXTRA macro
10493 int _start_col_offset = p->tokens[_mark]->col_offset;
10494 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010495 { // NAME
10496 expr_ty a;
10497 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010498 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010499 )
10500 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010501 _res = _PyPegen_set_expr_context ( p , a , Store );
10502 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010503 p->error_indicator = 1;
10504 return NULL;
10505 }
10506 goto done;
10507 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010508 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010509 }
10510 { // '(' target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010511 Token * _literal;
10512 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010513 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010514 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010515 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010516 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010517 (a = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010518 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010519 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010520 )
10521 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010522 _res = _PyPegen_set_expr_context ( p , a , Store );
10523 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010524 p->error_indicator = 1;
10525 return NULL;
10526 }
10527 goto done;
10528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010529 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010530 }
10531 { // '(' targets? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010532 Token * _literal;
10533 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010534 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010535 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010536 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010537 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010538 (b = targets_rule(p), 1) // targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010539 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010540 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010541 )
10542 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010543 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10544 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010545 return NULL;
10546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010547 int _end_lineno = _token->end_lineno;
10548 UNUSED(_end_lineno); // Only used by EXTRA macro
10549 int _end_col_offset = _token->end_col_offset;
10550 UNUSED(_end_col_offset); // Only used by EXTRA macro
10551 _res = _Py_Tuple ( b , Store , EXTRA );
10552 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010553 p->error_indicator = 1;
10554 return NULL;
10555 }
10556 goto done;
10557 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010558 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010559 }
10560 { // '[' targets? ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010561 Token * _literal;
10562 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010563 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010564 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010565 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010566 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010567 (b = targets_rule(p), 1) // targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010568 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010569 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010570 )
10571 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010572 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10573 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010574 return NULL;
10575 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010576 int _end_lineno = _token->end_lineno;
10577 UNUSED(_end_lineno); // Only used by EXTRA macro
10578 int _end_col_offset = _token->end_col_offset;
10579 UNUSED(_end_col_offset); // Only used by EXTRA macro
10580 _res = _Py_List ( b , Store , EXTRA );
10581 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010582 p->error_indicator = 1;
10583 return NULL;
10584 }
10585 goto done;
10586 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010587 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010588 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010589 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010590 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010591 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010592}
10593
10594// incorrect_arguments:
10595// | args ',' '*'
10596// | expression for_if_clauses ',' [args | expression for_if_clauses]
10597// | args ',' args
10598static void *
10599incorrect_arguments_rule(Parser *p)
10600{
10601 if (p->error_indicator) {
10602 return NULL;
10603 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010604 void * _res = NULL;
10605 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010606 { // args ',' '*'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010607 Token * _literal;
10608 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010609 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010610 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010611 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010612 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010613 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010614 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010615 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010616 )
10617 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010618 _res = RAISE_SYNTAX_ERROR ( "iterable argument unpacking follows keyword argument unpacking" );
10619 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010620 p->error_indicator = 1;
10621 return NULL;
10622 }
10623 goto done;
10624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010625 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010626 }
10627 { // expression for_if_clauses ',' [args | expression for_if_clauses]
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010628 Token * _literal;
10629 void *_opt_var;
10630 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010631 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010632 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010633 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010634 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010635 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010636 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010637 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010638 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010639 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010640 (_opt_var = _tmp_125_rule(p), 1) // [args | expression for_if_clauses]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010641 )
10642 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010643 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "Generator expression must be parenthesized" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010644 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010645 p->error_indicator = 1;
10646 return NULL;
10647 }
10648 goto done;
10649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010650 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010651 }
10652 { // args ',' args
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010653 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010654 expr_ty a;
10655 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010656 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010657 (a = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010658 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010659 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010660 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010661 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010662 )
10663 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010664 _res = _PyPegen_arguments_parsing_error ( p , a );
10665 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010666 p->error_indicator = 1;
10667 return NULL;
10668 }
10669 goto done;
10670 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010671 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010672 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010673 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010674 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010675 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010676}
10677
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010678// invalid_kwarg: expression '='
10679static void *
10680invalid_kwarg_rule(Parser *p)
10681{
10682 if (p->error_indicator) {
10683 return NULL;
10684 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010685 void * _res = NULL;
10686 int _mark = p->mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010687 { // expression '='
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010688 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010689 expr_ty a;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010690 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010691 (a = expression_rule(p)) // expression
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010692 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010693 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010694 )
10695 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010696 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression cannot contain assignment, perhaps you meant \"==\"?" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010697 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010698 p->error_indicator = 1;
10699 return NULL;
10700 }
10701 goto done;
10702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010703 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010704 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010705 _res = NULL;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010706 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010707 return _res;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010708}
10709
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010710// invalid_named_expression: expression ':=' expression
10711static void *
10712invalid_named_expression_rule(Parser *p)
10713{
10714 if (p->error_indicator) {
10715 return NULL;
10716 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010717 void * _res = NULL;
10718 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010719 { // expression ':=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010720 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010721 expr_ty a;
10722 expr_ty expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010723 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010724 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010725 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010726 (_literal = _PyPegen_expect_token(p, 53)) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010727 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010728 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010729 )
10730 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010731 _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 +010010732 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010733 p->error_indicator = 1;
10734 return NULL;
10735 }
10736 goto done;
10737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010738 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010740 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010741 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010742 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010743}
10744
10745// invalid_assignment:
10746// | list ':'
10747// | tuple ':'
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010748// | star_named_expression ',' star_named_expressions* ':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010749// | expression ':' expression ['=' annotated_rhs]
Pablo Galindo16ab0702020-05-15 02:04:52 +010010750// | star_expressions '=' (yield_expr | star_expressions)
10751// | star_expressions augassign (yield_expr | star_expressions)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010752static void *
10753invalid_assignment_rule(Parser *p)
10754{
10755 if (p->error_indicator) {
10756 return NULL;
10757 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010758 void * _res = NULL;
10759 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010760 { // list ':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010761 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010762 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010763 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010764 (a = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010765 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010766 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010767 )
10768 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010769 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not list) can be annotated" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010770 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010771 p->error_indicator = 1;
10772 return NULL;
10773 }
10774 goto done;
10775 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010776 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010777 }
10778 { // tuple ':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010779 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010780 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010781 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010782 (a = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010783 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010784 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010785 )
10786 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010787 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
10788 if (_res == NULL && PyErr_Occurred()) {
10789 p->error_indicator = 1;
10790 return NULL;
10791 }
10792 goto done;
10793 }
10794 p->mark = _mark;
10795 }
10796 { // star_named_expression ',' star_named_expressions* ':'
10797 Token * _literal;
10798 Token * _literal_1;
10799 asdl_seq * _loop0_126_var;
10800 expr_ty a;
10801 if (
10802 (a = star_named_expression_rule(p)) // star_named_expression
10803 &&
10804 (_literal = _PyPegen_expect_token(p, 12)) // token=','
10805 &&
10806 (_loop0_126_var = _loop0_126_rule(p)) // star_named_expressions*
10807 &&
10808 (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':'
10809 )
10810 {
10811 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010812 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010813 p->error_indicator = 1;
10814 return NULL;
10815 }
10816 goto done;
10817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010818 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010819 }
10820 { // expression ':' expression ['=' annotated_rhs]
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010821 Token * _literal;
10822 void *_opt_var;
10823 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010824 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010825 expr_ty expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010826 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010827 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010828 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010829 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010830 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010831 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010832 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010833 (_opt_var = _tmp_127_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010834 )
10835 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010836 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "illegal target for annotation" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010837 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010838 p->error_indicator = 1;
10839 return NULL;
10840 }
10841 goto done;
10842 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010843 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010844 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010010845 { // star_expressions '=' (yield_expr | star_expressions)
10846 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070010847 void *_tmp_128_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010848 expr_ty a;
10849 if (
Pablo Galindo16ab0702020-05-15 02:04:52 +010010850 (a = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010851 &&
Pablo Galindo16ab0702020-05-15 02:04:52 +010010852 (_literal = _PyPegen_expect_token(p, 22)) // token='='
10853 &&
10854 (_tmp_128_var = _tmp_128_rule(p)) // yield_expr | star_expressions
10855 )
10856 {
10857 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( _PyPegen_get_invalid_target ( a ) , "cannot assign to %s" , _PyPegen_get_expr_name ( _PyPegen_get_invalid_target ( a ) ) );
10858 if (_res == NULL && PyErr_Occurred()) {
10859 p->error_indicator = 1;
10860 return NULL;
10861 }
10862 goto done;
10863 }
10864 p->mark = _mark;
10865 }
10866 { // star_expressions augassign (yield_expr | star_expressions)
10867 void *_tmp_129_var;
10868 expr_ty a;
10869 AugOperator* augassign_var;
10870 if (
10871 (a = star_expressions_rule(p)) // star_expressions
10872 &&
10873 (augassign_var = augassign_rule(p)) // augassign
Pablo Galindo2b74c832020-04-27 18:02:07 +010010874 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010875 (_tmp_129_var = _tmp_129_rule(p)) // yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010876 )
10877 {
Pablo Galindo16ab0702020-05-15 02:04:52 +010010878 _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 +010010879 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010880 p->error_indicator = 1;
10881 return NULL;
10882 }
10883 goto done;
10884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010885 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010886 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010887 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010888 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010889 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010890}
10891
10892// invalid_block: NEWLINE !INDENT
10893static void *
10894invalid_block_rule(Parser *p)
10895{
10896 if (p->error_indicator) {
10897 return NULL;
10898 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010899 void * _res = NULL;
10900 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010901 { // NEWLINE !INDENT
Pablo Galindob796b3f2020-05-01 12:32:26 +010010902 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010903 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010904 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010905 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010906 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT) // token=INDENT
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010907 )
10908 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010909 _res = RAISE_INDENTATION_ERROR ( "expected an indented block" );
10910 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010911 p->error_indicator = 1;
10912 return NULL;
10913 }
10914 goto done;
10915 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010916 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010917 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010918 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010919 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010920 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010921}
10922
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010923// invalid_comprehension: ('[' | '(' | '{') starred_expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010924static void *
10925invalid_comprehension_rule(Parser *p)
10926{
10927 if (p->error_indicator) {
10928 return NULL;
10929 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010930 void * _res = NULL;
10931 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010932 { // ('[' | '(' | '{') starred_expression for_if_clauses
10933 void *_tmp_130_var;
10934 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010935 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010936 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010937 (_tmp_130_var = _tmp_130_rule(p)) // '[' | '(' | '{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010938 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010939 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010940 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010941 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010942 )
10943 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010944 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "iterable unpacking cannot be used in comprehension" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010945 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010946 p->error_indicator = 1;
10947 return NULL;
10948 }
10949 goto done;
10950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010951 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010952 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010953 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010954 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010955 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010956}
10957
10958// invalid_parameters:
Guido van Rossumc001c092020-04-30 12:12:19 -070010959// | param_no_default* (slash_with_default | param_with_default+) param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010960static void *
10961invalid_parameters_rule(Parser *p)
10962{
10963 if (p->error_indicator) {
10964 return NULL;
10965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010966 void * _res = NULL;
10967 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070010968 { // param_no_default* (slash_with_default | param_with_default+) param_no_default
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010969 asdl_seq * _loop0_131_var;
10970 void *_tmp_132_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070010971 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010972 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010973 (_loop0_131_var = _loop0_131_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010974 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010975 (_tmp_132_var = _tmp_132_rule(p)) // slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010976 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010977 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010978 )
10979 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010980 _res = RAISE_SYNTAX_ERROR ( "non-default argument follows default argument" );
10981 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010982 p->error_indicator = 1;
10983 return NULL;
10984 }
10985 goto done;
10986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010987 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010988 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010989 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010990 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010991 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010992}
10993
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010994// invalid_star_etc: '*' (')' | ',' (')' | '**'))
10995static void *
10996invalid_star_etc_rule(Parser *p)
10997{
10998 if (p->error_indicator) {
10999 return NULL;
11000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011001 void * _res = NULL;
11002 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011003 { // '*' (')' | ',' (')' | '**'))
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011004 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011005 void *_tmp_133_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011006 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011007 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011008 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011009 (_tmp_133_var = _tmp_133_rule(p)) // ')' | ',' (')' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011010 )
11011 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011012 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
11013 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011014 p->error_indicator = 1;
11015 return NULL;
11016 }
11017 goto done;
11018 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011019 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011021 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011022 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011023 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011024}
11025
11026// invalid_lambda_star_etc: '*' (':' | ',' (':' | '**'))
11027static void *
11028invalid_lambda_star_etc_rule(Parser *p)
11029{
11030 if (p->error_indicator) {
11031 return NULL;
11032 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011033 void * _res = NULL;
11034 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011035 { // '*' (':' | ',' (':' | '**'))
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011036 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011037 void *_tmp_134_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011038 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011039 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011040 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011041 (_tmp_134_var = _tmp_134_rule(p)) // ':' | ',' (':' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011042 )
11043 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011044 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
11045 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011046 p->error_indicator = 1;
11047 return NULL;
11048 }
11049 goto done;
11050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011051 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011052 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011053 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011054 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011055 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011056}
11057
Guido van Rossumc001c092020-04-30 12:12:19 -070011058// invalid_double_type_comments: TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
11059static void *
11060invalid_double_type_comments_rule(Parser *p)
11061{
11062 if (p->error_indicator) {
11063 return NULL;
11064 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011065 void * _res = NULL;
11066 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011067 { // TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
Pablo Galindob796b3f2020-05-01 12:32:26 +010011068 Token * indent_var;
11069 Token * newline_var;
11070 Token * newline_var_1;
11071 Token * type_comment_var;
11072 Token * type_comment_var_1;
Guido van Rossumc001c092020-04-30 12:12:19 -070011073 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011074 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070011075 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011076 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070011077 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011078 (type_comment_var_1 = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070011079 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011080 (newline_var_1 = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070011081 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011082 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070011083 )
11084 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011085 _res = RAISE_SYNTAX_ERROR ( "Cannot have two type comments on def" );
11086 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011087 p->error_indicator = 1;
11088 return NULL;
11089 }
11090 goto done;
11091 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011092 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011094 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011095 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011096 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011097}
11098
Shantanu27c0d9b2020-05-11 14:53:58 -070011099// invalid_del_target: star_expression &del_target_end
11100static void *
11101invalid_del_target_rule(Parser *p)
11102{
11103 if (p->error_indicator) {
11104 return NULL;
11105 }
11106 void * _res = NULL;
11107 int _mark = p->mark;
11108 { // star_expression &del_target_end
11109 expr_ty a;
11110 if (
11111 (a = star_expression_rule(p)) // star_expression
11112 &&
11113 _PyPegen_lookahead(1, del_target_end_rule, p)
11114 )
11115 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011116 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot delete %s" , _PyPegen_get_expr_name ( a ) );
Shantanu27c0d9b2020-05-11 14:53:58 -070011117 if (_res == NULL && PyErr_Occurred()) {
11118 p->error_indicator = 1;
11119 return NULL;
11120 }
11121 goto done;
11122 }
11123 p->mark = _mark;
11124 }
11125 _res = NULL;
11126 done:
11127 return _res;
11128}
11129
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011130// _loop0_1: NEWLINE
11131static asdl_seq *
11132_loop0_1_rule(Parser *p)
11133{
11134 if (p->error_indicator) {
11135 return NULL;
11136 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011137 void *_res = NULL;
11138 int _mark = p->mark;
11139 int _start_mark = p->mark;
11140 void **_children = PyMem_Malloc(sizeof(void *));
11141 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011142 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11143 return NULL;
11144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011145 ssize_t _children_capacity = 1;
11146 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011147 { // NEWLINE
Pablo Galindob796b3f2020-05-01 12:32:26 +010011148 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011149 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010011150 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011151 )
11152 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011153 _res = newline_var;
11154 if (_n == _children_capacity) {
11155 _children_capacity *= 2;
11156 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11157 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011158 PyErr_Format(PyExc_MemoryError, "realloc None");
11159 return NULL;
11160 }
11161 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011162 _children[_n++] = _res;
11163 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011164 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011165 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011166 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011167 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11168 if (!_seq) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011169 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_1");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011170 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011171 return NULL;
11172 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011173 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11174 PyMem_Free(_children);
11175 _PyPegen_insert_memo(p, _start_mark, _loop0_1_type, _seq);
11176 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011177}
11178
Guido van Rossumc001c092020-04-30 12:12:19 -070011179// _loop0_2: NEWLINE
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011180static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070011181_loop0_2_rule(Parser *p)
11182{
11183 if (p->error_indicator) {
11184 return NULL;
11185 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011186 void *_res = NULL;
11187 int _mark = p->mark;
11188 int _start_mark = p->mark;
11189 void **_children = PyMem_Malloc(sizeof(void *));
11190 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011191 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11192 return NULL;
11193 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011194 ssize_t _children_capacity = 1;
11195 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011196 { // NEWLINE
Pablo Galindob796b3f2020-05-01 12:32:26 +010011197 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070011198 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010011199 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070011200 )
11201 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011202 _res = newline_var;
11203 if (_n == _children_capacity) {
11204 _children_capacity *= 2;
11205 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11206 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011207 PyErr_Format(PyExc_MemoryError, "realloc None");
11208 return NULL;
11209 }
11210 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011211 _children[_n++] = _res;
11212 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011214 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011216 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11217 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011218 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_2");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011219 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011220 return NULL;
11221 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011222 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11223 PyMem_Free(_children);
11224 _PyPegen_insert_memo(p, _start_mark, _loop0_2_type, _seq);
11225 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011226}
11227
11228// _loop0_4: ',' expression
11229static asdl_seq *
11230_loop0_4_rule(Parser *p)
11231{
11232 if (p->error_indicator) {
11233 return NULL;
11234 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011235 void *_res = NULL;
11236 int _mark = p->mark;
11237 int _start_mark = p->mark;
11238 void **_children = PyMem_Malloc(sizeof(void *));
11239 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011240 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11241 return NULL;
11242 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011243 ssize_t _children_capacity = 1;
11244 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011245 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011246 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011247 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011248 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011249 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011250 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011251 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011252 )
11253 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011254 _res = elem;
11255 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011256 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011257 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011258 return NULL;
11259 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011260 if (_n == _children_capacity) {
11261 _children_capacity *= 2;
11262 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11263 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011264 PyErr_Format(PyExc_MemoryError, "realloc None");
11265 return NULL;
11266 }
11267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011268 _children[_n++] = _res;
11269 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011270 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011271 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011272 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011273 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11274 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011275 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_4");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011276 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011277 return NULL;
11278 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011279 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11280 PyMem_Free(_children);
11281 _PyPegen_insert_memo(p, _start_mark, _loop0_4_type, _seq);
11282 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011283}
11284
11285// _gather_3: expression _loop0_4
11286static asdl_seq *
11287_gather_3_rule(Parser *p)
11288{
11289 if (p->error_indicator) {
11290 return NULL;
11291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011292 asdl_seq * _res = NULL;
11293 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011294 { // expression _loop0_4
11295 expr_ty elem;
11296 asdl_seq * seq;
11297 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011298 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011299 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011300 (seq = _loop0_4_rule(p)) // _loop0_4
Guido van Rossumc001c092020-04-30 12:12:19 -070011301 )
11302 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011303 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011304 goto done;
11305 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011306 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011307 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011308 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011309 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011310 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011311}
11312
11313// _loop0_6: ',' expression
11314static asdl_seq *
11315_loop0_6_rule(Parser *p)
11316{
11317 if (p->error_indicator) {
11318 return NULL;
11319 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011320 void *_res = NULL;
11321 int _mark = p->mark;
11322 int _start_mark = p->mark;
11323 void **_children = PyMem_Malloc(sizeof(void *));
11324 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011325 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11326 return NULL;
11327 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011328 ssize_t _children_capacity = 1;
11329 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011330 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011331 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011332 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011333 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011334 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011335 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011336 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011337 )
11338 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011339 _res = elem;
11340 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011341 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011342 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011343 return NULL;
11344 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011345 if (_n == _children_capacity) {
11346 _children_capacity *= 2;
11347 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11348 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011349 PyErr_Format(PyExc_MemoryError, "realloc None");
11350 return NULL;
11351 }
11352 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011353 _children[_n++] = _res;
11354 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011355 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011356 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011358 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11359 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011360 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_6");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011361 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011362 return NULL;
11363 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011364 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11365 PyMem_Free(_children);
11366 _PyPegen_insert_memo(p, _start_mark, _loop0_6_type, _seq);
11367 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011368}
11369
11370// _gather_5: expression _loop0_6
11371static asdl_seq *
11372_gather_5_rule(Parser *p)
11373{
11374 if (p->error_indicator) {
11375 return NULL;
11376 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011377 asdl_seq * _res = NULL;
11378 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011379 { // expression _loop0_6
11380 expr_ty elem;
11381 asdl_seq * seq;
11382 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011383 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011384 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011385 (seq = _loop0_6_rule(p)) // _loop0_6
Guido van Rossumc001c092020-04-30 12:12:19 -070011386 )
11387 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011388 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011389 goto done;
11390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011391 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011393 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011394 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011395 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011396}
11397
11398// _loop0_8: ',' expression
11399static asdl_seq *
11400_loop0_8_rule(Parser *p)
11401{
11402 if (p->error_indicator) {
11403 return NULL;
11404 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011405 void *_res = NULL;
11406 int _mark = p->mark;
11407 int _start_mark = p->mark;
11408 void **_children = PyMem_Malloc(sizeof(void *));
11409 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011410 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11411 return NULL;
11412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011413 ssize_t _children_capacity = 1;
11414 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011415 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011416 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011417 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011418 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011419 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011420 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011421 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011422 )
11423 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011424 _res = elem;
11425 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011426 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011427 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011428 return NULL;
11429 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011430 if (_n == _children_capacity) {
11431 _children_capacity *= 2;
11432 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11433 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011434 PyErr_Format(PyExc_MemoryError, "realloc None");
11435 return NULL;
11436 }
11437 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011438 _children[_n++] = _res;
11439 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011440 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011441 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011442 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011443 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11444 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011445 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_8");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011446 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011447 return NULL;
11448 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011449 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11450 PyMem_Free(_children);
11451 _PyPegen_insert_memo(p, _start_mark, _loop0_8_type, _seq);
11452 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011453}
11454
11455// _gather_7: expression _loop0_8
11456static asdl_seq *
11457_gather_7_rule(Parser *p)
11458{
11459 if (p->error_indicator) {
11460 return NULL;
11461 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011462 asdl_seq * _res = NULL;
11463 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011464 { // expression _loop0_8
11465 expr_ty elem;
11466 asdl_seq * seq;
11467 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011468 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011469 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011470 (seq = _loop0_8_rule(p)) // _loop0_8
Guido van Rossumc001c092020-04-30 12:12:19 -070011471 )
11472 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011473 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011474 goto done;
11475 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011476 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011477 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011478 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011479 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011480 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011481}
11482
11483// _loop0_10: ',' expression
11484static asdl_seq *
11485_loop0_10_rule(Parser *p)
11486{
11487 if (p->error_indicator) {
11488 return NULL;
11489 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011490 void *_res = NULL;
11491 int _mark = p->mark;
11492 int _start_mark = p->mark;
11493 void **_children = PyMem_Malloc(sizeof(void *));
11494 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011495 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11496 return NULL;
11497 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011498 ssize_t _children_capacity = 1;
11499 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011500 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011501 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011502 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011503 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011504 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011505 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011506 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011507 )
11508 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011509 _res = elem;
11510 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011511 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011512 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011513 return NULL;
11514 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011515 if (_n == _children_capacity) {
11516 _children_capacity *= 2;
11517 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11518 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011519 PyErr_Format(PyExc_MemoryError, "realloc None");
11520 return NULL;
11521 }
11522 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011523 _children[_n++] = _res;
11524 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011525 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011526 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011528 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11529 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011530 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_10");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011531 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011532 return NULL;
11533 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011534 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11535 PyMem_Free(_children);
11536 _PyPegen_insert_memo(p, _start_mark, _loop0_10_type, _seq);
11537 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011538}
11539
11540// _gather_9: expression _loop0_10
11541static asdl_seq *
11542_gather_9_rule(Parser *p)
11543{
11544 if (p->error_indicator) {
11545 return NULL;
11546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011547 asdl_seq * _res = NULL;
11548 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011549 { // expression _loop0_10
11550 expr_ty elem;
11551 asdl_seq * seq;
11552 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011553 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011554 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011555 (seq = _loop0_10_rule(p)) // _loop0_10
Guido van Rossumc001c092020-04-30 12:12:19 -070011556 )
11557 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011558 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011559 goto done;
11560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011561 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011563 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011564 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011565 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011566}
11567
11568// _loop1_11: statement
11569static asdl_seq *
11570_loop1_11_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011571{
11572 if (p->error_indicator) {
11573 return NULL;
11574 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011575 void *_res = NULL;
11576 int _mark = p->mark;
11577 int _start_mark = p->mark;
11578 void **_children = PyMem_Malloc(sizeof(void *));
11579 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011580 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11581 return NULL;
11582 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011583 ssize_t _children_capacity = 1;
11584 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011585 { // statement
11586 asdl_seq* statement_var;
11587 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010011588 (statement_var = statement_rule(p)) // statement
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011589 )
11590 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011591 _res = statement_var;
11592 if (_n == _children_capacity) {
11593 _children_capacity *= 2;
11594 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11595 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011596 PyErr_Format(PyExc_MemoryError, "realloc None");
11597 return NULL;
11598 }
11599 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011600 _children[_n++] = _res;
11601 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011603 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011604 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011605 if (_n == 0 || p->error_indicator) {
11606 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011607 return NULL;
11608 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011609 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11610 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011611 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_11");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011612 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011613 return NULL;
11614 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011615 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11616 PyMem_Free(_children);
11617 _PyPegen_insert_memo(p, _start_mark, _loop1_11_type, _seq);
11618 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011619}
11620
Guido van Rossumc001c092020-04-30 12:12:19 -070011621// _loop0_13: ';' small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011622static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070011623_loop0_13_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011624{
11625 if (p->error_indicator) {
11626 return NULL;
11627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011628 void *_res = NULL;
11629 int _mark = p->mark;
11630 int _start_mark = p->mark;
11631 void **_children = PyMem_Malloc(sizeof(void *));
11632 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011633 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11634 return NULL;
11635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011636 ssize_t _children_capacity = 1;
11637 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011638 { // ';' small_stmt
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011639 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011640 stmt_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011641 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011642 (_literal = _PyPegen_expect_token(p, 13)) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011643 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011644 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011645 )
11646 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011647 _res = elem;
11648 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011649 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011650 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011651 return NULL;
11652 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011653 if (_n == _children_capacity) {
11654 _children_capacity *= 2;
11655 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11656 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011657 PyErr_Format(PyExc_MemoryError, "realloc None");
11658 return NULL;
11659 }
11660 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011661 _children[_n++] = _res;
11662 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011664 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011665 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011666 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11667 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011668 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_13");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011669 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011670 return NULL;
11671 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011672 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11673 PyMem_Free(_children);
11674 _PyPegen_insert_memo(p, _start_mark, _loop0_13_type, _seq);
11675 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011676}
11677
Guido van Rossumc001c092020-04-30 12:12:19 -070011678// _gather_12: small_stmt _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011679static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070011680_gather_12_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011681{
11682 if (p->error_indicator) {
11683 return NULL;
11684 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011685 asdl_seq * _res = NULL;
11686 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011687 { // small_stmt _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011688 stmt_ty elem;
11689 asdl_seq * seq;
11690 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011691 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011692 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011693 (seq = _loop0_13_rule(p)) // _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011694 )
11695 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011696 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011697 goto done;
11698 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011699 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011700 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011701 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011702 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011703 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011704}
11705
Guido van Rossumc001c092020-04-30 12:12:19 -070011706// _tmp_14: 'import' | 'from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011707static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011708_tmp_14_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011709{
11710 if (p->error_indicator) {
11711 return NULL;
11712 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011713 void * _res = NULL;
11714 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011715 { // 'import'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011716 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011717 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011718 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011719 )
11720 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011721 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011722 goto done;
11723 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011724 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011725 }
11726 { // 'from'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011727 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011728 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011729 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011730 )
11731 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011732 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011733 goto done;
11734 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011735 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011736 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011737 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011738 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011739 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011740}
11741
Guido van Rossumc001c092020-04-30 12:12:19 -070011742// _tmp_15: 'def' | '@' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011743static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011744_tmp_15_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011745{
11746 if (p->error_indicator) {
11747 return NULL;
11748 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011749 void * _res = NULL;
11750 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011751 { // 'def'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011752 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011753 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011754 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011755 )
11756 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011757 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011758 goto done;
11759 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011760 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011761 }
11762 { // '@'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011763 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011764 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011765 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011766 )
11767 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011768 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011769 goto done;
11770 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011771 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011772 }
11773 { // ASYNC
Pablo Galindob796b3f2020-05-01 12:32:26 +010011774 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011775 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011776 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011777 )
11778 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011779 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011780 goto done;
11781 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011782 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011783 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011784 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011785 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011786 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011787}
11788
Guido van Rossumc001c092020-04-30 12:12:19 -070011789// _tmp_16: 'class' | '@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011790static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011791_tmp_16_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011792{
11793 if (p->error_indicator) {
11794 return NULL;
11795 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011796 void * _res = NULL;
11797 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011798 { // 'class'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011799 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011800 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011801 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011802 )
11803 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011804 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011805 goto done;
11806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011807 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011808 }
11809 { // '@'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011810 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011811 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011812 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011813 )
11814 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011815 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011816 goto done;
11817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011818 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011819 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011820 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011821 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011822 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011823}
11824
Guido van Rossumc001c092020-04-30 12:12:19 -070011825// _tmp_17: 'with' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011826static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011827_tmp_17_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011828{
11829 if (p->error_indicator) {
11830 return NULL;
11831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011832 void * _res = NULL;
11833 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011834 { // 'with'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011835 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011836 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011837 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011838 )
11839 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011840 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011841 goto done;
11842 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011843 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011844 }
11845 { // ASYNC
Pablo Galindob796b3f2020-05-01 12:32:26 +010011846 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011847 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011848 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011849 )
11850 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011851 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011852 goto done;
11853 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011854 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011856 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011857 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011858 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011859}
11860
Guido van Rossumc001c092020-04-30 12:12:19 -070011861// _tmp_18: 'for' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011862static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011863_tmp_18_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011864{
11865 if (p->error_indicator) {
11866 return NULL;
11867 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011868 void * _res = NULL;
11869 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011870 { // 'for'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011871 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011872 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011873 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011874 )
11875 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011876 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011877 goto done;
11878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011879 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011880 }
11881 { // ASYNC
Pablo Galindob796b3f2020-05-01 12:32:26 +010011882 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011883 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011884 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011885 )
11886 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011887 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011888 goto done;
11889 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011890 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011892 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011893 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011894 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011895}
11896
Guido van Rossumc001c092020-04-30 12:12:19 -070011897// _tmp_19: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011898static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011899_tmp_19_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011900{
11901 if (p->error_indicator) {
11902 return NULL;
11903 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011904 void * _res = NULL;
11905 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011906 { // '=' annotated_rhs
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011907 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011908 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011909 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011910 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011911 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011912 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011913 )
11914 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011915 _res = d;
11916 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011917 p->error_indicator = 1;
11918 return NULL;
11919 }
11920 goto done;
11921 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011922 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011924 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011925 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011926 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011927}
11928
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030011929// _tmp_20: '(' single_target ')' | single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011930static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011931_tmp_20_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011932{
11933 if (p->error_indicator) {
11934 return NULL;
11935 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011936 void * _res = NULL;
11937 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030011938 { // '(' single_target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011939 Token * _literal;
11940 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011941 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011942 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011943 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011944 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030011945 (b = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011946 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011947 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011948 )
11949 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011950 _res = b;
11951 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011952 p->error_indicator = 1;
11953 return NULL;
11954 }
11955 goto done;
11956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011957 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011958 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030011959 { // single_subscript_attribute_target
11960 expr_ty single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011961 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030011962 (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p)) // single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011963 )
11964 {
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030011965 _res = single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011966 goto done;
11967 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011968 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011969 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011970 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011971 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011972 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011973}
11974
Guido van Rossumc001c092020-04-30 12:12:19 -070011975// _tmp_21: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011976static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011977_tmp_21_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011978{
11979 if (p->error_indicator) {
11980 return NULL;
11981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011982 void * _res = NULL;
11983 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011984 { // '=' annotated_rhs
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011985 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011986 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011987 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011988 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011989 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011990 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011991 )
11992 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011993 _res = d;
11994 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011995 p->error_indicator = 1;
11996 return NULL;
11997 }
11998 goto done;
11999 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012000 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012001 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012002 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012003 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012004 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012005}
12006
Guido van Rossumc001c092020-04-30 12:12:19 -070012007// _loop1_22: (star_targets '=')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012008static asdl_seq *
12009_loop1_22_rule(Parser *p)
12010{
12011 if (p->error_indicator) {
12012 return NULL;
12013 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012014 void *_res = NULL;
12015 int _mark = p->mark;
12016 int _start_mark = p->mark;
12017 void **_children = PyMem_Malloc(sizeof(void *));
12018 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012019 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12020 return NULL;
12021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012022 ssize_t _children_capacity = 1;
12023 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012024 { // (star_targets '=')
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012025 void *_tmp_135_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012026 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012027 (_tmp_135_var = _tmp_135_rule(p)) // star_targets '='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012028 )
12029 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012030 _res = _tmp_135_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012031 if (_n == _children_capacity) {
12032 _children_capacity *= 2;
12033 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12034 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012035 PyErr_Format(PyExc_MemoryError, "realloc None");
12036 return NULL;
12037 }
12038 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012039 _children[_n++] = _res;
12040 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012041 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012042 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012043 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012044 if (_n == 0 || p->error_indicator) {
12045 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012046 return NULL;
12047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012048 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12049 if (!_seq) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012050 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_22");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012051 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012052 return NULL;
12053 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012054 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12055 PyMem_Free(_children);
12056 _PyPegen_insert_memo(p, _start_mark, _loop1_22_type, _seq);
12057 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012058}
12059
Guido van Rossumc001c092020-04-30 12:12:19 -070012060// _tmp_23: yield_expr | star_expressions
12061static void *
12062_tmp_23_rule(Parser *p)
12063{
12064 if (p->error_indicator) {
12065 return NULL;
12066 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012067 void * _res = NULL;
12068 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012069 { // yield_expr
12070 expr_ty yield_expr_var;
12071 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012072 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070012073 )
12074 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012075 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012076 goto done;
12077 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012078 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012079 }
12080 { // star_expressions
12081 expr_ty star_expressions_var;
12082 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012083 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070012084 )
12085 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012086 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012087 goto done;
12088 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012089 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012090 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012091 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012092 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012093 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012094}
12095
12096// _tmp_24: yield_expr | star_expressions
12097static void *
12098_tmp_24_rule(Parser *p)
12099{
12100 if (p->error_indicator) {
12101 return NULL;
12102 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012103 void * _res = NULL;
12104 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012105 { // yield_expr
12106 expr_ty yield_expr_var;
12107 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012108 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070012109 )
12110 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012111 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012112 goto done;
12113 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012114 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012115 }
12116 { // star_expressions
12117 expr_ty star_expressions_var;
12118 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012119 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070012120 )
12121 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012122 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012123 goto done;
12124 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012125 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012126 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012127 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012128 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012129 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012130}
12131
12132// _loop0_26: ',' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012133static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012134_loop0_26_rule(Parser *p)
12135{
12136 if (p->error_indicator) {
12137 return NULL;
12138 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012139 void *_res = NULL;
12140 int _mark = p->mark;
12141 int _start_mark = p->mark;
12142 void **_children = PyMem_Malloc(sizeof(void *));
12143 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012144 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12145 return NULL;
12146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012147 ssize_t _children_capacity = 1;
12148 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012149 { // ',' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012150 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012151 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012152 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012153 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012154 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012155 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070012156 )
12157 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012158 _res = elem;
12159 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012160 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012161 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012162 return NULL;
12163 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012164 if (_n == _children_capacity) {
12165 _children_capacity *= 2;
12166 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12167 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012168 PyErr_Format(PyExc_MemoryError, "realloc None");
12169 return NULL;
12170 }
12171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012172 _children[_n++] = _res;
12173 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012174 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012175 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012176 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012177 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12178 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012179 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_26");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012180 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012181 return NULL;
12182 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012183 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12184 PyMem_Free(_children);
12185 _PyPegen_insert_memo(p, _start_mark, _loop0_26_type, _seq);
12186 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012187}
12188
12189// _gather_25: NAME _loop0_26
12190static asdl_seq *
12191_gather_25_rule(Parser *p)
12192{
12193 if (p->error_indicator) {
12194 return NULL;
12195 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012196 asdl_seq * _res = NULL;
12197 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012198 { // NAME _loop0_26
12199 expr_ty elem;
12200 asdl_seq * seq;
12201 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012202 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070012203 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012204 (seq = _loop0_26_rule(p)) // _loop0_26
Guido van Rossumc001c092020-04-30 12:12:19 -070012205 )
12206 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012207 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012208 goto done;
12209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012210 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012211 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012212 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012213 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012214 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012215}
12216
12217// _loop0_28: ',' NAME
12218static asdl_seq *
12219_loop0_28_rule(Parser *p)
12220{
12221 if (p->error_indicator) {
12222 return NULL;
12223 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012224 void *_res = NULL;
12225 int _mark = p->mark;
12226 int _start_mark = p->mark;
12227 void **_children = PyMem_Malloc(sizeof(void *));
12228 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012229 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12230 return NULL;
12231 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012232 ssize_t _children_capacity = 1;
12233 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012234 { // ',' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012235 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012236 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012237 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012238 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012239 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012240 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070012241 )
12242 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012243 _res = elem;
12244 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012245 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012246 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012247 return NULL;
12248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012249 if (_n == _children_capacity) {
12250 _children_capacity *= 2;
12251 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12252 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012253 PyErr_Format(PyExc_MemoryError, "realloc None");
12254 return NULL;
12255 }
12256 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012257 _children[_n++] = _res;
12258 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012259 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012260 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012262 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12263 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012264 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_28");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012265 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012266 return NULL;
12267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012268 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12269 PyMem_Free(_children);
12270 _PyPegen_insert_memo(p, _start_mark, _loop0_28_type, _seq);
12271 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012272}
12273
12274// _gather_27: NAME _loop0_28
12275static asdl_seq *
12276_gather_27_rule(Parser *p)
12277{
12278 if (p->error_indicator) {
12279 return NULL;
12280 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012281 asdl_seq * _res = NULL;
12282 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012283 { // NAME _loop0_28
12284 expr_ty elem;
12285 asdl_seq * seq;
12286 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012287 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070012288 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012289 (seq = _loop0_28_rule(p)) // _loop0_28
Guido van Rossumc001c092020-04-30 12:12:19 -070012290 )
12291 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012292 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012293 goto done;
12294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012295 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012296 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012297 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012298 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012299 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012300}
12301
12302// _tmp_29: ',' expression
12303static void *
12304_tmp_29_rule(Parser *p)
12305{
12306 if (p->error_indicator) {
12307 return NULL;
12308 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012309 void * _res = NULL;
12310 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012311 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012312 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012313 expr_ty z;
12314 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012315 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012316 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012317 (z = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012318 )
12319 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012320 _res = z;
12321 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012322 p->error_indicator = 1;
12323 return NULL;
12324 }
12325 goto done;
12326 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012327 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012328 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012329 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012330 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012331 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012332}
12333
12334// _loop0_30: ('.' | '...')
12335static asdl_seq *
12336_loop0_30_rule(Parser *p)
12337{
12338 if (p->error_indicator) {
12339 return NULL;
12340 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012341 void *_res = NULL;
12342 int _mark = p->mark;
12343 int _start_mark = p->mark;
12344 void **_children = PyMem_Malloc(sizeof(void *));
12345 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012346 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12347 return NULL;
12348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012349 ssize_t _children_capacity = 1;
12350 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012351 { // ('.' | '...')
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012352 void *_tmp_136_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012353 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012354 (_tmp_136_var = _tmp_136_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070012355 )
12356 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012357 _res = _tmp_136_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012358 if (_n == _children_capacity) {
12359 _children_capacity *= 2;
12360 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12361 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012362 PyErr_Format(PyExc_MemoryError, "realloc None");
12363 return NULL;
12364 }
12365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012366 _children[_n++] = _res;
12367 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012368 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012369 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012370 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012371 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12372 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012373 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_30");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012374 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012375 return NULL;
12376 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012377 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12378 PyMem_Free(_children);
12379 _PyPegen_insert_memo(p, _start_mark, _loop0_30_type, _seq);
12380 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012381}
12382
12383// _loop1_31: ('.' | '...')
12384static asdl_seq *
12385_loop1_31_rule(Parser *p)
12386{
12387 if (p->error_indicator) {
12388 return NULL;
12389 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012390 void *_res = NULL;
12391 int _mark = p->mark;
12392 int _start_mark = p->mark;
12393 void **_children = PyMem_Malloc(sizeof(void *));
12394 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012395 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12396 return NULL;
12397 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012398 ssize_t _children_capacity = 1;
12399 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012400 { // ('.' | '...')
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012401 void *_tmp_137_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012402 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012403 (_tmp_137_var = _tmp_137_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070012404 )
12405 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012406 _res = _tmp_137_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012407 if (_n == _children_capacity) {
12408 _children_capacity *= 2;
12409 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12410 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012411 PyErr_Format(PyExc_MemoryError, "realloc None");
12412 return NULL;
12413 }
12414 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012415 _children[_n++] = _res;
12416 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012417 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012418 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012419 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012420 if (_n == 0 || p->error_indicator) {
12421 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012422 return NULL;
12423 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012424 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12425 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012426 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_31");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012427 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012428 return NULL;
12429 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012430 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12431 PyMem_Free(_children);
12432 _PyPegen_insert_memo(p, _start_mark, _loop1_31_type, _seq);
12433 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012434}
12435
12436// _loop0_33: ',' import_from_as_name
12437static asdl_seq *
12438_loop0_33_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012439{
12440 if (p->error_indicator) {
12441 return NULL;
12442 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012443 void *_res = NULL;
12444 int _mark = p->mark;
12445 int _start_mark = p->mark;
12446 void **_children = PyMem_Malloc(sizeof(void *));
12447 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012448 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12449 return NULL;
12450 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012451 ssize_t _children_capacity = 1;
12452 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012453 { // ',' import_from_as_name
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012454 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012455 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012456 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012457 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012458 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012459 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012460 )
12461 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012462 _res = elem;
12463 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012464 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012465 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012466 return NULL;
12467 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012468 if (_n == _children_capacity) {
12469 _children_capacity *= 2;
12470 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12471 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012472 PyErr_Format(PyExc_MemoryError, "realloc None");
12473 return NULL;
12474 }
12475 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012476 _children[_n++] = _res;
12477 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012478 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012479 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012481 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12482 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012483 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_33");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012484 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012485 return NULL;
12486 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012487 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12488 PyMem_Free(_children);
12489 _PyPegen_insert_memo(p, _start_mark, _loop0_33_type, _seq);
12490 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012491}
12492
Guido van Rossumc001c092020-04-30 12:12:19 -070012493// _gather_32: import_from_as_name _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012494static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012495_gather_32_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012496{
12497 if (p->error_indicator) {
12498 return NULL;
12499 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012500 asdl_seq * _res = NULL;
12501 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012502 { // import_from_as_name _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012503 alias_ty elem;
12504 asdl_seq * seq;
12505 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012506 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012507 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012508 (seq = _loop0_33_rule(p)) // _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012509 )
12510 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012511 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012512 goto done;
12513 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012514 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012516 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012517 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012518 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012519}
12520
Guido van Rossumc001c092020-04-30 12:12:19 -070012521// _tmp_34: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012522static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070012523_tmp_34_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012524{
12525 if (p->error_indicator) {
12526 return NULL;
12527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012528 void * _res = NULL;
12529 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012530 { // 'as' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012531 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012532 expr_ty z;
12533 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012534 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012535 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012536 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012537 )
12538 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012539 _res = z;
12540 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012541 p->error_indicator = 1;
12542 return NULL;
12543 }
12544 goto done;
12545 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012546 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012547 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012548 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012549 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012550 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012551}
12552
Guido van Rossumc001c092020-04-30 12:12:19 -070012553// _loop0_36: ',' dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012554static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012555_loop0_36_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012556{
12557 if (p->error_indicator) {
12558 return NULL;
12559 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012560 void *_res = NULL;
12561 int _mark = p->mark;
12562 int _start_mark = p->mark;
12563 void **_children = PyMem_Malloc(sizeof(void *));
12564 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012565 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12566 return NULL;
12567 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012568 ssize_t _children_capacity = 1;
12569 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012570 { // ',' dotted_as_name
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012571 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012572 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012573 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012574 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012575 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012576 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012577 )
12578 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012579 _res = elem;
12580 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012581 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012582 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012583 return NULL;
12584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012585 if (_n == _children_capacity) {
12586 _children_capacity *= 2;
12587 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12588 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012589 PyErr_Format(PyExc_MemoryError, "realloc None");
12590 return NULL;
12591 }
12592 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012593 _children[_n++] = _res;
12594 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012595 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012596 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012597 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012598 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12599 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012600 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_36");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012601 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012602 return NULL;
12603 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012604 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12605 PyMem_Free(_children);
12606 _PyPegen_insert_memo(p, _start_mark, _loop0_36_type, _seq);
12607 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012608}
12609
Guido van Rossumc001c092020-04-30 12:12:19 -070012610// _gather_35: dotted_as_name _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012611static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012612_gather_35_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012613{
12614 if (p->error_indicator) {
12615 return NULL;
12616 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012617 asdl_seq * _res = NULL;
12618 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012619 { // dotted_as_name _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012620 alias_ty elem;
12621 asdl_seq * seq;
12622 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012623 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012624 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012625 (seq = _loop0_36_rule(p)) // _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012626 )
12627 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012628 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012629 goto done;
12630 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012631 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012632 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012633 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012634 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012635 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012636}
12637
Guido van Rossumc001c092020-04-30 12:12:19 -070012638// _tmp_37: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012639static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070012640_tmp_37_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012641{
12642 if (p->error_indicator) {
12643 return NULL;
12644 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012645 void * _res = NULL;
12646 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012647 { // 'as' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012648 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012649 expr_ty z;
12650 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012651 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012652 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012653 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012654 )
12655 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012656 _res = z;
12657 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012658 p->error_indicator = 1;
12659 return NULL;
12660 }
12661 goto done;
12662 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012663 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012664 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012665 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012666 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012667 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012668}
12669
Guido van Rossumc001c092020-04-30 12:12:19 -070012670// _loop0_39: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012671static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012672_loop0_39_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012673{
12674 if (p->error_indicator) {
12675 return NULL;
12676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012677 void *_res = NULL;
12678 int _mark = p->mark;
12679 int _start_mark = p->mark;
12680 void **_children = PyMem_Malloc(sizeof(void *));
12681 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012682 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12683 return NULL;
12684 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012685 ssize_t _children_capacity = 1;
12686 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012687 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012688 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012689 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012690 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012691 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012692 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012693 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012694 )
12695 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012696 _res = elem;
12697 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012698 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012699 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012700 return NULL;
12701 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012702 if (_n == _children_capacity) {
12703 _children_capacity *= 2;
12704 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12705 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012706 PyErr_Format(PyExc_MemoryError, "realloc None");
12707 return NULL;
12708 }
12709 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012710 _children[_n++] = _res;
12711 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012712 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012713 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012714 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012715 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12716 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012717 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_39");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012718 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012719 return NULL;
12720 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012721 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12722 PyMem_Free(_children);
12723 _PyPegen_insert_memo(p, _start_mark, _loop0_39_type, _seq);
12724 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012725}
12726
Guido van Rossumc001c092020-04-30 12:12:19 -070012727// _gather_38: with_item _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012728static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012729_gather_38_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012730{
12731 if (p->error_indicator) {
12732 return NULL;
12733 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012734 asdl_seq * _res = NULL;
12735 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012736 { // with_item _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012737 withitem_ty elem;
12738 asdl_seq * seq;
12739 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012740 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012741 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012742 (seq = _loop0_39_rule(p)) // _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012743 )
12744 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012745 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012746 goto done;
12747 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012748 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012749 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012750 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012751 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012752 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012753}
12754
Guido van Rossumc001c092020-04-30 12:12:19 -070012755// _loop0_41: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012756static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012757_loop0_41_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012758{
12759 if (p->error_indicator) {
12760 return NULL;
12761 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012762 void *_res = NULL;
12763 int _mark = p->mark;
12764 int _start_mark = p->mark;
12765 void **_children = PyMem_Malloc(sizeof(void *));
12766 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012767 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12768 return NULL;
12769 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012770 ssize_t _children_capacity = 1;
12771 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012772 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012773 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012774 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012775 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012776 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012777 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012778 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012779 )
12780 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012781 _res = elem;
12782 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012783 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012784 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012785 return NULL;
12786 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012787 if (_n == _children_capacity) {
12788 _children_capacity *= 2;
12789 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12790 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012791 PyErr_Format(PyExc_MemoryError, "realloc None");
12792 return NULL;
12793 }
12794 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012795 _children[_n++] = _res;
12796 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012797 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012798 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012799 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012800 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12801 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012802 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_41");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012803 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012804 return NULL;
12805 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012806 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12807 PyMem_Free(_children);
12808 _PyPegen_insert_memo(p, _start_mark, _loop0_41_type, _seq);
12809 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012810}
12811
Guido van Rossumc001c092020-04-30 12:12:19 -070012812// _gather_40: with_item _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012813static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012814_gather_40_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012815{
12816 if (p->error_indicator) {
12817 return NULL;
12818 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012819 asdl_seq * _res = NULL;
12820 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012821 { // with_item _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012822 withitem_ty elem;
12823 asdl_seq * seq;
12824 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012825 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012826 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012827 (seq = _loop0_41_rule(p)) // _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012828 )
12829 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012830 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012831 goto done;
12832 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012833 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012834 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012835 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012836 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012837 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012838}
12839
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012840// _loop0_43: ',' with_item
12841static asdl_seq *
12842_loop0_43_rule(Parser *p)
12843{
12844 if (p->error_indicator) {
12845 return NULL;
12846 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012847 void *_res = NULL;
12848 int _mark = p->mark;
12849 int _start_mark = p->mark;
12850 void **_children = PyMem_Malloc(sizeof(void *));
12851 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012852 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12853 return NULL;
12854 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012855 ssize_t _children_capacity = 1;
12856 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012857 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012858 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012859 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012860 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012861 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012862 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012863 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012864 )
12865 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012866 _res = elem;
12867 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012868 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012869 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012870 return NULL;
12871 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012872 if (_n == _children_capacity) {
12873 _children_capacity *= 2;
12874 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12875 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012876 PyErr_Format(PyExc_MemoryError, "realloc None");
12877 return NULL;
12878 }
12879 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012880 _children[_n++] = _res;
12881 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012882 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012883 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012885 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12886 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012887 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_43");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012888 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012889 return NULL;
12890 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012891 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12892 PyMem_Free(_children);
12893 _PyPegen_insert_memo(p, _start_mark, _loop0_43_type, _seq);
12894 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012895}
12896
12897// _gather_42: with_item _loop0_43
12898static asdl_seq *
12899_gather_42_rule(Parser *p)
12900{
12901 if (p->error_indicator) {
12902 return NULL;
12903 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012904 asdl_seq * _res = NULL;
12905 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012906 { // with_item _loop0_43
12907 withitem_ty elem;
12908 asdl_seq * seq;
12909 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012910 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012911 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012912 (seq = _loop0_43_rule(p)) // _loop0_43
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012913 )
12914 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012915 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012916 goto done;
12917 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012918 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012919 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012920 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012921 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012922 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012923}
12924
12925// _loop0_45: ',' with_item
12926static asdl_seq *
12927_loop0_45_rule(Parser *p)
12928{
12929 if (p->error_indicator) {
12930 return NULL;
12931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012932 void *_res = NULL;
12933 int _mark = p->mark;
12934 int _start_mark = p->mark;
12935 void **_children = PyMem_Malloc(sizeof(void *));
12936 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012937 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12938 return NULL;
12939 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012940 ssize_t _children_capacity = 1;
12941 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012942 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012943 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012944 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012945 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012946 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012947 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012948 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012949 )
12950 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012951 _res = elem;
12952 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012953 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012954 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012955 return NULL;
12956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012957 if (_n == _children_capacity) {
12958 _children_capacity *= 2;
12959 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12960 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012961 PyErr_Format(PyExc_MemoryError, "realloc None");
12962 return NULL;
12963 }
12964 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012965 _children[_n++] = _res;
12966 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012967 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012968 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012969 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012970 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12971 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012972 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_45");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012973 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012974 return NULL;
12975 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012976 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12977 PyMem_Free(_children);
12978 _PyPegen_insert_memo(p, _start_mark, _loop0_45_type, _seq);
12979 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012980}
12981
12982// _gather_44: with_item _loop0_45
12983static asdl_seq *
12984_gather_44_rule(Parser *p)
12985{
12986 if (p->error_indicator) {
12987 return NULL;
12988 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012989 asdl_seq * _res = NULL;
12990 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012991 { // with_item _loop0_45
12992 withitem_ty elem;
12993 asdl_seq * seq;
12994 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012995 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012996 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012997 (seq = _loop0_45_rule(p)) // _loop0_45
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012998 )
12999 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013000 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013001 goto done;
13002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013003 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013005 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013006 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013007 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013008}
13009
13010// _tmp_46: 'as' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013011static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013012_tmp_46_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013013{
13014 if (p->error_indicator) {
13015 return NULL;
13016 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013017 void * _res = NULL;
13018 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013019 { // 'as' target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013020 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013021 expr_ty t;
13022 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013023 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013024 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013025 (t = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013026 )
13027 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013028 _res = t;
13029 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013030 p->error_indicator = 1;
13031 return NULL;
13032 }
13033 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
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013042// _loop1_47: except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013043static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013044_loop1_47_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;
13051 int _start_mark = p->mark;
13052 void **_children = PyMem_Malloc(sizeof(void *));
13053 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013054 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13055 return NULL;
13056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013057 ssize_t _children_capacity = 1;
13058 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013059 { // except_block
13060 excepthandler_ty except_block_var;
13061 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013062 (except_block_var = except_block_rule(p)) // except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013063 )
13064 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013065 _res = except_block_var;
13066 if (_n == _children_capacity) {
13067 _children_capacity *= 2;
13068 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13069 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013070 PyErr_Format(PyExc_MemoryError, "realloc None");
13071 return NULL;
13072 }
13073 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013074 _children[_n++] = _res;
13075 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013076 }
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 if (_n == 0 || p->error_indicator) {
13080 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013081 return NULL;
13082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013083 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13084 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013085 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_47");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013086 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013087 return NULL;
13088 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013089 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13090 PyMem_Free(_children);
13091 _PyPegen_insert_memo(p, _start_mark, _loop1_47_type, _seq);
13092 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013093}
13094
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013095// _tmp_48: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013096static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013097_tmp_48_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013098{
13099 if (p->error_indicator) {
13100 return NULL;
13101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013102 void * _res = NULL;
13103 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013104 { // 'as' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013105 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013106 expr_ty z;
13107 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013108 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013109 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013110 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013111 )
13112 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013113 _res = z;
13114 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013115 p->error_indicator = 1;
13116 return NULL;
13117 }
13118 goto done;
13119 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013120 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013121 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013122 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013123 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013124 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013125}
13126
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013127// _tmp_49: 'from' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013128static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013129_tmp_49_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013130{
13131 if (p->error_indicator) {
13132 return NULL;
13133 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013134 void * _res = NULL;
13135 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013136 { // 'from' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013137 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013138 expr_ty z;
13139 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013140 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013141 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013142 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013143 )
13144 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013145 _res = z;
13146 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013147 p->error_indicator = 1;
13148 return NULL;
13149 }
13150 goto done;
13151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013152 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013153 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013154 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013155 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013156 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013157}
13158
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013159// _tmp_50: '->' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013160static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013161_tmp_50_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013162{
13163 if (p->error_indicator) {
13164 return NULL;
13165 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013166 void * _res = NULL;
13167 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013168 { // '->' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013169 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070013170 expr_ty z;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013171 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013172 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013173 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013174 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013175 )
13176 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013177 _res = z;
13178 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013179 p->error_indicator = 1;
13180 return NULL;
13181 }
13182 goto done;
13183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013184 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013185 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013186 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013187 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013188 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013189}
13190
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013191// _tmp_51: '->' expression
Guido van Rossumc001c092020-04-30 12:12:19 -070013192static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013193_tmp_51_rule(Parser *p)
13194{
13195 if (p->error_indicator) {
13196 return NULL;
13197 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013198 void * _res = NULL;
13199 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013200 { // '->' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013201 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013202 expr_ty z;
13203 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013204 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013205 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013206 (z = expression_rule(p)) // expression
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013207 )
13208 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013209 _res = z;
13210 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013211 p->error_indicator = 1;
13212 return NULL;
13213 }
13214 goto done;
13215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013216 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013218 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013219 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013220 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013221}
13222
13223// _tmp_52: NEWLINE INDENT
13224static void *
13225_tmp_52_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013226{
13227 if (p->error_indicator) {
13228 return NULL;
13229 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013230 void * _res = NULL;
13231 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013232 { // NEWLINE INDENT
Pablo Galindob796b3f2020-05-01 12:32:26 +010013233 Token * indent_var;
13234 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013235 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013236 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070013237 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013238 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070013239 )
13240 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013241 _res = _PyPegen_dummy_name(p, newline_var, indent_var);
Guido van Rossumc001c092020-04-30 12:12:19 -070013242 goto done;
13243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013244 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013245 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013246 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013247 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013248 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013249}
13250
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013251// _loop0_53: param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013252static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013253_loop0_53_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013254{
13255 if (p->error_indicator) {
13256 return NULL;
13257 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013258 void *_res = NULL;
13259 int _mark = p->mark;
13260 int _start_mark = p->mark;
13261 void **_children = PyMem_Malloc(sizeof(void *));
13262 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013263 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13264 return NULL;
13265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013266 ssize_t _children_capacity = 1;
13267 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013268 { // param_no_default
13269 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013270 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013271 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013272 )
13273 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013274 _res = param_no_default_var;
13275 if (_n == _children_capacity) {
13276 _children_capacity *= 2;
13277 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13278 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013279 PyErr_Format(PyExc_MemoryError, "realloc None");
13280 return NULL;
13281 }
13282 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013283 _children[_n++] = _res;
13284 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013286 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013287 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013288 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13289 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013290 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_53");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013291 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013292 return NULL;
13293 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013294 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13295 PyMem_Free(_children);
13296 _PyPegen_insert_memo(p, _start_mark, _loop0_53_type, _seq);
13297 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013298}
13299
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013300// _loop0_54: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013301static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013302_loop0_54_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013303{
13304 if (p->error_indicator) {
13305 return NULL;
13306 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013307 void *_res = NULL;
13308 int _mark = p->mark;
13309 int _start_mark = p->mark;
13310 void **_children = PyMem_Malloc(sizeof(void *));
13311 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013312 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13313 return NULL;
13314 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013315 ssize_t _children_capacity = 1;
13316 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013317 { // param_with_default
13318 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013319 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013320 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013321 )
13322 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013323 _res = param_with_default_var;
13324 if (_n == _children_capacity) {
13325 _children_capacity *= 2;
13326 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13327 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013328 PyErr_Format(PyExc_MemoryError, "realloc None");
13329 return NULL;
13330 }
13331 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013332 _children[_n++] = _res;
13333 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013334 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013335 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013336 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013337 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13338 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013339 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_54");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013340 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013341 return NULL;
13342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013343 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13344 PyMem_Free(_children);
13345 _PyPegen_insert_memo(p, _start_mark, _loop0_54_type, _seq);
13346 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013347}
13348
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013349// _loop0_55: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013350static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013351_loop0_55_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013352{
13353 if (p->error_indicator) {
13354 return NULL;
13355 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013356 void *_res = NULL;
13357 int _mark = p->mark;
13358 int _start_mark = p->mark;
13359 void **_children = PyMem_Malloc(sizeof(void *));
13360 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013361 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13362 return NULL;
13363 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013364 ssize_t _children_capacity = 1;
13365 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013366 { // param_with_default
13367 NameDefaultPair* param_with_default_var;
13368 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013369 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013370 )
13371 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013372 _res = param_with_default_var;
13373 if (_n == _children_capacity) {
13374 _children_capacity *= 2;
13375 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13376 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013377 PyErr_Format(PyExc_MemoryError, "realloc None");
13378 return NULL;
13379 }
13380 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013381 _children[_n++] = _res;
13382 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013383 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013384 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013386 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13387 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013388 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_55");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013389 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013390 return NULL;
13391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013392 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13393 PyMem_Free(_children);
13394 _PyPegen_insert_memo(p, _start_mark, _loop0_55_type, _seq);
13395 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013396}
13397
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013398// _loop1_56: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013399static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013400_loop1_56_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013401{
13402 if (p->error_indicator) {
13403 return NULL;
13404 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013405 void *_res = NULL;
13406 int _mark = p->mark;
13407 int _start_mark = p->mark;
13408 void **_children = PyMem_Malloc(sizeof(void *));
13409 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013410 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13411 return NULL;
13412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013413 ssize_t _children_capacity = 1;
13414 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013415 { // param_no_default
13416 arg_ty param_no_default_var;
13417 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013418 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013419 )
13420 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013421 _res = param_no_default_var;
13422 if (_n == _children_capacity) {
13423 _children_capacity *= 2;
13424 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13425 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013426 PyErr_Format(PyExc_MemoryError, "realloc None");
13427 return NULL;
13428 }
13429 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013430 _children[_n++] = _res;
13431 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013432 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013433 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013435 if (_n == 0 || p->error_indicator) {
13436 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013437 return NULL;
13438 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013439 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13440 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013441 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_56");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013442 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013443 return NULL;
13444 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013445 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13446 PyMem_Free(_children);
13447 _PyPegen_insert_memo(p, _start_mark, _loop1_56_type, _seq);
13448 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013449}
13450
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013451// _loop0_57: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013452static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013453_loop0_57_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013454{
13455 if (p->error_indicator) {
13456 return NULL;
13457 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013458 void *_res = NULL;
13459 int _mark = p->mark;
13460 int _start_mark = p->mark;
13461 void **_children = PyMem_Malloc(sizeof(void *));
13462 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013463 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13464 return NULL;
13465 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013466 ssize_t _children_capacity = 1;
13467 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013468 { // param_with_default
13469 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013470 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013471 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013472 )
13473 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013474 _res = param_with_default_var;
13475 if (_n == _children_capacity) {
13476 _children_capacity *= 2;
13477 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13478 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013479 PyErr_Format(PyExc_MemoryError, "realloc None");
13480 return NULL;
13481 }
13482 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013483 _children[_n++] = _res;
13484 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013485 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013486 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013488 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13489 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013490 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_57");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013491 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013492 return NULL;
13493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013494 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13495 PyMem_Free(_children);
13496 _PyPegen_insert_memo(p, _start_mark, _loop0_57_type, _seq);
13497 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013498}
13499
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013500// _loop1_58: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013501static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013502_loop1_58_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013503{
13504 if (p->error_indicator) {
13505 return NULL;
13506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013507 void *_res = NULL;
13508 int _mark = p->mark;
13509 int _start_mark = p->mark;
13510 void **_children = PyMem_Malloc(sizeof(void *));
13511 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013512 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13513 return NULL;
13514 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013515 ssize_t _children_capacity = 1;
13516 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013517 { // param_with_default
13518 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013519 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013520 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013521 )
13522 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013523 _res = param_with_default_var;
13524 if (_n == _children_capacity) {
13525 _children_capacity *= 2;
13526 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13527 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013528 PyErr_Format(PyExc_MemoryError, "realloc None");
13529 return NULL;
13530 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013532 _children[_n++] = _res;
13533 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013534 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013535 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013536 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013537 if (_n == 0 || p->error_indicator) {
13538 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013539 return NULL;
13540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013541 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13542 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013543 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_58");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013544 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013545 return NULL;
13546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013547 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13548 PyMem_Free(_children);
13549 _PyPegen_insert_memo(p, _start_mark, _loop1_58_type, _seq);
13550 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013551}
13552
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013553// _loop1_59: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013554static asdl_seq *
13555_loop1_59_rule(Parser *p)
13556{
13557 if (p->error_indicator) {
13558 return NULL;
13559 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013560 void *_res = NULL;
13561 int _mark = p->mark;
13562 int _start_mark = p->mark;
13563 void **_children = PyMem_Malloc(sizeof(void *));
13564 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013565 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13566 return NULL;
13567 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013568 ssize_t _children_capacity = 1;
13569 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013570 { // param_no_default
13571 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013572 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013573 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013574 )
13575 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013576 _res = param_no_default_var;
13577 if (_n == _children_capacity) {
13578 _children_capacity *= 2;
13579 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13580 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013581 PyErr_Format(PyExc_MemoryError, "realloc None");
13582 return NULL;
13583 }
13584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013585 _children[_n++] = _res;
13586 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013587 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013588 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013590 if (_n == 0 || p->error_indicator) {
13591 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013592 return NULL;
13593 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013594 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13595 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013596 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_59");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013597 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013598 return NULL;
13599 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013600 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13601 PyMem_Free(_children);
13602 _PyPegen_insert_memo(p, _start_mark, _loop1_59_type, _seq);
13603 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013604}
13605
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013606// _loop1_60: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013607static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013608_loop1_60_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013609{
13610 if (p->error_indicator) {
13611 return NULL;
13612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013613 void *_res = NULL;
13614 int _mark = p->mark;
13615 int _start_mark = p->mark;
13616 void **_children = PyMem_Malloc(sizeof(void *));
13617 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013618 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13619 return NULL;
13620 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013621 ssize_t _children_capacity = 1;
13622 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013623 { // param_no_default
13624 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013625 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013626 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013627 )
13628 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013629 _res = param_no_default_var;
13630 if (_n == _children_capacity) {
13631 _children_capacity *= 2;
13632 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13633 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013634 PyErr_Format(PyExc_MemoryError, "realloc None");
13635 return NULL;
13636 }
13637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013638 _children[_n++] = _res;
13639 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013640 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013641 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013642 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013643 if (_n == 0 || p->error_indicator) {
13644 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013645 return NULL;
13646 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013647 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13648 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013649 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_60");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013650 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013651 return NULL;
13652 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013653 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13654 PyMem_Free(_children);
13655 _PyPegen_insert_memo(p, _start_mark, _loop1_60_type, _seq);
13656 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013657}
13658
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013659// _loop0_61: param_no_default
13660static asdl_seq *
13661_loop0_61_rule(Parser *p)
13662{
13663 if (p->error_indicator) {
13664 return NULL;
13665 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013666 void *_res = NULL;
13667 int _mark = p->mark;
13668 int _start_mark = p->mark;
13669 void **_children = PyMem_Malloc(sizeof(void *));
13670 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013671 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13672 return NULL;
13673 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013674 ssize_t _children_capacity = 1;
13675 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013676 { // param_no_default
13677 arg_ty param_no_default_var;
13678 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013679 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013680 )
13681 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013682 _res = param_no_default_var;
13683 if (_n == _children_capacity) {
13684 _children_capacity *= 2;
13685 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13686 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013687 PyErr_Format(PyExc_MemoryError, "realloc None");
13688 return NULL;
13689 }
13690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013691 _children[_n++] = _res;
13692 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013694 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013695 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013696 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13697 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013698 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_61");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013699 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013700 return NULL;
13701 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013702 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13703 PyMem_Free(_children);
13704 _PyPegen_insert_memo(p, _start_mark, _loop0_61_type, _seq);
13705 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013706}
13707
13708// _loop1_62: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013709static asdl_seq *
13710_loop1_62_rule(Parser *p)
13711{
13712 if (p->error_indicator) {
13713 return NULL;
13714 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013715 void *_res = NULL;
13716 int _mark = p->mark;
13717 int _start_mark = p->mark;
13718 void **_children = PyMem_Malloc(sizeof(void *));
13719 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013720 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13721 return NULL;
13722 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013723 ssize_t _children_capacity = 1;
13724 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013725 { // param_with_default
13726 NameDefaultPair* param_with_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013727 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013728 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013729 )
13730 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013731 _res = param_with_default_var;
13732 if (_n == _children_capacity) {
13733 _children_capacity *= 2;
13734 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13735 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013736 PyErr_Format(PyExc_MemoryError, "realloc None");
13737 return NULL;
13738 }
13739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013740 _children[_n++] = _res;
13741 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013743 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013744 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013745 if (_n == 0 || p->error_indicator) {
13746 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013747 return NULL;
13748 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013749 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13750 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013751 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_62");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013752 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013753 return NULL;
13754 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013755 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13756 PyMem_Free(_children);
13757 _PyPegen_insert_memo(p, _start_mark, _loop1_62_type, _seq);
13758 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013759}
13760
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013761// _loop0_63: param_no_default
13762static asdl_seq *
13763_loop0_63_rule(Parser *p)
13764{
13765 if (p->error_indicator) {
13766 return NULL;
13767 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013768 void *_res = NULL;
13769 int _mark = p->mark;
13770 int _start_mark = p->mark;
13771 void **_children = PyMem_Malloc(sizeof(void *));
13772 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013773 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13774 return NULL;
13775 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013776 ssize_t _children_capacity = 1;
13777 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013778 { // param_no_default
13779 arg_ty param_no_default_var;
13780 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013781 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013782 )
13783 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013784 _res = param_no_default_var;
13785 if (_n == _children_capacity) {
13786 _children_capacity *= 2;
13787 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13788 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013789 PyErr_Format(PyExc_MemoryError, "realloc None");
13790 return NULL;
13791 }
13792 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013793 _children[_n++] = _res;
13794 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013795 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013796 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013797 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013798 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13799 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013800 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_63");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013801 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013802 return NULL;
13803 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013804 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13805 PyMem_Free(_children);
13806 _PyPegen_insert_memo(p, _start_mark, _loop0_63_type, _seq);
13807 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013808}
13809
13810// _loop1_64: param_with_default
13811static asdl_seq *
13812_loop1_64_rule(Parser *p)
13813{
13814 if (p->error_indicator) {
13815 return NULL;
13816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013817 void *_res = NULL;
13818 int _mark = p->mark;
13819 int _start_mark = p->mark;
13820 void **_children = PyMem_Malloc(sizeof(void *));
13821 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013822 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13823 return NULL;
13824 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013825 ssize_t _children_capacity = 1;
13826 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013827 { // param_with_default
13828 NameDefaultPair* param_with_default_var;
13829 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013830 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013831 )
13832 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013833 _res = param_with_default_var;
13834 if (_n == _children_capacity) {
13835 _children_capacity *= 2;
13836 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13837 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013838 PyErr_Format(PyExc_MemoryError, "realloc None");
13839 return NULL;
13840 }
13841 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013842 _children[_n++] = _res;
13843 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013844 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013845 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013846 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013847 if (_n == 0 || p->error_indicator) {
13848 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013849 return NULL;
13850 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013851 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13852 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013853 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_64");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013854 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013855 return NULL;
13856 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013857 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13858 PyMem_Free(_children);
13859 _PyPegen_insert_memo(p, _start_mark, _loop1_64_type, _seq);
13860 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013861}
13862
13863// _loop0_65: param_maybe_default
13864static asdl_seq *
13865_loop0_65_rule(Parser *p)
13866{
13867 if (p->error_indicator) {
13868 return NULL;
13869 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013870 void *_res = NULL;
13871 int _mark = p->mark;
13872 int _start_mark = p->mark;
13873 void **_children = PyMem_Malloc(sizeof(void *));
13874 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013875 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13876 return NULL;
13877 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013878 ssize_t _children_capacity = 1;
13879 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013880 { // param_maybe_default
13881 NameDefaultPair* param_maybe_default_var;
13882 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013883 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013884 )
13885 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013886 _res = param_maybe_default_var;
13887 if (_n == _children_capacity) {
13888 _children_capacity *= 2;
13889 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13890 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013891 PyErr_Format(PyExc_MemoryError, "realloc None");
13892 return NULL;
13893 }
13894 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013895 _children[_n++] = _res;
13896 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013897 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013898 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013899 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013900 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13901 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013902 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_65");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013903 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013904 return NULL;
13905 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013906 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13907 PyMem_Free(_children);
13908 _PyPegen_insert_memo(p, _start_mark, _loop0_65_type, _seq);
13909 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013910}
13911
13912// _loop1_66: param_maybe_default
13913static asdl_seq *
13914_loop1_66_rule(Parser *p)
13915{
13916 if (p->error_indicator) {
13917 return NULL;
13918 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013919 void *_res = NULL;
13920 int _mark = p->mark;
13921 int _start_mark = p->mark;
13922 void **_children = PyMem_Malloc(sizeof(void *));
13923 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013924 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13925 return NULL;
13926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013927 ssize_t _children_capacity = 1;
13928 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013929 { // param_maybe_default
13930 NameDefaultPair* param_maybe_default_var;
13931 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013932 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013933 )
13934 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013935 _res = param_maybe_default_var;
13936 if (_n == _children_capacity) {
13937 _children_capacity *= 2;
13938 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13939 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013940 PyErr_Format(PyExc_MemoryError, "realloc None");
13941 return NULL;
13942 }
13943 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013944 _children[_n++] = _res;
13945 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013946 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013947 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013948 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013949 if (_n == 0 || p->error_indicator) {
13950 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013951 return NULL;
13952 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013953 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13954 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013955 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_66");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013956 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013957 return NULL;
13958 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013959 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13960 PyMem_Free(_children);
13961 _PyPegen_insert_memo(p, _start_mark, _loop1_66_type, _seq);
13962 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013963}
13964
13965// _loop1_67: ('@' named_expression NEWLINE)
13966static asdl_seq *
13967_loop1_67_rule(Parser *p)
13968{
13969 if (p->error_indicator) {
13970 return NULL;
13971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013972 void *_res = NULL;
13973 int _mark = p->mark;
13974 int _start_mark = p->mark;
13975 void **_children = PyMem_Malloc(sizeof(void *));
13976 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013977 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13978 return NULL;
13979 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013980 ssize_t _children_capacity = 1;
13981 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013982 { // ('@' named_expression NEWLINE)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013983 void *_tmp_138_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013984 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013985 (_tmp_138_var = _tmp_138_rule(p)) // '@' named_expression NEWLINE
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013986 )
13987 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013988 _res = _tmp_138_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013989 if (_n == _children_capacity) {
13990 _children_capacity *= 2;
13991 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13992 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013993 PyErr_Format(PyExc_MemoryError, "realloc None");
13994 return NULL;
13995 }
13996 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013997 _children[_n++] = _res;
13998 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013999 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014000 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014001 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014002 if (_n == 0 || p->error_indicator) {
14003 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014004 return NULL;
14005 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014006 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14007 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014008 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_67");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014009 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014010 return NULL;
14011 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014012 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14013 PyMem_Free(_children);
14014 _PyPegen_insert_memo(p, _start_mark, _loop1_67_type, _seq);
14015 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014016}
14017
14018// _tmp_68: '(' arguments? ')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014019static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014020_tmp_68_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014021{
14022 if (p->error_indicator) {
14023 return NULL;
14024 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014025 void * _res = NULL;
14026 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014027 { // '(' arguments? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014028 Token * _literal;
14029 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014030 void *z;
14031 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014032 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014033 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014034 (z = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014035 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014036 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014037 )
14038 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014039 _res = z;
14040 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014041 p->error_indicator = 1;
14042 return NULL;
14043 }
14044 goto done;
14045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014046 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014048 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014049 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014050 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014051}
14052
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014053// _loop0_70: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014054static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014055_loop0_70_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014056{
14057 if (p->error_indicator) {
14058 return NULL;
14059 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014060 void *_res = NULL;
14061 int _mark = p->mark;
14062 int _start_mark = p->mark;
14063 void **_children = PyMem_Malloc(sizeof(void *));
14064 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014065 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14066 return NULL;
14067 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014068 ssize_t _children_capacity = 1;
14069 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014070 { // ',' star_expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014071 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014072 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014073 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014074 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014075 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014076 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014077 )
14078 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014079 _res = elem;
14080 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014081 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014082 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014083 return NULL;
14084 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014085 if (_n == _children_capacity) {
14086 _children_capacity *= 2;
14087 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14088 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014089 PyErr_Format(PyExc_MemoryError, "realloc None");
14090 return NULL;
14091 }
14092 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014093 _children[_n++] = _res;
14094 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014096 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014097 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014098 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14099 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014100 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_70");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014101 PyMem_Free(_children);
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_70_type, _seq);
14107 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014108}
14109
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014110// _gather_69: star_expression _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014111static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014112_gather_69_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;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014119 { // star_expression _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014120 expr_ty elem;
14121 asdl_seq * seq;
14122 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014123 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014124 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014125 (seq = _loop0_70_rule(p)) // _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014126 )
14127 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014128 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014129 goto done;
14130 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014131 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014133 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014134 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014135 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014136}
14137
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014138// _loop1_71: (',' star_expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014139static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014140_loop1_71_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014141{
14142 if (p->error_indicator) {
14143 return NULL;
14144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014145 void *_res = NULL;
14146 int _mark = p->mark;
14147 int _start_mark = p->mark;
14148 void **_children = PyMem_Malloc(sizeof(void *));
14149 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014150 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14151 return NULL;
14152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014153 ssize_t _children_capacity = 1;
14154 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014155 { // (',' star_expression)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014156 void *_tmp_139_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014157 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014158 (_tmp_139_var = _tmp_139_rule(p)) // ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014159 )
14160 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014161 _res = _tmp_139_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014162 if (_n == _children_capacity) {
14163 _children_capacity *= 2;
14164 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14165 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014166 PyErr_Format(PyExc_MemoryError, "realloc None");
14167 return NULL;
14168 }
14169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014170 _children[_n++] = _res;
14171 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014172 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014173 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014174 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014175 if (_n == 0 || p->error_indicator) {
14176 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014177 return NULL;
14178 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014179 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14180 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014181 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_71");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014182 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014183 return NULL;
14184 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014185 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14186 PyMem_Free(_children);
14187 _PyPegen_insert_memo(p, _start_mark, _loop1_71_type, _seq);
14188 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014189}
14190
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014191// _loop0_73: ',' star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014192static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014193_loop0_73_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014194{
14195 if (p->error_indicator) {
14196 return NULL;
14197 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014198 void *_res = NULL;
14199 int _mark = p->mark;
14200 int _start_mark = p->mark;
14201 void **_children = PyMem_Malloc(sizeof(void *));
14202 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014203 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14204 return NULL;
14205 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014206 ssize_t _children_capacity = 1;
14207 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014208 { // ',' star_named_expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014209 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014210 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014211 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014212 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014213 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014214 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014215 )
14216 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014217 _res = elem;
14218 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014219 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014220 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014221 return NULL;
14222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014223 if (_n == _children_capacity) {
14224 _children_capacity *= 2;
14225 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14226 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014227 PyErr_Format(PyExc_MemoryError, "realloc None");
14228 return NULL;
14229 }
14230 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014231 _children[_n++] = _res;
14232 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014233 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014234 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014235 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014236 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14237 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014238 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_73");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014239 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014240 return NULL;
14241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014242 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14243 PyMem_Free(_children);
14244 _PyPegen_insert_memo(p, _start_mark, _loop0_73_type, _seq);
14245 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014246}
14247
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014248// _gather_72: star_named_expression _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014249static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014250_gather_72_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014251{
14252 if (p->error_indicator) {
14253 return NULL;
14254 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014255 asdl_seq * _res = NULL;
14256 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014257 { // star_named_expression _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014258 expr_ty elem;
14259 asdl_seq * seq;
14260 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014261 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014262 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014263 (seq = _loop0_73_rule(p)) // _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014264 )
14265 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014266 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014267 goto done;
14268 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014269 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014270 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014271 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014272 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014273 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014274}
14275
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014276// _loop1_74: (',' expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014277static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014278_loop1_74_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014279{
14280 if (p->error_indicator) {
14281 return NULL;
14282 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014283 void *_res = NULL;
14284 int _mark = p->mark;
14285 int _start_mark = p->mark;
14286 void **_children = PyMem_Malloc(sizeof(void *));
14287 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014288 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14289 return NULL;
14290 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014291 ssize_t _children_capacity = 1;
14292 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014293 { // (',' expression)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014294 void *_tmp_140_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014295 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014296 (_tmp_140_var = _tmp_140_rule(p)) // ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014297 )
14298 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014299 _res = _tmp_140_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014300 if (_n == _children_capacity) {
14301 _children_capacity *= 2;
14302 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14303 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014304 PyErr_Format(PyExc_MemoryError, "realloc None");
14305 return NULL;
14306 }
14307 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014308 _children[_n++] = _res;
14309 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014310 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014311 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014312 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014313 if (_n == 0 || p->error_indicator) {
14314 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014315 return NULL;
14316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014317 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14318 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014319 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_74");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014320 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014321 return NULL;
14322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014323 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14324 PyMem_Free(_children);
14325 _PyPegen_insert_memo(p, _start_mark, _loop1_74_type, _seq);
14326 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014327}
14328
Guido van Rossum3941d972020-05-01 09:42:03 -070014329// _loop0_75: lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014330static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070014331_loop0_75_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014332{
14333 if (p->error_indicator) {
14334 return NULL;
14335 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014336 void *_res = NULL;
14337 int _mark = p->mark;
14338 int _start_mark = p->mark;
14339 void **_children = PyMem_Malloc(sizeof(void *));
14340 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014341 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14342 return NULL;
14343 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014344 ssize_t _children_capacity = 1;
14345 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014346 { // lambda_param_no_default
14347 arg_ty lambda_param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014348 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014349 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014350 )
14351 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014352 _res = lambda_param_no_default_var;
14353 if (_n == _children_capacity) {
14354 _children_capacity *= 2;
14355 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14356 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014357 PyErr_Format(PyExc_MemoryError, "realloc None");
14358 return NULL;
14359 }
14360 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014361 _children[_n++] = _res;
14362 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014363 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014364 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014366 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14367 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014368 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_75");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014369 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014370 return NULL;
14371 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014372 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14373 PyMem_Free(_children);
14374 _PyPegen_insert_memo(p, _start_mark, _loop0_75_type, _seq);
14375 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014376}
14377
Guido van Rossum3941d972020-05-01 09:42:03 -070014378// _loop0_76: lambda_param_with_default
14379static asdl_seq *
14380_loop0_76_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014381{
14382 if (p->error_indicator) {
14383 return NULL;
14384 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014385 void *_res = NULL;
14386 int _mark = p->mark;
14387 int _start_mark = p->mark;
14388 void **_children = PyMem_Malloc(sizeof(void *));
14389 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014390 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14391 return NULL;
14392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014393 ssize_t _children_capacity = 1;
14394 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014395 { // lambda_param_with_default
14396 NameDefaultPair* lambda_param_with_default_var;
14397 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014398 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014399 )
14400 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014401 _res = lambda_param_with_default_var;
14402 if (_n == _children_capacity) {
14403 _children_capacity *= 2;
14404 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14405 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014406 PyErr_Format(PyExc_MemoryError, "realloc None");
14407 return NULL;
14408 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014409 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014410 _children[_n++] = _res;
14411 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014413 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014414 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014415 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14416 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014417 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_76");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014418 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014419 return NULL;
14420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014421 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14422 PyMem_Free(_children);
14423 _PyPegen_insert_memo(p, _start_mark, _loop0_76_type, _seq);
14424 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014425}
14426
Guido van Rossum3941d972020-05-01 09:42:03 -070014427// _loop0_77: lambda_param_with_default
14428static asdl_seq *
14429_loop0_77_rule(Parser *p)
14430{
14431 if (p->error_indicator) {
14432 return NULL;
14433 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014434 void *_res = NULL;
14435 int _mark = p->mark;
14436 int _start_mark = p->mark;
14437 void **_children = PyMem_Malloc(sizeof(void *));
14438 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014439 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14440 return NULL;
14441 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014442 ssize_t _children_capacity = 1;
14443 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014444 { // lambda_param_with_default
14445 NameDefaultPair* lambda_param_with_default_var;
14446 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014447 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014448 )
14449 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014450 _res = lambda_param_with_default_var;
14451 if (_n == _children_capacity) {
14452 _children_capacity *= 2;
14453 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14454 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014455 PyErr_Format(PyExc_MemoryError, "realloc None");
14456 return NULL;
14457 }
14458 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014459 _children[_n++] = _res;
14460 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014461 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014462 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014463 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014464 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14465 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014466 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_77");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014467 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014468 return NULL;
14469 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014470 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14471 PyMem_Free(_children);
14472 _PyPegen_insert_memo(p, _start_mark, _loop0_77_type, _seq);
14473 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014474}
14475
14476// _loop1_78: lambda_param_no_default
14477static asdl_seq *
14478_loop1_78_rule(Parser *p)
14479{
14480 if (p->error_indicator) {
14481 return NULL;
14482 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014483 void *_res = NULL;
14484 int _mark = p->mark;
14485 int _start_mark = p->mark;
14486 void **_children = PyMem_Malloc(sizeof(void *));
14487 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014488 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14489 return NULL;
14490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014491 ssize_t _children_capacity = 1;
14492 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014493 { // lambda_param_no_default
14494 arg_ty lambda_param_no_default_var;
14495 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014496 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014497 )
14498 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014499 _res = lambda_param_no_default_var;
14500 if (_n == _children_capacity) {
14501 _children_capacity *= 2;
14502 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14503 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014504 PyErr_Format(PyExc_MemoryError, "realloc None");
14505 return NULL;
14506 }
14507 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014508 _children[_n++] = _res;
14509 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014510 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014511 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014512 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014513 if (_n == 0 || p->error_indicator) {
14514 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014515 return NULL;
14516 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014517 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14518 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014519 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_78");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014520 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014521 return NULL;
14522 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014523 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14524 PyMem_Free(_children);
14525 _PyPegen_insert_memo(p, _start_mark, _loop1_78_type, _seq);
14526 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014527}
14528
14529// _loop0_79: lambda_param_with_default
14530static asdl_seq *
14531_loop0_79_rule(Parser *p)
14532{
14533 if (p->error_indicator) {
14534 return NULL;
14535 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014536 void *_res = NULL;
14537 int _mark = p->mark;
14538 int _start_mark = p->mark;
14539 void **_children = PyMem_Malloc(sizeof(void *));
14540 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014541 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14542 return NULL;
14543 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014544 ssize_t _children_capacity = 1;
14545 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014546 { // lambda_param_with_default
14547 NameDefaultPair* lambda_param_with_default_var;
14548 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014549 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014550 )
14551 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014552 _res = lambda_param_with_default_var;
14553 if (_n == _children_capacity) {
14554 _children_capacity *= 2;
14555 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14556 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014557 PyErr_Format(PyExc_MemoryError, "realloc None");
14558 return NULL;
14559 }
14560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014561 _children[_n++] = _res;
14562 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014563 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014564 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014566 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14567 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014568 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_79");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014569 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014570 return NULL;
14571 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014572 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14573 PyMem_Free(_children);
14574 _PyPegen_insert_memo(p, _start_mark, _loop0_79_type, _seq);
14575 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014576}
14577
14578// _loop1_80: lambda_param_with_default
14579static asdl_seq *
14580_loop1_80_rule(Parser *p)
14581{
14582 if (p->error_indicator) {
14583 return NULL;
14584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014585 void *_res = NULL;
14586 int _mark = p->mark;
14587 int _start_mark = p->mark;
14588 void **_children = PyMem_Malloc(sizeof(void *));
14589 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014590 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14591 return NULL;
14592 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014593 ssize_t _children_capacity = 1;
14594 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014595 { // lambda_param_with_default
14596 NameDefaultPair* lambda_param_with_default_var;
14597 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014598 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014599 )
14600 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014601 _res = lambda_param_with_default_var;
14602 if (_n == _children_capacity) {
14603 _children_capacity *= 2;
14604 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14605 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014606 PyErr_Format(PyExc_MemoryError, "realloc None");
14607 return NULL;
14608 }
14609 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014610 _children[_n++] = _res;
14611 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014613 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014614 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014615 if (_n == 0 || p->error_indicator) {
14616 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014617 return NULL;
14618 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014619 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14620 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014621 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_80");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014622 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014623 return NULL;
14624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014625 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14626 PyMem_Free(_children);
14627 _PyPegen_insert_memo(p, _start_mark, _loop1_80_type, _seq);
14628 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014629}
14630
14631// _loop1_81: lambda_param_no_default
14632static asdl_seq *
14633_loop1_81_rule(Parser *p)
14634{
14635 if (p->error_indicator) {
14636 return NULL;
14637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014638 void *_res = NULL;
14639 int _mark = p->mark;
14640 int _start_mark = p->mark;
14641 void **_children = PyMem_Malloc(sizeof(void *));
14642 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014643 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14644 return NULL;
14645 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014646 ssize_t _children_capacity = 1;
14647 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014648 { // lambda_param_no_default
14649 arg_ty lambda_param_no_default_var;
14650 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014651 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014652 )
14653 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014654 _res = lambda_param_no_default_var;
14655 if (_n == _children_capacity) {
14656 _children_capacity *= 2;
14657 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14658 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014659 PyErr_Format(PyExc_MemoryError, "realloc None");
14660 return NULL;
14661 }
14662 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014663 _children[_n++] = _res;
14664 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014665 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014666 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014668 if (_n == 0 || p->error_indicator) {
14669 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014670 return NULL;
14671 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014672 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14673 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014674 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_81");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014675 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014676 return NULL;
14677 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014678 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14679 PyMem_Free(_children);
14680 _PyPegen_insert_memo(p, _start_mark, _loop1_81_type, _seq);
14681 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014682}
14683
14684// _loop1_82: lambda_param_no_default
14685static asdl_seq *
14686_loop1_82_rule(Parser *p)
14687{
14688 if (p->error_indicator) {
14689 return NULL;
14690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014691 void *_res = NULL;
14692 int _mark = p->mark;
14693 int _start_mark = p->mark;
14694 void **_children = PyMem_Malloc(sizeof(void *));
14695 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014696 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14697 return NULL;
14698 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014699 ssize_t _children_capacity = 1;
14700 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014701 { // lambda_param_no_default
14702 arg_ty lambda_param_no_default_var;
14703 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014704 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014705 )
14706 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014707 _res = lambda_param_no_default_var;
14708 if (_n == _children_capacity) {
14709 _children_capacity *= 2;
14710 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14711 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014712 PyErr_Format(PyExc_MemoryError, "realloc None");
14713 return NULL;
14714 }
14715 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014716 _children[_n++] = _res;
14717 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014718 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014719 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014720 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014721 if (_n == 0 || p->error_indicator) {
14722 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014723 return NULL;
14724 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014725 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14726 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014727 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_82");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014728 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014729 return NULL;
14730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014731 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14732 PyMem_Free(_children);
14733 _PyPegen_insert_memo(p, _start_mark, _loop1_82_type, _seq);
14734 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014735}
14736
14737// _loop0_83: lambda_param_no_default
14738static asdl_seq *
14739_loop0_83_rule(Parser *p)
14740{
14741 if (p->error_indicator) {
14742 return NULL;
14743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014744 void *_res = NULL;
14745 int _mark = p->mark;
14746 int _start_mark = p->mark;
14747 void **_children = PyMem_Malloc(sizeof(void *));
14748 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014749 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14750 return NULL;
14751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014752 ssize_t _children_capacity = 1;
14753 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014754 { // lambda_param_no_default
14755 arg_ty lambda_param_no_default_var;
14756 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014757 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014758 )
14759 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014760 _res = lambda_param_no_default_var;
14761 if (_n == _children_capacity) {
14762 _children_capacity *= 2;
14763 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14764 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014765 PyErr_Format(PyExc_MemoryError, "realloc None");
14766 return NULL;
14767 }
14768 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014769 _children[_n++] = _res;
14770 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014771 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014772 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014774 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14775 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014776 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_83");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014777 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014778 return NULL;
14779 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014780 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14781 PyMem_Free(_children);
14782 _PyPegen_insert_memo(p, _start_mark, _loop0_83_type, _seq);
14783 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014784}
14785
14786// _loop1_84: lambda_param_with_default
14787static asdl_seq *
14788_loop1_84_rule(Parser *p)
14789{
14790 if (p->error_indicator) {
14791 return NULL;
14792 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014793 void *_res = NULL;
14794 int _mark = p->mark;
14795 int _start_mark = p->mark;
14796 void **_children = PyMem_Malloc(sizeof(void *));
14797 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014798 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14799 return NULL;
14800 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014801 ssize_t _children_capacity = 1;
14802 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014803 { // lambda_param_with_default
14804 NameDefaultPair* lambda_param_with_default_var;
14805 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014806 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014807 )
14808 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014809 _res = lambda_param_with_default_var;
14810 if (_n == _children_capacity) {
14811 _children_capacity *= 2;
14812 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14813 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014814 PyErr_Format(PyExc_MemoryError, "realloc None");
14815 return NULL;
14816 }
14817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014818 _children[_n++] = _res;
14819 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014820 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014821 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014822 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014823 if (_n == 0 || p->error_indicator) {
14824 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014825 return NULL;
14826 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014827 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14828 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014829 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_84");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014830 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014831 return NULL;
14832 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014833 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14834 PyMem_Free(_children);
14835 _PyPegen_insert_memo(p, _start_mark, _loop1_84_type, _seq);
14836 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014837}
14838
14839// _loop0_85: lambda_param_no_default
14840static asdl_seq *
14841_loop0_85_rule(Parser *p)
14842{
14843 if (p->error_indicator) {
14844 return NULL;
14845 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014846 void *_res = NULL;
14847 int _mark = p->mark;
14848 int _start_mark = p->mark;
14849 void **_children = PyMem_Malloc(sizeof(void *));
14850 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014851 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14852 return NULL;
14853 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014854 ssize_t _children_capacity = 1;
14855 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014856 { // lambda_param_no_default
14857 arg_ty lambda_param_no_default_var;
14858 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014859 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014860 )
14861 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014862 _res = lambda_param_no_default_var;
14863 if (_n == _children_capacity) {
14864 _children_capacity *= 2;
14865 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14866 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014867 PyErr_Format(PyExc_MemoryError, "realloc None");
14868 return NULL;
14869 }
14870 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014871 _children[_n++] = _res;
14872 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014873 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014874 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014876 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14877 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014878 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_85");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014879 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014880 return NULL;
14881 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014882 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14883 PyMem_Free(_children);
14884 _PyPegen_insert_memo(p, _start_mark, _loop0_85_type, _seq);
14885 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014886}
14887
14888// _loop1_86: lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014889static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014890_loop1_86_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014891{
14892 if (p->error_indicator) {
14893 return NULL;
14894 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014895 void *_res = NULL;
14896 int _mark = p->mark;
14897 int _start_mark = p->mark;
14898 void **_children = PyMem_Malloc(sizeof(void *));
14899 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014900 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14901 return NULL;
14902 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014903 ssize_t _children_capacity = 1;
14904 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014905 { // lambda_param_with_default
14906 NameDefaultPair* lambda_param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014907 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014908 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014909 )
14910 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014911 _res = lambda_param_with_default_var;
14912 if (_n == _children_capacity) {
14913 _children_capacity *= 2;
14914 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14915 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014916 PyErr_Format(PyExc_MemoryError, "realloc None");
14917 return NULL;
14918 }
14919 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014920 _children[_n++] = _res;
14921 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014922 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014923 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014924 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014925 if (_n == 0 || p->error_indicator) {
14926 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014927 return NULL;
14928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014929 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14930 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014931 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_86");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014932 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014933 return NULL;
14934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014935 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14936 PyMem_Free(_children);
14937 _PyPegen_insert_memo(p, _start_mark, _loop1_86_type, _seq);
14938 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014939}
14940
Guido van Rossum3941d972020-05-01 09:42:03 -070014941// _loop0_87: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014942static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070014943_loop0_87_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014944{
14945 if (p->error_indicator) {
14946 return NULL;
14947 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014948 void *_res = NULL;
14949 int _mark = p->mark;
14950 int _start_mark = p->mark;
14951 void **_children = PyMem_Malloc(sizeof(void *));
14952 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014953 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14954 return NULL;
14955 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014956 ssize_t _children_capacity = 1;
14957 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014958 { // lambda_param_maybe_default
14959 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014960 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014961 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014962 )
14963 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014964 _res = lambda_param_maybe_default_var;
14965 if (_n == _children_capacity) {
14966 _children_capacity *= 2;
14967 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14968 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014969 PyErr_Format(PyExc_MemoryError, "realloc None");
14970 return NULL;
14971 }
14972 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014973 _children[_n++] = _res;
14974 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014975 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014976 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014978 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14979 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014980 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_87");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014981 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014982 return NULL;
14983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014984 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14985 PyMem_Free(_children);
14986 _PyPegen_insert_memo(p, _start_mark, _loop0_87_type, _seq);
14987 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014988}
14989
Guido van Rossum3941d972020-05-01 09:42:03 -070014990// _loop1_88: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014991static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070014992_loop1_88_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014993{
14994 if (p->error_indicator) {
14995 return NULL;
14996 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014997 void *_res = NULL;
14998 int _mark = p->mark;
14999 int _start_mark = p->mark;
15000 void **_children = PyMem_Malloc(sizeof(void *));
15001 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015002 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15003 return NULL;
15004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015005 ssize_t _children_capacity = 1;
15006 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070015007 { // lambda_param_maybe_default
15008 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015009 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015010 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015011 )
15012 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015013 _res = lambda_param_maybe_default_var;
15014 if (_n == _children_capacity) {
15015 _children_capacity *= 2;
15016 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15017 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015018 PyErr_Format(PyExc_MemoryError, "realloc None");
15019 return NULL;
15020 }
15021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015022 _children[_n++] = _res;
15023 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015024 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015025 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015026 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015027 if (_n == 0 || p->error_indicator) {
15028 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070015029 return NULL;
15030 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015031 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15032 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015033 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_88");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015034 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015035 return NULL;
15036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015037 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15038 PyMem_Free(_children);
15039 _PyPegen_insert_memo(p, _start_mark, _loop1_88_type, _seq);
15040 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015041}
15042
Guido van Rossum3941d972020-05-01 09:42:03 -070015043// _loop1_89: ('or' conjunction)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015044static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015045_loop1_89_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015046{
15047 if (p->error_indicator) {
15048 return NULL;
15049 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015050 void *_res = NULL;
15051 int _mark = p->mark;
15052 int _start_mark = p->mark;
15053 void **_children = PyMem_Malloc(sizeof(void *));
15054 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015055 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15056 return NULL;
15057 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015058 ssize_t _children_capacity = 1;
15059 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015060 { // ('or' conjunction)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015061 void *_tmp_141_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015062 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015063 (_tmp_141_var = _tmp_141_rule(p)) // 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015064 )
15065 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015066 _res = _tmp_141_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015067 if (_n == _children_capacity) {
15068 _children_capacity *= 2;
15069 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15070 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015071 PyErr_Format(PyExc_MemoryError, "realloc None");
15072 return NULL;
15073 }
15074 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015075 _children[_n++] = _res;
15076 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015077 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015078 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015079 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015080 if (_n == 0 || p->error_indicator) {
15081 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015082 return NULL;
15083 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015084 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15085 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015086 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_89");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015087 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015088 return NULL;
15089 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015090 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15091 PyMem_Free(_children);
15092 _PyPegen_insert_memo(p, _start_mark, _loop1_89_type, _seq);
15093 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015094}
15095
Guido van Rossum3941d972020-05-01 09:42:03 -070015096// _loop1_90: ('and' inversion)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015097static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015098_loop1_90_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015099{
15100 if (p->error_indicator) {
15101 return NULL;
15102 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015103 void *_res = NULL;
15104 int _mark = p->mark;
15105 int _start_mark = p->mark;
15106 void **_children = PyMem_Malloc(sizeof(void *));
15107 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015108 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15109 return NULL;
15110 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015111 ssize_t _children_capacity = 1;
15112 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015113 { // ('and' inversion)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015114 void *_tmp_142_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015115 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015116 (_tmp_142_var = _tmp_142_rule(p)) // 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015117 )
15118 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015119 _res = _tmp_142_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015120 if (_n == _children_capacity) {
15121 _children_capacity *= 2;
15122 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15123 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015124 PyErr_Format(PyExc_MemoryError, "realloc None");
15125 return NULL;
15126 }
15127 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015128 _children[_n++] = _res;
15129 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015130 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015131 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015133 if (_n == 0 || p->error_indicator) {
15134 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015135 return NULL;
15136 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015137 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15138 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015139 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_90");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015140 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015141 return NULL;
15142 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015143 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15144 PyMem_Free(_children);
15145 _PyPegen_insert_memo(p, _start_mark, _loop1_90_type, _seq);
15146 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015147}
15148
Guido van Rossum3941d972020-05-01 09:42:03 -070015149// _loop1_91: compare_op_bitwise_or_pair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015150static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015151_loop1_91_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015152{
15153 if (p->error_indicator) {
15154 return NULL;
15155 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015156 void *_res = NULL;
15157 int _mark = p->mark;
15158 int _start_mark = p->mark;
15159 void **_children = PyMem_Malloc(sizeof(void *));
15160 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015161 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15162 return NULL;
15163 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015164 ssize_t _children_capacity = 1;
15165 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015166 { // compare_op_bitwise_or_pair
15167 CmpopExprPair* compare_op_bitwise_or_pair_var;
15168 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015169 (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 +010015170 )
15171 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015172 _res = compare_op_bitwise_or_pair_var;
15173 if (_n == _children_capacity) {
15174 _children_capacity *= 2;
15175 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15176 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015177 PyErr_Format(PyExc_MemoryError, "realloc None");
15178 return NULL;
15179 }
15180 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015181 _children[_n++] = _res;
15182 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015184 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015185 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015186 if (_n == 0 || p->error_indicator) {
15187 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015188 return NULL;
15189 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015190 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15191 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015192 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_91");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015193 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015194 return NULL;
15195 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015196 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15197 PyMem_Free(_children);
15198 _PyPegen_insert_memo(p, _start_mark, _loop1_91_type, _seq);
15199 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015200}
15201
Guido van Rossum3941d972020-05-01 09:42:03 -070015202// _tmp_92: '!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010015203static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015204_tmp_92_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010015205{
15206 if (p->error_indicator) {
15207 return NULL;
15208 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015209 void * _res = NULL;
15210 int _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015211 { // '!='
Pablo Galindob796b3f2020-05-01 12:32:26 +010015212 Token * tok;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015213 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015214 (tok = _PyPegen_expect_token(p, 28)) // token='!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010015215 )
15216 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015217 _res = _PyPegen_check_barry_as_flufl ( p ) ? NULL : tok;
15218 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindo2b74c832020-04-27 18:02:07 +010015219 p->error_indicator = 1;
15220 return NULL;
15221 }
15222 goto done;
15223 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015224 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015225 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015226 _res = NULL;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015227 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015228 return _res;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015229}
15230
Guido van Rossum3941d972020-05-01 09:42:03 -070015231// _loop0_94: ',' slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015232static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015233_loop0_94_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015234{
15235 if (p->error_indicator) {
15236 return NULL;
15237 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015238 void *_res = NULL;
15239 int _mark = p->mark;
15240 int _start_mark = p->mark;
15241 void **_children = PyMem_Malloc(sizeof(void *));
15242 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015243 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15244 return NULL;
15245 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015246 ssize_t _children_capacity = 1;
15247 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015248 { // ',' slice
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015249 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015250 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015251 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015252 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015253 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015254 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015255 )
15256 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015257 _res = elem;
15258 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015259 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015260 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015261 return NULL;
15262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015263 if (_n == _children_capacity) {
15264 _children_capacity *= 2;
15265 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15266 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015267 PyErr_Format(PyExc_MemoryError, "realloc None");
15268 return NULL;
15269 }
15270 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015271 _children[_n++] = _res;
15272 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015273 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015274 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015275 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015276 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15277 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015278 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_94");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015279 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015280 return NULL;
15281 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015282 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15283 PyMem_Free(_children);
15284 _PyPegen_insert_memo(p, _start_mark, _loop0_94_type, _seq);
15285 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015286}
15287
Guido van Rossum3941d972020-05-01 09:42:03 -070015288// _gather_93: slice _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015289static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015290_gather_93_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015291{
15292 if (p->error_indicator) {
15293 return NULL;
15294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015295 asdl_seq * _res = NULL;
15296 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015297 { // slice _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015298 expr_ty elem;
15299 asdl_seq * seq;
15300 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015301 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015302 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015303 (seq = _loop0_94_rule(p)) // _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015304 )
15305 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015306 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015307 goto done;
15308 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015309 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015310 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015311 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015312 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015313 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015314}
15315
Guido van Rossum3941d972020-05-01 09:42:03 -070015316// _tmp_95: ':' expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015317static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015318_tmp_95_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015319{
15320 if (p->error_indicator) {
15321 return NULL;
15322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015323 void * _res = NULL;
15324 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015325 { // ':' expression?
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015326 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015327 void *d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015328 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015329 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015330 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015331 (d = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015332 )
15333 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015334 _res = d;
15335 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015336 p->error_indicator = 1;
15337 return NULL;
15338 }
15339 goto done;
15340 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015341 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015343 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015344 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015345 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015346}
15347
Guido van Rossum3941d972020-05-01 09:42:03 -070015348// _tmp_96: tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015349static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015350_tmp_96_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015351{
15352 if (p->error_indicator) {
15353 return NULL;
15354 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015355 void * _res = NULL;
15356 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015357 { // tuple
15358 expr_ty tuple_var;
15359 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015360 (tuple_var = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015361 )
15362 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015363 _res = tuple_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015364 goto done;
15365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015366 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015367 }
15368 { // group
15369 expr_ty group_var;
15370 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015371 (group_var = group_rule(p)) // group
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015372 )
15373 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015374 _res = group_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015375 goto done;
15376 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015377 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015378 }
15379 { // genexp
15380 expr_ty genexp_var;
15381 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015382 (genexp_var = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015383 )
15384 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015385 _res = genexp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015386 goto done;
15387 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015388 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015389 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015390 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015391 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015392 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015393}
15394
Guido van Rossum3941d972020-05-01 09:42:03 -070015395// _tmp_97: list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015396static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015397_tmp_97_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015398{
15399 if (p->error_indicator) {
15400 return NULL;
15401 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015402 void * _res = NULL;
15403 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015404 { // list
15405 expr_ty list_var;
15406 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015407 (list_var = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015408 )
15409 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015410 _res = list_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015411 goto done;
15412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015413 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015414 }
15415 { // listcomp
15416 expr_ty listcomp_var;
15417 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015418 (listcomp_var = listcomp_rule(p)) // listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015419 )
15420 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015421 _res = listcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015422 goto done;
15423 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015424 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015426 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015427 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015428 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015429}
15430
Guido van Rossum3941d972020-05-01 09:42:03 -070015431// _tmp_98: dict | set | dictcomp | setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015432static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015433_tmp_98_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015434{
15435 if (p->error_indicator) {
15436 return NULL;
15437 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015438 void * _res = NULL;
15439 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015440 { // dict
15441 expr_ty dict_var;
15442 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015443 (dict_var = dict_rule(p)) // dict
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015444 )
15445 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015446 _res = dict_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015447 goto done;
15448 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015449 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015450 }
15451 { // set
15452 expr_ty set_var;
15453 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015454 (set_var = set_rule(p)) // set
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015455 )
15456 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015457 _res = set_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015458 goto done;
15459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015460 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015461 }
15462 { // dictcomp
15463 expr_ty dictcomp_var;
15464 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015465 (dictcomp_var = dictcomp_rule(p)) // dictcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015466 )
15467 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015468 _res = dictcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015469 goto done;
15470 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015471 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015472 }
15473 { // setcomp
15474 expr_ty setcomp_var;
15475 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015476 (setcomp_var = setcomp_rule(p)) // setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015477 )
15478 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015479 _res = setcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015480 goto done;
15481 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015482 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015483 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015484 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015485 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015486 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015487}
15488
Guido van Rossum3941d972020-05-01 09:42:03 -070015489// _loop1_99: STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015490static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015491_loop1_99_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015492{
15493 if (p->error_indicator) {
15494 return NULL;
15495 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015496 void *_res = NULL;
15497 int _mark = p->mark;
15498 int _start_mark = p->mark;
15499 void **_children = PyMem_Malloc(sizeof(void *));
15500 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015501 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15502 return NULL;
15503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015504 ssize_t _children_capacity = 1;
15505 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015506 { // STRING
15507 expr_ty string_var;
15508 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015509 (string_var = _PyPegen_string_token(p)) // STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015510 )
15511 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015512 _res = string_var;
15513 if (_n == _children_capacity) {
15514 _children_capacity *= 2;
15515 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15516 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015517 PyErr_Format(PyExc_MemoryError, "realloc None");
15518 return NULL;
15519 }
15520 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015521 _children[_n++] = _res;
15522 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015523 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015524 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015525 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015526 if (_n == 0 || p->error_indicator) {
15527 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015528 return NULL;
15529 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015530 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15531 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015532 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_99");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015533 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015534 return NULL;
15535 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015536 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15537 PyMem_Free(_children);
15538 _PyPegen_insert_memo(p, _start_mark, _loop1_99_type, _seq);
15539 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015540}
15541
Guido van Rossum3941d972020-05-01 09:42:03 -070015542// _tmp_100: star_named_expression ',' star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015543static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015544_tmp_100_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015545{
15546 if (p->error_indicator) {
15547 return NULL;
15548 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015549 void * _res = NULL;
15550 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015551 { // star_named_expression ',' star_named_expressions?
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015552 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015553 expr_ty y;
15554 void *z;
15555 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015556 (y = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015557 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015558 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015559 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015560 (z = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015561 )
15562 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015563 _res = _PyPegen_seq_insert_in_front ( p , y , z );
15564 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015565 p->error_indicator = 1;
15566 return NULL;
15567 }
15568 goto done;
15569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015570 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015571 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015572 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015573 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015574 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015575}
15576
Guido van Rossum3941d972020-05-01 09:42:03 -070015577// _tmp_101: yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015578static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015579_tmp_101_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015580{
15581 if (p->error_indicator) {
15582 return NULL;
15583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015584 void * _res = NULL;
15585 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015586 { // yield_expr
15587 expr_ty yield_expr_var;
15588 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015589 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015590 )
15591 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015592 _res = yield_expr_var;
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 }
15597 { // named_expression
15598 expr_ty named_expression_var;
15599 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015600 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015601 )
15602 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015603 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015604 goto done;
15605 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015606 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015607 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015608 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015609 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015610 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015611}
15612
Guido van Rossum3941d972020-05-01 09:42:03 -070015613// _loop0_103: ',' kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015614static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015615_loop0_103_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015616{
15617 if (p->error_indicator) {
15618 return NULL;
15619 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015620 void *_res = NULL;
15621 int _mark = p->mark;
15622 int _start_mark = p->mark;
15623 void **_children = PyMem_Malloc(sizeof(void *));
15624 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015625 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15626 return NULL;
15627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015628 ssize_t _children_capacity = 1;
15629 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015630 { // ',' kvpair
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015631 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015632 KeyValuePair* elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015633 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015634 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015635 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015636 (elem = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015637 )
15638 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015639 _res = elem;
15640 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015641 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015642 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015643 return NULL;
15644 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015645 if (_n == _children_capacity) {
15646 _children_capacity *= 2;
15647 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15648 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015649 PyErr_Format(PyExc_MemoryError, "realloc None");
15650 return NULL;
15651 }
15652 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015653 _children[_n++] = _res;
15654 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015656 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015657 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015658 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15659 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015660 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_103");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015661 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015662 return NULL;
15663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015664 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15665 PyMem_Free(_children);
15666 _PyPegen_insert_memo(p, _start_mark, _loop0_103_type, _seq);
15667 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015668}
15669
Guido van Rossum3941d972020-05-01 09:42:03 -070015670// _gather_102: kvpair _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015671static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015672_gather_102_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015673{
15674 if (p->error_indicator) {
15675 return NULL;
15676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015677 asdl_seq * _res = NULL;
15678 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015679 { // kvpair _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015680 KeyValuePair* elem;
15681 asdl_seq * seq;
15682 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015683 (elem = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015684 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015685 (seq = _loop0_103_rule(p)) // _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015686 )
15687 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015688 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015689 goto done;
15690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015691 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015692 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015693 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015694 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015695 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015696}
15697
Guido van Rossum3941d972020-05-01 09:42:03 -070015698// _loop1_104: for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015699static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015700_loop1_104_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015701{
15702 if (p->error_indicator) {
15703 return NULL;
15704 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015705 void *_res = NULL;
15706 int _mark = p->mark;
15707 int _start_mark = p->mark;
15708 void **_children = PyMem_Malloc(sizeof(void *));
15709 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015710 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15711 return NULL;
15712 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015713 ssize_t _children_capacity = 1;
15714 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015715 { // for_if_clause
15716 comprehension_ty for_if_clause_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015717 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015718 (for_if_clause_var = for_if_clause_rule(p)) // for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015719 )
15720 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015721 _res = for_if_clause_var;
15722 if (_n == _children_capacity) {
15723 _children_capacity *= 2;
15724 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15725 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015726 PyErr_Format(PyExc_MemoryError, "realloc None");
15727 return NULL;
15728 }
15729 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015730 _children[_n++] = _res;
15731 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015733 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015734 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015735 if (_n == 0 || p->error_indicator) {
15736 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015737 return NULL;
15738 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015739 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15740 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015741 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_104");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015742 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015743 return NULL;
15744 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015745 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15746 PyMem_Free(_children);
15747 _PyPegen_insert_memo(p, _start_mark, _loop1_104_type, _seq);
15748 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015749}
15750
Guido van Rossum3941d972020-05-01 09:42:03 -070015751// _loop0_105: ('if' disjunction)
Pablo Galindo2b74c832020-04-27 18:02:07 +010015752static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015753_loop0_105_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010015754{
15755 if (p->error_indicator) {
15756 return NULL;
15757 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015758 void *_res = NULL;
15759 int _mark = p->mark;
15760 int _start_mark = p->mark;
15761 void **_children = PyMem_Malloc(sizeof(void *));
15762 if (!_children) {
Pablo Galindo2b74c832020-04-27 18:02:07 +010015763 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15764 return NULL;
15765 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015766 ssize_t _children_capacity = 1;
15767 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015768 { // ('if' disjunction)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015769 void *_tmp_143_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015770 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015771 (_tmp_143_var = _tmp_143_rule(p)) // 'if' disjunction
Pablo Galindo2b74c832020-04-27 18:02:07 +010015772 )
15773 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015774 _res = _tmp_143_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015775 if (_n == _children_capacity) {
15776 _children_capacity *= 2;
15777 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15778 if (!_children) {
Pablo Galindo2b74c832020-04-27 18:02:07 +010015779 PyErr_Format(PyExc_MemoryError, "realloc None");
15780 return NULL;
15781 }
15782 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015783 _children[_n++] = _res;
15784 _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015785 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015786 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015787 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015788 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15789 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015790 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_105");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015791 PyMem_Free(_children);
Pablo Galindo2b74c832020-04-27 18:02:07 +010015792 return NULL;
15793 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015794 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15795 PyMem_Free(_children);
15796 _PyPegen_insert_memo(p, _start_mark, _loop0_105_type, _seq);
15797 return _seq;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015798}
15799
Guido van Rossum3941d972020-05-01 09:42:03 -070015800// _loop0_106: ('if' disjunction)
Guido van Rossumc001c092020-04-30 12:12:19 -070015801static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015802_loop0_106_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070015803{
15804 if (p->error_indicator) {
15805 return NULL;
15806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015807 void *_res = NULL;
15808 int _mark = p->mark;
15809 int _start_mark = p->mark;
15810 void **_children = PyMem_Malloc(sizeof(void *));
15811 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015812 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15813 return NULL;
15814 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015815 ssize_t _children_capacity = 1;
15816 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015817 { // ('if' disjunction)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015818 void *_tmp_144_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015819 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015820 (_tmp_144_var = _tmp_144_rule(p)) // 'if' disjunction
Guido van Rossumc001c092020-04-30 12:12:19 -070015821 )
15822 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015823 _res = _tmp_144_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015824 if (_n == _children_capacity) {
15825 _children_capacity *= 2;
15826 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15827 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015828 PyErr_Format(PyExc_MemoryError, "realloc None");
15829 return NULL;
15830 }
15831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015832 _children[_n++] = _res;
15833 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015834 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015835 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015837 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15838 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015839 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_106");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015840 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015841 return NULL;
15842 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015843 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15844 PyMem_Free(_children);
15845 _PyPegen_insert_memo(p, _start_mark, _loop0_106_type, _seq);
15846 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015847}
15848
Guido van Rossum3941d972020-05-01 09:42:03 -070015849// _tmp_107: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015850static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015851_tmp_107_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015852{
15853 if (p->error_indicator) {
15854 return NULL;
15855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015856 void * _res = NULL;
15857 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015858 { // ',' args
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015859 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015860 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015861 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015862 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015863 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015864 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015865 )
15866 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015867 _res = c;
15868 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015869 p->error_indicator = 1;
15870 return NULL;
15871 }
Guido van Rossumc001c092020-04-30 12:12:19 -070015872 goto done;
15873 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015874 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015876 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070015877 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015878 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070015879}
15880
Guido van Rossum3941d972020-05-01 09:42:03 -070015881// _tmp_108: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015882static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015883_tmp_108_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015884{
15885 if (p->error_indicator) {
15886 return NULL;
15887 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015888 void * _res = NULL;
15889 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015890 { // ',' args
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015891 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015892 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015893 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015894 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015895 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015896 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015897 )
15898 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015899 _res = c;
15900 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015901 p->error_indicator = 1;
15902 return NULL;
15903 }
15904 goto done;
15905 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015906 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015907 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015908 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015909 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015910 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015911}
15912
Guido van Rossum3941d972020-05-01 09:42:03 -070015913// _loop0_110: ',' kwarg_or_starred
15914static asdl_seq *
15915_loop0_110_rule(Parser *p)
15916{
15917 if (p->error_indicator) {
15918 return NULL;
15919 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015920 void *_res = NULL;
15921 int _mark = p->mark;
15922 int _start_mark = p->mark;
15923 void **_children = PyMem_Malloc(sizeof(void *));
15924 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015925 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15926 return NULL;
15927 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015928 ssize_t _children_capacity = 1;
15929 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070015930 { // ',' kwarg_or_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015931 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070015932 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070015933 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015934 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070015935 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015936 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070015937 )
15938 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015939 _res = elem;
15940 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015941 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015942 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070015943 return NULL;
15944 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015945 if (_n == _children_capacity) {
15946 _children_capacity *= 2;
15947 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15948 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015949 PyErr_Format(PyExc_MemoryError, "realloc None");
15950 return NULL;
15951 }
15952 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015953 _children[_n++] = _res;
15954 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015955 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015956 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015957 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015958 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15959 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015960 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_110");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015961 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070015962 return NULL;
15963 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015964 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15965 PyMem_Free(_children);
15966 _PyPegen_insert_memo(p, _start_mark, _loop0_110_type, _seq);
15967 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070015968}
15969
15970// _gather_109: kwarg_or_starred _loop0_110
15971static asdl_seq *
15972_gather_109_rule(Parser *p)
15973{
15974 if (p->error_indicator) {
15975 return NULL;
15976 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015977 asdl_seq * _res = NULL;
15978 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015979 { // kwarg_or_starred _loop0_110
15980 KeywordOrStarred* elem;
15981 asdl_seq * seq;
15982 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015983 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070015984 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015985 (seq = _loop0_110_rule(p)) // _loop0_110
Guido van Rossum3941d972020-05-01 09:42:03 -070015986 )
15987 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015988 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070015989 goto done;
15990 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015991 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015992 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015993 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070015994 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015995 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070015996}
15997
15998// _loop0_112: ',' kwarg_or_double_starred
15999static asdl_seq *
16000_loop0_112_rule(Parser *p)
16001{
16002 if (p->error_indicator) {
16003 return NULL;
16004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016005 void *_res = NULL;
16006 int _mark = p->mark;
16007 int _start_mark = p->mark;
16008 void **_children = PyMem_Malloc(sizeof(void *));
16009 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016010 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16011 return NULL;
16012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016013 ssize_t _children_capacity = 1;
16014 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016015 { // ',' kwarg_or_double_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016016 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070016017 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070016018 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016019 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070016020 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016021 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070016022 )
16023 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016024 _res = elem;
16025 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016026 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016027 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016028 return NULL;
16029 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016030 if (_n == _children_capacity) {
16031 _children_capacity *= 2;
16032 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16033 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016034 PyErr_Format(PyExc_MemoryError, "realloc None");
16035 return NULL;
16036 }
16037 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016038 _children[_n++] = _res;
16039 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016040 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016041 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016042 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016043 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16044 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016045 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_112");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016046 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016047 return NULL;
16048 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016049 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16050 PyMem_Free(_children);
16051 _PyPegen_insert_memo(p, _start_mark, _loop0_112_type, _seq);
16052 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016053}
16054
16055// _gather_111: kwarg_or_double_starred _loop0_112
16056static asdl_seq *
16057_gather_111_rule(Parser *p)
16058{
16059 if (p->error_indicator) {
16060 return NULL;
16061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016062 asdl_seq * _res = NULL;
16063 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016064 { // kwarg_or_double_starred _loop0_112
16065 KeywordOrStarred* elem;
16066 asdl_seq * seq;
16067 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016068 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070016069 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016070 (seq = _loop0_112_rule(p)) // _loop0_112
Guido van Rossum3941d972020-05-01 09:42:03 -070016071 )
16072 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016073 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070016074 goto done;
16075 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016076 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016077 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016078 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070016079 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016080 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070016081}
16082
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016083// _loop0_114: ',' kwarg_or_starred
Pablo Galindo2b74c832020-04-27 18:02:07 +010016084static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016085_loop0_114_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016086{
16087 if (p->error_indicator) {
16088 return NULL;
16089 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016090 void *_res = NULL;
16091 int _mark = p->mark;
16092 int _start_mark = p->mark;
16093 void **_children = PyMem_Malloc(sizeof(void *));
16094 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016095 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16096 return NULL;
16097 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016098 ssize_t _children_capacity = 1;
16099 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070016100 { // ',' kwarg_or_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016101 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070016102 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070016103 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016104 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070016105 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016106 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016107 )
16108 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016109 _res = elem;
16110 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016111 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016112 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016113 return NULL;
16114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016115 if (_n == _children_capacity) {
16116 _children_capacity *= 2;
16117 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16118 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016119 PyErr_Format(PyExc_MemoryError, "realloc None");
16120 return NULL;
16121 }
16122 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016123 _children[_n++] = _res;
16124 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016125 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016126 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016127 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016128 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16129 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016130 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_114");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016131 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016132 return NULL;
16133 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016134 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16135 PyMem_Free(_children);
16136 _PyPegen_insert_memo(p, _start_mark, _loop0_114_type, _seq);
16137 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070016138}
16139
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016140// _gather_113: kwarg_or_starred _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070016141static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016142_gather_113_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016143{
16144 if (p->error_indicator) {
16145 return NULL;
16146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016147 asdl_seq * _res = NULL;
16148 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016149 { // kwarg_or_starred _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070016150 KeywordOrStarred* elem;
16151 asdl_seq * seq;
16152 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016153 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016154 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016155 (seq = _loop0_114_rule(p)) // _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070016156 )
16157 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016158 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070016159 goto done;
16160 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016161 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016163 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070016164 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016165 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070016166}
16167
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016168// _loop0_116: ',' kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016169static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016170_loop0_116_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016171{
16172 if (p->error_indicator) {
16173 return NULL;
16174 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016175 void *_res = NULL;
16176 int _mark = p->mark;
16177 int _start_mark = p->mark;
16178 void **_children = PyMem_Malloc(sizeof(void *));
16179 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016180 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16181 return NULL;
16182 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016183 ssize_t _children_capacity = 1;
16184 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070016185 { // ',' kwarg_or_double_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016186 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070016187 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070016188 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016189 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070016190 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016191 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016192 )
16193 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016194 _res = elem;
16195 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016196 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016197 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016198 return NULL;
16199 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016200 if (_n == _children_capacity) {
16201 _children_capacity *= 2;
16202 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16203 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016204 PyErr_Format(PyExc_MemoryError, "realloc None");
16205 return NULL;
16206 }
16207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016208 _children[_n++] = _res;
16209 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016210 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016211 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016212 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016213 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16214 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016215 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_116");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016216 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016217 return NULL;
16218 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016219 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16220 PyMem_Free(_children);
16221 _PyPegen_insert_memo(p, _start_mark, _loop0_116_type, _seq);
16222 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070016223}
16224
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016225// _gather_115: kwarg_or_double_starred _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070016226static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016227_gather_115_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016228{
16229 if (p->error_indicator) {
16230 return NULL;
16231 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016232 asdl_seq * _res = NULL;
16233 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016234 { // kwarg_or_double_starred _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070016235 KeywordOrStarred* elem;
16236 asdl_seq * seq;
16237 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016238 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016239 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016240 (seq = _loop0_116_rule(p)) // _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070016241 )
16242 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016243 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070016244 goto done;
16245 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016246 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016248 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070016249 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016250 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070016251}
16252
Guido van Rossum3941d972020-05-01 09:42:03 -070016253// _loop0_117: (',' star_target)
Guido van Rossumc001c092020-04-30 12:12:19 -070016254static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016255_loop0_117_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016256{
16257 if (p->error_indicator) {
16258 return NULL;
16259 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016260 void *_res = NULL;
16261 int _mark = p->mark;
16262 int _start_mark = p->mark;
16263 void **_children = PyMem_Malloc(sizeof(void *));
16264 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016265 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16266 return NULL;
16267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016268 ssize_t _children_capacity = 1;
16269 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016270 { // (',' star_target)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016271 void *_tmp_145_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016272 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016273 (_tmp_145_var = _tmp_145_rule(p)) // ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016274 )
16275 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016276 _res = _tmp_145_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016277 if (_n == _children_capacity) {
16278 _children_capacity *= 2;
16279 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16280 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016281 PyErr_Format(PyExc_MemoryError, "realloc None");
16282 return NULL;
16283 }
16284 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016285 _children[_n++] = _res;
16286 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016287 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016288 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016289 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016290 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16291 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016292 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_117");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016293 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016294 return NULL;
16295 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016296 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16297 PyMem_Free(_children);
16298 _PyPegen_insert_memo(p, _start_mark, _loop0_117_type, _seq);
16299 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016300}
16301
Guido van Rossum3941d972020-05-01 09:42:03 -070016302// _loop0_119: ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016303static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016304_loop0_119_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016305{
16306 if (p->error_indicator) {
16307 return NULL;
16308 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016309 void *_res = NULL;
16310 int _mark = p->mark;
16311 int _start_mark = p->mark;
16312 void **_children = PyMem_Malloc(sizeof(void *));
16313 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016314 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16315 return NULL;
16316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016317 ssize_t _children_capacity = 1;
16318 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016319 { // ',' star_target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016320 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016321 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016322 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016323 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016324 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016325 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016326 )
16327 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016328 _res = elem;
16329 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016330 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016331 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016332 return NULL;
16333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016334 if (_n == _children_capacity) {
16335 _children_capacity *= 2;
16336 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16337 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016338 PyErr_Format(PyExc_MemoryError, "realloc None");
16339 return NULL;
16340 }
16341 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016342 _children[_n++] = _res;
16343 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016344 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016345 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016347 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16348 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016349 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_119");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016350 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016351 return NULL;
16352 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016353 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16354 PyMem_Free(_children);
16355 _PyPegen_insert_memo(p, _start_mark, _loop0_119_type, _seq);
16356 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016357}
16358
Guido van Rossum3941d972020-05-01 09:42:03 -070016359// _gather_118: star_target _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016360static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016361_gather_118_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016362{
16363 if (p->error_indicator) {
16364 return NULL;
16365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016366 asdl_seq * _res = NULL;
16367 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016368 { // star_target _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016369 expr_ty elem;
16370 asdl_seq * seq;
16371 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016372 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016373 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016374 (seq = _loop0_119_rule(p)) // _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016375 )
16376 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016377 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016378 goto done;
16379 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016380 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016381 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016382 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016383 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016384 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016385}
16386
Guido van Rossum3941d972020-05-01 09:42:03 -070016387// _tmp_120: !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016388static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016389_tmp_120_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016390{
16391 if (p->error_indicator) {
16392 return NULL;
16393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016394 void * _res = NULL;
16395 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016396 { // !'*' star_target
16397 expr_ty star_target_var;
16398 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016399 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016400 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016401 (star_target_var = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016402 )
16403 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016404 _res = star_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016405 goto done;
16406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016407 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016408 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016409 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016410 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016411 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016412}
16413
Guido van Rossum3941d972020-05-01 09:42:03 -070016414// _loop0_122: ',' del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016415static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016416_loop0_122_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016417{
16418 if (p->error_indicator) {
16419 return NULL;
16420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016421 void *_res = NULL;
16422 int _mark = p->mark;
16423 int _start_mark = p->mark;
16424 void **_children = PyMem_Malloc(sizeof(void *));
16425 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016426 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16427 return NULL;
16428 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016429 ssize_t _children_capacity = 1;
16430 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016431 { // ',' del_target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016432 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016433 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016434 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016435 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016436 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016437 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016438 )
16439 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016440 _res = elem;
16441 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016442 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016443 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016444 return NULL;
16445 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016446 if (_n == _children_capacity) {
16447 _children_capacity *= 2;
16448 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16449 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016450 PyErr_Format(PyExc_MemoryError, "realloc None");
16451 return NULL;
16452 }
16453 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016454 _children[_n++] = _res;
16455 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016457 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016458 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016459 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16460 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016461 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_122");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016462 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016463 return NULL;
16464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016465 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16466 PyMem_Free(_children);
16467 _PyPegen_insert_memo(p, _start_mark, _loop0_122_type, _seq);
16468 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016469}
16470
Guido van Rossum3941d972020-05-01 09:42:03 -070016471// _gather_121: del_target _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016472static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016473_gather_121_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016474{
16475 if (p->error_indicator) {
16476 return NULL;
16477 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016478 asdl_seq * _res = NULL;
16479 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016480 { // del_target _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016481 expr_ty elem;
16482 asdl_seq * seq;
16483 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016484 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016485 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016486 (seq = _loop0_122_rule(p)) // _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016487 )
16488 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016489 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016490 goto done;
16491 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016492 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016494 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016495 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016496 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016497}
16498
Guido van Rossum3941d972020-05-01 09:42:03 -070016499// _loop0_124: ',' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016500static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016501_loop0_124_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016502{
16503 if (p->error_indicator) {
16504 return NULL;
16505 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016506 void *_res = NULL;
16507 int _mark = p->mark;
16508 int _start_mark = p->mark;
16509 void **_children = PyMem_Malloc(sizeof(void *));
16510 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016511 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16512 return NULL;
16513 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016514 ssize_t _children_capacity = 1;
16515 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016516 { // ',' target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016517 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016518 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016519 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016520 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016521 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016522 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016523 )
16524 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016525 _res = elem;
16526 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016527 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016528 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016529 return NULL;
16530 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016531 if (_n == _children_capacity) {
16532 _children_capacity *= 2;
16533 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16534 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016535 PyErr_Format(PyExc_MemoryError, "realloc None");
16536 return NULL;
16537 }
16538 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016539 _children[_n++] = _res;
16540 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016541 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016542 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016543 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016544 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16545 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016546 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_124");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016547 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016548 return NULL;
16549 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016550 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16551 PyMem_Free(_children);
16552 _PyPegen_insert_memo(p, _start_mark, _loop0_124_type, _seq);
16553 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016554}
16555
Guido van Rossum3941d972020-05-01 09:42:03 -070016556// _gather_123: target _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016557static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016558_gather_123_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016559{
16560 if (p->error_indicator) {
16561 return NULL;
16562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016563 asdl_seq * _res = NULL;
16564 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016565 { // target _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016566 expr_ty elem;
16567 asdl_seq * seq;
16568 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016569 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016570 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016571 (seq = _loop0_124_rule(p)) // _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016572 )
16573 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016574 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016575 goto done;
16576 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016577 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016578 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016579 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016580 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016581 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016582}
16583
Guido van Rossum3941d972020-05-01 09:42:03 -070016584// _tmp_125: args | expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016585static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016586_tmp_125_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016587{
16588 if (p->error_indicator) {
16589 return NULL;
16590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016591 void * _res = NULL;
16592 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016593 { // args
16594 expr_ty args_var;
16595 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016596 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016597 )
16598 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016599 _res = args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016600 goto done;
16601 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016602 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016603 }
16604 { // expression for_if_clauses
16605 expr_ty expression_var;
16606 asdl_seq* for_if_clauses_var;
16607 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016608 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016609 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016610 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016611 )
16612 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016613 _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016614 goto done;
16615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016616 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016617 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016618 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016619 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016620 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016621}
16622
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016623// _loop0_126: star_named_expressions
16624static asdl_seq *
16625_loop0_126_rule(Parser *p)
16626{
16627 if (p->error_indicator) {
16628 return NULL;
16629 }
16630 void *_res = NULL;
16631 int _mark = p->mark;
16632 int _start_mark = p->mark;
16633 void **_children = PyMem_Malloc(sizeof(void *));
16634 if (!_children) {
16635 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16636 return NULL;
16637 }
16638 ssize_t _children_capacity = 1;
16639 ssize_t _n = 0;
16640 { // star_named_expressions
16641 asdl_seq* star_named_expressions_var;
16642 while (
16643 (star_named_expressions_var = star_named_expressions_rule(p)) // star_named_expressions
16644 )
16645 {
16646 _res = star_named_expressions_var;
16647 if (_n == _children_capacity) {
16648 _children_capacity *= 2;
16649 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16650 if (!_children) {
16651 PyErr_Format(PyExc_MemoryError, "realloc None");
16652 return NULL;
16653 }
16654 }
16655 _children[_n++] = _res;
16656 _mark = p->mark;
16657 }
16658 p->mark = _mark;
16659 }
16660 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16661 if (!_seq) {
16662 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_126");
16663 PyMem_Free(_children);
16664 return NULL;
16665 }
16666 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16667 PyMem_Free(_children);
16668 _PyPegen_insert_memo(p, _start_mark, _loop0_126_type, _seq);
16669 return _seq;
16670}
16671
16672// _tmp_127: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016673static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016674_tmp_127_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016675{
16676 if (p->error_indicator) {
16677 return NULL;
16678 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016679 void * _res = NULL;
16680 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016681 { // '=' annotated_rhs
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016682 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016683 expr_ty annotated_rhs_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016684 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016685 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016686 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016687 (annotated_rhs_var = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016688 )
16689 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016690 _res = _PyPegen_dummy_name(p, _literal, annotated_rhs_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016691 goto done;
16692 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016693 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016694 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016695 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016696 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016697 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016698}
16699
Pablo Galindo16ab0702020-05-15 02:04:52 +010016700// _tmp_128: yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016701static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016702_tmp_128_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016703{
16704 if (p->error_indicator) {
16705 return NULL;
16706 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016707 void * _res = NULL;
16708 int _mark = p->mark;
Pablo Galindo16ab0702020-05-15 02:04:52 +010016709 { // yield_expr
16710 expr_ty yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016711 if (
Pablo Galindo16ab0702020-05-15 02:04:52 +010016712 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016713 )
16714 {
Pablo Galindo16ab0702020-05-15 02:04:52 +010016715 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016716 goto done;
16717 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016718 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016719 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010016720 { // star_expressions
16721 expr_ty star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016722 if (
Pablo Galindo16ab0702020-05-15 02:04:52 +010016723 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016724 )
16725 {
Pablo Galindo16ab0702020-05-15 02:04:52 +010016726 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016727 goto done;
16728 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016729 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016731 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016732 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016733 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016734}
16735
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016736// _tmp_129: yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016737static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016738_tmp_129_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016739{
16740 if (p->error_indicator) {
16741 return NULL;
16742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016743 void * _res = NULL;
16744 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016745 { // yield_expr
16746 expr_ty yield_expr_var;
16747 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016748 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016749 )
16750 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016751 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016752 goto done;
16753 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016754 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016755 }
16756 { // star_expressions
16757 expr_ty star_expressions_var;
16758 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016759 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016760 )
16761 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016762 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016763 goto done;
16764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016765 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016766 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016767 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016768 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016769 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016770}
16771
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016772// _tmp_130: '[' | '(' | '{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016773static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016774_tmp_130_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016775{
16776 if (p->error_indicator) {
16777 return NULL;
16778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016779 void * _res = NULL;
16780 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016781 { // '['
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016782 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016783 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016784 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016785 )
16786 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016787 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016788 goto done;
16789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016790 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016791 }
16792 { // '('
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016793 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016794 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016795 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016796 )
16797 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016798 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016799 goto done;
16800 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016801 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016802 }
16803 { // '{'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016804 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016805 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016806 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016807 )
16808 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016809 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016810 goto done;
16811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016812 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016813 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016814 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016815 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016816 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016817}
16818
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016819// _loop0_131: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070016820static asdl_seq *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016821_loop0_131_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016822{
16823 if (p->error_indicator) {
16824 return NULL;
16825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016826 void *_res = NULL;
16827 int _mark = p->mark;
16828 int _start_mark = p->mark;
16829 void **_children = PyMem_Malloc(sizeof(void *));
16830 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016831 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16832 return NULL;
16833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016834 ssize_t _children_capacity = 1;
16835 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070016836 { // param_no_default
16837 arg_ty param_no_default_var;
16838 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016839 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016840 )
16841 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016842 _res = param_no_default_var;
16843 if (_n == _children_capacity) {
16844 _children_capacity *= 2;
16845 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16846 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016847 PyErr_Format(PyExc_MemoryError, "realloc None");
16848 return NULL;
16849 }
16850 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016851 _children[_n++] = _res;
16852 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016853 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016854 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016856 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16857 if (!_seq) {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016858 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_131");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016859 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016860 return NULL;
16861 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016862 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16863 PyMem_Free(_children);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016864 _PyPegen_insert_memo(p, _start_mark, _loop0_131_type, _seq);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016865 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016866}
16867
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016868// _tmp_132: slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016869static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016870_tmp_132_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016871{
16872 if (p->error_indicator) {
16873 return NULL;
16874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016875 void * _res = NULL;
16876 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016877 { // slash_with_default
16878 SlashWithDefault* slash_with_default_var;
16879 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016880 (slash_with_default_var = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016881 )
16882 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016883 _res = slash_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016884 goto done;
16885 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016886 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016887 }
Guido van Rossumc001c092020-04-30 12:12:19 -070016888 { // param_with_default+
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016889 asdl_seq * _loop1_146_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016890 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016891 (_loop1_146_var = _loop1_146_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016892 )
16893 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016894 _res = _loop1_146_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016895 goto done;
16896 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016897 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016898 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016899 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016900 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016901 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016902}
16903
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016904// _tmp_133: ')' | ',' (')' | '**')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016905static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016906_tmp_133_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016907{
16908 if (p->error_indicator) {
16909 return NULL;
16910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016911 void * _res = NULL;
16912 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016913 { // ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016914 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016915 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016916 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016917 )
16918 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016919 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016920 goto done;
16921 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016922 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016923 }
16924 { // ',' (')' | '**')
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016925 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016926 void *_tmp_147_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016927 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016928 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016929 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016930 (_tmp_147_var = _tmp_147_rule(p)) // ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016931 )
16932 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016933 _res = _PyPegen_dummy_name(p, _literal, _tmp_147_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016934 goto done;
16935 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016936 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016937 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016938 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016939 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016940 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016941}
16942
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016943// _tmp_134: ':' | ',' (':' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016944static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016945_tmp_134_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016946{
16947 if (p->error_indicator) {
16948 return NULL;
16949 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016950 void * _res = NULL;
16951 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016952 { // ':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016953 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016954 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016955 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016956 )
16957 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016958 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016959 goto done;
16960 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016961 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016962 }
16963 { // ',' (':' | '**')
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016964 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016965 void *_tmp_148_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016966 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016967 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016968 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016969 (_tmp_148_var = _tmp_148_rule(p)) // ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016970 )
16971 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016972 _res = _PyPegen_dummy_name(p, _literal, _tmp_148_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016973 goto done;
16974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016975 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016976 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016977 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016978 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016979 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016980}
16981
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016982// _tmp_135: star_targets '='
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016983static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016984_tmp_135_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016985{
16986 if (p->error_indicator) {
16987 return NULL;
16988 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016989 void * _res = NULL;
16990 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016991 { // star_targets '='
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016992 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016993 expr_ty z;
16994 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016995 (z = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016996 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016997 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016998 )
16999 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017000 _res = z;
17001 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017002 p->error_indicator = 1;
17003 return NULL;
17004 }
17005 goto done;
17006 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017007 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017008 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017009 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017010 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017011 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017012}
17013
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017014// _tmp_136: '.' | '...'
17015static void *
17016_tmp_136_rule(Parser *p)
17017{
17018 if (p->error_indicator) {
17019 return NULL;
17020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017021 void * _res = NULL;
17022 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017023 { // '.'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017024 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017025 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017026 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017027 )
17028 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017029 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017030 goto done;
17031 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017032 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017033 }
17034 { // '...'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017035 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017036 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017037 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017038 )
17039 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017040 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017041 goto done;
17042 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017043 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017044 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017045 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017046 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017047 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017048}
17049
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017050// _tmp_137: '.' | '...'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017051static void *
17052_tmp_137_rule(Parser *p)
17053{
17054 if (p->error_indicator) {
17055 return NULL;
17056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017057 void * _res = NULL;
17058 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017059 { // '.'
17060 Token * _literal;
17061 if (
17062 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
17063 )
17064 {
17065 _res = _literal;
17066 goto done;
17067 }
17068 p->mark = _mark;
17069 }
17070 { // '...'
17071 Token * _literal;
17072 if (
17073 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
17074 )
17075 {
17076 _res = _literal;
17077 goto done;
17078 }
17079 p->mark = _mark;
17080 }
17081 _res = NULL;
17082 done:
17083 return _res;
17084}
17085
17086// _tmp_138: '@' named_expression NEWLINE
17087static void *
17088_tmp_138_rule(Parser *p)
17089{
17090 if (p->error_indicator) {
17091 return NULL;
17092 }
17093 void * _res = NULL;
17094 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017095 { // '@' named_expression NEWLINE
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017096 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017097 expr_ty f;
Pablo Galindob796b3f2020-05-01 12:32:26 +010017098 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017099 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017100 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017101 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017102 (f = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017103 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017104 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017105 )
17106 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017107 _res = f;
17108 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017109 p->error_indicator = 1;
17110 return NULL;
17111 }
17112 goto done;
17113 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017114 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017115 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017116 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017117 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017118 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017119}
17120
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017121// _tmp_139: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017122static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017123_tmp_139_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017124{
17125 if (p->error_indicator) {
17126 return NULL;
17127 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017128 void * _res = NULL;
17129 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017130 { // ',' star_expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017131 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017132 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017133 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017134 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017135 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017136 (c = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017137 )
17138 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017139 _res = c;
17140 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017141 p->error_indicator = 1;
17142 return NULL;
17143 }
17144 goto done;
17145 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017146 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017147 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017148 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017149 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017150 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017151}
17152
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017153// _tmp_140: ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017154static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017155_tmp_140_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017156{
17157 if (p->error_indicator) {
17158 return NULL;
17159 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017160 void * _res = NULL;
17161 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017162 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017163 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017164 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017165 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017166 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017167 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017168 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017169 )
17170 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017171 _res = c;
17172 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017173 p->error_indicator = 1;
17174 return NULL;
17175 }
17176 goto done;
17177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017178 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017179 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017180 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017181 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017182 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017183}
17184
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017185// _tmp_141: 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017186static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017187_tmp_141_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017188{
17189 if (p->error_indicator) {
17190 return NULL;
17191 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017192 void * _res = NULL;
17193 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017194 { // 'or' conjunction
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017195 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017196 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017197 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017198 (_keyword = _PyPegen_expect_token(p, 532)) // token='or'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017199 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017200 (c = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017201 )
17202 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017203 _res = c;
17204 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017205 p->error_indicator = 1;
17206 return NULL;
17207 }
17208 goto done;
17209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017210 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017211 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017212 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017213 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017214 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017215}
17216
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017217// _tmp_142: 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017218static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017219_tmp_142_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017220{
17221 if (p->error_indicator) {
17222 return NULL;
17223 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017224 void * _res = NULL;
17225 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017226 { // 'and' inversion
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017227 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017228 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017229 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017230 (_keyword = _PyPegen_expect_token(p, 533)) // token='and'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017231 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017232 (c = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017233 )
17234 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017235 _res = c;
17236 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017237 p->error_indicator = 1;
17238 return NULL;
17239 }
17240 goto done;
17241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017242 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017244 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017245 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017246 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017247}
17248
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017249// _tmp_143: 'if' disjunction
17250static void *
17251_tmp_143_rule(Parser *p)
17252{
17253 if (p->error_indicator) {
17254 return NULL;
17255 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017256 void * _res = NULL;
17257 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017258 { // 'if' disjunction
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017259 Token * _keyword;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017260 expr_ty z;
17261 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017262 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017263 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017264 (z = disjunction_rule(p)) // disjunction
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017265 )
17266 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017267 _res = z;
17268 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017269 p->error_indicator = 1;
17270 return NULL;
17271 }
17272 goto done;
17273 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017274 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017275 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017276 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017277 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017278 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017279}
17280
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017281// _tmp_144: 'if' disjunction
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017282static void *
17283_tmp_144_rule(Parser *p)
17284{
17285 if (p->error_indicator) {
17286 return NULL;
17287 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017288 void * _res = NULL;
17289 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017290 { // 'if' disjunction
17291 Token * _keyword;
17292 expr_ty z;
17293 if (
17294 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
17295 &&
17296 (z = disjunction_rule(p)) // disjunction
17297 )
17298 {
17299 _res = z;
17300 if (_res == NULL && PyErr_Occurred()) {
17301 p->error_indicator = 1;
17302 return NULL;
17303 }
17304 goto done;
17305 }
17306 p->mark = _mark;
17307 }
17308 _res = NULL;
17309 done:
17310 return _res;
17311}
17312
17313// _tmp_145: ',' star_target
17314static void *
17315_tmp_145_rule(Parser *p)
17316{
17317 if (p->error_indicator) {
17318 return NULL;
17319 }
17320 void * _res = NULL;
17321 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017322 { // ',' star_target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017323 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017324 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017325 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017326 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017327 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017328 (c = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017329 )
17330 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017331 _res = c;
17332 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017333 p->error_indicator = 1;
17334 return NULL;
17335 }
17336 goto done;
17337 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017338 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017339 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017340 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017341 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017342 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017343}
17344
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017345// _loop1_146: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017346static asdl_seq *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017347_loop1_146_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070017348{
17349 if (p->error_indicator) {
17350 return NULL;
17351 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017352 void *_res = NULL;
17353 int _mark = p->mark;
17354 int _start_mark = p->mark;
17355 void **_children = PyMem_Malloc(sizeof(void *));
17356 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070017357 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
17358 return NULL;
17359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017360 ssize_t _children_capacity = 1;
17361 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070017362 { // param_with_default
17363 NameDefaultPair* param_with_default_var;
17364 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010017365 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070017366 )
17367 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017368 _res = param_with_default_var;
17369 if (_n == _children_capacity) {
17370 _children_capacity *= 2;
17371 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17372 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070017373 PyErr_Format(PyExc_MemoryError, "realloc None");
17374 return NULL;
17375 }
17376 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017377 _children[_n++] = _res;
17378 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017379 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017380 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017381 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017382 if (_n == 0 || p->error_indicator) {
17383 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070017384 return NULL;
17385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017386 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17387 if (!_seq) {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017388 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_146");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017389 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070017390 return NULL;
17391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017392 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17393 PyMem_Free(_children);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017394 _PyPegen_insert_memo(p, _start_mark, _loop1_146_type, _seq);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017395 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070017396}
17397
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017398// _tmp_147: ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017399static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017400_tmp_147_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017401{
17402 if (p->error_indicator) {
17403 return NULL;
17404 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017405 void * _res = NULL;
17406 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017407 { // ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017408 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017409 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017410 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017411 )
17412 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017413 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017414 goto done;
17415 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017416 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017417 }
17418 { // '**'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017419 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017420 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017421 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017422 )
17423 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017424 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017425 goto done;
17426 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017427 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017428 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017429 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017430 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017431 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017432}
17433
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017434// _tmp_148: ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017435static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017436_tmp_148_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017437{
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;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017443 { // ':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017444 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017445 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017446 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017447 )
17448 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017449 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017450 goto done;
17451 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017452 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017453 }
17454 { // '**'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017455 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017456 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017457 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017458 )
17459 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017460 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017461 goto done;
17462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017463 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017465 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017466 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017467 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017468}
17469
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017470void *
17471_PyPegen_parse(Parser *p)
17472{
17473 // Initialize keywords
17474 p->keywords = reserved_keywords;
17475 p->n_keyword_lists = n_keyword_lists;
17476
17477 // Run parser
17478 void *result = NULL;
17479 if (p->start_rule == Py_file_input) {
17480 result = file_rule(p);
17481 } else if (p->start_rule == Py_single_input) {
17482 result = interactive_rule(p);
17483 } else if (p->start_rule == Py_eval_input) {
17484 result = eval_rule(p);
Guido van Rossumc001c092020-04-30 12:12:19 -070017485 } else if (p->start_rule == Py_func_type_input) {
17486 result = func_type_rule(p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017487 } else if (p->start_rule == Py_fstring_input) {
17488 result = fstring_rule(p);
17489 }
17490
17491 return result;
17492}
17493
17494// The end