blob: 2a9dad7d1d7ef5698271bfa72827b251b53e78cf [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) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011142 p->error_indicator = 1;
11143 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011144 return NULL;
11145 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011146 ssize_t _children_capacity = 1;
11147 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011148 { // NEWLINE
Pablo Galindob796b3f2020-05-01 12:32:26 +010011149 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011150 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010011151 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011152 )
11153 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011154 _res = newline_var;
11155 if (_n == _children_capacity) {
11156 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011157 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11158 if (!_new_children) {
11159 p->error_indicator = 1;
11160 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011161 return NULL;
11162 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011163 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011164 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011165 _children[_n++] = _res;
11166 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011167 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011168 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011170 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11171 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011172 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011173 p->error_indicator = 1;
11174 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011175 return NULL;
11176 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011177 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11178 PyMem_Free(_children);
11179 _PyPegen_insert_memo(p, _start_mark, _loop0_1_type, _seq);
11180 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011181}
11182
Guido van Rossumc001c092020-04-30 12:12:19 -070011183// _loop0_2: NEWLINE
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011184static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070011185_loop0_2_rule(Parser *p)
11186{
11187 if (p->error_indicator) {
11188 return NULL;
11189 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011190 void *_res = NULL;
11191 int _mark = p->mark;
11192 int _start_mark = p->mark;
11193 void **_children = PyMem_Malloc(sizeof(void *));
11194 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011195 p->error_indicator = 1;
11196 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070011197 return NULL;
11198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011199 ssize_t _children_capacity = 1;
11200 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011201 { // NEWLINE
Pablo Galindob796b3f2020-05-01 12:32:26 +010011202 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070011203 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010011204 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070011205 )
11206 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011207 _res = newline_var;
11208 if (_n == _children_capacity) {
11209 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011210 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11211 if (!_new_children) {
11212 p->error_indicator = 1;
11213 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070011214 return NULL;
11215 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011216 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070011217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011218 _children[_n++] = _res;
11219 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011220 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011221 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011223 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11224 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011225 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011226 p->error_indicator = 1;
11227 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070011228 return NULL;
11229 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011230 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11231 PyMem_Free(_children);
11232 _PyPegen_insert_memo(p, _start_mark, _loop0_2_type, _seq);
11233 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011234}
11235
11236// _loop0_4: ',' expression
11237static asdl_seq *
11238_loop0_4_rule(Parser *p)
11239{
11240 if (p->error_indicator) {
11241 return NULL;
11242 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011243 void *_res = NULL;
11244 int _mark = p->mark;
11245 int _start_mark = p->mark;
11246 void **_children = PyMem_Malloc(sizeof(void *));
11247 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011248 p->error_indicator = 1;
11249 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070011250 return NULL;
11251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011252 ssize_t _children_capacity = 1;
11253 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011254 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011255 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011256 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011257 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011258 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011259 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011260 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011261 )
11262 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011263 _res = elem;
11264 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011265 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011266 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011267 return NULL;
11268 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011269 if (_n == _children_capacity) {
11270 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011271 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11272 if (!_new_children) {
11273 p->error_indicator = 1;
11274 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070011275 return NULL;
11276 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011277 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070011278 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011279 _children[_n++] = _res;
11280 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011281 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011282 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011283 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011284 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11285 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011286 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011287 p->error_indicator = 1;
11288 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070011289 return NULL;
11290 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011291 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11292 PyMem_Free(_children);
11293 _PyPegen_insert_memo(p, _start_mark, _loop0_4_type, _seq);
11294 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011295}
11296
11297// _gather_3: expression _loop0_4
11298static asdl_seq *
11299_gather_3_rule(Parser *p)
11300{
11301 if (p->error_indicator) {
11302 return NULL;
11303 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011304 asdl_seq * _res = NULL;
11305 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011306 { // expression _loop0_4
11307 expr_ty elem;
11308 asdl_seq * seq;
11309 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011310 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011311 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011312 (seq = _loop0_4_rule(p)) // _loop0_4
Guido van Rossumc001c092020-04-30 12:12:19 -070011313 )
11314 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011315 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011316 goto done;
11317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011318 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011319 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011320 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011321 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011322 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011323}
11324
11325// _loop0_6: ',' expression
11326static asdl_seq *
11327_loop0_6_rule(Parser *p)
11328{
11329 if (p->error_indicator) {
11330 return NULL;
11331 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011332 void *_res = NULL;
11333 int _mark = p->mark;
11334 int _start_mark = p->mark;
11335 void **_children = PyMem_Malloc(sizeof(void *));
11336 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011337 p->error_indicator = 1;
11338 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070011339 return NULL;
11340 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011341 ssize_t _children_capacity = 1;
11342 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011343 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011344 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011345 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011346 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011347 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011348 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011349 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011350 )
11351 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011352 _res = elem;
11353 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011354 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011355 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011356 return NULL;
11357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011358 if (_n == _children_capacity) {
11359 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011360 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11361 if (!_new_children) {
11362 p->error_indicator = 1;
11363 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070011364 return NULL;
11365 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011366 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070011367 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011368 _children[_n++] = _res;
11369 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011370 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011371 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011373 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11374 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011375 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011376 p->error_indicator = 1;
11377 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070011378 return NULL;
11379 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011380 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11381 PyMem_Free(_children);
11382 _PyPegen_insert_memo(p, _start_mark, _loop0_6_type, _seq);
11383 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011384}
11385
11386// _gather_5: expression _loop0_6
11387static asdl_seq *
11388_gather_5_rule(Parser *p)
11389{
11390 if (p->error_indicator) {
11391 return NULL;
11392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011393 asdl_seq * _res = NULL;
11394 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011395 { // expression _loop0_6
11396 expr_ty elem;
11397 asdl_seq * seq;
11398 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011399 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011400 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011401 (seq = _loop0_6_rule(p)) // _loop0_6
Guido van Rossumc001c092020-04-30 12:12:19 -070011402 )
11403 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011404 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011405 goto done;
11406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011407 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011408 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011409 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011410 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011411 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011412}
11413
11414// _loop0_8: ',' expression
11415static asdl_seq *
11416_loop0_8_rule(Parser *p)
11417{
11418 if (p->error_indicator) {
11419 return NULL;
11420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011421 void *_res = NULL;
11422 int _mark = p->mark;
11423 int _start_mark = p->mark;
11424 void **_children = PyMem_Malloc(sizeof(void *));
11425 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011426 p->error_indicator = 1;
11427 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070011428 return NULL;
11429 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011430 ssize_t _children_capacity = 1;
11431 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011432 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011433 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011434 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011435 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011436 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011437 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011438 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011439 )
11440 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011441 _res = elem;
11442 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011443 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011444 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011445 return NULL;
11446 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011447 if (_n == _children_capacity) {
11448 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011449 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11450 if (!_new_children) {
11451 p->error_indicator = 1;
11452 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070011453 return NULL;
11454 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011455 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070011456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011457 _children[_n++] = _res;
11458 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011460 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011461 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011462 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11463 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011464 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011465 p->error_indicator = 1;
11466 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070011467 return NULL;
11468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011469 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11470 PyMem_Free(_children);
11471 _PyPegen_insert_memo(p, _start_mark, _loop0_8_type, _seq);
11472 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011473}
11474
11475// _gather_7: expression _loop0_8
11476static asdl_seq *
11477_gather_7_rule(Parser *p)
11478{
11479 if (p->error_indicator) {
11480 return NULL;
11481 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011482 asdl_seq * _res = NULL;
11483 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011484 { // expression _loop0_8
11485 expr_ty elem;
11486 asdl_seq * seq;
11487 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011488 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011489 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011490 (seq = _loop0_8_rule(p)) // _loop0_8
Guido van Rossumc001c092020-04-30 12:12:19 -070011491 )
11492 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011493 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011494 goto done;
11495 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011496 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011497 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011498 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011499 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011500 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011501}
11502
11503// _loop0_10: ',' expression
11504static asdl_seq *
11505_loop0_10_rule(Parser *p)
11506{
11507 if (p->error_indicator) {
11508 return NULL;
11509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011510 void *_res = NULL;
11511 int _mark = p->mark;
11512 int _start_mark = p->mark;
11513 void **_children = PyMem_Malloc(sizeof(void *));
11514 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011515 p->error_indicator = 1;
11516 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070011517 return NULL;
11518 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011519 ssize_t _children_capacity = 1;
11520 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011521 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011522 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011523 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011524 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011525 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011526 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011527 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011528 )
11529 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011530 _res = elem;
11531 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011532 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011533 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011534 return NULL;
11535 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011536 if (_n == _children_capacity) {
11537 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011538 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11539 if (!_new_children) {
11540 p->error_indicator = 1;
11541 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070011542 return NULL;
11543 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011544 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070011545 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011546 _children[_n++] = _res;
11547 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011548 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011549 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011550 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011551 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11552 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011553 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011554 p->error_indicator = 1;
11555 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070011556 return NULL;
11557 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011558 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11559 PyMem_Free(_children);
11560 _PyPegen_insert_memo(p, _start_mark, _loop0_10_type, _seq);
11561 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011562}
11563
11564// _gather_9: expression _loop0_10
11565static asdl_seq *
11566_gather_9_rule(Parser *p)
11567{
11568 if (p->error_indicator) {
11569 return NULL;
11570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011571 asdl_seq * _res = NULL;
11572 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011573 { // expression _loop0_10
11574 expr_ty elem;
11575 asdl_seq * seq;
11576 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011577 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011578 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011579 (seq = _loop0_10_rule(p)) // _loop0_10
Guido van Rossumc001c092020-04-30 12:12:19 -070011580 )
11581 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011582 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011583 goto done;
11584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011585 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011586 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011587 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011588 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011589 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011590}
11591
11592// _loop1_11: statement
11593static asdl_seq *
11594_loop1_11_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011595{
11596 if (p->error_indicator) {
11597 return NULL;
11598 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011599 void *_res = NULL;
11600 int _mark = p->mark;
11601 int _start_mark = p->mark;
11602 void **_children = PyMem_Malloc(sizeof(void *));
11603 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011604 p->error_indicator = 1;
11605 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011606 return NULL;
11607 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011608 ssize_t _children_capacity = 1;
11609 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011610 { // statement
11611 asdl_seq* statement_var;
11612 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010011613 (statement_var = statement_rule(p)) // statement
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011614 )
11615 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011616 _res = statement_var;
11617 if (_n == _children_capacity) {
11618 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011619 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11620 if (!_new_children) {
11621 p->error_indicator = 1;
11622 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011623 return NULL;
11624 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011625 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011626 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011627 _children[_n++] = _res;
11628 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011629 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011630 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011632 if (_n == 0 || p->error_indicator) {
11633 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011634 return NULL;
11635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011636 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11637 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011638 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011639 p->error_indicator = 1;
11640 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011641 return NULL;
11642 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011643 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11644 PyMem_Free(_children);
11645 _PyPegen_insert_memo(p, _start_mark, _loop1_11_type, _seq);
11646 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011647}
11648
Guido van Rossumc001c092020-04-30 12:12:19 -070011649// _loop0_13: ';' small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011650static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070011651_loop0_13_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011652{
11653 if (p->error_indicator) {
11654 return NULL;
11655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011656 void *_res = NULL;
11657 int _mark = p->mark;
11658 int _start_mark = p->mark;
11659 void **_children = PyMem_Malloc(sizeof(void *));
11660 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011661 p->error_indicator = 1;
11662 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011663 return NULL;
11664 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011665 ssize_t _children_capacity = 1;
11666 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011667 { // ';' small_stmt
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011668 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011669 stmt_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011670 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011671 (_literal = _PyPegen_expect_token(p, 13)) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011672 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011673 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011674 )
11675 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011676 _res = elem;
11677 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011678 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011679 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011680 return NULL;
11681 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011682 if (_n == _children_capacity) {
11683 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011684 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11685 if (!_new_children) {
11686 p->error_indicator = 1;
11687 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011688 return NULL;
11689 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011690 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011692 _children[_n++] = _res;
11693 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011694 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011695 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011696 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011697 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11698 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011699 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030011700 p->error_indicator = 1;
11701 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011702 return NULL;
11703 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011704 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11705 PyMem_Free(_children);
11706 _PyPegen_insert_memo(p, _start_mark, _loop0_13_type, _seq);
11707 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011708}
11709
Guido van Rossumc001c092020-04-30 12:12:19 -070011710// _gather_12: small_stmt _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011711static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070011712_gather_12_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011713{
11714 if (p->error_indicator) {
11715 return NULL;
11716 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011717 asdl_seq * _res = NULL;
11718 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011719 { // small_stmt _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011720 stmt_ty elem;
11721 asdl_seq * seq;
11722 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011723 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011724 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011725 (seq = _loop0_13_rule(p)) // _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011726 )
11727 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011728 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011729 goto done;
11730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011731 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011733 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011734 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011735 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011736}
11737
Guido van Rossumc001c092020-04-30 12:12:19 -070011738// _tmp_14: 'import' | 'from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011739static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011740_tmp_14_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011741{
11742 if (p->error_indicator) {
11743 return NULL;
11744 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011745 void * _res = NULL;
11746 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011747 { // 'import'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011748 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011749 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011750 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011751 )
11752 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011753 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011754 goto done;
11755 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011756 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011757 }
11758 { // 'from'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011759 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011760 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011761 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011762 )
11763 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011764 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011765 goto done;
11766 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011767 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011768 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011769 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011770 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011771 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011772}
11773
Guido van Rossumc001c092020-04-30 12:12:19 -070011774// _tmp_15: 'def' | '@' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011775static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011776_tmp_15_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011777{
11778 if (p->error_indicator) {
11779 return NULL;
11780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011781 void * _res = NULL;
11782 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011783 { // 'def'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011784 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011785 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011786 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011787 )
11788 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011789 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011790 goto done;
11791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011792 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011793 }
11794 { // '@'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011795 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011796 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011797 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011798 )
11799 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011800 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011801 goto done;
11802 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011803 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011804 }
11805 { // ASYNC
Pablo Galindob796b3f2020-05-01 12:32:26 +010011806 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011807 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011808 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011809 )
11810 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011811 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011812 goto done;
11813 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011814 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011816 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011817 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011818 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011819}
11820
Guido van Rossumc001c092020-04-30 12:12:19 -070011821// _tmp_16: 'class' | '@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011822static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011823_tmp_16_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011824{
11825 if (p->error_indicator) {
11826 return NULL;
11827 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011828 void * _res = NULL;
11829 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011830 { // 'class'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011831 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011832 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011833 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011834 )
11835 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011836 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011837 goto done;
11838 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011839 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011840 }
11841 { // '@'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011842 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011843 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011844 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011845 )
11846 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011847 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011848 goto done;
11849 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011850 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011852 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011853 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011854 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011855}
11856
Guido van Rossumc001c092020-04-30 12:12:19 -070011857// _tmp_17: 'with' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011858static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011859_tmp_17_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011860{
11861 if (p->error_indicator) {
11862 return NULL;
11863 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011864 void * _res = NULL;
11865 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011866 { // 'with'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011867 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011868 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011869 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011870 )
11871 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011872 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011873 goto done;
11874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011875 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011876 }
11877 { // ASYNC
Pablo Galindob796b3f2020-05-01 12:32:26 +010011878 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011879 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011880 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011881 )
11882 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011883 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011884 goto done;
11885 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011886 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011887 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011888 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011889 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011890 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011891}
11892
Guido van Rossumc001c092020-04-30 12:12:19 -070011893// _tmp_18: 'for' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011894static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011895_tmp_18_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011896{
11897 if (p->error_indicator) {
11898 return NULL;
11899 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011900 void * _res = NULL;
11901 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011902 { // 'for'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011903 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011904 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011905 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011906 )
11907 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011908 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011909 goto done;
11910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011911 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011912 }
11913 { // ASYNC
Pablo Galindob796b3f2020-05-01 12:32:26 +010011914 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011915 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011916 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011917 )
11918 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011919 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011920 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
Guido van Rossumc001c092020-04-30 12:12:19 -070011929// _tmp_19: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011930static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011931_tmp_19_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;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011938 { // '=' annotated_rhs
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011939 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011940 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011941 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011942 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011943 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011944 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011945 )
11946 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011947 _res = d;
11948 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011949 p->error_indicator = 1;
11950 return NULL;
11951 }
11952 goto done;
11953 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011954 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011955 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011956 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011957 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011958 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011959}
11960
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030011961// _tmp_20: '(' single_target ')' | single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011962static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011963_tmp_20_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011964{
11965 if (p->error_indicator) {
11966 return NULL;
11967 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011968 void * _res = NULL;
11969 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030011970 { // '(' single_target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011971 Token * _literal;
11972 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011973 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011974 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011975 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011976 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030011977 (b = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011978 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011979 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011980 )
11981 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011982 _res = b;
11983 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011984 p->error_indicator = 1;
11985 return NULL;
11986 }
11987 goto done;
11988 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011989 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011990 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030011991 { // single_subscript_attribute_target
11992 expr_ty single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011993 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030011994 (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p)) // single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011995 )
11996 {
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030011997 _res = single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011998 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// _tmp_21: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012008static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070012009_tmp_21_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012010{
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;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012016 { // '=' annotated_rhs
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012017 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012018 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012019 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012020 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012021 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012022 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012023 )
12024 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012025 _res = d;
12026 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012027 p->error_indicator = 1;
12028 return NULL;
12029 }
12030 goto done;
12031 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012032 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012034 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012035 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012036 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012037}
12038
Guido van Rossumc001c092020-04-30 12:12:19 -070012039// _loop1_22: (star_targets '=')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012040static asdl_seq *
12041_loop1_22_rule(Parser *p)
12042{
12043 if (p->error_indicator) {
12044 return NULL;
12045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012046 void *_res = NULL;
12047 int _mark = p->mark;
12048 int _start_mark = p->mark;
12049 void **_children = PyMem_Malloc(sizeof(void *));
12050 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012051 p->error_indicator = 1;
12052 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012053 return NULL;
12054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012055 ssize_t _children_capacity = 1;
12056 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012057 { // (star_targets '=')
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012058 void *_tmp_135_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012059 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012060 (_tmp_135_var = _tmp_135_rule(p)) // star_targets '='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012061 )
12062 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012063 _res = _tmp_135_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012064 if (_n == _children_capacity) {
12065 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012066 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12067 if (!_new_children) {
12068 p->error_indicator = 1;
12069 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012070 return NULL;
12071 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012072 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012073 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012074 _children[_n++] = _res;
12075 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012076 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012077 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012079 if (_n == 0 || p->error_indicator) {
12080 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012081 return NULL;
12082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012083 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12084 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012085 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012086 p->error_indicator = 1;
12087 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012088 return NULL;
12089 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012090 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12091 PyMem_Free(_children);
12092 _PyPegen_insert_memo(p, _start_mark, _loop1_22_type, _seq);
12093 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012094}
12095
Guido van Rossumc001c092020-04-30 12:12:19 -070012096// _tmp_23: yield_expr | star_expressions
12097static void *
12098_tmp_23_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// _tmp_24: yield_expr | star_expressions
12133static void *
12134_tmp_24_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;
Guido van Rossumc001c092020-04-30 12:12:19 -070012141 { // yield_expr
12142 expr_ty yield_expr_var;
12143 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012144 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070012145 )
12146 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012147 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012148 goto done;
12149 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012150 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012151 }
12152 { // star_expressions
12153 expr_ty star_expressions_var;
12154 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012155 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070012156 )
12157 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012158 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012159 goto done;
12160 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012161 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012163 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012164 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012165 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012166}
12167
12168// _loop0_26: ',' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012169static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012170_loop0_26_rule(Parser *p)
12171{
12172 if (p->error_indicator) {
12173 return NULL;
12174 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012175 void *_res = NULL;
12176 int _mark = p->mark;
12177 int _start_mark = p->mark;
12178 void **_children = PyMem_Malloc(sizeof(void *));
12179 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012180 p->error_indicator = 1;
12181 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012182 return NULL;
12183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012184 ssize_t _children_capacity = 1;
12185 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012186 { // ',' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012187 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012188 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012189 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012190 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012191 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012192 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070012193 )
12194 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012195 _res = elem;
12196 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012197 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012198 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012199 return NULL;
12200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012201 if (_n == _children_capacity) {
12202 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012203 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12204 if (!_new_children) {
12205 p->error_indicator = 1;
12206 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012207 return NULL;
12208 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012209 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012210 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012211 _children[_n++] = _res;
12212 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012214 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012216 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12217 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012218 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012219 p->error_indicator = 1;
12220 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012221 return NULL;
12222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012223 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12224 PyMem_Free(_children);
12225 _PyPegen_insert_memo(p, _start_mark, _loop0_26_type, _seq);
12226 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012227}
12228
12229// _gather_25: NAME _loop0_26
12230static asdl_seq *
12231_gather_25_rule(Parser *p)
12232{
12233 if (p->error_indicator) {
12234 return NULL;
12235 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012236 asdl_seq * _res = NULL;
12237 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012238 { // NAME _loop0_26
12239 expr_ty elem;
12240 asdl_seq * seq;
12241 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012242 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070012243 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012244 (seq = _loop0_26_rule(p)) // _loop0_26
Guido van Rossumc001c092020-04-30 12:12:19 -070012245 )
12246 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012247 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012248 goto done;
12249 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012250 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012252 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012253 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012254 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012255}
12256
12257// _loop0_28: ',' NAME
12258static asdl_seq *
12259_loop0_28_rule(Parser *p)
12260{
12261 if (p->error_indicator) {
12262 return NULL;
12263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012264 void *_res = NULL;
12265 int _mark = p->mark;
12266 int _start_mark = p->mark;
12267 void **_children = PyMem_Malloc(sizeof(void *));
12268 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012269 p->error_indicator = 1;
12270 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012271 return NULL;
12272 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012273 ssize_t _children_capacity = 1;
12274 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012275 { // ',' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012276 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012277 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012278 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012279 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012280 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012281 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070012282 )
12283 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012284 _res = elem;
12285 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012286 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012287 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012288 return NULL;
12289 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012290 if (_n == _children_capacity) {
12291 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012292 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12293 if (!_new_children) {
12294 p->error_indicator = 1;
12295 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012296 return NULL;
12297 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012298 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012299 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012300 _children[_n++] = _res;
12301 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012302 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012303 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012304 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012305 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12306 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012307 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012308 p->error_indicator = 1;
12309 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012310 return NULL;
12311 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012312 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12313 PyMem_Free(_children);
12314 _PyPegen_insert_memo(p, _start_mark, _loop0_28_type, _seq);
12315 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012316}
12317
12318// _gather_27: NAME _loop0_28
12319static asdl_seq *
12320_gather_27_rule(Parser *p)
12321{
12322 if (p->error_indicator) {
12323 return NULL;
12324 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012325 asdl_seq * _res = NULL;
12326 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012327 { // NAME _loop0_28
12328 expr_ty elem;
12329 asdl_seq * seq;
12330 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012331 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070012332 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012333 (seq = _loop0_28_rule(p)) // _loop0_28
Guido van Rossumc001c092020-04-30 12:12:19 -070012334 )
12335 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012336 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012337 goto done;
12338 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012339 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012340 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012341 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012342 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012343 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012344}
12345
12346// _tmp_29: ',' expression
12347static void *
12348_tmp_29_rule(Parser *p)
12349{
12350 if (p->error_indicator) {
12351 return NULL;
12352 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012353 void * _res = NULL;
12354 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012355 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012356 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012357 expr_ty z;
12358 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012359 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012360 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012361 (z = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012362 )
12363 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012364 _res = z;
12365 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012366 p->error_indicator = 1;
12367 return NULL;
12368 }
12369 goto done;
12370 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012371 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012373 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012374 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012375 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012376}
12377
12378// _loop0_30: ('.' | '...')
12379static asdl_seq *
12380_loop0_30_rule(Parser *p)
12381{
12382 if (p->error_indicator) {
12383 return NULL;
12384 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012385 void *_res = NULL;
12386 int _mark = p->mark;
12387 int _start_mark = p->mark;
12388 void **_children = PyMem_Malloc(sizeof(void *));
12389 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012390 p->error_indicator = 1;
12391 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012392 return NULL;
12393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012394 ssize_t _children_capacity = 1;
12395 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012396 { // ('.' | '...')
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012397 void *_tmp_136_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012398 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012399 (_tmp_136_var = _tmp_136_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070012400 )
12401 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012402 _res = _tmp_136_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012403 if (_n == _children_capacity) {
12404 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012405 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12406 if (!_new_children) {
12407 p->error_indicator = 1;
12408 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012409 return NULL;
12410 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012411 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012413 _children[_n++] = _res;
12414 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012415 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012416 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012417 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012418 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12419 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012420 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012421 p->error_indicator = 1;
12422 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012423 return NULL;
12424 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012425 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12426 PyMem_Free(_children);
12427 _PyPegen_insert_memo(p, _start_mark, _loop0_30_type, _seq);
12428 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012429}
12430
12431// _loop1_31: ('.' | '...')
12432static asdl_seq *
12433_loop1_31_rule(Parser *p)
12434{
12435 if (p->error_indicator) {
12436 return NULL;
12437 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012438 void *_res = NULL;
12439 int _mark = p->mark;
12440 int _start_mark = p->mark;
12441 void **_children = PyMem_Malloc(sizeof(void *));
12442 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012443 p->error_indicator = 1;
12444 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012445 return NULL;
12446 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012447 ssize_t _children_capacity = 1;
12448 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012449 { // ('.' | '...')
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012450 void *_tmp_137_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012451 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012452 (_tmp_137_var = _tmp_137_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070012453 )
12454 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012455 _res = _tmp_137_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012456 if (_n == _children_capacity) {
12457 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012458 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12459 if (!_new_children) {
12460 p->error_indicator = 1;
12461 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012462 return NULL;
12463 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012464 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012465 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012466 _children[_n++] = _res;
12467 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012469 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012470 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012471 if (_n == 0 || p->error_indicator) {
12472 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012473 return NULL;
12474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012475 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12476 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012477 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012478 p->error_indicator = 1;
12479 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012480 return NULL;
12481 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012482 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12483 PyMem_Free(_children);
12484 _PyPegen_insert_memo(p, _start_mark, _loop1_31_type, _seq);
12485 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012486}
12487
12488// _loop0_33: ',' import_from_as_name
12489static asdl_seq *
12490_loop0_33_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012491{
12492 if (p->error_indicator) {
12493 return NULL;
12494 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012495 void *_res = NULL;
12496 int _mark = p->mark;
12497 int _start_mark = p->mark;
12498 void **_children = PyMem_Malloc(sizeof(void *));
12499 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012500 p->error_indicator = 1;
12501 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012502 return NULL;
12503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012504 ssize_t _children_capacity = 1;
12505 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012506 { // ',' import_from_as_name
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012507 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012508 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012509 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012510 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012511 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012512 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012513 )
12514 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012515 _res = elem;
12516 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012517 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012518 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012519 return NULL;
12520 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012521 if (_n == _children_capacity) {
12522 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012523 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12524 if (!_new_children) {
12525 p->error_indicator = 1;
12526 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012527 return NULL;
12528 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012529 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012530 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012531 _children[_n++] = _res;
12532 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012533 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012534 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012535 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012536 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12537 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012538 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012539 p->error_indicator = 1;
12540 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012541 return NULL;
12542 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012543 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12544 PyMem_Free(_children);
12545 _PyPegen_insert_memo(p, _start_mark, _loop0_33_type, _seq);
12546 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012547}
12548
Guido van Rossumc001c092020-04-30 12:12:19 -070012549// _gather_32: import_from_as_name _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012550static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012551_gather_32_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012552{
12553 if (p->error_indicator) {
12554 return NULL;
12555 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012556 asdl_seq * _res = NULL;
12557 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012558 { // import_from_as_name _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012559 alias_ty elem;
12560 asdl_seq * seq;
12561 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012562 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012563 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012564 (seq = _loop0_33_rule(p)) // _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012565 )
12566 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012567 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012568 goto done;
12569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012570 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012571 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012572 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012573 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012574 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012575}
12576
Guido van Rossumc001c092020-04-30 12:12:19 -070012577// _tmp_34: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012578static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070012579_tmp_34_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012580{
12581 if (p->error_indicator) {
12582 return NULL;
12583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012584 void * _res = NULL;
12585 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012586 { // 'as' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012587 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012588 expr_ty z;
12589 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012590 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012591 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012592 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012593 )
12594 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012595 _res = z;
12596 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012597 p->error_indicator = 1;
12598 return NULL;
12599 }
12600 goto done;
12601 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012602 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012603 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012604 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012605 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012606 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012607}
12608
Guido van Rossumc001c092020-04-30 12:12:19 -070012609// _loop0_36: ',' dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012610static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012611_loop0_36_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012612{
12613 if (p->error_indicator) {
12614 return NULL;
12615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012616 void *_res = NULL;
12617 int _mark = p->mark;
12618 int _start_mark = p->mark;
12619 void **_children = PyMem_Malloc(sizeof(void *));
12620 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012621 p->error_indicator = 1;
12622 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012623 return NULL;
12624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012625 ssize_t _children_capacity = 1;
12626 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012627 { // ',' dotted_as_name
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012628 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012629 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012630 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012631 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012632 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012633 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012634 )
12635 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012636 _res = elem;
12637 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012638 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012639 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012640 return NULL;
12641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012642 if (_n == _children_capacity) {
12643 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012644 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12645 if (!_new_children) {
12646 p->error_indicator = 1;
12647 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012648 return NULL;
12649 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012650 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012651 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012652 _children[_n++] = _res;
12653 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012654 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012655 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012656 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012657 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12658 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012659 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012660 p->error_indicator = 1;
12661 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012662 return NULL;
12663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012664 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12665 PyMem_Free(_children);
12666 _PyPegen_insert_memo(p, _start_mark, _loop0_36_type, _seq);
12667 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012668}
12669
Guido van Rossumc001c092020-04-30 12:12:19 -070012670// _gather_35: dotted_as_name _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012671static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012672_gather_35_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 asdl_seq * _res = NULL;
12678 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012679 { // dotted_as_name _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012680 alias_ty elem;
12681 asdl_seq * seq;
12682 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012683 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012684 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012685 (seq = _loop0_36_rule(p)) // _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012686 )
12687 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012688 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012689 goto done;
12690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012691 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012692 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012693 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012694 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012695 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012696}
12697
Guido van Rossumc001c092020-04-30 12:12:19 -070012698// _tmp_37: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012699static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070012700_tmp_37_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012701{
12702 if (p->error_indicator) {
12703 return NULL;
12704 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012705 void * _res = NULL;
12706 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012707 { // 'as' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012708 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012709 expr_ty z;
12710 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012711 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012712 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012713 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012714 )
12715 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012716 _res = z;
12717 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012718 p->error_indicator = 1;
12719 return NULL;
12720 }
12721 goto done;
12722 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012723 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012724 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012725 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012726 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012727 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012728}
12729
Guido van Rossumc001c092020-04-30 12:12:19 -070012730// _loop0_39: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012731static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012732_loop0_39_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012733{
12734 if (p->error_indicator) {
12735 return NULL;
12736 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012737 void *_res = NULL;
12738 int _mark = p->mark;
12739 int _start_mark = p->mark;
12740 void **_children = PyMem_Malloc(sizeof(void *));
12741 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012742 p->error_indicator = 1;
12743 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012744 return NULL;
12745 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012746 ssize_t _children_capacity = 1;
12747 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012748 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012749 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012750 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012751 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012752 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012753 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012754 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012755 )
12756 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012757 _res = elem;
12758 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012759 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012760 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012761 return NULL;
12762 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012763 if (_n == _children_capacity) {
12764 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012765 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12766 if (!_new_children) {
12767 p->error_indicator = 1;
12768 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012769 return NULL;
12770 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012771 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012772 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012773 _children[_n++] = _res;
12774 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012775 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012776 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012777 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012778 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12779 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012780 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012781 p->error_indicator = 1;
12782 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012783 return NULL;
12784 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012785 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12786 PyMem_Free(_children);
12787 _PyPegen_insert_memo(p, _start_mark, _loop0_39_type, _seq);
12788 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012789}
12790
Guido van Rossumc001c092020-04-30 12:12:19 -070012791// _gather_38: with_item _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012792static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012793_gather_38_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012794{
12795 if (p->error_indicator) {
12796 return NULL;
12797 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012798 asdl_seq * _res = NULL;
12799 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012800 { // with_item _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012801 withitem_ty elem;
12802 asdl_seq * seq;
12803 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012804 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012805 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012806 (seq = _loop0_39_rule(p)) // _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012807 )
12808 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012809 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012810 goto done;
12811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012812 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012813 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012814 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012815 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012816 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012817}
12818
Guido van Rossumc001c092020-04-30 12:12:19 -070012819// _loop0_41: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012820static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012821_loop0_41_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012822{
12823 if (p->error_indicator) {
12824 return NULL;
12825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012826 void *_res = NULL;
12827 int _mark = p->mark;
12828 int _start_mark = p->mark;
12829 void **_children = PyMem_Malloc(sizeof(void *));
12830 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012831 p->error_indicator = 1;
12832 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012833 return NULL;
12834 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012835 ssize_t _children_capacity = 1;
12836 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012837 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012838 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012839 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012840 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012841 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012842 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012843 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012844 )
12845 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012846 _res = elem;
12847 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012848 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012849 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012850 return NULL;
12851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012852 if (_n == _children_capacity) {
12853 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012854 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12855 if (!_new_children) {
12856 p->error_indicator = 1;
12857 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012858 return NULL;
12859 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012860 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012861 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012862 _children[_n++] = _res;
12863 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012864 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012865 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012866 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012867 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12868 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012869 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012870 p->error_indicator = 1;
12871 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012872 return NULL;
12873 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012874 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12875 PyMem_Free(_children);
12876 _PyPegen_insert_memo(p, _start_mark, _loop0_41_type, _seq);
12877 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012878}
12879
Guido van Rossumc001c092020-04-30 12:12:19 -070012880// _gather_40: with_item _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012881static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012882_gather_40_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012883{
12884 if (p->error_indicator) {
12885 return NULL;
12886 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012887 asdl_seq * _res = NULL;
12888 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012889 { // with_item _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012890 withitem_ty elem;
12891 asdl_seq * seq;
12892 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012893 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012894 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012895 (seq = _loop0_41_rule(p)) // _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012896 )
12897 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012898 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012899 goto done;
12900 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012901 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012902 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012903 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012904 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012905 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012906}
12907
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012908// _loop0_43: ',' with_item
12909static asdl_seq *
12910_loop0_43_rule(Parser *p)
12911{
12912 if (p->error_indicator) {
12913 return NULL;
12914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012915 void *_res = NULL;
12916 int _mark = p->mark;
12917 int _start_mark = p->mark;
12918 void **_children = PyMem_Malloc(sizeof(void *));
12919 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012920 p->error_indicator = 1;
12921 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012922 return NULL;
12923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012924 ssize_t _children_capacity = 1;
12925 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012926 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012927 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012928 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012929 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012930 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012931 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012932 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012933 )
12934 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012935 _res = elem;
12936 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012937 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012938 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012939 return NULL;
12940 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012941 if (_n == _children_capacity) {
12942 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012943 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12944 if (!_new_children) {
12945 p->error_indicator = 1;
12946 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012947 return NULL;
12948 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012949 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012951 _children[_n++] = _res;
12952 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012953 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012954 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012955 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012956 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12957 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012958 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012959 p->error_indicator = 1;
12960 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012961 return NULL;
12962 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012963 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12964 PyMem_Free(_children);
12965 _PyPegen_insert_memo(p, _start_mark, _loop0_43_type, _seq);
12966 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012967}
12968
12969// _gather_42: with_item _loop0_43
12970static asdl_seq *
12971_gather_42_rule(Parser *p)
12972{
12973 if (p->error_indicator) {
12974 return NULL;
12975 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012976 asdl_seq * _res = NULL;
12977 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012978 { // with_item _loop0_43
12979 withitem_ty elem;
12980 asdl_seq * seq;
12981 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012982 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012983 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012984 (seq = _loop0_43_rule(p)) // _loop0_43
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012985 )
12986 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012987 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012988 goto done;
12989 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012990 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012991 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012992 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012993 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012994 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012995}
12996
12997// _loop0_45: ',' with_item
12998static asdl_seq *
12999_loop0_45_rule(Parser *p)
13000{
13001 if (p->error_indicator) {
13002 return NULL;
13003 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013004 void *_res = NULL;
13005 int _mark = p->mark;
13006 int _start_mark = p->mark;
13007 void **_children = PyMem_Malloc(sizeof(void *));
13008 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013009 p->error_indicator = 1;
13010 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013011 return NULL;
13012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013013 ssize_t _children_capacity = 1;
13014 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013015 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013016 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013017 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013018 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013019 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013020 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013021 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013022 )
13023 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013024 _res = elem;
13025 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013026 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013027 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013028 return NULL;
13029 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013030 if (_n == _children_capacity) {
13031 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013032 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13033 if (!_new_children) {
13034 p->error_indicator = 1;
13035 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013036 return NULL;
13037 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013038 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013039 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013040 _children[_n++] = _res;
13041 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013042 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013043 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013044 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013045 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13046 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013047 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013048 p->error_indicator = 1;
13049 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013050 return NULL;
13051 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013052 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13053 PyMem_Free(_children);
13054 _PyPegen_insert_memo(p, _start_mark, _loop0_45_type, _seq);
13055 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013056}
13057
13058// _gather_44: with_item _loop0_45
13059static asdl_seq *
13060_gather_44_rule(Parser *p)
13061{
13062 if (p->error_indicator) {
13063 return NULL;
13064 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013065 asdl_seq * _res = NULL;
13066 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013067 { // with_item _loop0_45
13068 withitem_ty elem;
13069 asdl_seq * seq;
13070 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013071 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013072 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013073 (seq = _loop0_45_rule(p)) // _loop0_45
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013074 )
13075 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013076 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013077 goto done;
13078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013079 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013081 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013082 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013083 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013084}
13085
13086// _tmp_46: 'as' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013087static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013088_tmp_46_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013089{
13090 if (p->error_indicator) {
13091 return NULL;
13092 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013093 void * _res = NULL;
13094 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013095 { // 'as' target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013096 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013097 expr_ty t;
13098 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013099 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013100 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013101 (t = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013102 )
13103 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013104 _res = t;
13105 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013106 p->error_indicator = 1;
13107 return NULL;
13108 }
13109 goto done;
13110 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013111 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013113 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013114 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013115 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013116}
13117
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013118// _loop1_47: except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013119static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013120_loop1_47_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013121{
13122 if (p->error_indicator) {
13123 return NULL;
13124 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013125 void *_res = NULL;
13126 int _mark = p->mark;
13127 int _start_mark = p->mark;
13128 void **_children = PyMem_Malloc(sizeof(void *));
13129 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013130 p->error_indicator = 1;
13131 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013132 return NULL;
13133 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013134 ssize_t _children_capacity = 1;
13135 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013136 { // except_block
13137 excepthandler_ty except_block_var;
13138 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013139 (except_block_var = except_block_rule(p)) // except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013140 )
13141 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013142 _res = except_block_var;
13143 if (_n == _children_capacity) {
13144 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013145 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13146 if (!_new_children) {
13147 p->error_indicator = 1;
13148 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013149 return NULL;
13150 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013151 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013153 _children[_n++] = _res;
13154 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013155 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013156 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013158 if (_n == 0 || p->error_indicator) {
13159 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013160 return NULL;
13161 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013162 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13163 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013164 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013165 p->error_indicator = 1;
13166 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013167 return NULL;
13168 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013169 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13170 PyMem_Free(_children);
13171 _PyPegen_insert_memo(p, _start_mark, _loop1_47_type, _seq);
13172 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013173}
13174
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013175// _tmp_48: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013176static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013177_tmp_48_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013178{
13179 if (p->error_indicator) {
13180 return NULL;
13181 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013182 void * _res = NULL;
13183 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013184 { // 'as' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013185 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013186 expr_ty z;
13187 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013188 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013189 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013190 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013191 )
13192 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013193 _res = z;
13194 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013195 p->error_indicator = 1;
13196 return NULL;
13197 }
13198 goto done;
13199 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013200 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013201 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013202 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013203 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013204 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013205}
13206
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013207// _tmp_49: 'from' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013208static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013209_tmp_49_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013210{
13211 if (p->error_indicator) {
13212 return NULL;
13213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013214 void * _res = NULL;
13215 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013216 { // 'from' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013217 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013218 expr_ty z;
13219 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013220 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013221 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013222 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013223 )
13224 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013225 _res = z;
13226 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013227 p->error_indicator = 1;
13228 return NULL;
13229 }
13230 goto done;
13231 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013232 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013233 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013234 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013235 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013236 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013237}
13238
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013239// _tmp_50: '->' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013240static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013241_tmp_50_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013242{
13243 if (p->error_indicator) {
13244 return NULL;
13245 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013246 void * _res = NULL;
13247 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013248 { // '->' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013249 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070013250 expr_ty z;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013251 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013252 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013253 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013254 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013255 )
13256 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013257 _res = z;
13258 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013259 p->error_indicator = 1;
13260 return NULL;
13261 }
13262 goto done;
13263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013264 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013266 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013267 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013268 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013269}
13270
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013271// _tmp_51: '->' expression
Guido van Rossumc001c092020-04-30 12:12:19 -070013272static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013273_tmp_51_rule(Parser *p)
13274{
13275 if (p->error_indicator) {
13276 return NULL;
13277 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013278 void * _res = NULL;
13279 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013280 { // '->' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013281 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013282 expr_ty z;
13283 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013284 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013285 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013286 (z = expression_rule(p)) // expression
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013287 )
13288 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013289 _res = z;
13290 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013291 p->error_indicator = 1;
13292 return NULL;
13293 }
13294 goto done;
13295 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013296 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013297 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013298 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013299 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013300 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013301}
13302
13303// _tmp_52: NEWLINE INDENT
13304static void *
13305_tmp_52_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013306{
13307 if (p->error_indicator) {
13308 return NULL;
13309 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013310 void * _res = NULL;
13311 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013312 { // NEWLINE INDENT
Pablo Galindob796b3f2020-05-01 12:32:26 +010013313 Token * indent_var;
13314 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013315 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013316 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070013317 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013318 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070013319 )
13320 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013321 _res = _PyPegen_dummy_name(p, newline_var, indent_var);
Guido van Rossumc001c092020-04-30 12:12:19 -070013322 goto done;
13323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013324 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013325 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013326 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013327 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013328 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013329}
13330
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013331// _loop0_53: param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013332static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013333_loop0_53_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013334{
13335 if (p->error_indicator) {
13336 return NULL;
13337 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013338 void *_res = NULL;
13339 int _mark = p->mark;
13340 int _start_mark = p->mark;
13341 void **_children = PyMem_Malloc(sizeof(void *));
13342 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013343 p->error_indicator = 1;
13344 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013345 return NULL;
13346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013347 ssize_t _children_capacity = 1;
13348 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013349 { // param_no_default
13350 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013351 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013352 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013353 )
13354 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013355 _res = param_no_default_var;
13356 if (_n == _children_capacity) {
13357 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013358 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13359 if (!_new_children) {
13360 p->error_indicator = 1;
13361 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013362 return NULL;
13363 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013364 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013366 _children[_n++] = _res;
13367 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013368 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013369 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013370 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013371 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13372 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013373 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013374 p->error_indicator = 1;
13375 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013376 return NULL;
13377 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013378 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13379 PyMem_Free(_children);
13380 _PyPegen_insert_memo(p, _start_mark, _loop0_53_type, _seq);
13381 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013382}
13383
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013384// _loop0_54: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013385static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013386_loop0_54_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013387{
13388 if (p->error_indicator) {
13389 return NULL;
13390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013391 void *_res = NULL;
13392 int _mark = p->mark;
13393 int _start_mark = p->mark;
13394 void **_children = PyMem_Malloc(sizeof(void *));
13395 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013396 p->error_indicator = 1;
13397 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013398 return NULL;
13399 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013400 ssize_t _children_capacity = 1;
13401 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013402 { // param_with_default
13403 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013404 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013405 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013406 )
13407 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013408 _res = param_with_default_var;
13409 if (_n == _children_capacity) {
13410 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013411 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13412 if (!_new_children) {
13413 p->error_indicator = 1;
13414 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013415 return NULL;
13416 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013417 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013418 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013419 _children[_n++] = _res;
13420 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013421 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013422 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013423 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013424 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13425 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013426 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013427 p->error_indicator = 1;
13428 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013429 return NULL;
13430 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013431 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13432 PyMem_Free(_children);
13433 _PyPegen_insert_memo(p, _start_mark, _loop0_54_type, _seq);
13434 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013435}
13436
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013437// _loop0_55: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013438static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013439_loop0_55_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013440{
13441 if (p->error_indicator) {
13442 return NULL;
13443 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013444 void *_res = NULL;
13445 int _mark = p->mark;
13446 int _start_mark = p->mark;
13447 void **_children = PyMem_Malloc(sizeof(void *));
13448 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013449 p->error_indicator = 1;
13450 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013451 return NULL;
13452 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013453 ssize_t _children_capacity = 1;
13454 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013455 { // param_with_default
13456 NameDefaultPair* param_with_default_var;
13457 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013458 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013459 )
13460 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013461 _res = param_with_default_var;
13462 if (_n == _children_capacity) {
13463 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013464 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13465 if (!_new_children) {
13466 p->error_indicator = 1;
13467 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013468 return NULL;
13469 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013470 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013471 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013472 _children[_n++] = _res;
13473 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013475 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013476 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013477 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13478 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013479 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013480 p->error_indicator = 1;
13481 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013482 return NULL;
13483 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013484 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13485 PyMem_Free(_children);
13486 _PyPegen_insert_memo(p, _start_mark, _loop0_55_type, _seq);
13487 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013488}
13489
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013490// _loop1_56: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013491static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013492_loop1_56_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013493{
13494 if (p->error_indicator) {
13495 return NULL;
13496 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013497 void *_res = NULL;
13498 int _mark = p->mark;
13499 int _start_mark = p->mark;
13500 void **_children = PyMem_Malloc(sizeof(void *));
13501 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013502 p->error_indicator = 1;
13503 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013504 return NULL;
13505 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013506 ssize_t _children_capacity = 1;
13507 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013508 { // param_no_default
13509 arg_ty param_no_default_var;
13510 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013511 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013512 )
13513 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013514 _res = param_no_default_var;
13515 if (_n == _children_capacity) {
13516 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013517 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13518 if (!_new_children) {
13519 p->error_indicator = 1;
13520 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013521 return NULL;
13522 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013523 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013524 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013525 _children[_n++] = _res;
13526 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013528 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013529 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013530 if (_n == 0 || p->error_indicator) {
13531 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013532 return NULL;
13533 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013534 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13535 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013536 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013537 p->error_indicator = 1;
13538 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013539 return NULL;
13540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013541 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13542 PyMem_Free(_children);
13543 _PyPegen_insert_memo(p, _start_mark, _loop1_56_type, _seq);
13544 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013545}
13546
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013547// _loop0_57: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013548static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013549_loop0_57_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013550{
13551 if (p->error_indicator) {
13552 return NULL;
13553 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013554 void *_res = NULL;
13555 int _mark = p->mark;
13556 int _start_mark = p->mark;
13557 void **_children = PyMem_Malloc(sizeof(void *));
13558 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013559 p->error_indicator = 1;
13560 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013561 return NULL;
13562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013563 ssize_t _children_capacity = 1;
13564 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013565 { // param_with_default
13566 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013567 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013568 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013569 )
13570 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013571 _res = param_with_default_var;
13572 if (_n == _children_capacity) {
13573 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013574 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13575 if (!_new_children) {
13576 p->error_indicator = 1;
13577 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013578 return NULL;
13579 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013580 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013581 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013582 _children[_n++] = _res;
13583 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013585 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013586 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013587 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13588 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013589 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013590 p->error_indicator = 1;
13591 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013592 return NULL;
13593 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013594 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13595 PyMem_Free(_children);
13596 _PyPegen_insert_memo(p, _start_mark, _loop0_57_type, _seq);
13597 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013598}
13599
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013600// _loop1_58: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013601static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013602_loop1_58_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013603{
13604 if (p->error_indicator) {
13605 return NULL;
13606 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013607 void *_res = NULL;
13608 int _mark = p->mark;
13609 int _start_mark = p->mark;
13610 void **_children = PyMem_Malloc(sizeof(void *));
13611 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013612 p->error_indicator = 1;
13613 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013614 return NULL;
13615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013616 ssize_t _children_capacity = 1;
13617 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013618 { // param_with_default
13619 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013620 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013621 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013622 )
13623 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013624 _res = param_with_default_var;
13625 if (_n == _children_capacity) {
13626 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013627 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13628 if (!_new_children) {
13629 p->error_indicator = 1;
13630 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013631 return NULL;
13632 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013633 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013634 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013635 _children[_n++] = _res;
13636 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013638 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013639 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013640 if (_n == 0 || p->error_indicator) {
13641 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013642 return NULL;
13643 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013644 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13645 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013646 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013647 p->error_indicator = 1;
13648 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013649 return NULL;
13650 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013651 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13652 PyMem_Free(_children);
13653 _PyPegen_insert_memo(p, _start_mark, _loop1_58_type, _seq);
13654 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013655}
13656
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013657// _loop1_59: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013658static asdl_seq *
13659_loop1_59_rule(Parser *p)
13660{
13661 if (p->error_indicator) {
13662 return NULL;
13663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013664 void *_res = NULL;
13665 int _mark = p->mark;
13666 int _start_mark = p->mark;
13667 void **_children = PyMem_Malloc(sizeof(void *));
13668 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013669 p->error_indicator = 1;
13670 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013671 return NULL;
13672 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013673 ssize_t _children_capacity = 1;
13674 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013675 { // param_no_default
13676 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013677 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013678 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013679 )
13680 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013681 _res = param_no_default_var;
13682 if (_n == _children_capacity) {
13683 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013684 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13685 if (!_new_children) {
13686 p->error_indicator = 1;
13687 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013688 return NULL;
13689 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013690 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013692 _children[_n++] = _res;
13693 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013694 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013695 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013696 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013697 if (_n == 0 || p->error_indicator) {
13698 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013699 return NULL;
13700 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013701 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13702 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013703 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013704 p->error_indicator = 1;
13705 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013706 return NULL;
13707 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013708 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13709 PyMem_Free(_children);
13710 _PyPegen_insert_memo(p, _start_mark, _loop1_59_type, _seq);
13711 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013712}
13713
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013714// _loop1_60: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013715static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013716_loop1_60_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013717{
13718 if (p->error_indicator) {
13719 return NULL;
13720 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013721 void *_res = NULL;
13722 int _mark = p->mark;
13723 int _start_mark = p->mark;
13724 void **_children = PyMem_Malloc(sizeof(void *));
13725 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013726 p->error_indicator = 1;
13727 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013728 return NULL;
13729 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013730 ssize_t _children_capacity = 1;
13731 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013732 { // param_no_default
13733 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013734 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013735 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013736 )
13737 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013738 _res = param_no_default_var;
13739 if (_n == _children_capacity) {
13740 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013741 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13742 if (!_new_children) {
13743 p->error_indicator = 1;
13744 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013745 return NULL;
13746 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013747 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013748 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013749 _children[_n++] = _res;
13750 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013752 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013753 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013754 if (_n == 0 || p->error_indicator) {
13755 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013756 return NULL;
13757 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013758 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13759 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013760 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013761 p->error_indicator = 1;
13762 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013763 return NULL;
13764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013765 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13766 PyMem_Free(_children);
13767 _PyPegen_insert_memo(p, _start_mark, _loop1_60_type, _seq);
13768 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013769}
13770
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013771// _loop0_61: param_no_default
13772static asdl_seq *
13773_loop0_61_rule(Parser *p)
13774{
13775 if (p->error_indicator) {
13776 return NULL;
13777 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013778 void *_res = NULL;
13779 int _mark = p->mark;
13780 int _start_mark = p->mark;
13781 void **_children = PyMem_Malloc(sizeof(void *));
13782 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013783 p->error_indicator = 1;
13784 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013785 return NULL;
13786 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013787 ssize_t _children_capacity = 1;
13788 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013789 { // param_no_default
13790 arg_ty param_no_default_var;
13791 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013792 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013793 )
13794 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013795 _res = param_no_default_var;
13796 if (_n == _children_capacity) {
13797 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013798 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13799 if (!_new_children) {
13800 p->error_indicator = 1;
13801 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013802 return NULL;
13803 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013804 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013805 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013806 _children[_n++] = _res;
13807 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013808 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013809 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013810 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013811 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13812 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013813 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013814 p->error_indicator = 1;
13815 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013816 return NULL;
13817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013818 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13819 PyMem_Free(_children);
13820 _PyPegen_insert_memo(p, _start_mark, _loop0_61_type, _seq);
13821 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013822}
13823
13824// _loop1_62: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013825static asdl_seq *
13826_loop1_62_rule(Parser *p)
13827{
13828 if (p->error_indicator) {
13829 return NULL;
13830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013831 void *_res = NULL;
13832 int _mark = p->mark;
13833 int _start_mark = p->mark;
13834 void **_children = PyMem_Malloc(sizeof(void *));
13835 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013836 p->error_indicator = 1;
13837 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013838 return NULL;
13839 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013840 ssize_t _children_capacity = 1;
13841 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013842 { // param_with_default
13843 NameDefaultPair* param_with_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013844 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013845 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013846 )
13847 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013848 _res = param_with_default_var;
13849 if (_n == _children_capacity) {
13850 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013851 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13852 if (!_new_children) {
13853 p->error_indicator = 1;
13854 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013855 return NULL;
13856 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013857 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013859 _children[_n++] = _res;
13860 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013861 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013862 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013863 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013864 if (_n == 0 || p->error_indicator) {
13865 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013866 return NULL;
13867 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013868 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13869 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013870 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013871 p->error_indicator = 1;
13872 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013873 return NULL;
13874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013875 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13876 PyMem_Free(_children);
13877 _PyPegen_insert_memo(p, _start_mark, _loop1_62_type, _seq);
13878 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013879}
13880
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013881// _loop0_63: param_no_default
13882static asdl_seq *
13883_loop0_63_rule(Parser *p)
13884{
13885 if (p->error_indicator) {
13886 return NULL;
13887 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013888 void *_res = NULL;
13889 int _mark = p->mark;
13890 int _start_mark = p->mark;
13891 void **_children = PyMem_Malloc(sizeof(void *));
13892 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013893 p->error_indicator = 1;
13894 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013895 return NULL;
13896 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013897 ssize_t _children_capacity = 1;
13898 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013899 { // param_no_default
13900 arg_ty param_no_default_var;
13901 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013902 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013903 )
13904 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013905 _res = param_no_default_var;
13906 if (_n == _children_capacity) {
13907 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013908 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13909 if (!_new_children) {
13910 p->error_indicator = 1;
13911 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013912 return NULL;
13913 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013914 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013915 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013916 _children[_n++] = _res;
13917 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013918 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013919 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013920 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013921 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13922 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013923 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013924 p->error_indicator = 1;
13925 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013926 return NULL;
13927 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013928 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13929 PyMem_Free(_children);
13930 _PyPegen_insert_memo(p, _start_mark, _loop0_63_type, _seq);
13931 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013932}
13933
13934// _loop1_64: param_with_default
13935static asdl_seq *
13936_loop1_64_rule(Parser *p)
13937{
13938 if (p->error_indicator) {
13939 return NULL;
13940 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013941 void *_res = NULL;
13942 int _mark = p->mark;
13943 int _start_mark = p->mark;
13944 void **_children = PyMem_Malloc(sizeof(void *));
13945 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013946 p->error_indicator = 1;
13947 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013948 return NULL;
13949 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013950 ssize_t _children_capacity = 1;
13951 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013952 { // param_with_default
13953 NameDefaultPair* param_with_default_var;
13954 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013955 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013956 )
13957 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013958 _res = param_with_default_var;
13959 if (_n == _children_capacity) {
13960 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013961 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13962 if (!_new_children) {
13963 p->error_indicator = 1;
13964 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013965 return NULL;
13966 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013967 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013968 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013969 _children[_n++] = _res;
13970 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013972 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013973 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013974 if (_n == 0 || p->error_indicator) {
13975 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013976 return NULL;
13977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013978 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13979 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013980 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013981 p->error_indicator = 1;
13982 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013983 return NULL;
13984 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013985 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13986 PyMem_Free(_children);
13987 _PyPegen_insert_memo(p, _start_mark, _loop1_64_type, _seq);
13988 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013989}
13990
13991// _loop0_65: param_maybe_default
13992static asdl_seq *
13993_loop0_65_rule(Parser *p)
13994{
13995 if (p->error_indicator) {
13996 return NULL;
13997 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013998 void *_res = NULL;
13999 int _mark = p->mark;
14000 int _start_mark = p->mark;
14001 void **_children = PyMem_Malloc(sizeof(void *));
14002 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014003 p->error_indicator = 1;
14004 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014005 return NULL;
14006 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014007 ssize_t _children_capacity = 1;
14008 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014009 { // param_maybe_default
14010 NameDefaultPair* param_maybe_default_var;
14011 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014012 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014013 )
14014 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014015 _res = param_maybe_default_var;
14016 if (_n == _children_capacity) {
14017 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014018 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14019 if (!_new_children) {
14020 p->error_indicator = 1;
14021 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014022 return NULL;
14023 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014024 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014025 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014026 _children[_n++] = _res;
14027 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014028 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014029 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014030 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014031 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14032 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014033 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014034 p->error_indicator = 1;
14035 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014036 return NULL;
14037 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014038 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14039 PyMem_Free(_children);
14040 _PyPegen_insert_memo(p, _start_mark, _loop0_65_type, _seq);
14041 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014042}
14043
14044// _loop1_66: param_maybe_default
14045static asdl_seq *
14046_loop1_66_rule(Parser *p)
14047{
14048 if (p->error_indicator) {
14049 return NULL;
14050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014051 void *_res = NULL;
14052 int _mark = p->mark;
14053 int _start_mark = p->mark;
14054 void **_children = PyMem_Malloc(sizeof(void *));
14055 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014056 p->error_indicator = 1;
14057 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014058 return NULL;
14059 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014060 ssize_t _children_capacity = 1;
14061 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014062 { // param_maybe_default
14063 NameDefaultPair* param_maybe_default_var;
14064 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014065 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014066 )
14067 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014068 _res = param_maybe_default_var;
14069 if (_n == _children_capacity) {
14070 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014071 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14072 if (!_new_children) {
14073 p->error_indicator = 1;
14074 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014075 return NULL;
14076 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014077 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014079 _children[_n++] = _res;
14080 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014081 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014082 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014083 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014084 if (_n == 0 || p->error_indicator) {
14085 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014086 return NULL;
14087 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014088 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14089 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014090 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014091 p->error_indicator = 1;
14092 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014093 return NULL;
14094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014095 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14096 PyMem_Free(_children);
14097 _PyPegen_insert_memo(p, _start_mark, _loop1_66_type, _seq);
14098 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014099}
14100
14101// _loop1_67: ('@' named_expression NEWLINE)
14102static asdl_seq *
14103_loop1_67_rule(Parser *p)
14104{
14105 if (p->error_indicator) {
14106 return NULL;
14107 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014108 void *_res = NULL;
14109 int _mark = p->mark;
14110 int _start_mark = p->mark;
14111 void **_children = PyMem_Malloc(sizeof(void *));
14112 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014113 p->error_indicator = 1;
14114 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014115 return NULL;
14116 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014117 ssize_t _children_capacity = 1;
14118 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014119 { // ('@' named_expression NEWLINE)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014120 void *_tmp_138_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014121 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014122 (_tmp_138_var = _tmp_138_rule(p)) // '@' named_expression NEWLINE
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014123 )
14124 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014125 _res = _tmp_138_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014126 if (_n == _children_capacity) {
14127 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014128 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14129 if (!_new_children) {
14130 p->error_indicator = 1;
14131 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014132 return NULL;
14133 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014134 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014135 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014136 _children[_n++] = _res;
14137 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014138 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014139 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014141 if (_n == 0 || p->error_indicator) {
14142 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014143 return NULL;
14144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014145 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14146 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014147 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014148 p->error_indicator = 1;
14149 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014150 return NULL;
14151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014152 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14153 PyMem_Free(_children);
14154 _PyPegen_insert_memo(p, _start_mark, _loop1_67_type, _seq);
14155 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014156}
14157
14158// _tmp_68: '(' arguments? ')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014159static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014160_tmp_68_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014161{
14162 if (p->error_indicator) {
14163 return NULL;
14164 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014165 void * _res = NULL;
14166 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014167 { // '(' arguments? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014168 Token * _literal;
14169 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014170 void *z;
14171 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014172 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014173 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014174 (z = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014175 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014176 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014177 )
14178 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014179 _res = z;
14180 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014181 p->error_indicator = 1;
14182 return NULL;
14183 }
14184 goto done;
14185 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014186 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014187 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014188 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014189 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014190 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014191}
14192
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014193// _loop0_70: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014194static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014195_loop0_70_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014196{
14197 if (p->error_indicator) {
14198 return NULL;
14199 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014200 void *_res = NULL;
14201 int _mark = p->mark;
14202 int _start_mark = p->mark;
14203 void **_children = PyMem_Malloc(sizeof(void *));
14204 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014205 p->error_indicator = 1;
14206 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014207 return NULL;
14208 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014209 ssize_t _children_capacity = 1;
14210 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014211 { // ',' star_expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014212 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014213 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014214 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014215 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014216 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014217 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014218 )
14219 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014220 _res = elem;
14221 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014222 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014223 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014224 return NULL;
14225 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014226 if (_n == _children_capacity) {
14227 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014228 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14229 if (!_new_children) {
14230 p->error_indicator = 1;
14231 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014232 return NULL;
14233 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014234 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014235 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014236 _children[_n++] = _res;
14237 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014238 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014239 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014240 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014241 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14242 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014243 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014244 p->error_indicator = 1;
14245 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014246 return NULL;
14247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014248 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14249 PyMem_Free(_children);
14250 _PyPegen_insert_memo(p, _start_mark, _loop0_70_type, _seq);
14251 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014252}
14253
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014254// _gather_69: star_expression _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014255static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014256_gather_69_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014257{
14258 if (p->error_indicator) {
14259 return NULL;
14260 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014261 asdl_seq * _res = NULL;
14262 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014263 { // star_expression _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014264 expr_ty elem;
14265 asdl_seq * seq;
14266 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014267 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014268 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014269 (seq = _loop0_70_rule(p)) // _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014270 )
14271 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014272 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014273 goto done;
14274 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014275 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014276 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014277 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014278 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014279 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014280}
14281
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014282// _loop1_71: (',' star_expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014283static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014284_loop1_71_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014285{
14286 if (p->error_indicator) {
14287 return NULL;
14288 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014289 void *_res = NULL;
14290 int _mark = p->mark;
14291 int _start_mark = p->mark;
14292 void **_children = PyMem_Malloc(sizeof(void *));
14293 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014294 p->error_indicator = 1;
14295 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014296 return NULL;
14297 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014298 ssize_t _children_capacity = 1;
14299 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014300 { // (',' star_expression)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014301 void *_tmp_139_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014302 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014303 (_tmp_139_var = _tmp_139_rule(p)) // ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014304 )
14305 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014306 _res = _tmp_139_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014307 if (_n == _children_capacity) {
14308 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014309 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14310 if (!_new_children) {
14311 p->error_indicator = 1;
14312 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014313 return NULL;
14314 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014315 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014317 _children[_n++] = _res;
14318 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014319 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014320 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014321 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014322 if (_n == 0 || p->error_indicator) {
14323 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014324 return NULL;
14325 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014326 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14327 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014328 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014329 p->error_indicator = 1;
14330 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014331 return NULL;
14332 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014333 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14334 PyMem_Free(_children);
14335 _PyPegen_insert_memo(p, _start_mark, _loop1_71_type, _seq);
14336 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014337}
14338
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014339// _loop0_73: ',' star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014340static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014341_loop0_73_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014342{
14343 if (p->error_indicator) {
14344 return NULL;
14345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014346 void *_res = NULL;
14347 int _mark = p->mark;
14348 int _start_mark = p->mark;
14349 void **_children = PyMem_Malloc(sizeof(void *));
14350 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014351 p->error_indicator = 1;
14352 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014353 return NULL;
14354 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014355 ssize_t _children_capacity = 1;
14356 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014357 { // ',' star_named_expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014358 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014359 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014360 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014361 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014362 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014363 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014364 )
14365 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014366 _res = elem;
14367 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014368 p->error_indicator = 1;
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 if (_n == _children_capacity) {
14373 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014374 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14375 if (!_new_children) {
14376 p->error_indicator = 1;
14377 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014378 return NULL;
14379 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014380 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014381 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014382 _children[_n++] = _res;
14383 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014384 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014385 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014387 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14388 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014389 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014390 p->error_indicator = 1;
14391 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014392 return NULL;
14393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014394 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14395 PyMem_Free(_children);
14396 _PyPegen_insert_memo(p, _start_mark, _loop0_73_type, _seq);
14397 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014398}
14399
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014400// _gather_72: star_named_expression _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014401static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014402_gather_72_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014403{
14404 if (p->error_indicator) {
14405 return NULL;
14406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014407 asdl_seq * _res = NULL;
14408 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014409 { // star_named_expression _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014410 expr_ty elem;
14411 asdl_seq * seq;
14412 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014413 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014414 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014415 (seq = _loop0_73_rule(p)) // _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014416 )
14417 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014418 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014419 goto done;
14420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014421 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014422 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014423 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014424 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014425 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014426}
14427
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014428// _loop1_74: (',' expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014429static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014430_loop1_74_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014431{
14432 if (p->error_indicator) {
14433 return NULL;
14434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014435 void *_res = NULL;
14436 int _mark = p->mark;
14437 int _start_mark = p->mark;
14438 void **_children = PyMem_Malloc(sizeof(void *));
14439 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014440 p->error_indicator = 1;
14441 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014442 return NULL;
14443 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014444 ssize_t _children_capacity = 1;
14445 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014446 { // (',' expression)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014447 void *_tmp_140_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014448 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014449 (_tmp_140_var = _tmp_140_rule(p)) // ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014450 )
14451 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014452 _res = _tmp_140_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014453 if (_n == _children_capacity) {
14454 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014455 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14456 if (!_new_children) {
14457 p->error_indicator = 1;
14458 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014459 return NULL;
14460 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014461 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014463 _children[_n++] = _res;
14464 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014465 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014466 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014467 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014468 if (_n == 0 || p->error_indicator) {
14469 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014470 return NULL;
14471 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014472 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14473 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014474 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014475 p->error_indicator = 1;
14476 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014477 return NULL;
14478 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014479 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14480 PyMem_Free(_children);
14481 _PyPegen_insert_memo(p, _start_mark, _loop1_74_type, _seq);
14482 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014483}
14484
Guido van Rossum3941d972020-05-01 09:42:03 -070014485// _loop0_75: lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014486static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070014487_loop0_75_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014488{
14489 if (p->error_indicator) {
14490 return NULL;
14491 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014492 void *_res = NULL;
14493 int _mark = p->mark;
14494 int _start_mark = p->mark;
14495 void **_children = PyMem_Malloc(sizeof(void *));
14496 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014497 p->error_indicator = 1;
14498 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014499 return NULL;
14500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014501 ssize_t _children_capacity = 1;
14502 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014503 { // lambda_param_no_default
14504 arg_ty lambda_param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014505 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014506 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014507 )
14508 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014509 _res = lambda_param_no_default_var;
14510 if (_n == _children_capacity) {
14511 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014512 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14513 if (!_new_children) {
14514 p->error_indicator = 1;
14515 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014516 return NULL;
14517 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014518 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014519 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014520 _children[_n++] = _res;
14521 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014522 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014523 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014524 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014525 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14526 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014527 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014528 p->error_indicator = 1;
14529 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014530 return NULL;
14531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014532 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14533 PyMem_Free(_children);
14534 _PyPegen_insert_memo(p, _start_mark, _loop0_75_type, _seq);
14535 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014536}
14537
Guido van Rossum3941d972020-05-01 09:42:03 -070014538// _loop0_76: lambda_param_with_default
14539static asdl_seq *
14540_loop0_76_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014541{
14542 if (p->error_indicator) {
14543 return NULL;
14544 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014545 void *_res = NULL;
14546 int _mark = p->mark;
14547 int _start_mark = p->mark;
14548 void **_children = PyMem_Malloc(sizeof(void *));
14549 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014550 p->error_indicator = 1;
14551 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014552 return NULL;
14553 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014554 ssize_t _children_capacity = 1;
14555 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014556 { // lambda_param_with_default
14557 NameDefaultPair* lambda_param_with_default_var;
14558 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014559 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014560 )
14561 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014562 _res = lambda_param_with_default_var;
14563 if (_n == _children_capacity) {
14564 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014565 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14566 if (!_new_children) {
14567 p->error_indicator = 1;
14568 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014569 return NULL;
14570 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014571 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014572 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014573 _children[_n++] = _res;
14574 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014575 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014576 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014577 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014578 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14579 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014580 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014581 p->error_indicator = 1;
14582 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014583 return NULL;
14584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014585 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14586 PyMem_Free(_children);
14587 _PyPegen_insert_memo(p, _start_mark, _loop0_76_type, _seq);
14588 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014589}
14590
Guido van Rossum3941d972020-05-01 09:42:03 -070014591// _loop0_77: lambda_param_with_default
14592static asdl_seq *
14593_loop0_77_rule(Parser *p)
14594{
14595 if (p->error_indicator) {
14596 return NULL;
14597 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014598 void *_res = NULL;
14599 int _mark = p->mark;
14600 int _start_mark = p->mark;
14601 void **_children = PyMem_Malloc(sizeof(void *));
14602 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014603 p->error_indicator = 1;
14604 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014605 return NULL;
14606 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014607 ssize_t _children_capacity = 1;
14608 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014609 { // lambda_param_with_default
14610 NameDefaultPair* lambda_param_with_default_var;
14611 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014612 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014613 )
14614 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014615 _res = lambda_param_with_default_var;
14616 if (_n == _children_capacity) {
14617 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014618 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14619 if (!_new_children) {
14620 p->error_indicator = 1;
14621 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014622 return NULL;
14623 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014624 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070014625 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014626 _children[_n++] = _res;
14627 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014628 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014629 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014630 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014631 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14632 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014633 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014634 p->error_indicator = 1;
14635 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014636 return NULL;
14637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014638 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14639 PyMem_Free(_children);
14640 _PyPegen_insert_memo(p, _start_mark, _loop0_77_type, _seq);
14641 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014642}
14643
14644// _loop1_78: lambda_param_no_default
14645static asdl_seq *
14646_loop1_78_rule(Parser *p)
14647{
14648 if (p->error_indicator) {
14649 return NULL;
14650 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014651 void *_res = NULL;
14652 int _mark = p->mark;
14653 int _start_mark = p->mark;
14654 void **_children = PyMem_Malloc(sizeof(void *));
14655 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014656 p->error_indicator = 1;
14657 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014658 return NULL;
14659 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014660 ssize_t _children_capacity = 1;
14661 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014662 { // lambda_param_no_default
14663 arg_ty lambda_param_no_default_var;
14664 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014665 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014666 )
14667 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014668 _res = lambda_param_no_default_var;
14669 if (_n == _children_capacity) {
14670 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014671 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14672 if (!_new_children) {
14673 p->error_indicator = 1;
14674 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014675 return NULL;
14676 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014677 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070014678 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014679 _children[_n++] = _res;
14680 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014681 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014682 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014683 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014684 if (_n == 0 || p->error_indicator) {
14685 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014686 return NULL;
14687 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014688 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14689 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014690 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014691 p->error_indicator = 1;
14692 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014693 return NULL;
14694 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014695 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14696 PyMem_Free(_children);
14697 _PyPegen_insert_memo(p, _start_mark, _loop1_78_type, _seq);
14698 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014699}
14700
14701// _loop0_79: lambda_param_with_default
14702static asdl_seq *
14703_loop0_79_rule(Parser *p)
14704{
14705 if (p->error_indicator) {
14706 return NULL;
14707 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014708 void *_res = NULL;
14709 int _mark = p->mark;
14710 int _start_mark = p->mark;
14711 void **_children = PyMem_Malloc(sizeof(void *));
14712 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014713 p->error_indicator = 1;
14714 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014715 return NULL;
14716 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014717 ssize_t _children_capacity = 1;
14718 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014719 { // lambda_param_with_default
14720 NameDefaultPair* lambda_param_with_default_var;
14721 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014722 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014723 )
14724 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014725 _res = lambda_param_with_default_var;
14726 if (_n == _children_capacity) {
14727 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014728 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14729 if (!_new_children) {
14730 p->error_indicator = 1;
14731 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014732 return NULL;
14733 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014734 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070014735 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014736 _children[_n++] = _res;
14737 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014738 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014739 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014741 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14742 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014743 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014744 p->error_indicator = 1;
14745 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014746 return NULL;
14747 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014748 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14749 PyMem_Free(_children);
14750 _PyPegen_insert_memo(p, _start_mark, _loop0_79_type, _seq);
14751 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014752}
14753
14754// _loop1_80: lambda_param_with_default
14755static asdl_seq *
14756_loop1_80_rule(Parser *p)
14757{
14758 if (p->error_indicator) {
14759 return NULL;
14760 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014761 void *_res = NULL;
14762 int _mark = p->mark;
14763 int _start_mark = p->mark;
14764 void **_children = PyMem_Malloc(sizeof(void *));
14765 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014766 p->error_indicator = 1;
14767 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014768 return NULL;
14769 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014770 ssize_t _children_capacity = 1;
14771 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014772 { // lambda_param_with_default
14773 NameDefaultPair* lambda_param_with_default_var;
14774 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014775 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014776 )
14777 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014778 _res = lambda_param_with_default_var;
14779 if (_n == _children_capacity) {
14780 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014781 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14782 if (!_new_children) {
14783 p->error_indicator = 1;
14784 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014785 return NULL;
14786 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014787 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070014788 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014789 _children[_n++] = _res;
14790 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014792 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014793 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014794 if (_n == 0 || p->error_indicator) {
14795 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014796 return NULL;
14797 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014798 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14799 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014800 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014801 p->error_indicator = 1;
14802 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014803 return NULL;
14804 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014805 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14806 PyMem_Free(_children);
14807 _PyPegen_insert_memo(p, _start_mark, _loop1_80_type, _seq);
14808 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014809}
14810
14811// _loop1_81: lambda_param_no_default
14812static asdl_seq *
14813_loop1_81_rule(Parser *p)
14814{
14815 if (p->error_indicator) {
14816 return NULL;
14817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014818 void *_res = NULL;
14819 int _mark = p->mark;
14820 int _start_mark = p->mark;
14821 void **_children = PyMem_Malloc(sizeof(void *));
14822 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014823 p->error_indicator = 1;
14824 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014825 return NULL;
14826 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014827 ssize_t _children_capacity = 1;
14828 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014829 { // lambda_param_no_default
14830 arg_ty lambda_param_no_default_var;
14831 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014832 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014833 )
14834 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014835 _res = lambda_param_no_default_var;
14836 if (_n == _children_capacity) {
14837 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014838 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14839 if (!_new_children) {
14840 p->error_indicator = 1;
14841 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014842 return NULL;
14843 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014844 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070014845 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014846 _children[_n++] = _res;
14847 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014848 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014849 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014850 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014851 if (_n == 0 || p->error_indicator) {
14852 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014853 return NULL;
14854 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014855 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14856 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014857 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014858 p->error_indicator = 1;
14859 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014860 return NULL;
14861 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014862 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14863 PyMem_Free(_children);
14864 _PyPegen_insert_memo(p, _start_mark, _loop1_81_type, _seq);
14865 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014866}
14867
14868// _loop1_82: lambda_param_no_default
14869static asdl_seq *
14870_loop1_82_rule(Parser *p)
14871{
14872 if (p->error_indicator) {
14873 return NULL;
14874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014875 void *_res = NULL;
14876 int _mark = p->mark;
14877 int _start_mark = p->mark;
14878 void **_children = PyMem_Malloc(sizeof(void *));
14879 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014880 p->error_indicator = 1;
14881 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014882 return NULL;
14883 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014884 ssize_t _children_capacity = 1;
14885 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014886 { // lambda_param_no_default
14887 arg_ty lambda_param_no_default_var;
14888 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014889 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014890 )
14891 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014892 _res = lambda_param_no_default_var;
14893 if (_n == _children_capacity) {
14894 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014895 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14896 if (!_new_children) {
14897 p->error_indicator = 1;
14898 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014899 return NULL;
14900 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014901 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070014902 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014903 _children[_n++] = _res;
14904 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014905 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014906 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014907 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014908 if (_n == 0 || p->error_indicator) {
14909 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014910 return NULL;
14911 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014912 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14913 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014914 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014915 p->error_indicator = 1;
14916 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014917 return NULL;
14918 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014919 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14920 PyMem_Free(_children);
14921 _PyPegen_insert_memo(p, _start_mark, _loop1_82_type, _seq);
14922 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014923}
14924
14925// _loop0_83: lambda_param_no_default
14926static asdl_seq *
14927_loop0_83_rule(Parser *p)
14928{
14929 if (p->error_indicator) {
14930 return NULL;
14931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014932 void *_res = NULL;
14933 int _mark = p->mark;
14934 int _start_mark = p->mark;
14935 void **_children = PyMem_Malloc(sizeof(void *));
14936 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014937 p->error_indicator = 1;
14938 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014939 return NULL;
14940 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014941 ssize_t _children_capacity = 1;
14942 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014943 { // lambda_param_no_default
14944 arg_ty lambda_param_no_default_var;
14945 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014946 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014947 )
14948 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014949 _res = lambda_param_no_default_var;
14950 if (_n == _children_capacity) {
14951 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014952 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14953 if (!_new_children) {
14954 p->error_indicator = 1;
14955 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014956 return NULL;
14957 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014958 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070014959 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014960 _children[_n++] = _res;
14961 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014962 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014963 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014964 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014965 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14966 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014967 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014968 p->error_indicator = 1;
14969 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014970 return NULL;
14971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014972 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14973 PyMem_Free(_children);
14974 _PyPegen_insert_memo(p, _start_mark, _loop0_83_type, _seq);
14975 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014976}
14977
14978// _loop1_84: lambda_param_with_default
14979static asdl_seq *
14980_loop1_84_rule(Parser *p)
14981{
14982 if (p->error_indicator) {
14983 return NULL;
14984 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014985 void *_res = NULL;
14986 int _mark = p->mark;
14987 int _start_mark = p->mark;
14988 void **_children = PyMem_Malloc(sizeof(void *));
14989 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014990 p->error_indicator = 1;
14991 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070014992 return NULL;
14993 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014994 ssize_t _children_capacity = 1;
14995 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014996 { // lambda_param_with_default
14997 NameDefaultPair* lambda_param_with_default_var;
14998 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014999 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070015000 )
15001 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015002 _res = lambda_param_with_default_var;
15003 if (_n == _children_capacity) {
15004 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015005 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15006 if (!_new_children) {
15007 p->error_indicator = 1;
15008 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070015009 return NULL;
15010 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015011 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070015012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015013 _children[_n++] = _res;
15014 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015015 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015016 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015017 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015018 if (_n == 0 || p->error_indicator) {
15019 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070015020 return NULL;
15021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015022 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15023 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015024 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015025 p->error_indicator = 1;
15026 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070015027 return NULL;
15028 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015029 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15030 PyMem_Free(_children);
15031 _PyPegen_insert_memo(p, _start_mark, _loop1_84_type, _seq);
15032 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070015033}
15034
15035// _loop0_85: lambda_param_no_default
15036static asdl_seq *
15037_loop0_85_rule(Parser *p)
15038{
15039 if (p->error_indicator) {
15040 return NULL;
15041 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015042 void *_res = NULL;
15043 int _mark = p->mark;
15044 int _start_mark = p->mark;
15045 void **_children = PyMem_Malloc(sizeof(void *));
15046 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015047 p->error_indicator = 1;
15048 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070015049 return NULL;
15050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015051 ssize_t _children_capacity = 1;
15052 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070015053 { // lambda_param_no_default
15054 arg_ty lambda_param_no_default_var;
15055 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015056 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070015057 )
15058 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015059 _res = lambda_param_no_default_var;
15060 if (_n == _children_capacity) {
15061 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015062 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15063 if (!_new_children) {
15064 p->error_indicator = 1;
15065 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070015066 return NULL;
15067 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015068 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070015069 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015070 _children[_n++] = _res;
15071 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015072 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015073 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015074 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015075 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15076 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015077 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015078 p->error_indicator = 1;
15079 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070015080 return NULL;
15081 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015082 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15083 PyMem_Free(_children);
15084 _PyPegen_insert_memo(p, _start_mark, _loop0_85_type, _seq);
15085 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070015086}
15087
15088// _loop1_86: lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015089static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015090_loop1_86_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015091{
15092 if (p->error_indicator) {
15093 return NULL;
15094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015095 void *_res = NULL;
15096 int _mark = p->mark;
15097 int _start_mark = p->mark;
15098 void **_children = PyMem_Malloc(sizeof(void *));
15099 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015100 p->error_indicator = 1;
15101 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015102 return NULL;
15103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015104 ssize_t _children_capacity = 1;
15105 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070015106 { // lambda_param_with_default
15107 NameDefaultPair* lambda_param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015108 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015109 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015110 )
15111 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015112 _res = lambda_param_with_default_var;
15113 if (_n == _children_capacity) {
15114 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015115 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15116 if (!_new_children) {
15117 p->error_indicator = 1;
15118 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015119 return NULL;
15120 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015121 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015122 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015123 _children[_n++] = _res;
15124 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015125 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015126 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015127 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015128 if (_n == 0 || p->error_indicator) {
15129 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015130 return NULL;
15131 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015132 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15133 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015134 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015135 p->error_indicator = 1;
15136 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015137 return NULL;
15138 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015139 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15140 PyMem_Free(_children);
15141 _PyPegen_insert_memo(p, _start_mark, _loop1_86_type, _seq);
15142 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015143}
15144
Guido van Rossum3941d972020-05-01 09:42:03 -070015145// _loop0_87: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015146static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015147_loop0_87_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015148{
15149 if (p->error_indicator) {
15150 return NULL;
15151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015152 void *_res = NULL;
15153 int _mark = p->mark;
15154 int _start_mark = p->mark;
15155 void **_children = PyMem_Malloc(sizeof(void *));
15156 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015157 p->error_indicator = 1;
15158 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015159 return NULL;
15160 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015161 ssize_t _children_capacity = 1;
15162 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070015163 { // lambda_param_maybe_default
15164 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015165 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015166 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015167 )
15168 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015169 _res = lambda_param_maybe_default_var;
15170 if (_n == _children_capacity) {
15171 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015172 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15173 if (!_new_children) {
15174 p->error_indicator = 1;
15175 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015176 return NULL;
15177 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015178 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015179 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015180 _children[_n++] = _res;
15181 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015182 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015183 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015184 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015185 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15186 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015187 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015188 p->error_indicator = 1;
15189 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015190 return NULL;
15191 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015192 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15193 PyMem_Free(_children);
15194 _PyPegen_insert_memo(p, _start_mark, _loop0_87_type, _seq);
15195 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015196}
15197
Guido van Rossum3941d972020-05-01 09:42:03 -070015198// _loop1_88: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015199static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015200_loop1_88_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015201{
15202 if (p->error_indicator) {
15203 return NULL;
15204 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015205 void *_res = NULL;
15206 int _mark = p->mark;
15207 int _start_mark = p->mark;
15208 void **_children = PyMem_Malloc(sizeof(void *));
15209 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015210 p->error_indicator = 1;
15211 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015212 return NULL;
15213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015214 ssize_t _children_capacity = 1;
15215 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070015216 { // lambda_param_maybe_default
15217 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015218 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015219 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015220 )
15221 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015222 _res = lambda_param_maybe_default_var;
15223 if (_n == _children_capacity) {
15224 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015225 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15226 if (!_new_children) {
15227 p->error_indicator = 1;
15228 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015229 return NULL;
15230 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015231 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015232 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015233 _children[_n++] = _res;
15234 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015235 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015236 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015237 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015238 if (_n == 0 || p->error_indicator) {
15239 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070015240 return NULL;
15241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015242 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15243 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015244 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015245 p->error_indicator = 1;
15246 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015247 return NULL;
15248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015249 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15250 PyMem_Free(_children);
15251 _PyPegen_insert_memo(p, _start_mark, _loop1_88_type, _seq);
15252 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015253}
15254
Guido van Rossum3941d972020-05-01 09:42:03 -070015255// _loop1_89: ('or' conjunction)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015256static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015257_loop1_89_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015258{
15259 if (p->error_indicator) {
15260 return NULL;
15261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015262 void *_res = NULL;
15263 int _mark = p->mark;
15264 int _start_mark = p->mark;
15265 void **_children = PyMem_Malloc(sizeof(void *));
15266 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015267 p->error_indicator = 1;
15268 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015269 return NULL;
15270 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015271 ssize_t _children_capacity = 1;
15272 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015273 { // ('or' conjunction)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015274 void *_tmp_141_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015275 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015276 (_tmp_141_var = _tmp_141_rule(p)) // 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015277 )
15278 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015279 _res = _tmp_141_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015280 if (_n == _children_capacity) {
15281 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015282 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15283 if (!_new_children) {
15284 p->error_indicator = 1;
15285 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015286 return NULL;
15287 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015288 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015289 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015290 _children[_n++] = _res;
15291 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015292 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015293 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015295 if (_n == 0 || p->error_indicator) {
15296 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015297 return NULL;
15298 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015299 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15300 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015301 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015302 p->error_indicator = 1;
15303 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015304 return NULL;
15305 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015306 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15307 PyMem_Free(_children);
15308 _PyPegen_insert_memo(p, _start_mark, _loop1_89_type, _seq);
15309 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015310}
15311
Guido van Rossum3941d972020-05-01 09:42:03 -070015312// _loop1_90: ('and' inversion)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015313static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015314_loop1_90_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015315{
15316 if (p->error_indicator) {
15317 return NULL;
15318 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015319 void *_res = NULL;
15320 int _mark = p->mark;
15321 int _start_mark = p->mark;
15322 void **_children = PyMem_Malloc(sizeof(void *));
15323 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015324 p->error_indicator = 1;
15325 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015326 return NULL;
15327 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015328 ssize_t _children_capacity = 1;
15329 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015330 { // ('and' inversion)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015331 void *_tmp_142_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015332 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015333 (_tmp_142_var = _tmp_142_rule(p)) // 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015334 )
15335 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015336 _res = _tmp_142_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015337 if (_n == _children_capacity) {
15338 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015339 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15340 if (!_new_children) {
15341 p->error_indicator = 1;
15342 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015343 return NULL;
15344 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015345 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015347 _children[_n++] = _res;
15348 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015349 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015350 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015351 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015352 if (_n == 0 || p->error_indicator) {
15353 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015354 return NULL;
15355 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015356 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15357 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015358 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015359 p->error_indicator = 1;
15360 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015361 return NULL;
15362 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015363 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15364 PyMem_Free(_children);
15365 _PyPegen_insert_memo(p, _start_mark, _loop1_90_type, _seq);
15366 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015367}
15368
Guido van Rossum3941d972020-05-01 09:42:03 -070015369// _loop1_91: compare_op_bitwise_or_pair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015370static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015371_loop1_91_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015372{
15373 if (p->error_indicator) {
15374 return NULL;
15375 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015376 void *_res = NULL;
15377 int _mark = p->mark;
15378 int _start_mark = p->mark;
15379 void **_children = PyMem_Malloc(sizeof(void *));
15380 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015381 p->error_indicator = 1;
15382 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015383 return NULL;
15384 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015385 ssize_t _children_capacity = 1;
15386 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015387 { // compare_op_bitwise_or_pair
15388 CmpopExprPair* compare_op_bitwise_or_pair_var;
15389 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015390 (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 +010015391 )
15392 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015393 _res = compare_op_bitwise_or_pair_var;
15394 if (_n == _children_capacity) {
15395 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015396 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15397 if (!_new_children) {
15398 p->error_indicator = 1;
15399 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015400 return NULL;
15401 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015402 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015403 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015404 _children[_n++] = _res;
15405 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015407 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015408 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015409 if (_n == 0 || p->error_indicator) {
15410 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015411 return NULL;
15412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015413 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15414 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015415 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015416 p->error_indicator = 1;
15417 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015418 return NULL;
15419 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015420 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15421 PyMem_Free(_children);
15422 _PyPegen_insert_memo(p, _start_mark, _loop1_91_type, _seq);
15423 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015424}
15425
Guido van Rossum3941d972020-05-01 09:42:03 -070015426// _tmp_92: '!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010015427static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015428_tmp_92_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010015429{
15430 if (p->error_indicator) {
15431 return NULL;
15432 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015433 void * _res = NULL;
15434 int _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015435 { // '!='
Pablo Galindob796b3f2020-05-01 12:32:26 +010015436 Token * tok;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015437 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015438 (tok = _PyPegen_expect_token(p, 28)) // token='!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010015439 )
15440 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015441 _res = _PyPegen_check_barry_as_flufl ( p ) ? NULL : tok;
15442 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindo2b74c832020-04-27 18:02:07 +010015443 p->error_indicator = 1;
15444 return NULL;
15445 }
15446 goto done;
15447 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015448 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015449 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015450 _res = NULL;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015451 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015452 return _res;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015453}
15454
Guido van Rossum3941d972020-05-01 09:42:03 -070015455// _loop0_94: ',' slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015456static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015457_loop0_94_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015458{
15459 if (p->error_indicator) {
15460 return NULL;
15461 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015462 void *_res = NULL;
15463 int _mark = p->mark;
15464 int _start_mark = p->mark;
15465 void **_children = PyMem_Malloc(sizeof(void *));
15466 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015467 p->error_indicator = 1;
15468 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015469 return NULL;
15470 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015471 ssize_t _children_capacity = 1;
15472 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015473 { // ',' slice
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015474 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015475 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015476 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015477 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015478 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015479 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015480 )
15481 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015482 _res = elem;
15483 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015484 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015485 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015486 return NULL;
15487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015488 if (_n == _children_capacity) {
15489 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015490 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15491 if (!_new_children) {
15492 p->error_indicator = 1;
15493 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015494 return NULL;
15495 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015496 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015497 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015498 _children[_n++] = _res;
15499 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015501 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015503 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15504 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015505 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015506 p->error_indicator = 1;
15507 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015508 return NULL;
15509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015510 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15511 PyMem_Free(_children);
15512 _PyPegen_insert_memo(p, _start_mark, _loop0_94_type, _seq);
15513 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015514}
15515
Guido van Rossum3941d972020-05-01 09:42:03 -070015516// _gather_93: slice _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015517static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015518_gather_93_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015519{
15520 if (p->error_indicator) {
15521 return NULL;
15522 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015523 asdl_seq * _res = NULL;
15524 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015525 { // slice _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015526 expr_ty elem;
15527 asdl_seq * seq;
15528 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015529 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015530 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015531 (seq = _loop0_94_rule(p)) // _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015532 )
15533 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015534 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015535 goto done;
15536 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015537 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015538 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015539 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015540 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015541 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015542}
15543
Guido van Rossum3941d972020-05-01 09:42:03 -070015544// _tmp_95: ':' expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015545static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015546_tmp_95_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015547{
15548 if (p->error_indicator) {
15549 return NULL;
15550 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015551 void * _res = NULL;
15552 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015553 { // ':' expression?
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015554 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015555 void *d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015556 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015557 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015558 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015559 (d = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015560 )
15561 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015562 _res = d;
15563 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015564 p->error_indicator = 1;
15565 return NULL;
15566 }
15567 goto done;
15568 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015569 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015571 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015572 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015573 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015574}
15575
Guido van Rossum3941d972020-05-01 09:42:03 -070015576// _tmp_96: tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015577static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015578_tmp_96_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015579{
15580 if (p->error_indicator) {
15581 return NULL;
15582 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015583 void * _res = NULL;
15584 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015585 { // tuple
15586 expr_ty tuple_var;
15587 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015588 (tuple_var = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015589 )
15590 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015591 _res = tuple_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015592 goto done;
15593 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015594 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015595 }
15596 { // group
15597 expr_ty group_var;
15598 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015599 (group_var = group_rule(p)) // group
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015600 )
15601 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015602 _res = group_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015603 goto done;
15604 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015605 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015606 }
15607 { // genexp
15608 expr_ty genexp_var;
15609 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015610 (genexp_var = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015611 )
15612 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015613 _res = genexp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015614 goto done;
15615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015616 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015617 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015618 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015619 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015620 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015621}
15622
Guido van Rossum3941d972020-05-01 09:42:03 -070015623// _tmp_97: list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015624static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015625_tmp_97_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015626{
15627 if (p->error_indicator) {
15628 return NULL;
15629 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015630 void * _res = NULL;
15631 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015632 { // list
15633 expr_ty list_var;
15634 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015635 (list_var = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015636 )
15637 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015638 _res = list_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015639 goto done;
15640 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015641 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015642 }
15643 { // listcomp
15644 expr_ty listcomp_var;
15645 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015646 (listcomp_var = listcomp_rule(p)) // listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015647 )
15648 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015649 _res = listcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015650 goto done;
15651 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015652 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015653 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015654 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015655 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015656 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015657}
15658
Guido van Rossum3941d972020-05-01 09:42:03 -070015659// _tmp_98: dict | set | dictcomp | setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015660static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015661_tmp_98_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015662{
15663 if (p->error_indicator) {
15664 return NULL;
15665 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015666 void * _res = NULL;
15667 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015668 { // dict
15669 expr_ty dict_var;
15670 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015671 (dict_var = dict_rule(p)) // dict
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015672 )
15673 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015674 _res = dict_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015675 goto done;
15676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015677 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015678 }
15679 { // set
15680 expr_ty set_var;
15681 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015682 (set_var = set_rule(p)) // set
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015683 )
15684 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015685 _res = set_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015686 goto done;
15687 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015688 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015689 }
15690 { // dictcomp
15691 expr_ty dictcomp_var;
15692 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015693 (dictcomp_var = dictcomp_rule(p)) // dictcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015694 )
15695 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015696 _res = dictcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015697 goto done;
15698 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015699 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015700 }
15701 { // setcomp
15702 expr_ty setcomp_var;
15703 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015704 (setcomp_var = setcomp_rule(p)) // setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015705 )
15706 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015707 _res = setcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015708 goto done;
15709 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015710 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015711 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015712 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015713 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015714 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015715}
15716
Guido van Rossum3941d972020-05-01 09:42:03 -070015717// _loop1_99: STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015718static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015719_loop1_99_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015720{
15721 if (p->error_indicator) {
15722 return NULL;
15723 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015724 void *_res = NULL;
15725 int _mark = p->mark;
15726 int _start_mark = p->mark;
15727 void **_children = PyMem_Malloc(sizeof(void *));
15728 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015729 p->error_indicator = 1;
15730 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015731 return NULL;
15732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015733 ssize_t _children_capacity = 1;
15734 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015735 { // STRING
15736 expr_ty string_var;
15737 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015738 (string_var = _PyPegen_string_token(p)) // STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015739 )
15740 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015741 _res = string_var;
15742 if (_n == _children_capacity) {
15743 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015744 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15745 if (!_new_children) {
15746 p->error_indicator = 1;
15747 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015748 return NULL;
15749 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015750 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015752 _children[_n++] = _res;
15753 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015754 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015755 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015756 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015757 if (_n == 0 || p->error_indicator) {
15758 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015759 return NULL;
15760 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015761 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15762 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015763 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015764 p->error_indicator = 1;
15765 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015766 return NULL;
15767 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015768 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15769 PyMem_Free(_children);
15770 _PyPegen_insert_memo(p, _start_mark, _loop1_99_type, _seq);
15771 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015772}
15773
Guido van Rossum3941d972020-05-01 09:42:03 -070015774// _tmp_100: star_named_expression ',' star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015775static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015776_tmp_100_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015777{
15778 if (p->error_indicator) {
15779 return NULL;
15780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015781 void * _res = NULL;
15782 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015783 { // star_named_expression ',' star_named_expressions?
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015784 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015785 expr_ty y;
15786 void *z;
15787 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015788 (y = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015789 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015790 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015791 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015792 (z = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015793 )
15794 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015795 _res = _PyPegen_seq_insert_in_front ( p , y , z );
15796 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015797 p->error_indicator = 1;
15798 return NULL;
15799 }
15800 goto done;
15801 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015802 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015803 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015804 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015805 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015806 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015807}
15808
Guido van Rossum3941d972020-05-01 09:42:03 -070015809// _tmp_101: yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015810static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015811_tmp_101_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015812{
15813 if (p->error_indicator) {
15814 return NULL;
15815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015816 void * _res = NULL;
15817 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015818 { // yield_expr
15819 expr_ty yield_expr_var;
15820 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015821 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015822 )
15823 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015824 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015825 goto done;
15826 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015827 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015828 }
15829 { // named_expression
15830 expr_ty named_expression_var;
15831 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015832 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015833 )
15834 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015835 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015836 goto done;
15837 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015838 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015839 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015840 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015841 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015842 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015843}
15844
Guido van Rossum3941d972020-05-01 09:42:03 -070015845// _loop0_103: ',' kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015846static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015847_loop0_103_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015848{
15849 if (p->error_indicator) {
15850 return NULL;
15851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015852 void *_res = NULL;
15853 int _mark = p->mark;
15854 int _start_mark = p->mark;
15855 void **_children = PyMem_Malloc(sizeof(void *));
15856 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015857 p->error_indicator = 1;
15858 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015859 return NULL;
15860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015861 ssize_t _children_capacity = 1;
15862 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015863 { // ',' kvpair
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015864 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015865 KeyValuePair* elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015866 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015867 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015868 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015869 (elem = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015870 )
15871 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015872 _res = elem;
15873 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015874 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015875 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015876 return NULL;
15877 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015878 if (_n == _children_capacity) {
15879 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015880 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15881 if (!_new_children) {
15882 p->error_indicator = 1;
15883 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015884 return NULL;
15885 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015886 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015887 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015888 _children[_n++] = _res;
15889 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015890 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015891 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015892 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015893 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15894 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015895 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015896 p->error_indicator = 1;
15897 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015898 return NULL;
15899 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015900 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15901 PyMem_Free(_children);
15902 _PyPegen_insert_memo(p, _start_mark, _loop0_103_type, _seq);
15903 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015904}
15905
Guido van Rossum3941d972020-05-01 09:42:03 -070015906// _gather_102: kvpair _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015907static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015908_gather_102_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015909{
15910 if (p->error_indicator) {
15911 return NULL;
15912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015913 asdl_seq * _res = NULL;
15914 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015915 { // kvpair _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015916 KeyValuePair* elem;
15917 asdl_seq * seq;
15918 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015919 (elem = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015920 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015921 (seq = _loop0_103_rule(p)) // _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015922 )
15923 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015924 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015925 goto done;
15926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015927 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015929 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015930 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015931 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015932}
15933
Guido van Rossum3941d972020-05-01 09:42:03 -070015934// _loop1_104: for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015935static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015936_loop1_104_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015937{
15938 if (p->error_indicator) {
15939 return NULL;
15940 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015941 void *_res = NULL;
15942 int _mark = p->mark;
15943 int _start_mark = p->mark;
15944 void **_children = PyMem_Malloc(sizeof(void *));
15945 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015946 p->error_indicator = 1;
15947 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015948 return NULL;
15949 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015950 ssize_t _children_capacity = 1;
15951 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015952 { // for_if_clause
15953 comprehension_ty for_if_clause_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015954 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015955 (for_if_clause_var = for_if_clause_rule(p)) // for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015956 )
15957 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015958 _res = for_if_clause_var;
15959 if (_n == _children_capacity) {
15960 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015961 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15962 if (!_new_children) {
15963 p->error_indicator = 1;
15964 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015965 return NULL;
15966 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015967 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015968 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015969 _children[_n++] = _res;
15970 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015972 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015973 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015974 if (_n == 0 || p->error_indicator) {
15975 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015976 return NULL;
15977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015978 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15979 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015980 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015981 p->error_indicator = 1;
15982 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015983 return NULL;
15984 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015985 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15986 PyMem_Free(_children);
15987 _PyPegen_insert_memo(p, _start_mark, _loop1_104_type, _seq);
15988 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015989}
15990
Guido van Rossum3941d972020-05-01 09:42:03 -070015991// _loop0_105: ('if' disjunction)
Pablo Galindo2b74c832020-04-27 18:02:07 +010015992static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015993_loop0_105_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010015994{
15995 if (p->error_indicator) {
15996 return NULL;
15997 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015998 void *_res = NULL;
15999 int _mark = p->mark;
16000 int _start_mark = p->mark;
16001 void **_children = PyMem_Malloc(sizeof(void *));
16002 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016003 p->error_indicator = 1;
16004 PyErr_NoMemory();
Pablo Galindo2b74c832020-04-27 18:02:07 +010016005 return NULL;
16006 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016007 ssize_t _children_capacity = 1;
16008 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016009 { // ('if' disjunction)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016010 void *_tmp_143_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016011 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016012 (_tmp_143_var = _tmp_143_rule(p)) // 'if' disjunction
Pablo Galindo2b74c832020-04-27 18:02:07 +010016013 )
16014 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016015 _res = _tmp_143_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016016 if (_n == _children_capacity) {
16017 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016018 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16019 if (!_new_children) {
16020 p->error_indicator = 1;
16021 PyErr_NoMemory();
Pablo Galindo2b74c832020-04-27 18:02:07 +010016022 return NULL;
16023 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016024 _children = _new_children;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016025 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016026 _children[_n++] = _res;
16027 _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016028 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016029 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016030 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016031 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16032 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016033 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016034 p->error_indicator = 1;
16035 PyErr_NoMemory();
Pablo Galindo2b74c832020-04-27 18:02:07 +010016036 return NULL;
16037 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016038 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16039 PyMem_Free(_children);
16040 _PyPegen_insert_memo(p, _start_mark, _loop0_105_type, _seq);
16041 return _seq;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016042}
16043
Guido van Rossum3941d972020-05-01 09:42:03 -070016044// _loop0_106: ('if' disjunction)
Guido van Rossumc001c092020-04-30 12:12:19 -070016045static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016046_loop0_106_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016047{
16048 if (p->error_indicator) {
16049 return NULL;
16050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016051 void *_res = NULL;
16052 int _mark = p->mark;
16053 int _start_mark = p->mark;
16054 void **_children = PyMem_Malloc(sizeof(void *));
16055 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016056 p->error_indicator = 1;
16057 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016058 return NULL;
16059 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016060 ssize_t _children_capacity = 1;
16061 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016062 { // ('if' disjunction)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016063 void *_tmp_144_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016064 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016065 (_tmp_144_var = _tmp_144_rule(p)) // 'if' disjunction
Guido van Rossumc001c092020-04-30 12:12:19 -070016066 )
16067 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016068 _res = _tmp_144_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016069 if (_n == _children_capacity) {
16070 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016071 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16072 if (!_new_children) {
16073 p->error_indicator = 1;
16074 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016075 return NULL;
16076 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016077 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016079 _children[_n++] = _res;
16080 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016081 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016082 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016083 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016084 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16085 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016086 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016087 p->error_indicator = 1;
16088 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016089 return NULL;
16090 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016091 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16092 PyMem_Free(_children);
16093 _PyPegen_insert_memo(p, _start_mark, _loop0_106_type, _seq);
16094 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016095}
16096
Guido van Rossum3941d972020-05-01 09:42:03 -070016097// _tmp_107: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016098static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016099_tmp_107_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016100{
16101 if (p->error_indicator) {
16102 return NULL;
16103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016104 void * _res = NULL;
16105 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016106 { // ',' args
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016107 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016108 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016109 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016110 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016111 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016112 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016113 )
16114 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016115 _res = c;
16116 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016117 p->error_indicator = 1;
16118 return NULL;
16119 }
Guido van Rossumc001c092020-04-30 12:12:19 -070016120 goto done;
16121 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016122 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016123 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016124 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070016125 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016126 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070016127}
16128
Guido van Rossum3941d972020-05-01 09:42:03 -070016129// _tmp_108: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016130static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016131_tmp_108_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016132{
16133 if (p->error_indicator) {
16134 return NULL;
16135 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016136 void * _res = NULL;
16137 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016138 { // ',' args
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016139 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016140 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016141 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016142 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016143 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016144 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016145 )
16146 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016147 _res = c;
16148 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016149 p->error_indicator = 1;
16150 return NULL;
16151 }
16152 goto done;
16153 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016154 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016155 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016156 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016157 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016158 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016159}
16160
Guido van Rossum3941d972020-05-01 09:42:03 -070016161// _loop0_110: ',' kwarg_or_starred
16162static asdl_seq *
16163_loop0_110_rule(Parser *p)
16164{
16165 if (p->error_indicator) {
16166 return NULL;
16167 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016168 void *_res = NULL;
16169 int _mark = p->mark;
16170 int _start_mark = p->mark;
16171 void **_children = PyMem_Malloc(sizeof(void *));
16172 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016173 p->error_indicator = 1;
16174 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016175 return NULL;
16176 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016177 ssize_t _children_capacity = 1;
16178 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016179 { // ',' kwarg_or_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016180 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070016181 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070016182 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016183 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070016184 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016185 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070016186 )
16187 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016188 _res = elem;
16189 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016190 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016191 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016192 return NULL;
16193 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016194 if (_n == _children_capacity) {
16195 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016196 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16197 if (!_new_children) {
16198 p->error_indicator = 1;
16199 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016200 return NULL;
16201 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016202 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016203 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016204 _children[_n++] = _res;
16205 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016206 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016207 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016208 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016209 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16210 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016211 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016212 p->error_indicator = 1;
16213 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016214 return NULL;
16215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016216 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16217 PyMem_Free(_children);
16218 _PyPegen_insert_memo(p, _start_mark, _loop0_110_type, _seq);
16219 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016220}
16221
16222// _gather_109: kwarg_or_starred _loop0_110
16223static asdl_seq *
16224_gather_109_rule(Parser *p)
16225{
16226 if (p->error_indicator) {
16227 return NULL;
16228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016229 asdl_seq * _res = NULL;
16230 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016231 { // kwarg_or_starred _loop0_110
16232 KeywordOrStarred* elem;
16233 asdl_seq * seq;
16234 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016235 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070016236 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016237 (seq = _loop0_110_rule(p)) // _loop0_110
Guido van Rossum3941d972020-05-01 09:42:03 -070016238 )
16239 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016240 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070016241 goto done;
16242 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016243 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016244 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016245 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070016246 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016247 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070016248}
16249
16250// _loop0_112: ',' kwarg_or_double_starred
16251static asdl_seq *
16252_loop0_112_rule(Parser *p)
16253{
16254 if (p->error_indicator) {
16255 return NULL;
16256 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016257 void *_res = NULL;
16258 int _mark = p->mark;
16259 int _start_mark = p->mark;
16260 void **_children = PyMem_Malloc(sizeof(void *));
16261 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016262 p->error_indicator = 1;
16263 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016264 return NULL;
16265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016266 ssize_t _children_capacity = 1;
16267 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016268 { // ',' kwarg_or_double_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016269 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070016270 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070016271 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016272 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070016273 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016274 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070016275 )
16276 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016277 _res = elem;
16278 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016279 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016280 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016281 return NULL;
16282 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016283 if (_n == _children_capacity) {
16284 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016285 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16286 if (!_new_children) {
16287 p->error_indicator = 1;
16288 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016289 return NULL;
16290 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016291 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016292 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016293 _children[_n++] = _res;
16294 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016295 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016296 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016297 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016298 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16299 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016300 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016301 p->error_indicator = 1;
16302 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016303 return NULL;
16304 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016305 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16306 PyMem_Free(_children);
16307 _PyPegen_insert_memo(p, _start_mark, _loop0_112_type, _seq);
16308 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016309}
16310
16311// _gather_111: kwarg_or_double_starred _loop0_112
16312static asdl_seq *
16313_gather_111_rule(Parser *p)
16314{
16315 if (p->error_indicator) {
16316 return NULL;
16317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016318 asdl_seq * _res = NULL;
16319 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016320 { // kwarg_or_double_starred _loop0_112
16321 KeywordOrStarred* elem;
16322 asdl_seq * seq;
16323 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016324 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070016325 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016326 (seq = _loop0_112_rule(p)) // _loop0_112
Guido van Rossum3941d972020-05-01 09:42:03 -070016327 )
16328 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016329 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070016330 goto done;
16331 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016332 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016334 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070016335 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016336 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070016337}
16338
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016339// _loop0_114: ',' kwarg_or_starred
Pablo Galindo2b74c832020-04-27 18:02:07 +010016340static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016341_loop0_114_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016342{
16343 if (p->error_indicator) {
16344 return NULL;
16345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016346 void *_res = NULL;
16347 int _mark = p->mark;
16348 int _start_mark = p->mark;
16349 void **_children = PyMem_Malloc(sizeof(void *));
16350 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016351 p->error_indicator = 1;
16352 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016353 return NULL;
16354 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016355 ssize_t _children_capacity = 1;
16356 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070016357 { // ',' kwarg_or_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016358 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070016359 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070016360 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016361 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070016362 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016363 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016364 )
16365 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016366 _res = elem;
16367 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016368 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016369 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016370 return NULL;
16371 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016372 if (_n == _children_capacity) {
16373 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016374 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16375 if (!_new_children) {
16376 p->error_indicator = 1;
16377 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070016378 return NULL;
16379 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016380 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070016381 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016382 _children[_n++] = _res;
16383 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016384 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016385 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016387 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16388 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016389 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016390 p->error_indicator = 1;
16391 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070016392 return NULL;
16393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016394 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16395 PyMem_Free(_children);
16396 _PyPegen_insert_memo(p, _start_mark, _loop0_114_type, _seq);
16397 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070016398}
16399
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016400// _gather_113: kwarg_or_starred _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070016401static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016402_gather_113_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016403{
16404 if (p->error_indicator) {
16405 return NULL;
16406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016407 asdl_seq * _res = NULL;
16408 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016409 { // kwarg_or_starred _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070016410 KeywordOrStarred* elem;
16411 asdl_seq * seq;
16412 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016413 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016414 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016415 (seq = _loop0_114_rule(p)) // _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070016416 )
16417 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016418 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070016419 goto done;
16420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016421 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016422 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016423 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070016424 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016425 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070016426}
16427
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016428// _loop0_116: ',' kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016429static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016430_loop0_116_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016431{
16432 if (p->error_indicator) {
16433 return NULL;
16434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016435 void *_res = NULL;
16436 int _mark = p->mark;
16437 int _start_mark = p->mark;
16438 void **_children = PyMem_Malloc(sizeof(void *));
16439 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016440 p->error_indicator = 1;
16441 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070016442 return NULL;
16443 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016444 ssize_t _children_capacity = 1;
16445 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070016446 { // ',' kwarg_or_double_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016447 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070016448 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070016449 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016450 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070016451 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016452 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016453 )
16454 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016455 _res = elem;
16456 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016457 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016458 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016459 return NULL;
16460 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016461 if (_n == _children_capacity) {
16462 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016463 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16464 if (!_new_children) {
16465 p->error_indicator = 1;
16466 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070016467 return NULL;
16468 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016469 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070016470 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016471 _children[_n++] = _res;
16472 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016473 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016474 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016475 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016476 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16477 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016478 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016479 p->error_indicator = 1;
16480 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070016481 return NULL;
16482 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016483 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16484 PyMem_Free(_children);
16485 _PyPegen_insert_memo(p, _start_mark, _loop0_116_type, _seq);
16486 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070016487}
16488
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016489// _gather_115: kwarg_or_double_starred _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070016490static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016491_gather_115_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016492{
16493 if (p->error_indicator) {
16494 return NULL;
16495 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016496 asdl_seq * _res = NULL;
16497 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016498 { // kwarg_or_double_starred _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070016499 KeywordOrStarred* elem;
16500 asdl_seq * seq;
16501 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016502 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016503 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016504 (seq = _loop0_116_rule(p)) // _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070016505 )
16506 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016507 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070016508 goto done;
16509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016510 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016512 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070016513 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016514 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070016515}
16516
Guido van Rossum3941d972020-05-01 09:42:03 -070016517// _loop0_117: (',' star_target)
Guido van Rossumc001c092020-04-30 12:12:19 -070016518static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016519_loop0_117_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016520{
16521 if (p->error_indicator) {
16522 return NULL;
16523 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016524 void *_res = NULL;
16525 int _mark = p->mark;
16526 int _start_mark = p->mark;
16527 void **_children = PyMem_Malloc(sizeof(void *));
16528 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016529 p->error_indicator = 1;
16530 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016531 return NULL;
16532 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016533 ssize_t _children_capacity = 1;
16534 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016535 { // (',' star_target)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016536 void *_tmp_145_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016537 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016538 (_tmp_145_var = _tmp_145_rule(p)) // ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016539 )
16540 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016541 _res = _tmp_145_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016542 if (_n == _children_capacity) {
16543 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016544 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16545 if (!_new_children) {
16546 p->error_indicator = 1;
16547 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016548 return NULL;
16549 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016550 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016551 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016552 _children[_n++] = _res;
16553 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016555 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016556 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016557 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16558 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016559 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016560 p->error_indicator = 1;
16561 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016562 return NULL;
16563 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016564 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16565 PyMem_Free(_children);
16566 _PyPegen_insert_memo(p, _start_mark, _loop0_117_type, _seq);
16567 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016568}
16569
Guido van Rossum3941d972020-05-01 09:42:03 -070016570// _loop0_119: ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016571static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016572_loop0_119_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016573{
16574 if (p->error_indicator) {
16575 return NULL;
16576 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016577 void *_res = NULL;
16578 int _mark = p->mark;
16579 int _start_mark = p->mark;
16580 void **_children = PyMem_Malloc(sizeof(void *));
16581 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016582 p->error_indicator = 1;
16583 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070016584 return NULL;
16585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016586 ssize_t _children_capacity = 1;
16587 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016588 { // ',' star_target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016589 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016590 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016591 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016592 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016593 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016594 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016595 )
16596 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016597 _res = elem;
16598 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016599 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016600 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016601 return NULL;
16602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016603 if (_n == _children_capacity) {
16604 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016605 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16606 if (!_new_children) {
16607 p->error_indicator = 1;
16608 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016609 return NULL;
16610 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016611 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016613 _children[_n++] = _res;
16614 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016615 }
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 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16619 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016620 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016621 p->error_indicator = 1;
16622 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016623 return NULL;
16624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016625 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16626 PyMem_Free(_children);
16627 _PyPegen_insert_memo(p, _start_mark, _loop0_119_type, _seq);
16628 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016629}
16630
Guido van Rossum3941d972020-05-01 09:42:03 -070016631// _gather_118: star_target _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016632static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016633_gather_118_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016634{
16635 if (p->error_indicator) {
16636 return NULL;
16637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016638 asdl_seq * _res = NULL;
16639 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016640 { // star_target _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016641 expr_ty elem;
16642 asdl_seq * seq;
16643 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016644 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016645 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016646 (seq = _loop0_119_rule(p)) // _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016647 )
16648 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016649 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016650 goto done;
16651 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016652 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016653 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016654 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016655 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016656 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016657}
16658
Guido van Rossum3941d972020-05-01 09:42:03 -070016659// _tmp_120: !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016660static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016661_tmp_120_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016662{
16663 if (p->error_indicator) {
16664 return NULL;
16665 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016666 void * _res = NULL;
16667 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016668 { // !'*' star_target
16669 expr_ty star_target_var;
16670 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016671 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016672 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016673 (star_target_var = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016674 )
16675 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016676 _res = star_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016677 goto done;
16678 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016679 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016680 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016681 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016682 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016683 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016684}
16685
Guido van Rossum3941d972020-05-01 09:42:03 -070016686// _loop0_122: ',' del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016687static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016688_loop0_122_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016689{
16690 if (p->error_indicator) {
16691 return NULL;
16692 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016693 void *_res = NULL;
16694 int _mark = p->mark;
16695 int _start_mark = p->mark;
16696 void **_children = PyMem_Malloc(sizeof(void *));
16697 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016698 p->error_indicator = 1;
16699 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016700 return NULL;
16701 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016702 ssize_t _children_capacity = 1;
16703 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016704 { // ',' del_target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016705 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016706 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016707 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016708 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016709 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016710 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016711 )
16712 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016713 _res = elem;
16714 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016715 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016716 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016717 return NULL;
16718 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016719 if (_n == _children_capacity) {
16720 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016721 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16722 if (!_new_children) {
16723 p->error_indicator = 1;
16724 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016725 return NULL;
16726 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016727 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016728 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016729 _children[_n++] = _res;
16730 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016731 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016732 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016733 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016734 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16735 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016736 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016737 p->error_indicator = 1;
16738 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016739 return NULL;
16740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016741 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16742 PyMem_Free(_children);
16743 _PyPegen_insert_memo(p, _start_mark, _loop0_122_type, _seq);
16744 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016745}
16746
Guido van Rossum3941d972020-05-01 09:42:03 -070016747// _gather_121: del_target _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016748static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016749_gather_121_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016750{
16751 if (p->error_indicator) {
16752 return NULL;
16753 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016754 asdl_seq * _res = NULL;
16755 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016756 { // del_target _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016757 expr_ty elem;
16758 asdl_seq * seq;
16759 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016760 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016761 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016762 (seq = _loop0_122_rule(p)) // _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016763 )
16764 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016765 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016766 goto done;
16767 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016768 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016769 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016770 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016771 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016772 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016773}
16774
Guido van Rossum3941d972020-05-01 09:42:03 -070016775// _loop0_124: ',' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016776static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016777_loop0_124_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016778{
16779 if (p->error_indicator) {
16780 return NULL;
16781 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016782 void *_res = NULL;
16783 int _mark = p->mark;
16784 int _start_mark = p->mark;
16785 void **_children = PyMem_Malloc(sizeof(void *));
16786 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016787 p->error_indicator = 1;
16788 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016789 return NULL;
16790 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016791 ssize_t _children_capacity = 1;
16792 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016793 { // ',' target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016794 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016795 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016796 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016797 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016798 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016799 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016800 )
16801 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016802 _res = elem;
16803 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016804 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016805 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016806 return NULL;
16807 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016808 if (_n == _children_capacity) {
16809 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016810 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16811 if (!_new_children) {
16812 p->error_indicator = 1;
16813 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016814 return NULL;
16815 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016816 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016818 _children[_n++] = _res;
16819 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016820 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016821 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016822 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016823 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16824 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016825 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016826 p->error_indicator = 1;
16827 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016828 return NULL;
16829 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016830 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16831 PyMem_Free(_children);
16832 _PyPegen_insert_memo(p, _start_mark, _loop0_124_type, _seq);
16833 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016834}
16835
Guido van Rossum3941d972020-05-01 09:42:03 -070016836// _gather_123: target _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016837static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016838_gather_123_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016839{
16840 if (p->error_indicator) {
16841 return NULL;
16842 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016843 asdl_seq * _res = NULL;
16844 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016845 { // target _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016846 expr_ty elem;
16847 asdl_seq * seq;
16848 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016849 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016850 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016851 (seq = _loop0_124_rule(p)) // _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016852 )
16853 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016854 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016855 goto done;
16856 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016857 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016859 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016860 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016861 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016862}
16863
Guido van Rossum3941d972020-05-01 09:42:03 -070016864// _tmp_125: args | expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016865static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016866_tmp_125_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016867{
16868 if (p->error_indicator) {
16869 return NULL;
16870 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016871 void * _res = NULL;
16872 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016873 { // args
16874 expr_ty args_var;
16875 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016876 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016877 )
16878 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016879 _res = args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016880 goto done;
16881 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016882 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016883 }
16884 { // expression for_if_clauses
16885 expr_ty expression_var;
16886 asdl_seq* for_if_clauses_var;
16887 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016888 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016889 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016890 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016891 )
16892 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016893 _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016894 goto done;
16895 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016896 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016897 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016898 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016899 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016900 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016901}
16902
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016903// _loop0_126: star_named_expressions
16904static asdl_seq *
16905_loop0_126_rule(Parser *p)
16906{
16907 if (p->error_indicator) {
16908 return NULL;
16909 }
16910 void *_res = NULL;
16911 int _mark = p->mark;
16912 int _start_mark = p->mark;
16913 void **_children = PyMem_Malloc(sizeof(void *));
16914 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016915 p->error_indicator = 1;
16916 PyErr_NoMemory();
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016917 return NULL;
16918 }
16919 ssize_t _children_capacity = 1;
16920 ssize_t _n = 0;
16921 { // star_named_expressions
16922 asdl_seq* star_named_expressions_var;
16923 while (
16924 (star_named_expressions_var = star_named_expressions_rule(p)) // star_named_expressions
16925 )
16926 {
16927 _res = star_named_expressions_var;
16928 if (_n == _children_capacity) {
16929 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016930 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16931 if (!_new_children) {
16932 p->error_indicator = 1;
16933 PyErr_NoMemory();
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016934 return NULL;
16935 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016936 _children = _new_children;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016937 }
16938 _children[_n++] = _res;
16939 _mark = p->mark;
16940 }
16941 p->mark = _mark;
16942 }
16943 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16944 if (!_seq) {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016945 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016946 p->error_indicator = 1;
16947 PyErr_NoMemory();
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016948 return NULL;
16949 }
16950 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16951 PyMem_Free(_children);
16952 _PyPegen_insert_memo(p, _start_mark, _loop0_126_type, _seq);
16953 return _seq;
16954}
16955
16956// _tmp_127: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016957static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016958_tmp_127_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016959{
16960 if (p->error_indicator) {
16961 return NULL;
16962 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016963 void * _res = NULL;
16964 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016965 { // '=' annotated_rhs
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016966 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016967 expr_ty annotated_rhs_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016968 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016969 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016970 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016971 (annotated_rhs_var = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016972 )
16973 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016974 _res = _PyPegen_dummy_name(p, _literal, annotated_rhs_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016975 goto done;
16976 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016977 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016978 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016979 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016980 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016981 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016982}
16983
Pablo Galindo16ab0702020-05-15 02:04:52 +010016984// _tmp_128: yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016985static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016986_tmp_128_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016987{
16988 if (p->error_indicator) {
16989 return NULL;
16990 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016991 void * _res = NULL;
16992 int _mark = p->mark;
Pablo Galindo16ab0702020-05-15 02:04:52 +010016993 { // yield_expr
16994 expr_ty yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016995 if (
Pablo Galindo16ab0702020-05-15 02:04:52 +010016996 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016997 )
16998 {
Pablo Galindo16ab0702020-05-15 02:04:52 +010016999 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017000 goto done;
17001 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017002 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017003 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010017004 { // star_expressions
17005 expr_ty star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017006 if (
Pablo Galindo16ab0702020-05-15 02:04:52 +010017007 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017008 )
17009 {
Pablo Galindo16ab0702020-05-15 02:04:52 +010017010 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017011 goto done;
17012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017013 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017014 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017015 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017016 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017017 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017018}
17019
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017020// _tmp_129: yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017021static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017022_tmp_129_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017023{
17024 if (p->error_indicator) {
17025 return NULL;
17026 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017027 void * _res = NULL;
17028 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017029 { // yield_expr
17030 expr_ty yield_expr_var;
17031 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017032 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017033 )
17034 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017035 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017036 goto done;
17037 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017038 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017039 }
17040 { // star_expressions
17041 expr_ty star_expressions_var;
17042 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017043 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017044 )
17045 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017046 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017047 goto done;
17048 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017049 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017051 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017052 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017053 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017054}
17055
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017056// _tmp_130: '[' | '(' | '{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017057static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017058_tmp_130_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017059{
17060 if (p->error_indicator) {
17061 return NULL;
17062 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017063 void * _res = NULL;
17064 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017065 { // '['
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017066 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017067 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017068 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017069 )
17070 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017071 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017072 goto done;
17073 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017074 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017075 }
17076 { // '('
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017077 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017078 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017079 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017080 )
17081 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017082 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017083 goto done;
17084 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017085 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017086 }
17087 { // '{'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017088 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017089 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017090 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017091 )
17092 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017093 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017094 goto done;
17095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017096 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017097 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017098 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017099 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017100 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017101}
17102
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017103// _loop0_131: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070017104static asdl_seq *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017105_loop0_131_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017106{
17107 if (p->error_indicator) {
17108 return NULL;
17109 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017110 void *_res = NULL;
17111 int _mark = p->mark;
17112 int _start_mark = p->mark;
17113 void **_children = PyMem_Malloc(sizeof(void *));
17114 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017115 p->error_indicator = 1;
17116 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070017117 return NULL;
17118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017119 ssize_t _children_capacity = 1;
17120 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070017121 { // param_no_default
17122 arg_ty param_no_default_var;
17123 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010017124 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017125 )
17126 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017127 _res = param_no_default_var;
17128 if (_n == _children_capacity) {
17129 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017130 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17131 if (!_new_children) {
17132 p->error_indicator = 1;
17133 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070017134 return NULL;
17135 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017136 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070017137 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017138 _children[_n++] = _res;
17139 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017141 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017142 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017143 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17144 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017145 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017146 p->error_indicator = 1;
17147 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070017148 return NULL;
17149 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017150 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17151 PyMem_Free(_children);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017152 _PyPegen_insert_memo(p, _start_mark, _loop0_131_type, _seq);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017153 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017154}
17155
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017156// _tmp_132: slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017157static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017158_tmp_132_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017159{
17160 if (p->error_indicator) {
17161 return NULL;
17162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017163 void * _res = NULL;
17164 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017165 { // slash_with_default
17166 SlashWithDefault* slash_with_default_var;
17167 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017168 (slash_with_default_var = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017169 )
17170 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017171 _res = slash_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017172 goto done;
17173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017174 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017175 }
Guido van Rossumc001c092020-04-30 12:12:19 -070017176 { // param_with_default+
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017177 asdl_seq * _loop1_146_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017178 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017179 (_loop1_146_var = _loop1_146_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017180 )
17181 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017182 _res = _loop1_146_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017183 goto done;
17184 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017185 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017186 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017187 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017188 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017189 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017190}
17191
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017192// _tmp_133: ')' | ',' (')' | '**')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017193static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017194_tmp_133_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017195{
17196 if (p->error_indicator) {
17197 return NULL;
17198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017199 void * _res = NULL;
17200 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017201 { // ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017202 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017203 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017204 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017205 )
17206 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017207 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017208 goto done;
17209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017210 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017211 }
17212 { // ',' (')' | '**')
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017213 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017214 void *_tmp_147_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017215 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017216 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017217 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017218 (_tmp_147_var = _tmp_147_rule(p)) // ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017219 )
17220 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017221 _res = _PyPegen_dummy_name(p, _literal, _tmp_147_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017222 goto done;
17223 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017224 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017225 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017226 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017227 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017228 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017229}
17230
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017231// _tmp_134: ':' | ',' (':' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017232static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017233_tmp_134_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017234{
17235 if (p->error_indicator) {
17236 return NULL;
17237 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017238 void * _res = NULL;
17239 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017240 { // ':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017241 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017242 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017243 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017244 )
17245 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017246 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017247 goto done;
17248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017249 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017250 }
17251 { // ',' (':' | '**')
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017252 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017253 void *_tmp_148_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017254 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017255 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017256 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017257 (_tmp_148_var = _tmp_148_rule(p)) // ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017258 )
17259 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017260 _res = _PyPegen_dummy_name(p, _literal, _tmp_148_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017261 goto done;
17262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017263 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017264 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017265 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017266 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017267 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017268}
17269
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017270// _tmp_135: star_targets '='
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017271static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017272_tmp_135_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017273{
17274 if (p->error_indicator) {
17275 return NULL;
17276 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017277 void * _res = NULL;
17278 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017279 { // star_targets '='
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017280 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017281 expr_ty z;
17282 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017283 (z = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017284 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017285 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017286 )
17287 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017288 _res = z;
17289 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017290 p->error_indicator = 1;
17291 return NULL;
17292 }
17293 goto done;
17294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017295 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017296 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017297 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017298 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017299 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017300}
17301
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017302// _tmp_136: '.' | '...'
17303static void *
17304_tmp_136_rule(Parser *p)
17305{
17306 if (p->error_indicator) {
17307 return NULL;
17308 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017309 void * _res = NULL;
17310 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017311 { // '.'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017312 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017313 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017314 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017315 )
17316 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017317 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017318 goto done;
17319 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017320 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017321 }
17322 { // '...'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017323 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017324 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017325 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017326 )
17327 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017328 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017329 goto done;
17330 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017331 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017332 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017333 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017334 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017335 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017336}
17337
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017338// _tmp_137: '.' | '...'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017339static void *
17340_tmp_137_rule(Parser *p)
17341{
17342 if (p->error_indicator) {
17343 return NULL;
17344 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017345 void * _res = NULL;
17346 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017347 { // '.'
17348 Token * _literal;
17349 if (
17350 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
17351 )
17352 {
17353 _res = _literal;
17354 goto done;
17355 }
17356 p->mark = _mark;
17357 }
17358 { // '...'
17359 Token * _literal;
17360 if (
17361 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
17362 )
17363 {
17364 _res = _literal;
17365 goto done;
17366 }
17367 p->mark = _mark;
17368 }
17369 _res = NULL;
17370 done:
17371 return _res;
17372}
17373
17374// _tmp_138: '@' named_expression NEWLINE
17375static void *
17376_tmp_138_rule(Parser *p)
17377{
17378 if (p->error_indicator) {
17379 return NULL;
17380 }
17381 void * _res = NULL;
17382 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017383 { // '@' named_expression NEWLINE
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017384 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017385 expr_ty f;
Pablo Galindob796b3f2020-05-01 12:32:26 +010017386 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017387 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017388 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017389 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017390 (f = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017391 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017392 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017393 )
17394 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017395 _res = f;
17396 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017397 p->error_indicator = 1;
17398 return NULL;
17399 }
17400 goto done;
17401 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017402 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017403 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017404 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017405 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017406 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017407}
17408
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017409// _tmp_139: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017410static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017411_tmp_139_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017412{
17413 if (p->error_indicator) {
17414 return NULL;
17415 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017416 void * _res = NULL;
17417 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017418 { // ',' star_expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017419 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017420 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017421 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017422 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017423 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017424 (c = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017425 )
17426 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017427 _res = c;
17428 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017429 p->error_indicator = 1;
17430 return NULL;
17431 }
17432 goto done;
17433 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017434 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017435 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017436 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017437 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017438 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017439}
17440
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017441// _tmp_140: ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017442static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017443_tmp_140_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017444{
17445 if (p->error_indicator) {
17446 return NULL;
17447 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017448 void * _res = NULL;
17449 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017450 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017451 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017452 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017453 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017454 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017455 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017456 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017457 )
17458 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017459 _res = c;
17460 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017461 p->error_indicator = 1;
17462 return NULL;
17463 }
17464 goto done;
17465 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017466 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017467 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017468 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017469 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017470 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017471}
17472
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017473// _tmp_141: 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017474static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017475_tmp_141_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017476{
17477 if (p->error_indicator) {
17478 return NULL;
17479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017480 void * _res = NULL;
17481 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017482 { // 'or' conjunction
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017483 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017484 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017485 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017486 (_keyword = _PyPegen_expect_token(p, 532)) // token='or'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017487 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017488 (c = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017489 )
17490 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017491 _res = c;
17492 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017493 p->error_indicator = 1;
17494 return NULL;
17495 }
17496 goto done;
17497 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017498 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017499 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017500 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017501 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017502 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017503}
17504
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017505// _tmp_142: 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017506static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017507_tmp_142_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017508{
17509 if (p->error_indicator) {
17510 return NULL;
17511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017512 void * _res = NULL;
17513 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017514 { // 'and' inversion
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017515 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017516 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017517 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017518 (_keyword = _PyPegen_expect_token(p, 533)) // token='and'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017519 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017520 (c = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017521 )
17522 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017523 _res = c;
17524 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017525 p->error_indicator = 1;
17526 return NULL;
17527 }
17528 goto done;
17529 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017530 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017532 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017533 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017534 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017535}
17536
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017537// _tmp_143: 'if' disjunction
17538static void *
17539_tmp_143_rule(Parser *p)
17540{
17541 if (p->error_indicator) {
17542 return NULL;
17543 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017544 void * _res = NULL;
17545 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017546 { // 'if' disjunction
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017547 Token * _keyword;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017548 expr_ty z;
17549 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017550 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017551 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017552 (z = disjunction_rule(p)) // disjunction
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017553 )
17554 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017555 _res = z;
17556 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017557 p->error_indicator = 1;
17558 return NULL;
17559 }
17560 goto done;
17561 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017562 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017563 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017564 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017565 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017566 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017567}
17568
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017569// _tmp_144: 'if' disjunction
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017570static void *
17571_tmp_144_rule(Parser *p)
17572{
17573 if (p->error_indicator) {
17574 return NULL;
17575 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017576 void * _res = NULL;
17577 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017578 { // 'if' disjunction
17579 Token * _keyword;
17580 expr_ty z;
17581 if (
17582 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
17583 &&
17584 (z = disjunction_rule(p)) // disjunction
17585 )
17586 {
17587 _res = z;
17588 if (_res == NULL && PyErr_Occurred()) {
17589 p->error_indicator = 1;
17590 return NULL;
17591 }
17592 goto done;
17593 }
17594 p->mark = _mark;
17595 }
17596 _res = NULL;
17597 done:
17598 return _res;
17599}
17600
17601// _tmp_145: ',' star_target
17602static void *
17603_tmp_145_rule(Parser *p)
17604{
17605 if (p->error_indicator) {
17606 return NULL;
17607 }
17608 void * _res = NULL;
17609 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017610 { // ',' star_target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017611 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017612 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017613 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017614 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017615 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017616 (c = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017617 )
17618 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017619 _res = c;
17620 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017621 p->error_indicator = 1;
17622 return NULL;
17623 }
17624 goto done;
17625 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017626 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017628 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017629 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017630 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017631}
17632
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017633// _loop1_146: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017634static asdl_seq *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017635_loop1_146_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070017636{
17637 if (p->error_indicator) {
17638 return NULL;
17639 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017640 void *_res = NULL;
17641 int _mark = p->mark;
17642 int _start_mark = p->mark;
17643 void **_children = PyMem_Malloc(sizeof(void *));
17644 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017645 p->error_indicator = 1;
17646 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070017647 return NULL;
17648 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017649 ssize_t _children_capacity = 1;
17650 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070017651 { // param_with_default
17652 NameDefaultPair* param_with_default_var;
17653 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010017654 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070017655 )
17656 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017657 _res = param_with_default_var;
17658 if (_n == _children_capacity) {
17659 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017660 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17661 if (!_new_children) {
17662 p->error_indicator = 1;
17663 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070017664 return NULL;
17665 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017666 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070017667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017668 _children[_n++] = _res;
17669 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017670 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017671 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017672 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017673 if (_n == 0 || p->error_indicator) {
17674 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070017675 return NULL;
17676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017677 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17678 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017679 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017680 p->error_indicator = 1;
17681 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070017682 return NULL;
17683 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017684 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17685 PyMem_Free(_children);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017686 _PyPegen_insert_memo(p, _start_mark, _loop1_146_type, _seq);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017687 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070017688}
17689
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017690// _tmp_147: ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017691static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017692_tmp_147_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017693{
17694 if (p->error_indicator) {
17695 return NULL;
17696 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017697 void * _res = NULL;
17698 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017699 { // ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017700 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017701 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017702 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017703 )
17704 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017705 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017706 goto done;
17707 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017708 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017709 }
17710 { // '**'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017711 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017712 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017713 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017714 )
17715 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017716 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017717 goto done;
17718 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017719 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017720 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017721 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017722 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017723 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017724}
17725
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017726// _tmp_148: ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017727static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017728_tmp_148_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017729{
17730 if (p->error_indicator) {
17731 return NULL;
17732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017733 void * _res = NULL;
17734 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017735 { // ':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017736 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017737 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017738 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017739 )
17740 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017741 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017742 goto done;
17743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017744 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017745 }
17746 { // '**'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017747 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017748 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017749 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017750 )
17751 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017752 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017753 goto done;
17754 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017755 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017756 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017757 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017758 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017759 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017760}
17761
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017762void *
17763_PyPegen_parse(Parser *p)
17764{
17765 // Initialize keywords
17766 p->keywords = reserved_keywords;
17767 p->n_keyword_lists = n_keyword_lists;
17768
17769 // Run parser
17770 void *result = NULL;
17771 if (p->start_rule == Py_file_input) {
17772 result = file_rule(p);
17773 } else if (p->start_rule == Py_single_input) {
17774 result = interactive_rule(p);
17775 } else if (p->start_rule == Py_eval_input) {
17776 result = eval_rule(p);
Guido van Rossumc001c092020-04-30 12:12:19 -070017777 } else if (p->start_rule == Py_func_type_input) {
17778 result = func_type_rule(p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017779 } else if (p->start_rule == Py_fstring_input) {
17780 result = fstring_rule(p);
17781 }
17782
17783 return result;
17784}
17785
17786// The end