blob: e9c20327c155af0e0b10d7f07f3660e8b9609097 [file] [log] [blame]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001// @generated by pegen.py from ./Grammar/python.gram
2#include "pegen.h"
3static const int n_keyword_lists = 15;
4static KeywordToken *reserved_keywords[] = {
5 NULL,
6 NULL,
7 (KeywordToken[]) {
8 {"if", 510},
9 {"in", 518},
10 {"is", 526},
11 {"as", 531},
12 {"or", 532},
13 {NULL, -1},
14 },
15 (KeywordToken[]) {
16 {"del", 503},
17 {"try", 511},
18 {"for", 517},
19 {"def", 522},
20 {"not", 525},
21 {"and", 533},
22 {NULL, -1},
23 },
24 (KeywordToken[]) {
25 {"pass", 502},
26 {"from", 514},
27 {"elif", 515},
28 {"else", 516},
29 {"with", 519},
30 {"True", 527},
31 {"None", 529},
32 {NULL, -1},
33 },
34 (KeywordToken[]) {
35 {"raise", 501},
36 {"yield", 504},
37 {"break", 506},
38 {"while", 512},
39 {"class", 523},
40 {"False", 528},
41 {NULL, -1},
42 },
43 (KeywordToken[]) {
44 {"return", 500},
45 {"assert", 505},
46 {"global", 508},
47 {"import", 513},
48 {"except", 520},
49 {"lambda", 524},
50 {NULL, -1},
51 },
52 (KeywordToken[]) {
53 {"finally", 521},
54 {NULL, -1},
55 },
56 (KeywordToken[]) {
57 {"continue", 507},
58 {"nonlocal", 509},
59 {NULL, -1},
60 },
61 NULL,
62 NULL,
63 NULL,
64 NULL,
65 NULL,
66 (KeywordToken[]) {
67 {"__new_parser__", 530},
68 {NULL, -1},
69 },
70};
71#define file_type 1000
72#define interactive_type 1001
73#define eval_type 1002
Guido van Rossumc001c092020-04-30 12:12:19 -070074#define func_type_type 1003
75#define fstring_type 1004
76#define type_expressions_type 1005
77#define statements_type 1006
78#define statement_type 1007
79#define statement_newline_type 1008
80#define simple_stmt_type 1009
81#define small_stmt_type 1010
82#define compound_stmt_type 1011
83#define assignment_type 1012
84#define augassign_type 1013
85#define global_stmt_type 1014
86#define nonlocal_stmt_type 1015
87#define yield_stmt_type 1016
88#define assert_stmt_type 1017
89#define del_stmt_type 1018
90#define import_stmt_type 1019
91#define import_name_type 1020
92#define import_from_type 1021
93#define import_from_targets_type 1022
94#define import_from_as_names_type 1023
95#define import_from_as_name_type 1024
96#define dotted_as_names_type 1025
97#define dotted_as_name_type 1026
98#define dotted_name_type 1027 // Left-recursive
99#define if_stmt_type 1028
100#define elif_stmt_type 1029
101#define else_block_type 1030
102#define while_stmt_type 1031
103#define for_stmt_type 1032
104#define with_stmt_type 1033
105#define with_item_type 1034
106#define try_stmt_type 1035
107#define except_block_type 1036
108#define finally_block_type 1037
109#define return_stmt_type 1038
110#define raise_stmt_type 1039
111#define function_def_type 1040
112#define function_def_raw_type 1041
113#define func_type_comment_type 1042
114#define params_type 1043
115#define parameters_type 1044
116#define slash_no_default_type 1045
117#define slash_with_default_type 1046
118#define star_etc_type 1047
119#define kwds_type 1048
120#define param_no_default_type 1049
121#define param_with_default_type 1050
122#define param_maybe_default_type 1051
123#define param_type 1052
124#define annotation_type 1053
125#define default_type 1054
126#define decorators_type 1055
127#define class_def_type 1056
128#define class_def_raw_type 1057
129#define block_type 1058
130#define expressions_list_type 1059
131#define star_expressions_type 1060
132#define star_expression_type 1061
133#define star_named_expressions_type 1062
134#define star_named_expression_type 1063
135#define named_expression_type 1064
136#define annotated_rhs_type 1065
137#define expressions_type 1066
138#define expression_type 1067
139#define lambdef_type 1068
140#define lambda_parameters_type 1069
Guido van Rossum3941d972020-05-01 09:42:03 -0700141#define lambda_slash_no_default_type 1070
Guido van Rossumc001c092020-04-30 12:12:19 -0700142#define lambda_slash_with_default_type 1071
143#define lambda_star_etc_type 1072
Guido van Rossum3941d972020-05-01 09:42:03 -0700144#define lambda_kwds_type 1073
145#define lambda_param_no_default_type 1074
146#define lambda_param_with_default_type 1075
147#define lambda_param_maybe_default_type 1076
148#define lambda_param_type 1077
149#define disjunction_type 1078
150#define conjunction_type 1079
151#define inversion_type 1080
152#define comparison_type 1081
153#define compare_op_bitwise_or_pair_type 1082
154#define eq_bitwise_or_type 1083
155#define noteq_bitwise_or_type 1084
156#define lte_bitwise_or_type 1085
157#define lt_bitwise_or_type 1086
158#define gte_bitwise_or_type 1087
159#define gt_bitwise_or_type 1088
160#define notin_bitwise_or_type 1089
161#define in_bitwise_or_type 1090
162#define isnot_bitwise_or_type 1091
163#define is_bitwise_or_type 1092
164#define bitwise_or_type 1093 // Left-recursive
165#define bitwise_xor_type 1094 // Left-recursive
166#define bitwise_and_type 1095 // Left-recursive
167#define shift_expr_type 1096 // Left-recursive
168#define sum_type 1097 // Left-recursive
169#define term_type 1098 // Left-recursive
170#define factor_type 1099
171#define power_type 1100
172#define await_primary_type 1101
173#define primary_type 1102 // Left-recursive
174#define slices_type 1103
175#define slice_type 1104
176#define atom_type 1105
177#define strings_type 1106
178#define list_type 1107
179#define listcomp_type 1108
180#define tuple_type 1109
181#define group_type 1110
182#define genexp_type 1111
183#define set_type 1112
184#define setcomp_type 1113
185#define dict_type 1114
186#define dictcomp_type 1115
187#define kvpairs_type 1116
188#define kvpair_type 1117
189#define for_if_clauses_type 1118
190#define for_if_clause_type 1119
191#define yield_expr_type 1120
192#define arguments_type 1121
193#define args_type 1122
194#define kwargs_type 1123
195#define starred_expression_type 1124
196#define kwarg_or_starred_type 1125
197#define kwarg_or_double_starred_type 1126
198#define star_targets_type 1127
199#define star_targets_seq_type 1128
200#define star_target_type 1129
201#define star_atom_type 1130
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +0300202#define single_target_type 1131
203#define single_subscript_attribute_target_type 1132
Guido van Rossum3941d972020-05-01 09:42:03 -0700204#define del_targets_type 1133
205#define del_target_type 1134
206#define del_t_atom_type 1135
Shantanu27c0d9b2020-05-11 14:53:58 -0700207#define del_target_end_type 1136
208#define targets_type 1137
209#define target_type 1138
210#define t_primary_type 1139 // Left-recursive
211#define t_lookahead_type 1140
212#define t_atom_type 1141
213#define incorrect_arguments_type 1142
214#define invalid_kwarg_type 1143
215#define invalid_named_expression_type 1144
216#define invalid_assignment_type 1145
217#define invalid_block_type 1146
218#define invalid_comprehension_type 1147
219#define invalid_parameters_type 1148
220#define invalid_star_etc_type 1149
221#define invalid_lambda_star_etc_type 1150
222#define invalid_double_type_comments_type 1151
223#define invalid_del_target_type 1152
224#define _loop0_1_type 1153
225#define _loop0_2_type 1154
226#define _loop0_4_type 1155
227#define _gather_3_type 1156
228#define _loop0_6_type 1157
229#define _gather_5_type 1158
230#define _loop0_8_type 1159
231#define _gather_7_type 1160
232#define _loop0_10_type 1161
233#define _gather_9_type 1162
234#define _loop1_11_type 1163
235#define _loop0_13_type 1164
236#define _gather_12_type 1165
237#define _tmp_14_type 1166
238#define _tmp_15_type 1167
239#define _tmp_16_type 1168
240#define _tmp_17_type 1169
241#define _tmp_18_type 1170
242#define _tmp_19_type 1171
243#define _tmp_20_type 1172
244#define _tmp_21_type 1173
245#define _loop1_22_type 1174
246#define _tmp_23_type 1175
247#define _tmp_24_type 1176
248#define _loop0_26_type 1177
249#define _gather_25_type 1178
250#define _loop0_28_type 1179
251#define _gather_27_type 1180
252#define _tmp_29_type 1181
253#define _loop0_30_type 1182
254#define _loop1_31_type 1183
255#define _loop0_33_type 1184
256#define _gather_32_type 1185
257#define _tmp_34_type 1186
258#define _loop0_36_type 1187
259#define _gather_35_type 1188
260#define _tmp_37_type 1189
261#define _loop0_39_type 1190
262#define _gather_38_type 1191
263#define _loop0_41_type 1192
264#define _gather_40_type 1193
265#define _loop0_43_type 1194
266#define _gather_42_type 1195
267#define _loop0_45_type 1196
268#define _gather_44_type 1197
269#define _tmp_46_type 1198
270#define _loop1_47_type 1199
271#define _tmp_48_type 1200
272#define _tmp_49_type 1201
273#define _tmp_50_type 1202
274#define _tmp_51_type 1203
275#define _tmp_52_type 1204
276#define _loop0_53_type 1205
277#define _loop0_54_type 1206
278#define _loop0_55_type 1207
279#define _loop1_56_type 1208
280#define _loop0_57_type 1209
281#define _loop1_58_type 1210
282#define _loop1_59_type 1211
283#define _loop1_60_type 1212
284#define _loop0_61_type 1213
285#define _loop1_62_type 1214
286#define _loop0_63_type 1215
287#define _loop1_64_type 1216
288#define _loop0_65_type 1217
289#define _loop1_66_type 1218
290#define _loop1_67_type 1219
291#define _tmp_68_type 1220
292#define _loop0_70_type 1221
293#define _gather_69_type 1222
294#define _loop1_71_type 1223
295#define _loop0_73_type 1224
296#define _gather_72_type 1225
297#define _loop1_74_type 1226
298#define _loop0_75_type 1227
299#define _loop0_76_type 1228
300#define _loop0_77_type 1229
301#define _loop1_78_type 1230
302#define _loop0_79_type 1231
303#define _loop1_80_type 1232
304#define _loop1_81_type 1233
305#define _loop1_82_type 1234
306#define _loop0_83_type 1235
307#define _loop1_84_type 1236
308#define _loop0_85_type 1237
309#define _loop1_86_type 1238
310#define _loop0_87_type 1239
311#define _loop1_88_type 1240
312#define _loop1_89_type 1241
313#define _loop1_90_type 1242
314#define _loop1_91_type 1243
315#define _tmp_92_type 1244
316#define _loop0_94_type 1245
317#define _gather_93_type 1246
318#define _tmp_95_type 1247
319#define _tmp_96_type 1248
320#define _tmp_97_type 1249
321#define _tmp_98_type 1250
322#define _loop1_99_type 1251
323#define _tmp_100_type 1252
324#define _tmp_101_type 1253
325#define _loop0_103_type 1254
326#define _gather_102_type 1255
327#define _loop1_104_type 1256
328#define _loop0_105_type 1257
329#define _loop0_106_type 1258
330#define _tmp_107_type 1259
331#define _tmp_108_type 1260
332#define _loop0_110_type 1261
333#define _gather_109_type 1262
334#define _loop0_112_type 1263
335#define _gather_111_type 1264
336#define _loop0_114_type 1265
337#define _gather_113_type 1266
338#define _loop0_116_type 1267
339#define _gather_115_type 1268
340#define _loop0_117_type 1269
341#define _loop0_119_type 1270
342#define _gather_118_type 1271
343#define _tmp_120_type 1272
344#define _loop0_122_type 1273
345#define _gather_121_type 1274
346#define _loop0_124_type 1275
347#define _gather_123_type 1276
348#define _tmp_125_type 1277
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300349#define _loop0_126_type 1278
Shantanu27c0d9b2020-05-11 14:53:58 -0700350#define _tmp_127_type 1279
351#define _tmp_128_type 1280
352#define _tmp_129_type 1281
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300353#define _tmp_130_type 1282
354#define _loop0_131_type 1283
Shantanu27c0d9b2020-05-11 14:53:58 -0700355#define _tmp_132_type 1284
356#define _tmp_133_type 1285
357#define _tmp_134_type 1286
358#define _tmp_135_type 1287
359#define _tmp_136_type 1288
360#define _tmp_137_type 1289
361#define _tmp_138_type 1290
362#define _tmp_139_type 1291
363#define _tmp_140_type 1292
364#define _tmp_141_type 1293
365#define _tmp_142_type 1294
366#define _tmp_143_type 1295
367#define _tmp_144_type 1296
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300368#define _tmp_145_type 1297
369#define _loop1_146_type 1298
Shantanu27c0d9b2020-05-11 14:53:58 -0700370#define _tmp_147_type 1299
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300371#define _tmp_148_type 1300
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100372
373static mod_ty file_rule(Parser *p);
374static mod_ty interactive_rule(Parser *p);
375static mod_ty eval_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700376static mod_ty func_type_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100377static expr_ty fstring_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700378static asdl_seq* type_expressions_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100379static asdl_seq* statements_rule(Parser *p);
380static asdl_seq* statement_rule(Parser *p);
381static asdl_seq* statement_newline_rule(Parser *p);
382static asdl_seq* simple_stmt_rule(Parser *p);
383static stmt_ty small_stmt_rule(Parser *p);
384static stmt_ty compound_stmt_rule(Parser *p);
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +0300385static stmt_ty assignment_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100386static AugOperator* augassign_rule(Parser *p);
387static stmt_ty global_stmt_rule(Parser *p);
388static stmt_ty nonlocal_stmt_rule(Parser *p);
389static stmt_ty yield_stmt_rule(Parser *p);
390static stmt_ty assert_stmt_rule(Parser *p);
391static stmt_ty del_stmt_rule(Parser *p);
392static stmt_ty import_stmt_rule(Parser *p);
393static stmt_ty import_name_rule(Parser *p);
394static stmt_ty import_from_rule(Parser *p);
395static asdl_seq* import_from_targets_rule(Parser *p);
396static asdl_seq* import_from_as_names_rule(Parser *p);
397static alias_ty import_from_as_name_rule(Parser *p);
398static asdl_seq* dotted_as_names_rule(Parser *p);
399static alias_ty dotted_as_name_rule(Parser *p);
400static expr_ty dotted_name_rule(Parser *p);
401static stmt_ty if_stmt_rule(Parser *p);
402static stmt_ty elif_stmt_rule(Parser *p);
403static asdl_seq* else_block_rule(Parser *p);
404static stmt_ty while_stmt_rule(Parser *p);
405static stmt_ty for_stmt_rule(Parser *p);
406static stmt_ty with_stmt_rule(Parser *p);
407static withitem_ty with_item_rule(Parser *p);
408static stmt_ty try_stmt_rule(Parser *p);
409static excepthandler_ty except_block_rule(Parser *p);
410static asdl_seq* finally_block_rule(Parser *p);
411static stmt_ty return_stmt_rule(Parser *p);
412static stmt_ty raise_stmt_rule(Parser *p);
413static stmt_ty function_def_rule(Parser *p);
414static stmt_ty function_def_raw_rule(Parser *p);
Pablo Galindod9552412020-05-01 16:32:09 +0100415static Token* func_type_comment_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100416static arguments_ty params_rule(Parser *p);
417static arguments_ty parameters_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700418static asdl_seq* slash_no_default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100419static SlashWithDefault* slash_with_default_rule(Parser *p);
420static StarEtc* star_etc_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100421static arg_ty kwds_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700422static arg_ty param_no_default_rule(Parser *p);
423static NameDefaultPair* param_with_default_rule(Parser *p);
424static NameDefaultPair* param_maybe_default_rule(Parser *p);
425static arg_ty param_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100426static expr_ty annotation_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700427static expr_ty default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100428static asdl_seq* decorators_rule(Parser *p);
429static stmt_ty class_def_rule(Parser *p);
430static stmt_ty class_def_raw_rule(Parser *p);
431static asdl_seq* block_rule(Parser *p);
432static asdl_seq* expressions_list_rule(Parser *p);
433static expr_ty star_expressions_rule(Parser *p);
434static expr_ty star_expression_rule(Parser *p);
435static asdl_seq* star_named_expressions_rule(Parser *p);
436static expr_ty star_named_expression_rule(Parser *p);
437static expr_ty named_expression_rule(Parser *p);
438static expr_ty annotated_rhs_rule(Parser *p);
439static expr_ty expressions_rule(Parser *p);
440static expr_ty expression_rule(Parser *p);
441static expr_ty lambdef_rule(Parser *p);
442static arguments_ty lambda_parameters_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700443static asdl_seq* lambda_slash_no_default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100444static SlashWithDefault* lambda_slash_with_default_rule(Parser *p);
445static StarEtc* lambda_star_etc_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100446static arg_ty lambda_kwds_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700447static arg_ty lambda_param_no_default_rule(Parser *p);
448static NameDefaultPair* lambda_param_with_default_rule(Parser *p);
449static NameDefaultPair* lambda_param_maybe_default_rule(Parser *p);
450static arg_ty lambda_param_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100451static expr_ty disjunction_rule(Parser *p);
452static expr_ty conjunction_rule(Parser *p);
453static expr_ty inversion_rule(Parser *p);
454static expr_ty comparison_rule(Parser *p);
455static CmpopExprPair* compare_op_bitwise_or_pair_rule(Parser *p);
456static CmpopExprPair* eq_bitwise_or_rule(Parser *p);
457static CmpopExprPair* noteq_bitwise_or_rule(Parser *p);
458static CmpopExprPair* lte_bitwise_or_rule(Parser *p);
459static CmpopExprPair* lt_bitwise_or_rule(Parser *p);
460static CmpopExprPair* gte_bitwise_or_rule(Parser *p);
461static CmpopExprPair* gt_bitwise_or_rule(Parser *p);
462static CmpopExprPair* notin_bitwise_or_rule(Parser *p);
463static CmpopExprPair* in_bitwise_or_rule(Parser *p);
464static CmpopExprPair* isnot_bitwise_or_rule(Parser *p);
465static CmpopExprPair* is_bitwise_or_rule(Parser *p);
466static expr_ty bitwise_or_rule(Parser *p);
467static expr_ty bitwise_xor_rule(Parser *p);
468static expr_ty bitwise_and_rule(Parser *p);
469static expr_ty shift_expr_rule(Parser *p);
470static expr_ty sum_rule(Parser *p);
471static expr_ty term_rule(Parser *p);
472static expr_ty factor_rule(Parser *p);
473static expr_ty power_rule(Parser *p);
474static expr_ty await_primary_rule(Parser *p);
475static expr_ty primary_rule(Parser *p);
476static expr_ty slices_rule(Parser *p);
477static expr_ty slice_rule(Parser *p);
478static expr_ty atom_rule(Parser *p);
479static expr_ty strings_rule(Parser *p);
480static expr_ty list_rule(Parser *p);
481static expr_ty listcomp_rule(Parser *p);
482static expr_ty tuple_rule(Parser *p);
483static expr_ty group_rule(Parser *p);
484static expr_ty genexp_rule(Parser *p);
485static expr_ty set_rule(Parser *p);
486static expr_ty setcomp_rule(Parser *p);
487static expr_ty dict_rule(Parser *p);
488static expr_ty dictcomp_rule(Parser *p);
489static asdl_seq* kvpairs_rule(Parser *p);
490static KeyValuePair* kvpair_rule(Parser *p);
491static asdl_seq* for_if_clauses_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300492static comprehension_ty for_if_clause_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100493static expr_ty yield_expr_rule(Parser *p);
494static expr_ty arguments_rule(Parser *p);
495static expr_ty args_rule(Parser *p);
496static asdl_seq* kwargs_rule(Parser *p);
497static expr_ty starred_expression_rule(Parser *p);
498static KeywordOrStarred* kwarg_or_starred_rule(Parser *p);
499static KeywordOrStarred* kwarg_or_double_starred_rule(Parser *p);
500static expr_ty star_targets_rule(Parser *p);
501static asdl_seq* star_targets_seq_rule(Parser *p);
502static expr_ty star_target_rule(Parser *p);
503static expr_ty star_atom_rule(Parser *p);
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +0300504static expr_ty single_target_rule(Parser *p);
505static expr_ty single_subscript_attribute_target_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100506static asdl_seq* del_targets_rule(Parser *p);
507static expr_ty del_target_rule(Parser *p);
508static expr_ty del_t_atom_rule(Parser *p);
Shantanu27c0d9b2020-05-11 14:53:58 -0700509static void *del_target_end_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100510static asdl_seq* targets_rule(Parser *p);
511static expr_ty target_rule(Parser *p);
512static expr_ty t_primary_rule(Parser *p);
513static void *t_lookahead_rule(Parser *p);
514static expr_ty t_atom_rule(Parser *p);
515static void *incorrect_arguments_rule(Parser *p);
Lysandros Nikolaou4638c642020-05-07 13:44:06 +0300516static void *invalid_kwarg_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100517static void *invalid_named_expression_rule(Parser *p);
518static void *invalid_assignment_rule(Parser *p);
519static void *invalid_block_rule(Parser *p);
520static void *invalid_comprehension_rule(Parser *p);
521static void *invalid_parameters_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300522static void *invalid_star_etc_rule(Parser *p);
523static void *invalid_lambda_star_etc_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700524static void *invalid_double_type_comments_rule(Parser *p);
Shantanu27c0d9b2020-05-11 14:53:58 -0700525static void *invalid_del_target_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100526static asdl_seq *_loop0_1_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700527static asdl_seq *_loop0_2_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100528static asdl_seq *_loop0_4_rule(Parser *p);
529static asdl_seq *_gather_3_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700530static asdl_seq *_loop0_6_rule(Parser *p);
531static asdl_seq *_gather_5_rule(Parser *p);
532static asdl_seq *_loop0_8_rule(Parser *p);
533static asdl_seq *_gather_7_rule(Parser *p);
534static asdl_seq *_loop0_10_rule(Parser *p);
535static asdl_seq *_gather_9_rule(Parser *p);
536static asdl_seq *_loop1_11_rule(Parser *p);
537static asdl_seq *_loop0_13_rule(Parser *p);
538static asdl_seq *_gather_12_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100539static void *_tmp_14_rule(Parser *p);
540static void *_tmp_15_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700541static void *_tmp_16_rule(Parser *p);
542static void *_tmp_17_rule(Parser *p);
543static void *_tmp_18_rule(Parser *p);
544static void *_tmp_19_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100545static void *_tmp_20_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700546static void *_tmp_21_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100547static asdl_seq *_loop1_22_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700548static void *_tmp_23_rule(Parser *p);
549static void *_tmp_24_rule(Parser *p);
550static asdl_seq *_loop0_26_rule(Parser *p);
551static asdl_seq *_gather_25_rule(Parser *p);
552static asdl_seq *_loop0_28_rule(Parser *p);
553static asdl_seq *_gather_27_rule(Parser *p);
554static void *_tmp_29_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100555static asdl_seq *_loop0_30_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700556static asdl_seq *_loop1_31_rule(Parser *p);
557static asdl_seq *_loop0_33_rule(Parser *p);
558static asdl_seq *_gather_32_rule(Parser *p);
559static void *_tmp_34_rule(Parser *p);
560static asdl_seq *_loop0_36_rule(Parser *p);
561static asdl_seq *_gather_35_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100562static void *_tmp_37_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700563static asdl_seq *_loop0_39_rule(Parser *p);
564static asdl_seq *_gather_38_rule(Parser *p);
565static asdl_seq *_loop0_41_rule(Parser *p);
566static asdl_seq *_gather_40_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300567static asdl_seq *_loop0_43_rule(Parser *p);
568static asdl_seq *_gather_42_rule(Parser *p);
569static asdl_seq *_loop0_45_rule(Parser *p);
570static asdl_seq *_gather_44_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100571static void *_tmp_46_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300572static asdl_seq *_loop1_47_rule(Parser *p);
573static void *_tmp_48_rule(Parser *p);
574static void *_tmp_49_rule(Parser *p);
575static void *_tmp_50_rule(Parser *p);
576static void *_tmp_51_rule(Parser *p);
577static void *_tmp_52_rule(Parser *p);
578static asdl_seq *_loop0_53_rule(Parser *p);
579static asdl_seq *_loop0_54_rule(Parser *p);
580static asdl_seq *_loop0_55_rule(Parser *p);
581static asdl_seq *_loop1_56_rule(Parser *p);
582static asdl_seq *_loop0_57_rule(Parser *p);
583static asdl_seq *_loop1_58_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700584static asdl_seq *_loop1_59_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300585static asdl_seq *_loop1_60_rule(Parser *p);
586static asdl_seq *_loop0_61_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700587static asdl_seq *_loop1_62_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300588static asdl_seq *_loop0_63_rule(Parser *p);
589static asdl_seq *_loop1_64_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700590static asdl_seq *_loop0_65_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700591static asdl_seq *_loop1_66_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300592static asdl_seq *_loop1_67_rule(Parser *p);
593static void *_tmp_68_rule(Parser *p);
594static asdl_seq *_loop0_70_rule(Parser *p);
595static asdl_seq *_gather_69_rule(Parser *p);
596static asdl_seq *_loop1_71_rule(Parser *p);
597static asdl_seq *_loop0_73_rule(Parser *p);
598static asdl_seq *_gather_72_rule(Parser *p);
599static asdl_seq *_loop1_74_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700600static asdl_seq *_loop0_75_rule(Parser *p);
601static asdl_seq *_loop0_76_rule(Parser *p);
602static asdl_seq *_loop0_77_rule(Parser *p);
603static asdl_seq *_loop1_78_rule(Parser *p);
604static asdl_seq *_loop0_79_rule(Parser *p);
605static asdl_seq *_loop1_80_rule(Parser *p);
606static asdl_seq *_loop1_81_rule(Parser *p);
607static asdl_seq *_loop1_82_rule(Parser *p);
608static asdl_seq *_loop0_83_rule(Parser *p);
609static asdl_seq *_loop1_84_rule(Parser *p);
610static asdl_seq *_loop0_85_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300611static asdl_seq *_loop1_86_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700612static asdl_seq *_loop0_87_rule(Parser *p);
613static asdl_seq *_loop1_88_rule(Parser *p);
614static asdl_seq *_loop1_89_rule(Parser *p);
615static asdl_seq *_loop1_90_rule(Parser *p);
616static asdl_seq *_loop1_91_rule(Parser *p);
617static void *_tmp_92_rule(Parser *p);
618static asdl_seq *_loop0_94_rule(Parser *p);
619static asdl_seq *_gather_93_rule(Parser *p);
620static void *_tmp_95_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700621static void *_tmp_96_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700622static void *_tmp_97_rule(Parser *p);
623static void *_tmp_98_rule(Parser *p);
624static asdl_seq *_loop1_99_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100625static void *_tmp_100_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300626static void *_tmp_101_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700627static asdl_seq *_loop0_103_rule(Parser *p);
628static asdl_seq *_gather_102_rule(Parser *p);
629static asdl_seq *_loop1_104_rule(Parser *p);
630static asdl_seq *_loop0_105_rule(Parser *p);
631static asdl_seq *_loop0_106_rule(Parser *p);
632static void *_tmp_107_rule(Parser *p);
633static void *_tmp_108_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300634static asdl_seq *_loop0_110_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700635static asdl_seq *_gather_109_rule(Parser *p);
636static asdl_seq *_loop0_112_rule(Parser *p);
637static asdl_seq *_gather_111_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100638static asdl_seq *_loop0_114_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300639static asdl_seq *_gather_113_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100640static asdl_seq *_loop0_116_rule(Parser *p);
641static asdl_seq *_gather_115_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700642static asdl_seq *_loop0_117_rule(Parser *p);
643static asdl_seq *_loop0_119_rule(Parser *p);
644static asdl_seq *_gather_118_rule(Parser *p);
645static void *_tmp_120_rule(Parser *p);
646static asdl_seq *_loop0_122_rule(Parser *p);
647static asdl_seq *_gather_121_rule(Parser *p);
648static asdl_seq *_loop0_124_rule(Parser *p);
649static asdl_seq *_gather_123_rule(Parser *p);
650static void *_tmp_125_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300651static asdl_seq *_loop0_126_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700652static void *_tmp_127_rule(Parser *p);
653static void *_tmp_128_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100654static void *_tmp_129_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300655static void *_tmp_130_rule(Parser *p);
656static asdl_seq *_loop0_131_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100657static void *_tmp_132_rule(Parser *p);
658static void *_tmp_133_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700659static void *_tmp_134_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100660static void *_tmp_135_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700661static void *_tmp_136_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100662static void *_tmp_137_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700663static void *_tmp_138_rule(Parser *p);
664static void *_tmp_139_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300665static void *_tmp_140_rule(Parser *p);
666static void *_tmp_141_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700667static void *_tmp_142_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300668static void *_tmp_143_rule(Parser *p);
669static void *_tmp_144_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300670static void *_tmp_145_rule(Parser *p);
671static asdl_seq *_loop1_146_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300672static void *_tmp_147_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300673static void *_tmp_148_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100674
675
676// file: statements? $
677static mod_ty
678file_rule(Parser *p)
679{
680 if (p->error_indicator) {
681 return NULL;
682 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100683 mod_ty _res = NULL;
684 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100685 { // statements? $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300686 if (p->error_indicator) {
687 return NULL;
688 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100689 void *a;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100690 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100691 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100692 (a = statements_rule(p), 1) // statements?
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100693 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100694 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100695 )
696 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100697 _res = _PyPegen_make_module ( p , a );
698 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100699 p->error_indicator = 1;
700 return NULL;
701 }
702 goto done;
703 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100704 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100706 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100707 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100708 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100709}
710
711// interactive: statement_newline
712static mod_ty
713interactive_rule(Parser *p)
714{
715 if (p->error_indicator) {
716 return NULL;
717 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100718 mod_ty _res = NULL;
719 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100720 { // statement_newline
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300721 if (p->error_indicator) {
722 return NULL;
723 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100724 asdl_seq* a;
725 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100726 (a = statement_newline_rule(p)) // statement_newline
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100727 )
728 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100729 _res = Interactive ( a , p -> arena );
730 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100731 p->error_indicator = 1;
732 return NULL;
733 }
734 goto done;
735 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100736 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100738 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100739 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100740 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100741}
742
743// eval: expressions NEWLINE* $
744static mod_ty
745eval_rule(Parser *p)
746{
747 if (p->error_indicator) {
748 return NULL;
749 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100750 mod_ty _res = NULL;
751 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100752 { // expressions NEWLINE* $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300753 if (p->error_indicator) {
754 return NULL;
755 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100756 asdl_seq * _loop0_1_var;
757 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100758 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100759 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100760 (a = expressions_rule(p)) // expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100761 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100762 (_loop0_1_var = _loop0_1_rule(p)) // NEWLINE*
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100763 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100764 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100765 )
766 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100767 _res = Expression ( a , p -> arena );
768 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100769 p->error_indicator = 1;
770 return NULL;
771 }
772 goto done;
773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100774 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100775 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100776 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100777 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100778 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100779}
780
Guido van Rossumc001c092020-04-30 12:12:19 -0700781// func_type: '(' type_expressions? ')' '->' expression NEWLINE* $
782static mod_ty
783func_type_rule(Parser *p)
784{
785 if (p->error_indicator) {
786 return NULL;
787 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100788 mod_ty _res = NULL;
789 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700790 { // '(' type_expressions? ')' '->' expression NEWLINE* $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300791 if (p->error_indicator) {
792 return NULL;
793 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100794 Token * _literal;
795 Token * _literal_1;
796 Token * _literal_2;
Guido van Rossumc001c092020-04-30 12:12:19 -0700797 asdl_seq * _loop0_2_var;
798 void *a;
799 expr_ty b;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100800 Token * endmarker_var;
Guido van Rossumc001c092020-04-30 12:12:19 -0700801 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100802 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Guido van Rossumc001c092020-04-30 12:12:19 -0700803 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100804 (a = type_expressions_rule(p), 1) // type_expressions?
Guido van Rossumc001c092020-04-30 12:12:19 -0700805 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100806 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -0700807 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100808 (_literal_2 = _PyPegen_expect_token(p, 51)) // token='->'
Guido van Rossumc001c092020-04-30 12:12:19 -0700809 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100810 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700811 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100812 (_loop0_2_var = _loop0_2_rule(p)) // NEWLINE*
Guido van Rossumc001c092020-04-30 12:12:19 -0700813 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100814 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Guido van Rossumc001c092020-04-30 12:12:19 -0700815 )
816 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100817 _res = FunctionType ( a , b , p -> arena );
818 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700819 p->error_indicator = 1;
820 return NULL;
821 }
822 goto done;
823 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100824 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100826 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -0700827 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100828 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -0700829}
830
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100831// fstring: star_expressions
832static expr_ty
833fstring_rule(Parser *p)
834{
835 if (p->error_indicator) {
836 return NULL;
837 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100838 expr_ty _res = NULL;
839 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100840 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300841 if (p->error_indicator) {
842 return NULL;
843 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100844 expr_ty star_expressions_var;
845 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100846 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100847 )
848 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100849 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100850 goto done;
851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100852 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100853 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100854 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100855 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100856 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100857}
858
Guido van Rossumc001c092020-04-30 12:12:19 -0700859// type_expressions:
860// | ','.expression+ ',' '*' expression ',' '**' expression
861// | ','.expression+ ',' '*' expression
862// | ','.expression+ ',' '**' expression
Shantanu603d3542020-05-03 22:08:14 -0700863// | '*' expression ',' '**' expression
864// | '*' expression
865// | '**' expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700866// | ','.expression+
867static asdl_seq*
868type_expressions_rule(Parser *p)
869{
870 if (p->error_indicator) {
871 return NULL;
872 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100873 asdl_seq* _res = NULL;
874 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700875 { // ','.expression+ ',' '*' expression ',' '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300876 if (p->error_indicator) {
877 return NULL;
878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100879 Token * _literal;
880 Token * _literal_1;
881 Token * _literal_2;
882 Token * _literal_3;
Guido van Rossumc001c092020-04-30 12:12:19 -0700883 asdl_seq * a;
884 expr_ty b;
885 expr_ty c;
Guido van Rossumc001c092020-04-30 12:12:19 -0700886 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100887 (a = _gather_3_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700888 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100889 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700890 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100891 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Guido van Rossumc001c092020-04-30 12:12:19 -0700892 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100893 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700894 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100895 (_literal_2 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700896 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100897 (_literal_3 = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -0700898 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100899 (c = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700900 )
901 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100902 _res = _PyPegen_seq_append_to_end ( p , CHECK ( _PyPegen_seq_append_to_end ( p , a , b ) ) , c );
903 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700904 p->error_indicator = 1;
905 return NULL;
906 }
907 goto done;
908 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100909 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700910 }
911 { // ','.expression+ ',' '*' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300912 if (p->error_indicator) {
913 return NULL;
914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100915 Token * _literal;
916 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -0700917 asdl_seq * a;
918 expr_ty b;
Guido van Rossumc001c092020-04-30 12:12:19 -0700919 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100920 (a = _gather_5_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700921 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100922 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700923 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100924 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Guido van Rossumc001c092020-04-30 12:12:19 -0700925 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100926 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700927 )
928 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100929 _res = _PyPegen_seq_append_to_end ( p , a , b );
930 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700931 p->error_indicator = 1;
932 return NULL;
933 }
934 goto done;
935 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100936 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700937 }
938 { // ','.expression+ ',' '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300939 if (p->error_indicator) {
940 return NULL;
941 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100942 Token * _literal;
943 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -0700944 asdl_seq * a;
945 expr_ty b;
Guido van Rossumc001c092020-04-30 12:12:19 -0700946 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100947 (a = _gather_7_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700948 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100949 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700950 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100951 (_literal_1 = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -0700952 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100953 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700954 )
955 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100956 _res = _PyPegen_seq_append_to_end ( p , a , b );
957 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700958 p->error_indicator = 1;
959 return NULL;
960 }
961 goto done;
962 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100963 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700964 }
Shantanu603d3542020-05-03 22:08:14 -0700965 { // '*' expression ',' '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300966 if (p->error_indicator) {
967 return NULL;
968 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100969 Token * _literal;
970 Token * _literal_1;
971 Token * _literal_2;
Shantanu603d3542020-05-03 22:08:14 -0700972 expr_ty a;
973 expr_ty b;
Shantanu603d3542020-05-03 22:08:14 -0700974 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100975 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Shantanu603d3542020-05-03 22:08:14 -0700976 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100977 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700978 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100979 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Shantanu603d3542020-05-03 22:08:14 -0700980 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100981 (_literal_2 = _PyPegen_expect_token(p, 35)) // token='**'
Shantanu603d3542020-05-03 22:08:14 -0700982 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100983 (b = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700984 )
985 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100986 _res = _PyPegen_seq_append_to_end ( p , CHECK ( _PyPegen_singleton_seq ( p , a ) ) , b );
987 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -0700988 p->error_indicator = 1;
989 return NULL;
990 }
991 goto done;
992 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100993 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -0700994 }
995 { // '*' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +0300996 if (p->error_indicator) {
997 return NULL;
998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100999 Token * _literal;
Shantanu603d3542020-05-03 22:08:14 -07001000 expr_ty a;
Shantanu603d3542020-05-03 22:08:14 -07001001 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001002 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Shantanu603d3542020-05-03 22:08:14 -07001003 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001004 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -07001005 )
1006 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001007 _res = _PyPegen_singleton_seq ( p , a );
1008 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -07001009 p->error_indicator = 1;
1010 return NULL;
1011 }
1012 goto done;
1013 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001014 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -07001015 }
1016 { // '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001017 if (p->error_indicator) {
1018 return NULL;
1019 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001020 Token * _literal;
Shantanu603d3542020-05-03 22:08:14 -07001021 expr_ty a;
Shantanu603d3542020-05-03 22:08:14 -07001022 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001023 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Shantanu603d3542020-05-03 22:08:14 -07001024 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001025 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -07001026 )
1027 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001028 _res = _PyPegen_singleton_seq ( p , a );
1029 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -07001030 p->error_indicator = 1;
1031 return NULL;
1032 }
1033 goto done;
1034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001035 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -07001036 }
Guido van Rossumc001c092020-04-30 12:12:19 -07001037 { // ','.expression+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001038 if (p->error_indicator) {
1039 return NULL;
1040 }
Guido van Rossumc001c092020-04-30 12:12:19 -07001041 asdl_seq * _gather_9_var;
1042 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001043 (_gather_9_var = _gather_9_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -07001044 )
1045 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001046 _res = _gather_9_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07001047 goto done;
1048 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001049 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07001050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001051 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07001052 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001053 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07001054}
1055
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001056// statements: statement+
1057static asdl_seq*
1058statements_rule(Parser *p)
1059{
1060 if (p->error_indicator) {
1061 return NULL;
1062 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001063 asdl_seq* _res = NULL;
1064 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001065 { // statement+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001066 if (p->error_indicator) {
1067 return NULL;
1068 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001069 asdl_seq * a;
1070 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001071 (a = _loop1_11_rule(p)) // statement+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001072 )
1073 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001074 _res = _PyPegen_seq_flatten ( p , a );
1075 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001076 p->error_indicator = 1;
1077 return NULL;
1078 }
1079 goto done;
1080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001081 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001083 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001084 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001085 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001086}
1087
1088// statement: compound_stmt | simple_stmt
1089static asdl_seq*
1090statement_rule(Parser *p)
1091{
1092 if (p->error_indicator) {
1093 return NULL;
1094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001095 asdl_seq* _res = NULL;
1096 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001097 { // compound_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001098 if (p->error_indicator) {
1099 return NULL;
1100 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001101 stmt_ty a;
1102 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001103 (a = compound_stmt_rule(p)) // compound_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001104 )
1105 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001106 _res = _PyPegen_singleton_seq ( p , a );
1107 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001108 p->error_indicator = 1;
1109 return NULL;
1110 }
1111 goto done;
1112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001113 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001114 }
1115 { // simple_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001116 if (p->error_indicator) {
1117 return NULL;
1118 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001119 asdl_seq* simple_stmt_var;
1120 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001121 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001122 )
1123 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001124 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001125 goto done;
1126 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001127 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001128 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001129 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001130 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001131 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001132}
1133
1134// statement_newline: compound_stmt NEWLINE | simple_stmt | NEWLINE | $
1135static asdl_seq*
1136statement_newline_rule(Parser *p)
1137{
1138 if (p->error_indicator) {
1139 return NULL;
1140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001141 asdl_seq* _res = NULL;
1142 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001143 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1144 p->error_indicator = 1;
1145 return NULL;
1146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001147 int _start_lineno = p->tokens[_mark]->lineno;
1148 UNUSED(_start_lineno); // Only used by EXTRA macro
1149 int _start_col_offset = p->tokens[_mark]->col_offset;
1150 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001151 { // compound_stmt NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001152 if (p->error_indicator) {
1153 return NULL;
1154 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001155 stmt_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001156 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001157 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001158 (a = compound_stmt_rule(p)) // compound_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001159 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001160 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001161 )
1162 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001163 _res = _PyPegen_singleton_seq ( p , a );
1164 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001165 p->error_indicator = 1;
1166 return NULL;
1167 }
1168 goto done;
1169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001170 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001171 }
1172 { // simple_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001173 if (p->error_indicator) {
1174 return NULL;
1175 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001176 asdl_seq* simple_stmt_var;
1177 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001178 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001179 )
1180 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001181 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001182 goto done;
1183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001184 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001185 }
1186 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001187 if (p->error_indicator) {
1188 return NULL;
1189 }
Pablo Galindob796b3f2020-05-01 12:32:26 +01001190 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001191 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001192 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001193 )
1194 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001195 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1196 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001197 return NULL;
1198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001199 int _end_lineno = _token->end_lineno;
1200 UNUSED(_end_lineno); // Only used by EXTRA macro
1201 int _end_col_offset = _token->end_col_offset;
1202 UNUSED(_end_col_offset); // Only used by EXTRA macro
1203 _res = _PyPegen_singleton_seq ( p , CHECK ( _Py_Pass ( EXTRA ) ) );
1204 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001205 p->error_indicator = 1;
1206 return NULL;
1207 }
1208 goto done;
1209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001210 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001211 }
1212 { // $
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001213 if (p->error_indicator) {
1214 return NULL;
1215 }
Pablo Galindob796b3f2020-05-01 12:32:26 +01001216 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001217 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001218 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001219 )
1220 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001221 _res = _PyPegen_interactive_exit ( p );
1222 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001223 p->error_indicator = 1;
1224 return NULL;
1225 }
1226 goto done;
1227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001228 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001229 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001230 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001231 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001232 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001233}
1234
1235// simple_stmt: small_stmt !';' NEWLINE | ';'.small_stmt+ ';'? NEWLINE
1236static asdl_seq*
1237simple_stmt_rule(Parser *p)
1238{
1239 if (p->error_indicator) {
1240 return NULL;
1241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001242 asdl_seq* _res = NULL;
1243 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001244 { // small_stmt !';' NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001245 if (p->error_indicator) {
1246 return NULL;
1247 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001248 stmt_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001249 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001250 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001251 (a = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001252 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001253 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 13) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001254 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001255 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001256 )
1257 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001258 _res = _PyPegen_singleton_seq ( p , a );
1259 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001260 p->error_indicator = 1;
1261 return NULL;
1262 }
1263 goto done;
1264 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001265 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001266 }
1267 { // ';'.small_stmt+ ';'? NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001268 if (p->error_indicator) {
1269 return NULL;
1270 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001271 void *_opt_var;
1272 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001273 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001274 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001275 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001276 (a = _gather_12_rule(p)) // ';'.small_stmt+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001277 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001278 (_opt_var = _PyPegen_expect_token(p, 13), 1) // ';'?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001279 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001280 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001281 )
1282 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001283 _res = a;
1284 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001285 p->error_indicator = 1;
1286 return NULL;
1287 }
1288 goto done;
1289 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001290 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001292 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001293 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001294 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001295}
1296
1297// small_stmt:
1298// | assignment
1299// | star_expressions
1300// | &'return' return_stmt
1301// | &('import' | 'from') import_stmt
1302// | &'raise' raise_stmt
1303// | 'pass'
1304// | &'del' del_stmt
1305// | &'yield' yield_stmt
1306// | &'assert' assert_stmt
1307// | 'break'
1308// | 'continue'
1309// | &'global' global_stmt
1310// | &'nonlocal' nonlocal_stmt
1311static stmt_ty
1312small_stmt_rule(Parser *p)
1313{
1314 if (p->error_indicator) {
1315 return NULL;
1316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001317 stmt_ty _res = NULL;
1318 if (_PyPegen_is_memoized(p, small_stmt_type, &_res))
1319 return _res;
1320 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001321 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1322 p->error_indicator = 1;
1323 return NULL;
1324 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001325 int _start_lineno = p->tokens[_mark]->lineno;
1326 UNUSED(_start_lineno); // Only used by EXTRA macro
1327 int _start_col_offset = p->tokens[_mark]->col_offset;
1328 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001329 { // assignment
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001330 if (p->error_indicator) {
1331 return NULL;
1332 }
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +03001333 stmt_ty assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001334 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001335 (assignment_var = assignment_rule(p)) // assignment
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001336 )
1337 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001338 _res = assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001339 goto done;
1340 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001341 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001342 }
1343 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001344 if (p->error_indicator) {
1345 return NULL;
1346 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001347 expr_ty e;
1348 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001349 (e = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001350 )
1351 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001352 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1353 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001354 return NULL;
1355 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001356 int _end_lineno = _token->end_lineno;
1357 UNUSED(_end_lineno); // Only used by EXTRA macro
1358 int _end_col_offset = _token->end_col_offset;
1359 UNUSED(_end_col_offset); // Only used by EXTRA macro
1360 _res = _Py_Expr ( e , EXTRA );
1361 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001362 p->error_indicator = 1;
1363 return NULL;
1364 }
1365 goto done;
1366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001367 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001368 }
1369 { // &'return' return_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001370 if (p->error_indicator) {
1371 return NULL;
1372 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001373 stmt_ty return_stmt_var;
1374 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001375 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 500) // token='return'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001376 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001377 (return_stmt_var = return_stmt_rule(p)) // return_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001378 )
1379 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001380 _res = return_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001381 goto done;
1382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001383 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001384 }
1385 { // &('import' | 'from') import_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001386 if (p->error_indicator) {
1387 return NULL;
1388 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001389 stmt_ty import_stmt_var;
1390 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001391 _PyPegen_lookahead(1, _tmp_14_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001392 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001393 (import_stmt_var = import_stmt_rule(p)) // import_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001394 )
1395 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001396 _res = import_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001397 goto done;
1398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001399 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001400 }
1401 { // &'raise' raise_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001402 if (p->error_indicator) {
1403 return NULL;
1404 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001405 stmt_ty raise_stmt_var;
1406 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001407 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 501) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001408 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001409 (raise_stmt_var = raise_stmt_rule(p)) // raise_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001410 )
1411 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001412 _res = raise_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001413 goto done;
1414 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001415 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001416 }
1417 { // 'pass'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001418 if (p->error_indicator) {
1419 return NULL;
1420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001421 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001422 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001423 (_keyword = _PyPegen_expect_token(p, 502)) // token='pass'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001424 )
1425 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001426 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1427 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001428 return NULL;
1429 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001430 int _end_lineno = _token->end_lineno;
1431 UNUSED(_end_lineno); // Only used by EXTRA macro
1432 int _end_col_offset = _token->end_col_offset;
1433 UNUSED(_end_col_offset); // Only used by EXTRA macro
1434 _res = _Py_Pass ( EXTRA );
1435 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001436 p->error_indicator = 1;
1437 return NULL;
1438 }
1439 goto done;
1440 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001441 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001442 }
1443 { // &'del' del_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001444 if (p->error_indicator) {
1445 return NULL;
1446 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001447 stmt_ty del_stmt_var;
1448 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001449 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 503) // token='del'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001450 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001451 (del_stmt_var = del_stmt_rule(p)) // del_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001452 )
1453 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001454 _res = del_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001455 goto done;
1456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001457 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001458 }
1459 { // &'yield' yield_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001460 if (p->error_indicator) {
1461 return NULL;
1462 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001463 stmt_ty yield_stmt_var;
1464 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001465 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 504) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001466 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001467 (yield_stmt_var = yield_stmt_rule(p)) // yield_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001468 )
1469 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001470 _res = yield_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001471 goto done;
1472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001473 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001474 }
1475 { // &'assert' assert_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001476 if (p->error_indicator) {
1477 return NULL;
1478 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001479 stmt_ty assert_stmt_var;
1480 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001481 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 505) // token='assert'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001482 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001483 (assert_stmt_var = assert_stmt_rule(p)) // assert_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001484 )
1485 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001486 _res = assert_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001487 goto done;
1488 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001489 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001490 }
1491 { // 'break'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001492 if (p->error_indicator) {
1493 return NULL;
1494 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001495 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001496 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001497 (_keyword = _PyPegen_expect_token(p, 506)) // token='break'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001498 )
1499 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001500 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1501 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001502 return NULL;
1503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001504 int _end_lineno = _token->end_lineno;
1505 UNUSED(_end_lineno); // Only used by EXTRA macro
1506 int _end_col_offset = _token->end_col_offset;
1507 UNUSED(_end_col_offset); // Only used by EXTRA macro
1508 _res = _Py_Break ( EXTRA );
1509 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001510 p->error_indicator = 1;
1511 return NULL;
1512 }
1513 goto done;
1514 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001515 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001516 }
1517 { // 'continue'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001518 if (p->error_indicator) {
1519 return NULL;
1520 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001521 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001522 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001523 (_keyword = _PyPegen_expect_token(p, 507)) // token='continue'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001524 )
1525 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001526 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1527 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001528 return NULL;
1529 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001530 int _end_lineno = _token->end_lineno;
1531 UNUSED(_end_lineno); // Only used by EXTRA macro
1532 int _end_col_offset = _token->end_col_offset;
1533 UNUSED(_end_col_offset); // Only used by EXTRA macro
1534 _res = _Py_Continue ( EXTRA );
1535 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001536 p->error_indicator = 1;
1537 return NULL;
1538 }
1539 goto done;
1540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001541 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001542 }
1543 { // &'global' global_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001544 if (p->error_indicator) {
1545 return NULL;
1546 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001547 stmt_ty global_stmt_var;
1548 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001549 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 508) // token='global'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001550 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001551 (global_stmt_var = global_stmt_rule(p)) // global_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001552 )
1553 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001554 _res = global_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001555 goto done;
1556 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001557 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001558 }
1559 { // &'nonlocal' nonlocal_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001560 if (p->error_indicator) {
1561 return NULL;
1562 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001563 stmt_ty nonlocal_stmt_var;
1564 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001565 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 509) // token='nonlocal'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001566 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001567 (nonlocal_stmt_var = nonlocal_stmt_rule(p)) // nonlocal_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001568 )
1569 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001570 _res = nonlocal_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001571 goto done;
1572 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001573 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001574 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001575 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001576 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001577 _PyPegen_insert_memo(p, _mark, small_stmt_type, _res);
1578 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001579}
1580
1581// compound_stmt:
1582// | &('def' | '@' | ASYNC) function_def
1583// | &'if' if_stmt
1584// | &('class' | '@') class_def
1585// | &('with' | ASYNC) with_stmt
1586// | &('for' | ASYNC) for_stmt
1587// | &'try' try_stmt
1588// | &'while' while_stmt
1589static stmt_ty
1590compound_stmt_rule(Parser *p)
1591{
1592 if (p->error_indicator) {
1593 return NULL;
1594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001595 stmt_ty _res = NULL;
1596 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001597 { // &('def' | '@' | ASYNC) function_def
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001598 if (p->error_indicator) {
1599 return NULL;
1600 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001601 stmt_ty function_def_var;
1602 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001603 _PyPegen_lookahead(1, _tmp_15_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001604 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001605 (function_def_var = function_def_rule(p)) // function_def
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001606 )
1607 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001608 _res = function_def_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001609 goto done;
1610 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001611 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001612 }
1613 { // &'if' if_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001614 if (p->error_indicator) {
1615 return NULL;
1616 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001617 stmt_ty if_stmt_var;
1618 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001619 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 510) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001620 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001621 (if_stmt_var = if_stmt_rule(p)) // if_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001622 )
1623 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001624 _res = if_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001625 goto done;
1626 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001627 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001628 }
1629 { // &('class' | '@') class_def
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001630 if (p->error_indicator) {
1631 return NULL;
1632 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001633 stmt_ty class_def_var;
1634 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001635 _PyPegen_lookahead(1, _tmp_16_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001636 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001637 (class_def_var = class_def_rule(p)) // class_def
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001638 )
1639 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001640 _res = class_def_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001641 goto done;
1642 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001643 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001644 }
1645 { // &('with' | ASYNC) with_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001646 if (p->error_indicator) {
1647 return NULL;
1648 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001649 stmt_ty with_stmt_var;
1650 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001651 _PyPegen_lookahead(1, _tmp_17_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001652 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001653 (with_stmt_var = with_stmt_rule(p)) // with_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001654 )
1655 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001656 _res = with_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001657 goto done;
1658 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001659 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001660 }
1661 { // &('for' | ASYNC) for_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001662 if (p->error_indicator) {
1663 return NULL;
1664 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001665 stmt_ty for_stmt_var;
1666 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001667 _PyPegen_lookahead(1, _tmp_18_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001668 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001669 (for_stmt_var = for_stmt_rule(p)) // for_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001670 )
1671 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001672 _res = for_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001673 goto done;
1674 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001675 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001676 }
1677 { // &'try' try_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001678 if (p->error_indicator) {
1679 return NULL;
1680 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001681 stmt_ty try_stmt_var;
1682 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001683 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 511) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001684 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001685 (try_stmt_var = try_stmt_rule(p)) // try_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001686 )
1687 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001688 _res = try_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001689 goto done;
1690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001691 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001692 }
1693 { // &'while' while_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001694 if (p->error_indicator) {
1695 return NULL;
1696 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001697 stmt_ty while_stmt_var;
1698 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001699 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 512) // token='while'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001700 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001701 (while_stmt_var = while_stmt_rule(p)) // while_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001702 )
1703 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001704 _res = while_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001705 goto done;
1706 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001707 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001709 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001710 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001711 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001712}
1713
1714// assignment:
1715// | NAME ':' expression ['=' annotated_rhs]
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001716// | ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
Guido van Rossumc001c092020-04-30 12:12:19 -07001717// | ((star_targets '='))+ (yield_expr | star_expressions) TYPE_COMMENT?
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001718// | single_target augassign (yield_expr | star_expressions)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001719// | invalid_assignment
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +03001720static stmt_ty
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001721assignment_rule(Parser *p)
1722{
1723 if (p->error_indicator) {
1724 return NULL;
1725 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001726 stmt_ty _res = NULL;
1727 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001728 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1729 p->error_indicator = 1;
1730 return NULL;
1731 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001732 int _start_lineno = p->tokens[_mark]->lineno;
1733 UNUSED(_start_lineno); // Only used by EXTRA macro
1734 int _start_col_offset = p->tokens[_mark]->col_offset;
1735 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001736 { // NAME ':' expression ['=' annotated_rhs]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001737 if (p->error_indicator) {
1738 return NULL;
1739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001740 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001741 expr_ty a;
1742 expr_ty b;
1743 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001744 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001745 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001746 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001747 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001748 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001749 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001750 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001751 (c = _tmp_19_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001752 )
1753 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001754 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1755 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001756 return NULL;
1757 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001758 int _end_lineno = _token->end_lineno;
1759 UNUSED(_end_lineno); // Only used by EXTRA macro
1760 int _end_col_offset = _token->end_col_offset;
1761 UNUSED(_end_col_offset); // Only used by EXTRA macro
1762 _res = CHECK_VERSION ( 6 , "Variable annotation syntax is" , _Py_AnnAssign ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , b , c , 1 , EXTRA ) );
1763 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001764 p->error_indicator = 1;
1765 return NULL;
1766 }
1767 goto done;
1768 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001769 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001770 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001771 { // ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001772 if (p->error_indicator) {
1773 return NULL;
1774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001775 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001776 void *a;
1777 expr_ty b;
1778 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001779 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001780 (a = _tmp_20_rule(p)) // '(' single_target ')' | single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001781 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001782 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001783 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001784 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001785 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001786 (c = _tmp_21_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001787 )
1788 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001789 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1790 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001791 return NULL;
1792 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001793 int _end_lineno = _token->end_lineno;
1794 UNUSED(_end_lineno); // Only used by EXTRA macro
1795 int _end_col_offset = _token->end_col_offset;
1796 UNUSED(_end_col_offset); // Only used by EXTRA macro
1797 _res = CHECK_VERSION ( 6 , "Variable annotations syntax is" , _Py_AnnAssign ( a , b , c , 0 , EXTRA ) );
1798 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001799 p->error_indicator = 1;
1800 return NULL;
1801 }
1802 goto done;
1803 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001804 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001805 }
Guido van Rossumc001c092020-04-30 12:12:19 -07001806 { // ((star_targets '='))+ (yield_expr | star_expressions) TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001807 if (p->error_indicator) {
1808 return NULL;
1809 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001810 asdl_seq * a;
1811 void *b;
Guido van Rossumc001c092020-04-30 12:12:19 -07001812 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001813 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001814 (a = _loop1_22_rule(p)) // ((star_targets '='))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001815 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001816 (b = _tmp_23_rule(p)) // yield_expr | star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -07001817 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001818 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001819 )
1820 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001821 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1822 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001823 return NULL;
1824 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001825 int _end_lineno = _token->end_lineno;
1826 UNUSED(_end_lineno); // Only used by EXTRA macro
1827 int _end_col_offset = _token->end_col_offset;
1828 UNUSED(_end_col_offset); // Only used by EXTRA macro
1829 _res = _Py_Assign ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
1830 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001831 p->error_indicator = 1;
1832 return NULL;
1833 }
1834 goto done;
1835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001836 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001837 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001838 { // single_target augassign (yield_expr | star_expressions)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001839 if (p->error_indicator) {
1840 return NULL;
1841 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001842 expr_ty a;
1843 AugOperator* b;
1844 void *c;
1845 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001846 (a = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001847 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001848 (b = augassign_rule(p)) // augassign
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001849 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001850 (c = _tmp_24_rule(p)) // yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001851 )
1852 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001853 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1854 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001855 return NULL;
1856 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001857 int _end_lineno = _token->end_lineno;
1858 UNUSED(_end_lineno); // Only used by EXTRA macro
1859 int _end_col_offset = _token->end_col_offset;
1860 UNUSED(_end_col_offset); // Only used by EXTRA macro
1861 _res = _Py_AugAssign ( a , b -> kind , c , EXTRA );
1862 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001863 p->error_indicator = 1;
1864 return NULL;
1865 }
1866 goto done;
1867 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001868 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001869 }
1870 { // invalid_assignment
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001871 if (p->error_indicator) {
1872 return NULL;
1873 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001874 void *invalid_assignment_var;
1875 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001876 (invalid_assignment_var = invalid_assignment_rule(p)) // invalid_assignment
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001877 )
1878 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001879 _res = invalid_assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001880 goto done;
1881 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001882 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001883 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001884 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001885 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001886 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001887}
1888
1889// augassign:
1890// | '+='
1891// | '-='
1892// | '*='
1893// | '@='
1894// | '/='
1895// | '%='
1896// | '&='
1897// | '|='
1898// | '^='
1899// | '<<='
1900// | '>>='
1901// | '**='
1902// | '//='
1903static AugOperator*
1904augassign_rule(Parser *p)
1905{
1906 if (p->error_indicator) {
1907 return NULL;
1908 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001909 AugOperator* _res = NULL;
1910 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001911 { // '+='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001912 if (p->error_indicator) {
1913 return NULL;
1914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001915 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001916 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001917 (_literal = _PyPegen_expect_token(p, 36)) // token='+='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001918 )
1919 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001920 _res = _PyPegen_augoperator ( p , Add );
1921 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001922 p->error_indicator = 1;
1923 return NULL;
1924 }
1925 goto done;
1926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001927 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001928 }
1929 { // '-='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001930 if (p->error_indicator) {
1931 return NULL;
1932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001933 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001934 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001935 (_literal = _PyPegen_expect_token(p, 37)) // token='-='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001936 )
1937 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001938 _res = _PyPegen_augoperator ( p , Sub );
1939 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001940 p->error_indicator = 1;
1941 return NULL;
1942 }
1943 goto done;
1944 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001945 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001946 }
1947 { // '*='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001948 if (p->error_indicator) {
1949 return NULL;
1950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001951 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001952 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001953 (_literal = _PyPegen_expect_token(p, 38)) // token='*='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001954 )
1955 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001956 _res = _PyPegen_augoperator ( p , Mult );
1957 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001958 p->error_indicator = 1;
1959 return NULL;
1960 }
1961 goto done;
1962 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001963 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001964 }
1965 { // '@='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001966 if (p->error_indicator) {
1967 return NULL;
1968 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001969 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001970 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001971 (_literal = _PyPegen_expect_token(p, 50)) // token='@='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001972 )
1973 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001974 _res = CHECK_VERSION ( 5 , "The '@' operator is" , _PyPegen_augoperator ( p , MatMult ) );
1975 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001976 p->error_indicator = 1;
1977 return NULL;
1978 }
1979 goto done;
1980 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001981 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001982 }
1983 { // '/='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03001984 if (p->error_indicator) {
1985 return NULL;
1986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001987 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001988 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001989 (_literal = _PyPegen_expect_token(p, 39)) // token='/='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001990 )
1991 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001992 _res = _PyPegen_augoperator ( p , Div );
1993 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001994 p->error_indicator = 1;
1995 return NULL;
1996 }
1997 goto done;
1998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001999 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002000 }
2001 { // '%='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002002 if (p->error_indicator) {
2003 return NULL;
2004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002005 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002006 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002007 (_literal = _PyPegen_expect_token(p, 40)) // token='%='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002008 )
2009 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002010 _res = _PyPegen_augoperator ( p , Mod );
2011 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002012 p->error_indicator = 1;
2013 return NULL;
2014 }
2015 goto done;
2016 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002017 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002018 }
2019 { // '&='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002020 if (p->error_indicator) {
2021 return NULL;
2022 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002023 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002024 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002025 (_literal = _PyPegen_expect_token(p, 41)) // token='&='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002026 )
2027 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002028 _res = _PyPegen_augoperator ( p , BitAnd );
2029 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002030 p->error_indicator = 1;
2031 return NULL;
2032 }
2033 goto done;
2034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002035 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002036 }
2037 { // '|='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002038 if (p->error_indicator) {
2039 return NULL;
2040 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002041 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002042 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002043 (_literal = _PyPegen_expect_token(p, 42)) // token='|='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002044 )
2045 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002046 _res = _PyPegen_augoperator ( p , BitOr );
2047 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002048 p->error_indicator = 1;
2049 return NULL;
2050 }
2051 goto done;
2052 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002053 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002054 }
2055 { // '^='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002056 if (p->error_indicator) {
2057 return NULL;
2058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002059 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002060 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002061 (_literal = _PyPegen_expect_token(p, 43)) // token='^='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002062 )
2063 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002064 _res = _PyPegen_augoperator ( p , BitXor );
2065 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002066 p->error_indicator = 1;
2067 return NULL;
2068 }
2069 goto done;
2070 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002071 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002072 }
2073 { // '<<='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002074 if (p->error_indicator) {
2075 return NULL;
2076 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002077 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002078 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002079 (_literal = _PyPegen_expect_token(p, 44)) // token='<<='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002080 )
2081 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002082 _res = _PyPegen_augoperator ( p , LShift );
2083 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002084 p->error_indicator = 1;
2085 return NULL;
2086 }
2087 goto done;
2088 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002089 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002090 }
2091 { // '>>='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002092 if (p->error_indicator) {
2093 return NULL;
2094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002095 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002096 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002097 (_literal = _PyPegen_expect_token(p, 45)) // token='>>='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002098 )
2099 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002100 _res = _PyPegen_augoperator ( p , RShift );
2101 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002102 p->error_indicator = 1;
2103 return NULL;
2104 }
2105 goto done;
2106 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002107 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002108 }
2109 { // '**='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002110 if (p->error_indicator) {
2111 return NULL;
2112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002113 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002114 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002115 (_literal = _PyPegen_expect_token(p, 46)) // token='**='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002116 )
2117 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002118 _res = _PyPegen_augoperator ( p , Pow );
2119 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002120 p->error_indicator = 1;
2121 return NULL;
2122 }
2123 goto done;
2124 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002125 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002126 }
2127 { // '//='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002128 if (p->error_indicator) {
2129 return NULL;
2130 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002131 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002132 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002133 (_literal = _PyPegen_expect_token(p, 48)) // token='//='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002134 )
2135 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002136 _res = _PyPegen_augoperator ( p , FloorDiv );
2137 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002138 p->error_indicator = 1;
2139 return NULL;
2140 }
2141 goto done;
2142 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002143 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002145 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002146 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002147 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002148}
2149
2150// global_stmt: 'global' ','.NAME+
2151static stmt_ty
2152global_stmt_rule(Parser *p)
2153{
2154 if (p->error_indicator) {
2155 return NULL;
2156 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002157 stmt_ty _res = NULL;
2158 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002159 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2160 p->error_indicator = 1;
2161 return NULL;
2162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002163 int _start_lineno = p->tokens[_mark]->lineno;
2164 UNUSED(_start_lineno); // Only used by EXTRA macro
2165 int _start_col_offset = p->tokens[_mark]->col_offset;
2166 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002167 { // 'global' ','.NAME+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002168 if (p->error_indicator) {
2169 return NULL;
2170 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002171 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002172 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002173 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002174 (_keyword = _PyPegen_expect_token(p, 508)) // token='global'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002175 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002176 (a = _gather_25_rule(p)) // ','.NAME+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002177 )
2178 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002179 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2180 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002181 return NULL;
2182 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002183 int _end_lineno = _token->end_lineno;
2184 UNUSED(_end_lineno); // Only used by EXTRA macro
2185 int _end_col_offset = _token->end_col_offset;
2186 UNUSED(_end_col_offset); // Only used by EXTRA macro
2187 _res = _Py_Global ( CHECK ( _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2188 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002189 p->error_indicator = 1;
2190 return NULL;
2191 }
2192 goto done;
2193 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002194 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002195 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002196 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002197 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002198 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002199}
2200
2201// nonlocal_stmt: 'nonlocal' ','.NAME+
2202static stmt_ty
2203nonlocal_stmt_rule(Parser *p)
2204{
2205 if (p->error_indicator) {
2206 return NULL;
2207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002208 stmt_ty _res = NULL;
2209 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002210 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2211 p->error_indicator = 1;
2212 return NULL;
2213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002214 int _start_lineno = p->tokens[_mark]->lineno;
2215 UNUSED(_start_lineno); // Only used by EXTRA macro
2216 int _start_col_offset = p->tokens[_mark]->col_offset;
2217 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002218 { // 'nonlocal' ','.NAME+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002219 if (p->error_indicator) {
2220 return NULL;
2221 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002222 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002223 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002224 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002225 (_keyword = _PyPegen_expect_token(p, 509)) // token='nonlocal'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002226 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002227 (a = _gather_27_rule(p)) // ','.NAME+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002228 )
2229 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002230 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2231 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002232 return NULL;
2233 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002234 int _end_lineno = _token->end_lineno;
2235 UNUSED(_end_lineno); // Only used by EXTRA macro
2236 int _end_col_offset = _token->end_col_offset;
2237 UNUSED(_end_col_offset); // Only used by EXTRA macro
2238 _res = _Py_Nonlocal ( CHECK ( _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2239 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002240 p->error_indicator = 1;
2241 return NULL;
2242 }
2243 goto done;
2244 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002245 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002247 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002248 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002249 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002250}
2251
2252// yield_stmt: yield_expr
2253static stmt_ty
2254yield_stmt_rule(Parser *p)
2255{
2256 if (p->error_indicator) {
2257 return NULL;
2258 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002259 stmt_ty _res = NULL;
2260 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002261 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2262 p->error_indicator = 1;
2263 return NULL;
2264 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002265 int _start_lineno = p->tokens[_mark]->lineno;
2266 UNUSED(_start_lineno); // Only used by EXTRA macro
2267 int _start_col_offset = p->tokens[_mark]->col_offset;
2268 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002269 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002270 if (p->error_indicator) {
2271 return NULL;
2272 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002273 expr_ty y;
2274 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002275 (y = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002276 )
2277 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002278 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2279 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002280 return NULL;
2281 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002282 int _end_lineno = _token->end_lineno;
2283 UNUSED(_end_lineno); // Only used by EXTRA macro
2284 int _end_col_offset = _token->end_col_offset;
2285 UNUSED(_end_col_offset); // Only used by EXTRA macro
2286 _res = _Py_Expr ( y , EXTRA );
2287 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002288 p->error_indicator = 1;
2289 return NULL;
2290 }
2291 goto done;
2292 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002293 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002295 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002296 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002297 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002298}
2299
2300// assert_stmt: 'assert' expression [',' expression]
2301static stmt_ty
2302assert_stmt_rule(Parser *p)
2303{
2304 if (p->error_indicator) {
2305 return NULL;
2306 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002307 stmt_ty _res = NULL;
2308 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002309 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2310 p->error_indicator = 1;
2311 return NULL;
2312 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002313 int _start_lineno = p->tokens[_mark]->lineno;
2314 UNUSED(_start_lineno); // Only used by EXTRA macro
2315 int _start_col_offset = p->tokens[_mark]->col_offset;
2316 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002317 { // 'assert' expression [',' expression]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002318 if (p->error_indicator) {
2319 return NULL;
2320 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002321 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002322 expr_ty a;
2323 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002324 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002325 (_keyword = _PyPegen_expect_token(p, 505)) // token='assert'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002326 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002327 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002328 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002329 (b = _tmp_29_rule(p), 1) // [',' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002330 )
2331 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002332 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2333 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002334 return NULL;
2335 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002336 int _end_lineno = _token->end_lineno;
2337 UNUSED(_end_lineno); // Only used by EXTRA macro
2338 int _end_col_offset = _token->end_col_offset;
2339 UNUSED(_end_col_offset); // Only used by EXTRA macro
2340 _res = _Py_Assert ( a , b , EXTRA );
2341 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002342 p->error_indicator = 1;
2343 return NULL;
2344 }
2345 goto done;
2346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002347 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002349 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002350 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002351 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002352}
2353
2354// del_stmt: 'del' del_targets
2355static stmt_ty
2356del_stmt_rule(Parser *p)
2357{
2358 if (p->error_indicator) {
2359 return NULL;
2360 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002361 stmt_ty _res = NULL;
2362 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002363 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2364 p->error_indicator = 1;
2365 return NULL;
2366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002367 int _start_lineno = p->tokens[_mark]->lineno;
2368 UNUSED(_start_lineno); // Only used by EXTRA macro
2369 int _start_col_offset = p->tokens[_mark]->col_offset;
2370 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002371 { // 'del' del_targets
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002372 if (p->error_indicator) {
2373 return NULL;
2374 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002375 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002376 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002377 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002378 (_keyword = _PyPegen_expect_token(p, 503)) // token='del'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002379 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002380 (a = del_targets_rule(p)) // del_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002381 )
2382 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002383 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2384 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002385 return NULL;
2386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002387 int _end_lineno = _token->end_lineno;
2388 UNUSED(_end_lineno); // Only used by EXTRA macro
2389 int _end_col_offset = _token->end_col_offset;
2390 UNUSED(_end_col_offset); // Only used by EXTRA macro
2391 _res = _Py_Delete ( a , EXTRA );
2392 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002393 p->error_indicator = 1;
2394 return NULL;
2395 }
2396 goto done;
2397 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002398 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002399 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002400 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002401 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002402 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002403}
2404
2405// import_stmt: import_name | import_from
2406static stmt_ty
2407import_stmt_rule(Parser *p)
2408{
2409 if (p->error_indicator) {
2410 return NULL;
2411 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002412 stmt_ty _res = NULL;
2413 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002414 { // import_name
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002415 if (p->error_indicator) {
2416 return NULL;
2417 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002418 stmt_ty import_name_var;
2419 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002420 (import_name_var = import_name_rule(p)) // import_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002421 )
2422 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002423 _res = import_name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002424 goto done;
2425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002426 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002427 }
2428 { // import_from
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002429 if (p->error_indicator) {
2430 return NULL;
2431 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002432 stmt_ty import_from_var;
2433 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002434 (import_from_var = import_from_rule(p)) // import_from
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002435 )
2436 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002437 _res = import_from_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002438 goto done;
2439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002440 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002441 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002442 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002443 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002444 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002445}
2446
2447// import_name: 'import' dotted_as_names
2448static stmt_ty
2449import_name_rule(Parser *p)
2450{
2451 if (p->error_indicator) {
2452 return NULL;
2453 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002454 stmt_ty _res = NULL;
2455 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002456 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2457 p->error_indicator = 1;
2458 return NULL;
2459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002460 int _start_lineno = p->tokens[_mark]->lineno;
2461 UNUSED(_start_lineno); // Only used by EXTRA macro
2462 int _start_col_offset = p->tokens[_mark]->col_offset;
2463 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002464 { // 'import' dotted_as_names
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002465 if (p->error_indicator) {
2466 return NULL;
2467 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002468 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002469 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002470 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002471 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002472 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002473 (a = dotted_as_names_rule(p)) // dotted_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002474 )
2475 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002476 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2477 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002478 return NULL;
2479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002480 int _end_lineno = _token->end_lineno;
2481 UNUSED(_end_lineno); // Only used by EXTRA macro
2482 int _end_col_offset = _token->end_col_offset;
2483 UNUSED(_end_col_offset); // Only used by EXTRA macro
2484 _res = _Py_Import ( a , EXTRA );
2485 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002486 p->error_indicator = 1;
2487 return NULL;
2488 }
2489 goto done;
2490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002491 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002492 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002493 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002494 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002495 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002496}
2497
2498// import_from:
2499// | 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
2500// | 'from' (('.' | '...'))+ 'import' import_from_targets
2501static stmt_ty
2502import_from_rule(Parser *p)
2503{
2504 if (p->error_indicator) {
2505 return NULL;
2506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002507 stmt_ty _res = NULL;
2508 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002509 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2510 p->error_indicator = 1;
2511 return NULL;
2512 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002513 int _start_lineno = p->tokens[_mark]->lineno;
2514 UNUSED(_start_lineno); // Only used by EXTRA macro
2515 int _start_col_offset = p->tokens[_mark]->col_offset;
2516 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002517 { // 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002518 if (p->error_indicator) {
2519 return NULL;
2520 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002521 Token * _keyword;
2522 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002523 asdl_seq * a;
2524 expr_ty b;
2525 asdl_seq* c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002526 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002527 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002528 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002529 (a = _loop0_30_rule(p)) // (('.' | '...'))*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002530 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002531 (b = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002532 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002533 (_keyword_1 = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002534 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002535 (c = import_from_targets_rule(p)) // import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002536 )
2537 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002538 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2539 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002540 return NULL;
2541 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002542 int _end_lineno = _token->end_lineno;
2543 UNUSED(_end_lineno); // Only used by EXTRA macro
2544 int _end_col_offset = _token->end_col_offset;
2545 UNUSED(_end_col_offset); // Only used by EXTRA macro
2546 _res = _Py_ImportFrom ( b -> v . Name . id , c , _PyPegen_seq_count_dots ( a ) , EXTRA );
2547 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002548 p->error_indicator = 1;
2549 return NULL;
2550 }
2551 goto done;
2552 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002553 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002554 }
2555 { // 'from' (('.' | '...'))+ 'import' import_from_targets
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002556 if (p->error_indicator) {
2557 return NULL;
2558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002559 Token * _keyword;
2560 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002561 asdl_seq * a;
2562 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002563 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002564 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002565 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002566 (a = _loop1_31_rule(p)) // (('.' | '...'))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002567 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002568 (_keyword_1 = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002569 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002570 (b = import_from_targets_rule(p)) // import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002571 )
2572 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002573 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2574 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002575 return NULL;
2576 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002577 int _end_lineno = _token->end_lineno;
2578 UNUSED(_end_lineno); // Only used by EXTRA macro
2579 int _end_col_offset = _token->end_col_offset;
2580 UNUSED(_end_col_offset); // Only used by EXTRA macro
2581 _res = _Py_ImportFrom ( NULL , b , _PyPegen_seq_count_dots ( a ) , EXTRA );
2582 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002583 p->error_indicator = 1;
2584 return NULL;
2585 }
2586 goto done;
2587 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002588 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002590 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002591 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002592 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002593}
2594
2595// import_from_targets: '(' import_from_as_names ','? ')' | import_from_as_names | '*'
2596static asdl_seq*
2597import_from_targets_rule(Parser *p)
2598{
2599 if (p->error_indicator) {
2600 return NULL;
2601 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002602 asdl_seq* _res = NULL;
2603 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002604 { // '(' import_from_as_names ','? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002605 if (p->error_indicator) {
2606 return NULL;
2607 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002608 Token * _literal;
2609 Token * _literal_1;
2610 void *_opt_var;
2611 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002612 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002613 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002614 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002615 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002616 (a = import_from_as_names_rule(p)) // import_from_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002617 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002618 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002619 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002620 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002621 )
2622 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002623 _res = a;
2624 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002625 p->error_indicator = 1;
2626 return NULL;
2627 }
2628 goto done;
2629 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002630 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002631 }
2632 { // import_from_as_names
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002633 if (p->error_indicator) {
2634 return NULL;
2635 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002636 asdl_seq* import_from_as_names_var;
2637 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002638 (import_from_as_names_var = import_from_as_names_rule(p)) // import_from_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002639 )
2640 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002641 _res = import_from_as_names_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002642 goto done;
2643 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002644 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002645 }
2646 { // '*'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002647 if (p->error_indicator) {
2648 return NULL;
2649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002650 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002651 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002652 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002653 )
2654 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002655 _res = _PyPegen_singleton_seq ( p , CHECK ( _PyPegen_alias_for_star ( p ) ) );
2656 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002657 p->error_indicator = 1;
2658 return NULL;
2659 }
2660 goto done;
2661 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002662 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002664 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002665 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002666 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002667}
2668
2669// import_from_as_names: ','.import_from_as_name+
2670static asdl_seq*
2671import_from_as_names_rule(Parser *p)
2672{
2673 if (p->error_indicator) {
2674 return NULL;
2675 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002676 asdl_seq* _res = NULL;
2677 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002678 { // ','.import_from_as_name+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002679 if (p->error_indicator) {
2680 return NULL;
2681 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002682 asdl_seq * a;
2683 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002684 (a = _gather_32_rule(p)) // ','.import_from_as_name+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002685 )
2686 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002687 _res = a;
2688 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002689 p->error_indicator = 1;
2690 return NULL;
2691 }
2692 goto done;
2693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002694 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002695 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002696 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002697 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002698 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002699}
2700
2701// import_from_as_name: NAME ['as' NAME]
2702static alias_ty
2703import_from_as_name_rule(Parser *p)
2704{
2705 if (p->error_indicator) {
2706 return NULL;
2707 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002708 alias_ty _res = NULL;
2709 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002710 { // NAME ['as' NAME]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002711 if (p->error_indicator) {
2712 return NULL;
2713 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002714 expr_ty a;
2715 void *b;
2716 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002717 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002718 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002719 (b = _tmp_34_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002720 )
2721 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002722 _res = _Py_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , p -> arena );
2723 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002724 p->error_indicator = 1;
2725 return NULL;
2726 }
2727 goto done;
2728 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002729 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002731 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002732 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002733 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002734}
2735
2736// dotted_as_names: ','.dotted_as_name+
2737static asdl_seq*
2738dotted_as_names_rule(Parser *p)
2739{
2740 if (p->error_indicator) {
2741 return NULL;
2742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002743 asdl_seq* _res = NULL;
2744 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002745 { // ','.dotted_as_name+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002746 if (p->error_indicator) {
2747 return NULL;
2748 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002749 asdl_seq * a;
2750 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002751 (a = _gather_35_rule(p)) // ','.dotted_as_name+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002752 )
2753 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002754 _res = a;
2755 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002756 p->error_indicator = 1;
2757 return NULL;
2758 }
2759 goto done;
2760 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002761 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002762 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002763 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002764 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002765 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002766}
2767
2768// dotted_as_name: dotted_name ['as' NAME]
2769static alias_ty
2770dotted_as_name_rule(Parser *p)
2771{
2772 if (p->error_indicator) {
2773 return NULL;
2774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002775 alias_ty _res = NULL;
2776 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002777 { // dotted_name ['as' NAME]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002778 if (p->error_indicator) {
2779 return NULL;
2780 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002781 expr_ty a;
2782 void *b;
2783 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002784 (a = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002785 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002786 (b = _tmp_37_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002787 )
2788 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002789 _res = _Py_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , p -> arena );
2790 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002791 p->error_indicator = 1;
2792 return NULL;
2793 }
2794 goto done;
2795 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002796 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002797 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002798 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002799 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002800 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002801}
2802
2803// Left-recursive
2804// dotted_name: dotted_name '.' NAME | NAME
2805static expr_ty dotted_name_raw(Parser *);
2806static expr_ty
2807dotted_name_rule(Parser *p)
2808{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002809 expr_ty _res = NULL;
2810 if (_PyPegen_is_memoized(p, dotted_name_type, &_res))
2811 return _res;
2812 int _mark = p->mark;
2813 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002814 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002815 int tmpvar_0 = _PyPegen_update_memo(p, _mark, dotted_name_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002816 if (tmpvar_0) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002817 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002818 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002819 p->mark = _mark;
2820 void *_raw = dotted_name_raw(p);
2821 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002822 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002823 _resmark = p->mark;
2824 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002826 p->mark = _resmark;
2827 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002828}
2829static expr_ty
2830dotted_name_raw(Parser *p)
2831{
2832 if (p->error_indicator) {
2833 return NULL;
2834 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002835 expr_ty _res = NULL;
2836 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002837 { // dotted_name '.' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002838 if (p->error_indicator) {
2839 return NULL;
2840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002841 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002842 expr_ty a;
2843 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002844 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002845 (a = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002846 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002847 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002848 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002849 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002850 )
2851 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002852 _res = _PyPegen_join_names_with_dot ( p , a , b );
2853 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002854 p->error_indicator = 1;
2855 return NULL;
2856 }
2857 goto done;
2858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002859 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002860 }
2861 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002862 if (p->error_indicator) {
2863 return NULL;
2864 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002865 expr_ty name_var;
2866 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002867 (name_var = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002868 )
2869 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002870 _res = name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002871 goto done;
2872 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002873 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002875 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002876 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002877 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002878}
2879
2880// if_stmt:
2881// | 'if' named_expression ':' block elif_stmt
2882// | 'if' named_expression ':' block else_block?
2883static stmt_ty
2884if_stmt_rule(Parser *p)
2885{
2886 if (p->error_indicator) {
2887 return NULL;
2888 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002889 stmt_ty _res = NULL;
2890 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002891 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2892 p->error_indicator = 1;
2893 return NULL;
2894 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002895 int _start_lineno = p->tokens[_mark]->lineno;
2896 UNUSED(_start_lineno); // Only used by EXTRA macro
2897 int _start_col_offset = p->tokens[_mark]->col_offset;
2898 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002899 { // 'if' named_expression ':' block elif_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002900 if (p->error_indicator) {
2901 return NULL;
2902 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002903 Token * _keyword;
2904 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002905 expr_ty a;
2906 asdl_seq* b;
2907 stmt_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002908 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002909 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002910 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002911 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002912 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002913 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002914 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002915 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002916 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002917 (c = elif_stmt_rule(p)) // elif_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002918 )
2919 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002920 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2921 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002922 return NULL;
2923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002924 int _end_lineno = _token->end_lineno;
2925 UNUSED(_end_lineno); // Only used by EXTRA macro
2926 int _end_col_offset = _token->end_col_offset;
2927 UNUSED(_end_col_offset); // Only used by EXTRA macro
2928 _res = _Py_If ( a , b , CHECK ( _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
2929 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002930 p->error_indicator = 1;
2931 return NULL;
2932 }
2933 goto done;
2934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002935 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002936 }
2937 { // 'if' named_expression ':' block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03002938 if (p->error_indicator) {
2939 return NULL;
2940 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002941 Token * _keyword;
2942 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002943 expr_ty a;
2944 asdl_seq* b;
2945 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002946 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002947 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002948 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002949 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002950 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002951 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002952 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002953 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002954 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002955 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002956 )
2957 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002958 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2959 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002960 return NULL;
2961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002962 int _end_lineno = _token->end_lineno;
2963 UNUSED(_end_lineno); // Only used by EXTRA macro
2964 int _end_col_offset = _token->end_col_offset;
2965 UNUSED(_end_col_offset); // Only used by EXTRA macro
2966 _res = _Py_If ( a , b , c , EXTRA );
2967 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002968 p->error_indicator = 1;
2969 return NULL;
2970 }
2971 goto done;
2972 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002973 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002975 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002976 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002977 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002978}
2979
2980// elif_stmt:
2981// | 'elif' named_expression ':' block elif_stmt
2982// | 'elif' named_expression ':' block else_block?
2983static stmt_ty
2984elif_stmt_rule(Parser *p)
2985{
2986 if (p->error_indicator) {
2987 return NULL;
2988 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002989 stmt_ty _res = NULL;
2990 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002991 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2992 p->error_indicator = 1;
2993 return NULL;
2994 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002995 int _start_lineno = p->tokens[_mark]->lineno;
2996 UNUSED(_start_lineno); // Only used by EXTRA macro
2997 int _start_col_offset = p->tokens[_mark]->col_offset;
2998 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002999 { // 'elif' named_expression ':' block elif_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003000 if (p->error_indicator) {
3001 return NULL;
3002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003003 Token * _keyword;
3004 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003005 expr_ty a;
3006 asdl_seq* b;
3007 stmt_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003008 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003009 (_keyword = _PyPegen_expect_token(p, 515)) // token='elif'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003010 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003011 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003012 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003013 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003014 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003015 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003016 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003017 (c = elif_stmt_rule(p)) // elif_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003018 )
3019 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003020 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3021 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003022 return NULL;
3023 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003024 int _end_lineno = _token->end_lineno;
3025 UNUSED(_end_lineno); // Only used by EXTRA macro
3026 int _end_col_offset = _token->end_col_offset;
3027 UNUSED(_end_col_offset); // Only used by EXTRA macro
3028 _res = _Py_If ( a , b , CHECK ( _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
3029 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003030 p->error_indicator = 1;
3031 return NULL;
3032 }
3033 goto done;
3034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003035 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003036 }
3037 { // 'elif' named_expression ':' block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003038 if (p->error_indicator) {
3039 return NULL;
3040 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003041 Token * _keyword;
3042 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003043 expr_ty a;
3044 asdl_seq* b;
3045 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003046 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003047 (_keyword = _PyPegen_expect_token(p, 515)) // token='elif'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003048 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003049 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003050 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003051 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003052 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003053 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003054 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003055 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003056 )
3057 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003058 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3059 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003060 return NULL;
3061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003062 int _end_lineno = _token->end_lineno;
3063 UNUSED(_end_lineno); // Only used by EXTRA macro
3064 int _end_col_offset = _token->end_col_offset;
3065 UNUSED(_end_col_offset); // Only used by EXTRA macro
3066 _res = _Py_If ( a , b , c , EXTRA );
3067 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003068 p->error_indicator = 1;
3069 return NULL;
3070 }
3071 goto done;
3072 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003073 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003074 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003075 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003076 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003077 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003078}
3079
3080// else_block: 'else' ':' block
3081static asdl_seq*
3082else_block_rule(Parser *p)
3083{
3084 if (p->error_indicator) {
3085 return NULL;
3086 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003087 asdl_seq* _res = NULL;
3088 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003089 { // 'else' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003090 if (p->error_indicator) {
3091 return NULL;
3092 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003093 Token * _keyword;
3094 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003095 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003096 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003097 (_keyword = _PyPegen_expect_token(p, 516)) // token='else'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003098 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003099 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003100 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003101 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003102 )
3103 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003104 _res = b;
3105 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003106 p->error_indicator = 1;
3107 return NULL;
3108 }
3109 goto done;
3110 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003111 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003113 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003114 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003115 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003116}
3117
3118// while_stmt: 'while' named_expression ':' block else_block?
3119static stmt_ty
3120while_stmt_rule(Parser *p)
3121{
3122 if (p->error_indicator) {
3123 return NULL;
3124 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003125 stmt_ty _res = NULL;
3126 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003127 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3128 p->error_indicator = 1;
3129 return NULL;
3130 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003131 int _start_lineno = p->tokens[_mark]->lineno;
3132 UNUSED(_start_lineno); // Only used by EXTRA macro
3133 int _start_col_offset = p->tokens[_mark]->col_offset;
3134 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003135 { // 'while' named_expression ':' block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003136 if (p->error_indicator) {
3137 return NULL;
3138 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003139 Token * _keyword;
3140 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003141 expr_ty a;
3142 asdl_seq* b;
3143 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003144 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003145 (_keyword = _PyPegen_expect_token(p, 512)) // token='while'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003146 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003147 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003148 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003149 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003150 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003151 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003152 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003153 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003154 )
3155 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003156 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3157 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003158 return NULL;
3159 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003160 int _end_lineno = _token->end_lineno;
3161 UNUSED(_end_lineno); // Only used by EXTRA macro
3162 int _end_col_offset = _token->end_col_offset;
3163 UNUSED(_end_col_offset); // Only used by EXTRA macro
3164 _res = _Py_While ( a , b , c , EXTRA );
3165 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003166 p->error_indicator = 1;
3167 return NULL;
3168 }
3169 goto done;
3170 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003171 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003172 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003173 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003174 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003175 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003176}
3177
Guido van Rossumc001c092020-04-30 12:12:19 -07003178// for_stmt:
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003179// | 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
3180// | ASYNC 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003181static stmt_ty
3182for_stmt_rule(Parser *p)
3183{
3184 if (p->error_indicator) {
3185 return NULL;
3186 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003187 stmt_ty _res = NULL;
3188 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003189 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3190 p->error_indicator = 1;
3191 return NULL;
3192 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003193 int _start_lineno = p->tokens[_mark]->lineno;
3194 UNUSED(_start_lineno); // Only used by EXTRA macro
3195 int _start_col_offset = p->tokens[_mark]->col_offset;
3196 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003197 { // 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003198 if (p->error_indicator) {
3199 return NULL;
3200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003201 Token * _keyword;
3202 Token * _keyword_1;
3203 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003204 asdl_seq* b;
3205 void *el;
3206 expr_ty ex;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003207 expr_ty t;
Guido van Rossumc001c092020-04-30 12:12:19 -07003208 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003209 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003210 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003211 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003212 (t = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003213 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003214 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003215 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003216 (ex = star_expressions_rule(p)) // star_expressions
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003217 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003218 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003219 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003220 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003221 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003222 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003223 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003224 (el = else_block_rule(p), 1) // else_block?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003225 )
3226 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003227 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3228 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003229 return NULL;
3230 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003231 int _end_lineno = _token->end_lineno;
3232 UNUSED(_end_lineno); // Only used by EXTRA macro
3233 int _end_col_offset = _token->end_col_offset;
3234 UNUSED(_end_col_offset); // Only used by EXTRA macro
3235 _res = _Py_For ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
3236 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003237 p->error_indicator = 1;
3238 return NULL;
3239 }
3240 goto done;
3241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003242 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003243 }
3244 { // ASYNC 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003245 if (p->error_indicator) {
3246 return NULL;
3247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003248 Token * _keyword;
3249 Token * _keyword_1;
3250 Token * _literal;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003251 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003252 asdl_seq* b;
3253 void *el;
3254 expr_ty ex;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003255 expr_ty t;
3256 void *tc;
3257 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003258 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003259 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003260 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003261 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003262 (t = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003263 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003264 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003265 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003266 (ex = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003267 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003268 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003269 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003270 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07003271 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003272 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003273 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003274 (el = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003275 )
3276 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003277 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3278 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003279 return NULL;
3280 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003281 int _end_lineno = _token->end_lineno;
3282 UNUSED(_end_lineno); // Only used by EXTRA macro
3283 int _end_col_offset = _token->end_col_offset;
3284 UNUSED(_end_col_offset); // Only used by EXTRA macro
3285 _res = CHECK_VERSION ( 5 , "Async for loops are" , _Py_AsyncFor ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
3286 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003287 p->error_indicator = 1;
3288 return NULL;
3289 }
3290 goto done;
3291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003292 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003293 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003294 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003295 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003296 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003297}
3298
3299// with_stmt:
Pablo Galindo99db2a12020-05-06 22:54:34 +01003300// | 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003301// | 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindo99db2a12020-05-06 22:54:34 +01003302// | ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003303// | ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003304static stmt_ty
3305with_stmt_rule(Parser *p)
3306{
3307 if (p->error_indicator) {
3308 return NULL;
3309 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003310 stmt_ty _res = NULL;
3311 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003312 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3313 p->error_indicator = 1;
3314 return NULL;
3315 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003316 int _start_lineno = p->tokens[_mark]->lineno;
3317 UNUSED(_start_lineno); // Only used by EXTRA macro
3318 int _start_col_offset = p->tokens[_mark]->col_offset;
3319 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindo99db2a12020-05-06 22:54:34 +01003320 { // 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003321 if (p->error_indicator) {
3322 return NULL;
3323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003324 Token * _keyword;
3325 Token * _literal;
3326 Token * _literal_1;
3327 Token * _literal_2;
3328 void *_opt_var;
3329 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003330 asdl_seq * a;
3331 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003332 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003333 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003334 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003335 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003336 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003337 (a = _gather_38_rule(p)) // ','.with_item+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003338 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003339 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindo99db2a12020-05-06 22:54:34 +01003340 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003341 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003342 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003343 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003344 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003345 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003346 )
3347 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003348 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3349 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003350 return NULL;
3351 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003352 int _end_lineno = _token->end_lineno;
3353 UNUSED(_end_lineno); // Only used by EXTRA macro
3354 int _end_col_offset = _token->end_col_offset;
3355 UNUSED(_end_col_offset); // Only used by EXTRA macro
3356 _res = _Py_With ( a , b , NULL , EXTRA );
3357 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003358 p->error_indicator = 1;
3359 return NULL;
3360 }
3361 goto done;
3362 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003363 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003364 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003365 { // 'with' ','.with_item+ ':' TYPE_COMMENT? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003366 if (p->error_indicator) {
3367 return NULL;
3368 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003369 Token * _keyword;
3370 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003371 asdl_seq * a;
3372 asdl_seq* b;
Guido van Rossumc001c092020-04-30 12:12:19 -07003373 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003374 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003375 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003376 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003377 (a = _gather_40_rule(p)) // ','.with_item+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003378 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003379 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003380 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003381 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07003382 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003383 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003384 )
3385 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003386 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3387 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003388 return NULL;
3389 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003390 int _end_lineno = _token->end_lineno;
3391 UNUSED(_end_lineno); // Only used by EXTRA macro
3392 int _end_col_offset = _token->end_col_offset;
3393 UNUSED(_end_col_offset); // Only used by EXTRA macro
3394 _res = _Py_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
3395 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003396 p->error_indicator = 1;
3397 return NULL;
3398 }
3399 goto done;
3400 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003401 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003402 }
Pablo Galindo99db2a12020-05-06 22:54:34 +01003403 { // ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003404 if (p->error_indicator) {
3405 return NULL;
3406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003407 Token * _keyword;
3408 Token * _literal;
3409 Token * _literal_1;
3410 Token * _literal_2;
3411 void *_opt_var;
3412 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003413 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003414 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003415 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003416 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003417 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003418 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003419 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003420 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003421 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003422 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003423 (a = _gather_42_rule(p)) // ','.with_item+
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003424 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003425 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindo99db2a12020-05-06 22:54:34 +01003426 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003427 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003428 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003429 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003430 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003431 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003432 )
3433 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003434 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3435 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003436 return NULL;
3437 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003438 int _end_lineno = _token->end_lineno;
3439 UNUSED(_end_lineno); // Only used by EXTRA macro
3440 int _end_col_offset = _token->end_col_offset;
3441 UNUSED(_end_col_offset); // Only used by EXTRA macro
3442 _res = CHECK_VERSION ( 5 , "Async with statements are" , _Py_AsyncWith ( a , b , NULL , EXTRA ) );
3443 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003444 p->error_indicator = 1;
3445 return NULL;
3446 }
3447 goto done;
3448 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003449 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003450 }
3451 { // ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003452 if (p->error_indicator) {
3453 return NULL;
3454 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003455 Token * _keyword;
3456 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003457 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003458 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003459 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003460 void *tc;
3461 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003462 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003463 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003464 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003465 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003466 (a = _gather_44_rule(p)) // ','.with_item+
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003467 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003468 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003469 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003470 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003471 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003472 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003473 )
3474 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003475 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3476 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003477 return NULL;
3478 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003479 int _end_lineno = _token->end_lineno;
3480 UNUSED(_end_lineno); // Only used by EXTRA macro
3481 int _end_col_offset = _token->end_col_offset;
3482 UNUSED(_end_col_offset); // Only used by EXTRA macro
3483 _res = CHECK_VERSION ( 5 , "Async with statements are" , _Py_AsyncWith ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
3484 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003485 p->error_indicator = 1;
3486 return NULL;
3487 }
3488 goto done;
3489 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003490 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003491 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003492 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003493 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003494 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003495}
3496
3497// with_item: expression ['as' target]
3498static withitem_ty
3499with_item_rule(Parser *p)
3500{
3501 if (p->error_indicator) {
3502 return NULL;
3503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003504 withitem_ty _res = NULL;
3505 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003506 { // expression ['as' target]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003507 if (p->error_indicator) {
3508 return NULL;
3509 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003510 expr_ty e;
3511 void *o;
3512 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003513 (e = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003514 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003515 (o = _tmp_46_rule(p), 1) // ['as' target]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003516 )
3517 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003518 _res = _Py_withitem ( e , o , p -> arena );
3519 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003520 p->error_indicator = 1;
3521 return NULL;
3522 }
3523 goto done;
3524 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003525 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003526 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003527 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003528 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003529 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003530}
3531
3532// try_stmt:
3533// | 'try' ':' block finally_block
3534// | 'try' ':' block except_block+ else_block? finally_block?
3535static stmt_ty
3536try_stmt_rule(Parser *p)
3537{
3538 if (p->error_indicator) {
3539 return NULL;
3540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003541 stmt_ty _res = NULL;
3542 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003543 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3544 p->error_indicator = 1;
3545 return NULL;
3546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003547 int _start_lineno = p->tokens[_mark]->lineno;
3548 UNUSED(_start_lineno); // Only used by EXTRA macro
3549 int _start_col_offset = p->tokens[_mark]->col_offset;
3550 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003551 { // 'try' ':' block finally_block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003552 if (p->error_indicator) {
3553 return NULL;
3554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003555 Token * _keyword;
3556 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003557 asdl_seq* b;
3558 asdl_seq* f;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003559 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003560 (_keyword = _PyPegen_expect_token(p, 511)) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003561 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003562 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003563 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003564 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003565 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003566 (f = finally_block_rule(p)) // finally_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003567 )
3568 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003569 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3570 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003571 return NULL;
3572 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003573 int _end_lineno = _token->end_lineno;
3574 UNUSED(_end_lineno); // Only used by EXTRA macro
3575 int _end_col_offset = _token->end_col_offset;
3576 UNUSED(_end_col_offset); // Only used by EXTRA macro
3577 _res = _Py_Try ( b , NULL , NULL , f , EXTRA );
3578 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003579 p->error_indicator = 1;
3580 return NULL;
3581 }
3582 goto done;
3583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003584 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003585 }
3586 { // 'try' ':' block except_block+ else_block? finally_block?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003587 if (p->error_indicator) {
3588 return NULL;
3589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003590 Token * _keyword;
3591 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003592 asdl_seq* b;
3593 void *el;
3594 asdl_seq * ex;
3595 void *f;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003596 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003597 (_keyword = _PyPegen_expect_token(p, 511)) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003598 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003599 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003600 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003601 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003602 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003603 (ex = _loop1_47_rule(p)) // except_block+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003604 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003605 (el = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003606 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003607 (f = finally_block_rule(p), 1) // finally_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003608 )
3609 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003610 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3611 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003612 return NULL;
3613 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003614 int _end_lineno = _token->end_lineno;
3615 UNUSED(_end_lineno); // Only used by EXTRA macro
3616 int _end_col_offset = _token->end_col_offset;
3617 UNUSED(_end_col_offset); // Only used by EXTRA macro
3618 _res = _Py_Try ( b , ex , el , f , EXTRA );
3619 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003620 p->error_indicator = 1;
3621 return NULL;
3622 }
3623 goto done;
3624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003625 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003626 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003627 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003628 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003629 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003630}
3631
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03003632// except_block: 'except' expression ['as' NAME] ':' block | 'except' ':' block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003633static excepthandler_ty
3634except_block_rule(Parser *p)
3635{
3636 if (p->error_indicator) {
3637 return NULL;
3638 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003639 excepthandler_ty _res = NULL;
3640 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003641 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3642 p->error_indicator = 1;
3643 return NULL;
3644 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003645 int _start_lineno = p->tokens[_mark]->lineno;
3646 UNUSED(_start_lineno); // Only used by EXTRA macro
3647 int _start_col_offset = p->tokens[_mark]->col_offset;
3648 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03003649 { // 'except' expression ['as' NAME] ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003650 if (p->error_indicator) {
3651 return NULL;
3652 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003653 Token * _keyword;
3654 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003655 asdl_seq* b;
3656 expr_ty e;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003657 void *t;
3658 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003659 (_keyword = _PyPegen_expect_token(p, 520)) // token='except'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003660 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003661 (e = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003662 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03003663 (t = _tmp_48_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003664 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003665 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003666 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003667 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003668 )
3669 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003670 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3671 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003672 return NULL;
3673 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003674 int _end_lineno = _token->end_lineno;
3675 UNUSED(_end_lineno); // Only used by EXTRA macro
3676 int _end_col_offset = _token->end_col_offset;
3677 UNUSED(_end_col_offset); // Only used by EXTRA macro
3678 _res = _Py_ExceptHandler ( e , ( t ) ? ( ( expr_ty ) t ) -> v . Name . id : NULL , b , EXTRA );
3679 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003680 p->error_indicator = 1;
3681 return NULL;
3682 }
3683 goto done;
3684 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003685 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003686 }
3687 { // 'except' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003688 if (p->error_indicator) {
3689 return NULL;
3690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003691 Token * _keyword;
3692 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003693 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003694 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003695 (_keyword = _PyPegen_expect_token(p, 520)) // token='except'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003696 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003697 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003698 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003699 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003700 )
3701 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003702 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3703 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003704 return NULL;
3705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003706 int _end_lineno = _token->end_lineno;
3707 UNUSED(_end_lineno); // Only used by EXTRA macro
3708 int _end_col_offset = _token->end_col_offset;
3709 UNUSED(_end_col_offset); // Only used by EXTRA macro
3710 _res = _Py_ExceptHandler ( NULL , NULL , b , EXTRA );
3711 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003712 p->error_indicator = 1;
3713 return NULL;
3714 }
3715 goto done;
3716 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003717 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003718 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003719 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003720 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003721 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003722}
3723
3724// finally_block: 'finally' ':' block
3725static asdl_seq*
3726finally_block_rule(Parser *p)
3727{
3728 if (p->error_indicator) {
3729 return NULL;
3730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003731 asdl_seq* _res = NULL;
3732 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003733 { // 'finally' ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003734 if (p->error_indicator) {
3735 return NULL;
3736 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003737 Token * _keyword;
3738 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003739 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003740 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003741 (_keyword = _PyPegen_expect_token(p, 521)) // token='finally'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003742 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003743 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003744 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003745 (a = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003746 )
3747 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003748 _res = a;
3749 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003750 p->error_indicator = 1;
3751 return NULL;
3752 }
3753 goto done;
3754 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003755 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003756 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003757 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003758 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003759 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003760}
3761
3762// return_stmt: 'return' star_expressions?
3763static stmt_ty
3764return_stmt_rule(Parser *p)
3765{
3766 if (p->error_indicator) {
3767 return NULL;
3768 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003769 stmt_ty _res = NULL;
3770 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003771 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3772 p->error_indicator = 1;
3773 return NULL;
3774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003775 int _start_lineno = p->tokens[_mark]->lineno;
3776 UNUSED(_start_lineno); // Only used by EXTRA macro
3777 int _start_col_offset = p->tokens[_mark]->col_offset;
3778 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003779 { // 'return' star_expressions?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003780 if (p->error_indicator) {
3781 return NULL;
3782 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003783 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003784 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003785 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003786 (_keyword = _PyPegen_expect_token(p, 500)) // token='return'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003787 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003788 (a = star_expressions_rule(p), 1) // star_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003789 )
3790 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003791 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3792 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003793 return NULL;
3794 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003795 int _end_lineno = _token->end_lineno;
3796 UNUSED(_end_lineno); // Only used by EXTRA macro
3797 int _end_col_offset = _token->end_col_offset;
3798 UNUSED(_end_col_offset); // Only used by EXTRA macro
3799 _res = _Py_Return ( a , EXTRA );
3800 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003801 p->error_indicator = 1;
3802 return NULL;
3803 }
3804 goto done;
3805 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003806 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003807 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003808 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003809 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003810 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003811}
3812
3813// raise_stmt: 'raise' expression ['from' expression] | 'raise'
3814static stmt_ty
3815raise_stmt_rule(Parser *p)
3816{
3817 if (p->error_indicator) {
3818 return NULL;
3819 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003820 stmt_ty _res = NULL;
3821 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003822 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3823 p->error_indicator = 1;
3824 return NULL;
3825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003826 int _start_lineno = p->tokens[_mark]->lineno;
3827 UNUSED(_start_lineno); // Only used by EXTRA macro
3828 int _start_col_offset = p->tokens[_mark]->col_offset;
3829 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003830 { // 'raise' expression ['from' expression]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003831 if (p->error_indicator) {
3832 return NULL;
3833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003834 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003835 expr_ty a;
3836 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003837 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003838 (_keyword = _PyPegen_expect_token(p, 501)) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003839 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003840 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003841 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003842 (b = _tmp_49_rule(p), 1) // ['from' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003843 )
3844 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003845 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3846 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003847 return NULL;
3848 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003849 int _end_lineno = _token->end_lineno;
3850 UNUSED(_end_lineno); // Only used by EXTRA macro
3851 int _end_col_offset = _token->end_col_offset;
3852 UNUSED(_end_col_offset); // Only used by EXTRA macro
3853 _res = _Py_Raise ( a , b , EXTRA );
3854 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003855 p->error_indicator = 1;
3856 return NULL;
3857 }
3858 goto done;
3859 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003860 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003861 }
3862 { // 'raise'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003863 if (p->error_indicator) {
3864 return NULL;
3865 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003866 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003867 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003868 (_keyword = _PyPegen_expect_token(p, 501)) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003869 )
3870 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003871 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3872 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003873 return NULL;
3874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003875 int _end_lineno = _token->end_lineno;
3876 UNUSED(_end_lineno); // Only used by EXTRA macro
3877 int _end_col_offset = _token->end_col_offset;
3878 UNUSED(_end_col_offset); // Only used by EXTRA macro
3879 _res = _Py_Raise ( NULL , NULL , EXTRA );
3880 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003881 p->error_indicator = 1;
3882 return NULL;
3883 }
3884 goto done;
3885 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003886 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003887 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003888 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003889 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003890 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003891}
3892
3893// function_def: decorators function_def_raw | function_def_raw
3894static stmt_ty
3895function_def_rule(Parser *p)
3896{
3897 if (p->error_indicator) {
3898 return NULL;
3899 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003900 stmt_ty _res = NULL;
3901 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003902 { // decorators function_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003903 if (p->error_indicator) {
3904 return NULL;
3905 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003906 asdl_seq* d;
3907 stmt_ty f;
3908 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003909 (d = decorators_rule(p)) // decorators
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003910 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003911 (f = function_def_raw_rule(p)) // function_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003912 )
3913 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003914 _res = _PyPegen_function_def_decorators ( p , d , f );
3915 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003916 p->error_indicator = 1;
3917 return NULL;
3918 }
3919 goto done;
3920 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003921 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003922 }
3923 { // function_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003924 if (p->error_indicator) {
3925 return NULL;
3926 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003927 stmt_ty function_def_raw_var;
3928 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003929 (function_def_raw_var = function_def_raw_rule(p)) // function_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003930 )
3931 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003932 _res = function_def_raw_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003933 goto done;
3934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003935 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003937 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003938 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003939 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003940}
3941
Guido van Rossumc001c092020-04-30 12:12:19 -07003942// function_def_raw:
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003943// | 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
3944// | ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003945static stmt_ty
3946function_def_raw_rule(Parser *p)
3947{
3948 if (p->error_indicator) {
3949 return NULL;
3950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003951 stmt_ty _res = NULL;
3952 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003953 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3954 p->error_indicator = 1;
3955 return NULL;
3956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003957 int _start_lineno = p->tokens[_mark]->lineno;
3958 UNUSED(_start_lineno); // Only used by EXTRA macro
3959 int _start_col_offset = p->tokens[_mark]->col_offset;
3960 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003961 { // 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03003962 if (p->error_indicator) {
3963 return NULL;
3964 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003965 Token * _keyword;
3966 Token * _literal;
3967 Token * _literal_1;
3968 Token * _literal_2;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003969 void *a;
3970 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003971 expr_ty n;
3972 void *params;
Guido van Rossumc001c092020-04-30 12:12:19 -07003973 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003974 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003975 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003976 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003977 (n = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003978 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003979 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003980 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003981 (params = params_rule(p), 1) // params?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003982 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003983 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003984 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003985 (a = _tmp_50_rule(p), 1) // ['->' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003986 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003987 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003988 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003989 (tc = func_type_comment_rule(p), 1) // func_type_comment?
Guido van Rossumc001c092020-04-30 12:12:19 -07003990 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003991 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003992 )
3993 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003994 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3995 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003996 return NULL;
3997 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003998 int _end_lineno = _token->end_lineno;
3999 UNUSED(_end_lineno); // Only used by EXTRA macro
4000 int _end_col_offset = _token->end_col_offset;
4001 UNUSED(_end_col_offset); // Only used by EXTRA macro
4002 _res = _Py_FunctionDef ( n -> v . Name . id , ( params ) ? params : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
4003 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004004 p->error_indicator = 1;
4005 return NULL;
4006 }
4007 goto done;
4008 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004009 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004010 }
4011 { // ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004012 if (p->error_indicator) {
4013 return NULL;
4014 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004015 Token * _keyword;
4016 Token * _literal;
4017 Token * _literal_1;
4018 Token * _literal_2;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004019 void *a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01004020 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004021 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004022 expr_ty n;
4023 void *params;
4024 void *tc;
4025 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004026 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004027 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004028 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004029 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004030 (n = _PyPegen_name_token(p)) // NAME
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004031 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004032 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004033 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004034 (params = params_rule(p), 1) // params?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004035 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004036 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004037 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004038 (a = _tmp_51_rule(p), 1) // ['->' expression]
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004039 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004040 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004041 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004042 (tc = func_type_comment_rule(p), 1) // func_type_comment?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004043 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004044 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004045 )
4046 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004047 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4048 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004049 return NULL;
4050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004051 int _end_lineno = _token->end_lineno;
4052 UNUSED(_end_lineno); // Only used by EXTRA macro
4053 int _end_col_offset = _token->end_col_offset;
4054 UNUSED(_end_col_offset); // Only used by EXTRA macro
4055 _res = CHECK_VERSION ( 5 , "Async functions are" , _Py_AsyncFunctionDef ( n -> v . Name . id , ( params ) ? params : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
4056 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004057 p->error_indicator = 1;
4058 return NULL;
4059 }
4060 goto done;
4061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004062 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004063 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004064 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004065 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004066 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004067}
4068
Guido van Rossumc001c092020-04-30 12:12:19 -07004069// func_type_comment:
4070// | NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
4071// | invalid_double_type_comments
4072// | TYPE_COMMENT
Pablo Galindod9552412020-05-01 16:32:09 +01004073static Token*
Guido van Rossumc001c092020-04-30 12:12:19 -07004074func_type_comment_rule(Parser *p)
4075{
4076 if (p->error_indicator) {
4077 return NULL;
4078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004079 Token* _res = NULL;
4080 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004081 { // NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004082 if (p->error_indicator) {
4083 return NULL;
4084 }
Pablo Galindob796b3f2020-05-01 12:32:26 +01004085 Token * newline_var;
4086 Token * t;
Guido van Rossumc001c092020-04-30 12:12:19 -07004087 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004088 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -07004089 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004090 (t = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -07004091 &&
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03004092 _PyPegen_lookahead(1, _tmp_52_rule, p)
Guido van Rossumc001c092020-04-30 12:12:19 -07004093 )
4094 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004095 _res = t;
4096 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004097 p->error_indicator = 1;
4098 return NULL;
4099 }
4100 goto done;
4101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004102 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004103 }
4104 { // invalid_double_type_comments
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004105 if (p->error_indicator) {
4106 return NULL;
4107 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004108 void *invalid_double_type_comments_var;
4109 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004110 (invalid_double_type_comments_var = invalid_double_type_comments_rule(p)) // invalid_double_type_comments
Guido van Rossumc001c092020-04-30 12:12:19 -07004111 )
4112 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004113 _res = invalid_double_type_comments_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07004114 goto done;
4115 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004116 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004117 }
4118 { // TYPE_COMMENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004119 if (p->error_indicator) {
4120 return NULL;
4121 }
Pablo Galindob796b3f2020-05-01 12:32:26 +01004122 Token * type_comment_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07004123 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004124 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -07004125 )
4126 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004127 _res = type_comment_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07004128 goto done;
4129 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004130 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004131 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004132 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07004133 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004134 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07004135}
4136
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004137// params: invalid_parameters | parameters
4138static arguments_ty
4139params_rule(Parser *p)
4140{
4141 if (p->error_indicator) {
4142 return NULL;
4143 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004144 arguments_ty _res = NULL;
4145 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004146 { // invalid_parameters
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004147 if (p->error_indicator) {
4148 return NULL;
4149 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004150 void *invalid_parameters_var;
4151 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004152 (invalid_parameters_var = invalid_parameters_rule(p)) // invalid_parameters
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004153 )
4154 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004155 _res = invalid_parameters_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004156 goto done;
4157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004158 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004159 }
4160 { // parameters
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004161 if (p->error_indicator) {
4162 return NULL;
4163 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004164 arguments_ty parameters_var;
4165 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004166 (parameters_var = parameters_rule(p)) // parameters
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004167 )
4168 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004169 _res = parameters_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004170 goto done;
4171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004172 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004174 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004175 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004176 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004177}
4178
4179// parameters:
Guido van Rossumc001c092020-04-30 12:12:19 -07004180// | slash_no_default param_no_default* param_with_default* star_etc?
4181// | slash_with_default param_with_default* star_etc?
4182// | param_no_default+ param_with_default* star_etc?
4183// | param_with_default+ star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004184// | star_etc
4185static arguments_ty
4186parameters_rule(Parser *p)
4187{
4188 if (p->error_indicator) {
4189 return NULL;
4190 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004191 arguments_ty _res = NULL;
4192 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004193 { // slash_no_default param_no_default* param_with_default* star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004194 if (p->error_indicator) {
4195 return NULL;
4196 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004197 asdl_seq* a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004198 asdl_seq * b;
4199 asdl_seq * c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004200 void *d;
4201 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004202 (a = slash_no_default_rule(p)) // slash_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004203 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004204 (b = _loop0_53_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004205 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004206 (c = _loop0_54_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004207 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004208 (d = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004209 )
4210 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004211 _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
4212 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004213 p->error_indicator = 1;
4214 return NULL;
4215 }
4216 goto done;
4217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004218 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004219 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004220 { // slash_with_default param_with_default* star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004221 if (p->error_indicator) {
4222 return NULL;
4223 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004224 SlashWithDefault* a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004225 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004226 void *c;
4227 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004228 (a = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004229 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004230 (b = _loop0_55_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004231 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004232 (c = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004233 )
4234 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004235 _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
4236 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004237 p->error_indicator = 1;
4238 return NULL;
4239 }
4240 goto done;
4241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004242 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004243 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004244 { // param_no_default+ param_with_default* star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004245 if (p->error_indicator) {
4246 return NULL;
4247 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004248 asdl_seq * a;
4249 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004250 void *c;
4251 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004252 (a = _loop1_56_rule(p)) // param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004253 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004254 (b = _loop0_57_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004255 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004256 (c = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004257 )
4258 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004259 _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
4260 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004261 p->error_indicator = 1;
4262 return NULL;
4263 }
4264 goto done;
4265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004266 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004267 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004268 { // param_with_default+ star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004269 if (p->error_indicator) {
4270 return NULL;
4271 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004272 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004273 void *b;
4274 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004275 (a = _loop1_58_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004276 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004277 (b = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004278 )
4279 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004280 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
4281 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004282 p->error_indicator = 1;
4283 return NULL;
4284 }
4285 goto done;
4286 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004287 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004288 }
4289 { // star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004290 if (p->error_indicator) {
4291 return NULL;
4292 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004293 StarEtc* a;
4294 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004295 (a = star_etc_rule(p)) // star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004296 )
4297 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004298 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
4299 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004300 p->error_indicator = 1;
4301 return NULL;
4302 }
4303 goto done;
4304 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004305 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004306 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004307 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004308 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004309 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004310}
4311
Guido van Rossumc001c092020-04-30 12:12:19 -07004312// slash_no_default: param_no_default+ '/' ',' | param_no_default+ '/' &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004313static asdl_seq*
Guido van Rossumc001c092020-04-30 12:12:19 -07004314slash_no_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004315{
4316 if (p->error_indicator) {
4317 return NULL;
4318 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004319 asdl_seq* _res = NULL;
4320 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004321 { // param_no_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004322 if (p->error_indicator) {
4323 return NULL;
4324 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004325 Token * _literal;
4326 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07004327 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004328 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004329 (a = _loop1_59_rule(p)) // param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004330 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004331 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004332 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004333 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004334 )
4335 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004336 _res = a;
4337 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004338 p->error_indicator = 1;
4339 return NULL;
4340 }
4341 goto done;
4342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004343 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004344 }
4345 { // param_no_default+ '/' &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004346 if (p->error_indicator) {
4347 return NULL;
4348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004349 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004350 asdl_seq * a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004351 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004352 (a = _loop1_60_rule(p)) // param_no_default+
Guido van Rossumc001c092020-04-30 12:12:19 -07004353 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004354 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossumc001c092020-04-30 12:12:19 -07004355 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004356 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004357 )
4358 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004359 _res = a;
4360 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004361 p->error_indicator = 1;
4362 return NULL;
4363 }
4364 goto done;
4365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004366 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004367 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004368 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004369 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004370 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004371}
4372
Guido van Rossumc001c092020-04-30 12:12:19 -07004373// slash_with_default:
4374// | param_no_default* param_with_default+ '/' ','
4375// | param_no_default* param_with_default+ '/' &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004376static SlashWithDefault*
4377slash_with_default_rule(Parser *p)
4378{
4379 if (p->error_indicator) {
4380 return NULL;
4381 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004382 SlashWithDefault* _res = NULL;
4383 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004384 { // param_no_default* param_with_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004385 if (p->error_indicator) {
4386 return NULL;
4387 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004388 Token * _literal;
4389 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07004390 asdl_seq * a;
4391 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004392 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004393 (a = _loop0_61_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004394 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004395 (b = _loop1_62_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004396 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004397 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004398 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004399 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004400 )
4401 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004402 _res = _PyPegen_slash_with_default ( p , a , b );
4403 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004404 p->error_indicator = 1;
4405 return NULL;
4406 }
4407 goto done;
4408 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004409 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004410 }
4411 { // param_no_default* param_with_default+ '/' &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004412 if (p->error_indicator) {
4413 return NULL;
4414 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004415 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004416 asdl_seq * a;
4417 asdl_seq * b;
Guido van Rossumc001c092020-04-30 12:12:19 -07004418 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004419 (a = _loop0_63_rule(p)) // param_no_default*
Guido van Rossumc001c092020-04-30 12:12:19 -07004420 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004421 (b = _loop1_64_rule(p)) // param_with_default+
Guido van Rossumc001c092020-04-30 12:12:19 -07004422 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004423 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossumc001c092020-04-30 12:12:19 -07004424 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004425 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004426 )
4427 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004428 _res = _PyPegen_slash_with_default ( p , a , b );
4429 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004430 p->error_indicator = 1;
4431 return NULL;
4432 }
4433 goto done;
4434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004435 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004436 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004437 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004438 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004439 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004440}
4441
4442// star_etc:
Guido van Rossumc001c092020-04-30 12:12:19 -07004443// | '*' param_no_default param_maybe_default* kwds?
4444// | '*' ',' param_maybe_default+ kwds?
4445// | kwds
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004446// | invalid_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004447static StarEtc*
4448star_etc_rule(Parser *p)
4449{
4450 if (p->error_indicator) {
4451 return NULL;
4452 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004453 StarEtc* _res = NULL;
4454 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004455 { // '*' param_no_default param_maybe_default* kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004456 if (p->error_indicator) {
4457 return NULL;
4458 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004459 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004460 arg_ty a;
4461 asdl_seq * b;
4462 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004463 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004464 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004465 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004466 (a = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004467 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004468 (b = _loop0_65_rule(p)) // param_maybe_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004469 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004470 (c = kwds_rule(p), 1) // kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004471 )
4472 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004473 _res = _PyPegen_star_etc ( p , a , b , c );
4474 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004475 p->error_indicator = 1;
4476 return NULL;
4477 }
4478 goto done;
4479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004480 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004481 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004482 { // '*' ',' param_maybe_default+ kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004483 if (p->error_indicator) {
4484 return NULL;
4485 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004486 Token * _literal;
4487 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004488 asdl_seq * b;
4489 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004490 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004491 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004492 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004493 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004494 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004495 (b = _loop1_66_rule(p)) // param_maybe_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004496 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004497 (c = kwds_rule(p), 1) // kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004498 )
4499 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004500 _res = _PyPegen_star_etc ( p , NULL , b , c );
4501 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004502 p->error_indicator = 1;
4503 return NULL;
4504 }
4505 goto done;
4506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004507 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004508 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004509 { // kwds
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004510 if (p->error_indicator) {
4511 return NULL;
4512 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004513 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004514 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004515 (a = kwds_rule(p)) // kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004516 )
4517 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004518 _res = _PyPegen_star_etc ( p , NULL , NULL , a );
4519 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004520 p->error_indicator = 1;
4521 return NULL;
4522 }
4523 goto done;
4524 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004525 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004526 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004527 { // invalid_star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004528 if (p->error_indicator) {
4529 return NULL;
4530 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004531 void *invalid_star_etc_var;
4532 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004533 (invalid_star_etc_var = invalid_star_etc_rule(p)) // invalid_star_etc
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004534 )
4535 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004536 _res = invalid_star_etc_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004537 goto done;
4538 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004539 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004541 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004542 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004543 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004544}
4545
Guido van Rossumc001c092020-04-30 12:12:19 -07004546// kwds: '**' param_no_default
4547static arg_ty
4548kwds_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004549{
4550 if (p->error_indicator) {
4551 return NULL;
4552 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004553 arg_ty _res = NULL;
4554 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004555 { // '**' param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004556 if (p->error_indicator) {
4557 return NULL;
4558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004559 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004560 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004561 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004562 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -07004563 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004564 (a = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -07004565 )
4566 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004567 _res = a;
4568 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004569 p->error_indicator = 1;
4570 return NULL;
4571 }
4572 goto done;
4573 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004574 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004575 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004576 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07004577 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004578 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07004579}
4580
4581// param_no_default: param ',' TYPE_COMMENT? | param TYPE_COMMENT? &')'
4582static arg_ty
4583param_no_default_rule(Parser *p)
4584{
4585 if (p->error_indicator) {
4586 return NULL;
4587 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004588 arg_ty _res = NULL;
4589 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004590 { // param ',' TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004591 if (p->error_indicator) {
4592 return NULL;
4593 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004594 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004595 arg_ty a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004596 void *tc;
4597 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004598 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004599 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004600 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004601 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004602 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004603 )
4604 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004605 _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
4606 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004607 p->error_indicator = 1;
4608 return NULL;
4609 }
4610 goto done;
4611 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004612 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004613 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004614 { // param TYPE_COMMENT? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004615 if (p->error_indicator) {
4616 return NULL;
4617 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004618 arg_ty a;
4619 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004620 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004621 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004622 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004623 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004624 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004625 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004626 )
4627 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004628 _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
4629 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004630 p->error_indicator = 1;
4631 return NULL;
4632 }
4633 goto done;
4634 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004635 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004636 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004637 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004638 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004639 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004640}
4641
Guido van Rossumc001c092020-04-30 12:12:19 -07004642// param_with_default: param default ',' TYPE_COMMENT? | param default TYPE_COMMENT? &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004643static NameDefaultPair*
Guido van Rossumc001c092020-04-30 12:12:19 -07004644param_with_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004645{
4646 if (p->error_indicator) {
4647 return NULL;
4648 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004649 NameDefaultPair* _res = NULL;
4650 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004651 { // param default ',' TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004652 if (p->error_indicator) {
4653 return NULL;
4654 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004655 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004656 arg_ty a;
4657 expr_ty c;
Guido van Rossumc001c092020-04-30 12:12:19 -07004658 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004659 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004660 (a = param_rule(p)) // param
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004661 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004662 (c = default_rule(p)) // default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004663 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004664 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004665 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004666 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004667 )
4668 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004669 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4670 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004671 p->error_indicator = 1;
4672 return NULL;
4673 }
4674 goto done;
4675 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004676 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004677 }
4678 { // param default TYPE_COMMENT? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004679 if (p->error_indicator) {
4680 return NULL;
4681 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004682 arg_ty a;
4683 expr_ty c;
4684 void *tc;
4685 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004686 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004687 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004688 (c = default_rule(p)) // default
Guido van Rossumc001c092020-04-30 12:12:19 -07004689 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004690 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004691 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004692 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -07004693 )
4694 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004695 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4696 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004697 p->error_indicator = 1;
4698 return NULL;
4699 }
4700 goto done;
4701 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004702 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004703 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004704 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004705 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004706 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004707}
4708
Guido van Rossumc001c092020-04-30 12:12:19 -07004709// param_maybe_default:
4710// | param default? ',' TYPE_COMMENT?
4711// | param default? TYPE_COMMENT? &')'
4712static NameDefaultPair*
4713param_maybe_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004714{
4715 if (p->error_indicator) {
4716 return NULL;
4717 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004718 NameDefaultPair* _res = NULL;
4719 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004720 { // param default? ',' TYPE_COMMENT?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004721 if (p->error_indicator) {
4722 return NULL;
4723 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004724 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004725 arg_ty a;
4726 void *c;
Guido van Rossumc001c092020-04-30 12:12:19 -07004727 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004728 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004729 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004730 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004731 (c = default_rule(p), 1) // default?
Guido van Rossumc001c092020-04-30 12:12:19 -07004732 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004733 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004734 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004735 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004736 )
4737 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004738 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4739 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004740 p->error_indicator = 1;
4741 return NULL;
4742 }
4743 goto done;
4744 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004745 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004746 }
4747 { // param default? TYPE_COMMENT? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004748 if (p->error_indicator) {
4749 return NULL;
4750 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004751 arg_ty a;
4752 void *c;
4753 void *tc;
4754 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004755 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004756 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004757 (c = default_rule(p), 1) // default?
Guido van Rossumc001c092020-04-30 12:12:19 -07004758 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004759 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004760 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004761 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -07004762 )
4763 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004764 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4765 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004766 p->error_indicator = 1;
4767 return NULL;
4768 }
4769 goto done;
4770 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004771 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004772 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004773 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004774 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004775 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004776}
4777
Guido van Rossumc001c092020-04-30 12:12:19 -07004778// param: NAME annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004779static arg_ty
Guido van Rossumc001c092020-04-30 12:12:19 -07004780param_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004781{
4782 if (p->error_indicator) {
4783 return NULL;
4784 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004785 arg_ty _res = NULL;
4786 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004787 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4788 p->error_indicator = 1;
4789 return NULL;
4790 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004791 int _start_lineno = p->tokens[_mark]->lineno;
4792 UNUSED(_start_lineno); // Only used by EXTRA macro
4793 int _start_col_offset = p->tokens[_mark]->col_offset;
4794 UNUSED(_start_col_offset); // Only used by EXTRA macro
Guido van Rossumc001c092020-04-30 12:12:19 -07004795 { // NAME annotation?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004796 if (p->error_indicator) {
4797 return NULL;
4798 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004799 expr_ty a;
4800 void *b;
4801 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004802 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004803 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004804 (b = annotation_rule(p), 1) // annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004805 )
4806 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004807 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4808 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004809 return NULL;
4810 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004811 int _end_lineno = _token->end_lineno;
4812 UNUSED(_end_lineno); // Only used by EXTRA macro
4813 int _end_col_offset = _token->end_col_offset;
4814 UNUSED(_end_col_offset); // Only used by EXTRA macro
4815 _res = _Py_arg ( a -> v . Name . id , b , NULL , EXTRA );
4816 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004817 p->error_indicator = 1;
4818 return NULL;
4819 }
4820 goto done;
4821 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004822 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004823 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004824 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004825 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004826 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004827}
4828
Guido van Rossumc001c092020-04-30 12:12:19 -07004829// annotation: ':' expression
4830static expr_ty
4831annotation_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004832{
4833 if (p->error_indicator) {
4834 return NULL;
4835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004836 expr_ty _res = NULL;
4837 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004838 { // ':' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004839 if (p->error_indicator) {
4840 return NULL;
4841 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004842 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004843 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004844 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004845 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004846 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004847 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004848 )
4849 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004850 _res = a;
4851 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004852 p->error_indicator = 1;
4853 return NULL;
4854 }
4855 goto done;
4856 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004857 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004859 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004860 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004861 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004862}
4863
Guido van Rossumc001c092020-04-30 12:12:19 -07004864// default: '=' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004865static expr_ty
Guido van Rossumc001c092020-04-30 12:12:19 -07004866default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004867{
4868 if (p->error_indicator) {
4869 return NULL;
4870 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004871 expr_ty _res = NULL;
4872 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004873 { // '=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004874 if (p->error_indicator) {
4875 return NULL;
4876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004877 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004878 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004879 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004880 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Guido van Rossumc001c092020-04-30 12:12:19 -07004881 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004882 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004883 )
4884 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004885 _res = a;
4886 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004887 p->error_indicator = 1;
4888 return NULL;
4889 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004890 goto done;
4891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004892 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004893 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004894 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004895 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004896 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004897}
4898
4899// decorators: (('@' named_expression NEWLINE))+
4900static asdl_seq*
4901decorators_rule(Parser *p)
4902{
4903 if (p->error_indicator) {
4904 return NULL;
4905 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004906 asdl_seq* _res = NULL;
4907 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004908 { // (('@' named_expression NEWLINE))+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004909 if (p->error_indicator) {
4910 return NULL;
4911 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004912 asdl_seq * a;
4913 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004914 (a = _loop1_67_rule(p)) // (('@' named_expression NEWLINE))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004915 )
4916 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004917 _res = a;
4918 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004919 p->error_indicator = 1;
4920 return NULL;
4921 }
4922 goto done;
4923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004924 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004925 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004926 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004927 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004928 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004929}
4930
4931// class_def: decorators class_def_raw | class_def_raw
4932static stmt_ty
4933class_def_rule(Parser *p)
4934{
4935 if (p->error_indicator) {
4936 return NULL;
4937 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004938 stmt_ty _res = NULL;
4939 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004940 { // decorators class_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004941 if (p->error_indicator) {
4942 return NULL;
4943 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004944 asdl_seq* a;
4945 stmt_ty b;
4946 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004947 (a = decorators_rule(p)) // decorators
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004948 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004949 (b = class_def_raw_rule(p)) // class_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004950 )
4951 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004952 _res = _PyPegen_class_def_decorators ( p , a , b );
4953 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004954 p->error_indicator = 1;
4955 return NULL;
4956 }
4957 goto done;
4958 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004959 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004960 }
4961 { // class_def_raw
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004962 if (p->error_indicator) {
4963 return NULL;
4964 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004965 stmt_ty class_def_raw_var;
4966 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004967 (class_def_raw_var = class_def_raw_rule(p)) // class_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004968 )
4969 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004970 _res = class_def_raw_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004971 goto done;
4972 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004973 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004975 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004976 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004977 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004978}
4979
4980// class_def_raw: 'class' NAME ['(' arguments? ')'] ':' block
4981static stmt_ty
4982class_def_raw_rule(Parser *p)
4983{
4984 if (p->error_indicator) {
4985 return NULL;
4986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004987 stmt_ty _res = NULL;
4988 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004989 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4990 p->error_indicator = 1;
4991 return NULL;
4992 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004993 int _start_lineno = p->tokens[_mark]->lineno;
4994 UNUSED(_start_lineno); // Only used by EXTRA macro
4995 int _start_col_offset = p->tokens[_mark]->col_offset;
4996 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004997 { // 'class' NAME ['(' arguments? ')'] ':' block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03004998 if (p->error_indicator) {
4999 return NULL;
5000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005001 Token * _keyword;
5002 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005003 expr_ty a;
5004 void *b;
5005 asdl_seq* c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005006 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005007 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005008 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005009 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005010 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005011 (b = _tmp_68_rule(p), 1) // ['(' arguments? ')']
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005012 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005013 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005014 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005015 (c = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005016 )
5017 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005018 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5019 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005020 return NULL;
5021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005022 int _end_lineno = _token->end_lineno;
5023 UNUSED(_end_lineno); // Only used by EXTRA macro
5024 int _end_col_offset = _token->end_col_offset;
5025 UNUSED(_end_col_offset); // Only used by EXTRA macro
5026 _res = _Py_ClassDef ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , c , NULL , EXTRA );
5027 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005028 p->error_indicator = 1;
5029 return NULL;
5030 }
5031 goto done;
5032 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005033 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005035 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005036 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005037 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005038}
5039
5040// block: NEWLINE INDENT statements DEDENT | simple_stmt | invalid_block
5041static asdl_seq*
5042block_rule(Parser *p)
5043{
5044 if (p->error_indicator) {
5045 return NULL;
5046 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005047 asdl_seq* _res = NULL;
5048 if (_PyPegen_is_memoized(p, block_type, &_res))
5049 return _res;
5050 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005051 { // NEWLINE INDENT statements DEDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005052 if (p->error_indicator) {
5053 return NULL;
5054 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005055 asdl_seq* a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01005056 Token * dedent_var;
5057 Token * indent_var;
5058 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005059 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005060 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005061 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005062 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005063 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005064 (a = statements_rule(p)) // statements
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005065 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005066 (dedent_var = _PyPegen_expect_token(p, DEDENT)) // token='DEDENT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005067 )
5068 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005069 _res = a;
5070 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005071 p->error_indicator = 1;
5072 return NULL;
5073 }
5074 goto done;
5075 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005076 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005077 }
5078 { // simple_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005079 if (p->error_indicator) {
5080 return NULL;
5081 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005082 asdl_seq* simple_stmt_var;
5083 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005084 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005085 )
5086 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005087 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005088 goto done;
5089 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005090 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005091 }
5092 { // invalid_block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005093 if (p->error_indicator) {
5094 return NULL;
5095 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005096 void *invalid_block_var;
5097 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005098 (invalid_block_var = invalid_block_rule(p)) // invalid_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005099 )
5100 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005101 _res = invalid_block_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005102 goto done;
5103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005104 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005105 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005106 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005107 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005108 _PyPegen_insert_memo(p, _mark, block_type, _res);
5109 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005110}
5111
5112// expressions_list: ','.star_expression+ ','?
5113static asdl_seq*
5114expressions_list_rule(Parser *p)
5115{
5116 if (p->error_indicator) {
5117 return NULL;
5118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005119 asdl_seq* _res = NULL;
5120 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005121 { // ','.star_expression+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005122 if (p->error_indicator) {
5123 return NULL;
5124 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005125 void *_opt_var;
5126 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005127 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005128 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005129 (a = _gather_69_rule(p)) // ','.star_expression+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005130 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005131 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005132 )
5133 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005134 _res = a;
5135 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005136 p->error_indicator = 1;
5137 return NULL;
5138 }
5139 goto done;
5140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005141 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005142 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005143 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005144 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005145 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005146}
5147
5148// star_expressions:
5149// | star_expression ((',' star_expression))+ ','?
5150// | star_expression ','
5151// | star_expression
5152static expr_ty
5153star_expressions_rule(Parser *p)
5154{
5155 if (p->error_indicator) {
5156 return NULL;
5157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005158 expr_ty _res = NULL;
5159 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005160 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5161 p->error_indicator = 1;
5162 return NULL;
5163 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005164 int _start_lineno = p->tokens[_mark]->lineno;
5165 UNUSED(_start_lineno); // Only used by EXTRA macro
5166 int _start_col_offset = p->tokens[_mark]->col_offset;
5167 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005168 { // star_expression ((',' star_expression))+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005169 if (p->error_indicator) {
5170 return NULL;
5171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005172 void *_opt_var;
5173 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005174 expr_ty a;
5175 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005176 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005177 (a = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005178 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005179 (b = _loop1_71_rule(p)) // ((',' star_expression))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005180 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005181 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005182 )
5183 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005184 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5185 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005186 return NULL;
5187 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005188 int _end_lineno = _token->end_lineno;
5189 UNUSED(_end_lineno); // Only used by EXTRA macro
5190 int _end_col_offset = _token->end_col_offset;
5191 UNUSED(_end_col_offset); // Only used by EXTRA macro
5192 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
5193 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005194 p->error_indicator = 1;
5195 return NULL;
5196 }
5197 goto done;
5198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005199 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005200 }
5201 { // star_expression ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005202 if (p->error_indicator) {
5203 return NULL;
5204 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005205 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005206 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005207 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005208 (a = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005209 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005210 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005211 )
5212 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005213 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5214 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005215 return NULL;
5216 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005217 int _end_lineno = _token->end_lineno;
5218 UNUSED(_end_lineno); // Only used by EXTRA macro
5219 int _end_col_offset = _token->end_col_offset;
5220 UNUSED(_end_col_offset); // Only used by EXTRA macro
5221 _res = _Py_Tuple ( CHECK ( _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
5222 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005223 p->error_indicator = 1;
5224 return NULL;
5225 }
5226 goto done;
5227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005228 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005229 }
5230 { // star_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005231 if (p->error_indicator) {
5232 return NULL;
5233 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005234 expr_ty star_expression_var;
5235 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005236 (star_expression_var = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005237 )
5238 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005239 _res = star_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005240 goto done;
5241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005242 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005244 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005245 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005246 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005247}
5248
5249// star_expression: '*' bitwise_or | expression
5250static expr_ty
5251star_expression_rule(Parser *p)
5252{
5253 if (p->error_indicator) {
5254 return NULL;
5255 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005256 expr_ty _res = NULL;
5257 if (_PyPegen_is_memoized(p, star_expression_type, &_res))
5258 return _res;
5259 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005260 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5261 p->error_indicator = 1;
5262 return NULL;
5263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005264 int _start_lineno = p->tokens[_mark]->lineno;
5265 UNUSED(_start_lineno); // Only used by EXTRA macro
5266 int _start_col_offset = p->tokens[_mark]->col_offset;
5267 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005268 { // '*' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005269 if (p->error_indicator) {
5270 return NULL;
5271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005272 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005273 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005274 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005275 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005276 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005277 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005278 )
5279 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005280 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5281 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005282 return NULL;
5283 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005284 int _end_lineno = _token->end_lineno;
5285 UNUSED(_end_lineno); // Only used by EXTRA macro
5286 int _end_col_offset = _token->end_col_offset;
5287 UNUSED(_end_col_offset); // Only used by EXTRA macro
5288 _res = _Py_Starred ( a , Load , EXTRA );
5289 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005290 p->error_indicator = 1;
5291 return NULL;
5292 }
5293 goto done;
5294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005295 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005296 }
5297 { // expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005298 if (p->error_indicator) {
5299 return NULL;
5300 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005301 expr_ty expression_var;
5302 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005303 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005304 )
5305 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005306 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005307 goto done;
5308 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005309 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005310 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005311 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005312 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005313 _PyPegen_insert_memo(p, _mark, star_expression_type, _res);
5314 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005315}
5316
5317// star_named_expressions: ','.star_named_expression+ ','?
5318static asdl_seq*
5319star_named_expressions_rule(Parser *p)
5320{
5321 if (p->error_indicator) {
5322 return NULL;
5323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005324 asdl_seq* _res = NULL;
5325 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005326 { // ','.star_named_expression+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005327 if (p->error_indicator) {
5328 return NULL;
5329 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005330 void *_opt_var;
5331 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005332 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005333 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005334 (a = _gather_72_rule(p)) // ','.star_named_expression+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005335 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005336 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005337 )
5338 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005339 _res = a;
5340 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005341 p->error_indicator = 1;
5342 return NULL;
5343 }
5344 goto done;
5345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005346 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005347 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005348 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005349 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005350 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005351}
5352
5353// star_named_expression: '*' bitwise_or | named_expression
5354static expr_ty
5355star_named_expression_rule(Parser *p)
5356{
5357 if (p->error_indicator) {
5358 return NULL;
5359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005360 expr_ty _res = NULL;
5361 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005362 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5363 p->error_indicator = 1;
5364 return NULL;
5365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005366 int _start_lineno = p->tokens[_mark]->lineno;
5367 UNUSED(_start_lineno); // Only used by EXTRA macro
5368 int _start_col_offset = p->tokens[_mark]->col_offset;
5369 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005370 { // '*' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005371 if (p->error_indicator) {
5372 return NULL;
5373 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005374 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005375 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005376 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005377 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005378 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005379 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005380 )
5381 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005382 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5383 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005384 return NULL;
5385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005386 int _end_lineno = _token->end_lineno;
5387 UNUSED(_end_lineno); // Only used by EXTRA macro
5388 int _end_col_offset = _token->end_col_offset;
5389 UNUSED(_end_col_offset); // Only used by EXTRA macro
5390 _res = _Py_Starred ( a , Load , EXTRA );
5391 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005392 p->error_indicator = 1;
5393 return NULL;
5394 }
5395 goto done;
5396 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005397 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005398 }
5399 { // named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005400 if (p->error_indicator) {
5401 return NULL;
5402 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005403 expr_ty named_expression_var;
5404 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005405 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005406 )
5407 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005408 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005409 goto done;
5410 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005411 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005413 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005414 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005415 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005416}
5417
5418// named_expression: NAME ':=' expression | expression !':=' | invalid_named_expression
5419static expr_ty
5420named_expression_rule(Parser *p)
5421{
5422 if (p->error_indicator) {
5423 return NULL;
5424 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005425 expr_ty _res = NULL;
5426 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005427 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5428 p->error_indicator = 1;
5429 return NULL;
5430 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005431 int _start_lineno = p->tokens[_mark]->lineno;
5432 UNUSED(_start_lineno); // Only used by EXTRA macro
5433 int _start_col_offset = p->tokens[_mark]->col_offset;
5434 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005435 { // NAME ':=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005436 if (p->error_indicator) {
5437 return NULL;
5438 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005439 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005440 expr_ty a;
5441 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005442 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005443 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005444 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005445 (_literal = _PyPegen_expect_token(p, 53)) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005446 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005447 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005448 )
5449 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005450 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5451 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005452 return NULL;
5453 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005454 int _end_lineno = _token->end_lineno;
5455 UNUSED(_end_lineno); // Only used by EXTRA macro
5456 int _end_col_offset = _token->end_col_offset;
5457 UNUSED(_end_col_offset); // Only used by EXTRA macro
5458 _res = _Py_NamedExpr ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , b , EXTRA );
5459 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005460 p->error_indicator = 1;
5461 return NULL;
5462 }
5463 goto done;
5464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005465 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005466 }
5467 { // expression !':='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005468 if (p->error_indicator) {
5469 return NULL;
5470 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005471 expr_ty expression_var;
5472 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005473 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005474 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005475 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005476 )
5477 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005478 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005479 goto done;
5480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005481 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005482 }
5483 { // invalid_named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005484 if (p->error_indicator) {
5485 return NULL;
5486 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005487 void *invalid_named_expression_var;
5488 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005489 (invalid_named_expression_var = invalid_named_expression_rule(p)) // invalid_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005490 )
5491 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005492 _res = invalid_named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005493 goto done;
5494 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005495 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005496 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005497 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005498 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005499 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005500}
5501
5502// annotated_rhs: yield_expr | star_expressions
5503static expr_ty
5504annotated_rhs_rule(Parser *p)
5505{
5506 if (p->error_indicator) {
5507 return NULL;
5508 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005509 expr_ty _res = NULL;
5510 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005511 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005512 if (p->error_indicator) {
5513 return NULL;
5514 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005515 expr_ty yield_expr_var;
5516 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005517 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005518 )
5519 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005520 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005521 goto done;
5522 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005523 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005524 }
5525 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005526 if (p->error_indicator) {
5527 return NULL;
5528 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005529 expr_ty star_expressions_var;
5530 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005531 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005532 )
5533 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005534 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005535 goto done;
5536 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005537 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005538 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005539 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005540 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005541 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005542}
5543
5544// expressions: expression ((',' expression))+ ','? | expression ',' | expression
5545static expr_ty
5546expressions_rule(Parser *p)
5547{
5548 if (p->error_indicator) {
5549 return NULL;
5550 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005551 expr_ty _res = NULL;
5552 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005553 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5554 p->error_indicator = 1;
5555 return NULL;
5556 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005557 int _start_lineno = p->tokens[_mark]->lineno;
5558 UNUSED(_start_lineno); // Only used by EXTRA macro
5559 int _start_col_offset = p->tokens[_mark]->col_offset;
5560 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005561 { // expression ((',' expression))+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005562 if (p->error_indicator) {
5563 return NULL;
5564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005565 void *_opt_var;
5566 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005567 expr_ty a;
5568 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005569 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005570 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005571 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005572 (b = _loop1_74_rule(p)) // ((',' expression))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005573 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005574 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005575 )
5576 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005577 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5578 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005579 return NULL;
5580 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005581 int _end_lineno = _token->end_lineno;
5582 UNUSED(_end_lineno); // Only used by EXTRA macro
5583 int _end_col_offset = _token->end_col_offset;
5584 UNUSED(_end_col_offset); // Only used by EXTRA macro
5585 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
5586 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005587 p->error_indicator = 1;
5588 return NULL;
5589 }
5590 goto done;
5591 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005592 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005593 }
5594 { // expression ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005595 if (p->error_indicator) {
5596 return NULL;
5597 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005598 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005599 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005600 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005601 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005602 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005603 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005604 )
5605 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005606 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5607 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005608 return NULL;
5609 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005610 int _end_lineno = _token->end_lineno;
5611 UNUSED(_end_lineno); // Only used by EXTRA macro
5612 int _end_col_offset = _token->end_col_offset;
5613 UNUSED(_end_col_offset); // Only used by EXTRA macro
5614 _res = _Py_Tuple ( CHECK ( _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
5615 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005616 p->error_indicator = 1;
5617 return NULL;
5618 }
5619 goto done;
5620 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005621 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005622 }
5623 { // expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005624 if (p->error_indicator) {
5625 return NULL;
5626 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005627 expr_ty expression_var;
5628 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005629 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005630 )
5631 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005632 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005633 goto done;
5634 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005635 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005636 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005637 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005638 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005639 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005640}
5641
5642// expression: disjunction 'if' disjunction 'else' expression | disjunction | lambdef
5643static expr_ty
5644expression_rule(Parser *p)
5645{
5646 if (p->error_indicator) {
5647 return NULL;
5648 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005649 expr_ty _res = NULL;
5650 if (_PyPegen_is_memoized(p, expression_type, &_res))
5651 return _res;
5652 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005653 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5654 p->error_indicator = 1;
5655 return NULL;
5656 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005657 int _start_lineno = p->tokens[_mark]->lineno;
5658 UNUSED(_start_lineno); // Only used by EXTRA macro
5659 int _start_col_offset = p->tokens[_mark]->col_offset;
5660 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005661 { // disjunction 'if' disjunction 'else' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005662 if (p->error_indicator) {
5663 return NULL;
5664 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005665 Token * _keyword;
5666 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005667 expr_ty a;
5668 expr_ty b;
5669 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005670 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005671 (a = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005672 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005673 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005674 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005675 (b = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005676 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005677 (_keyword_1 = _PyPegen_expect_token(p, 516)) // token='else'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005678 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005679 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005680 )
5681 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005682 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5683 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005684 return NULL;
5685 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005686 int _end_lineno = _token->end_lineno;
5687 UNUSED(_end_lineno); // Only used by EXTRA macro
5688 int _end_col_offset = _token->end_col_offset;
5689 UNUSED(_end_col_offset); // Only used by EXTRA macro
5690 _res = _Py_IfExp ( b , a , c , EXTRA );
5691 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005692 p->error_indicator = 1;
5693 return NULL;
5694 }
5695 goto done;
5696 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005697 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005698 }
5699 { // disjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005700 if (p->error_indicator) {
5701 return NULL;
5702 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005703 expr_ty disjunction_var;
5704 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005705 (disjunction_var = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005706 )
5707 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005708 _res = disjunction_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005709 goto done;
5710 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005711 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005712 }
5713 { // lambdef
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005714 if (p->error_indicator) {
5715 return NULL;
5716 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005717 expr_ty lambdef_var;
5718 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005719 (lambdef_var = lambdef_rule(p)) // lambdef
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005720 )
5721 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005722 _res = lambdef_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005723 goto done;
5724 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005725 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005726 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005727 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005728 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005729 _PyPegen_insert_memo(p, _mark, expression_type, _res);
5730 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005731}
5732
5733// lambdef: 'lambda' lambda_parameters? ':' expression
5734static expr_ty
5735lambdef_rule(Parser *p)
5736{
5737 if (p->error_indicator) {
5738 return NULL;
5739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005740 expr_ty _res = NULL;
5741 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005742 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5743 p->error_indicator = 1;
5744 return NULL;
5745 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005746 int _start_lineno = p->tokens[_mark]->lineno;
5747 UNUSED(_start_lineno); // Only used by EXTRA macro
5748 int _start_col_offset = p->tokens[_mark]->col_offset;
5749 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005750 { // 'lambda' lambda_parameters? ':' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005751 if (p->error_indicator) {
5752 return NULL;
5753 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005754 Token * _keyword;
5755 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005756 void *a;
5757 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005758 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005759 (_keyword = _PyPegen_expect_token(p, 524)) // token='lambda'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005760 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005761 (a = lambda_parameters_rule(p), 1) // lambda_parameters?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005762 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005763 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005764 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005765 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005766 )
5767 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005768 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5769 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005770 return NULL;
5771 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005772 int _end_lineno = _token->end_lineno;
5773 UNUSED(_end_lineno); // Only used by EXTRA macro
5774 int _end_col_offset = _token->end_col_offset;
5775 UNUSED(_end_col_offset); // Only used by EXTRA macro
5776 _res = _Py_Lambda ( ( a ) ? a : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , EXTRA );
5777 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005778 p->error_indicator = 1;
5779 return NULL;
5780 }
5781 goto done;
5782 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005783 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005784 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005785 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005786 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005787 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005788}
5789
5790// lambda_parameters:
Guido van Rossum3941d972020-05-01 09:42:03 -07005791// | lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
5792// | lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
5793// | lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
5794// | lambda_param_with_default+ lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005795// | lambda_star_etc
5796static arguments_ty
5797lambda_parameters_rule(Parser *p)
5798{
5799 if (p->error_indicator) {
5800 return NULL;
5801 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005802 arguments_ty _res = NULL;
5803 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005804 { // lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005805 if (p->error_indicator) {
5806 return NULL;
5807 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005808 asdl_seq* a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005809 asdl_seq * b;
5810 asdl_seq * c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005811 void *d;
5812 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005813 (a = lambda_slash_no_default_rule(p)) // lambda_slash_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005814 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005815 (b = _loop0_75_rule(p)) // lambda_param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005816 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005817 (c = _loop0_76_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005818 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005819 (d = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005820 )
5821 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005822 _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
5823 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005824 p->error_indicator = 1;
5825 return NULL;
5826 }
5827 goto done;
5828 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005829 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005830 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005831 { // lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005832 if (p->error_indicator) {
5833 return NULL;
5834 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005835 SlashWithDefault* a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005836 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005837 void *c;
5838 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005839 (a = lambda_slash_with_default_rule(p)) // lambda_slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005840 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005841 (b = _loop0_77_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005842 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005843 (c = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005844 )
5845 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005846 _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
5847 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005848 p->error_indicator = 1;
5849 return NULL;
5850 }
5851 goto done;
5852 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005853 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005854 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005855 { // lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005856 if (p->error_indicator) {
5857 return NULL;
5858 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005859 asdl_seq * a;
5860 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005861 void *c;
5862 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005863 (a = _loop1_78_rule(p)) // lambda_param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005864 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005865 (b = _loop0_79_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005866 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005867 (c = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005868 )
5869 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005870 _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
5871 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005872 p->error_indicator = 1;
5873 return NULL;
5874 }
5875 goto done;
5876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005877 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005878 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005879 { // lambda_param_with_default+ lambda_star_etc?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005880 if (p->error_indicator) {
5881 return NULL;
5882 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005883 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005884 void *b;
5885 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005886 (a = _loop1_80_rule(p)) // lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005887 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005888 (b = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005889 )
5890 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005891 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
5892 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005893 p->error_indicator = 1;
5894 return NULL;
5895 }
5896 goto done;
5897 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005898 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005899 }
5900 { // lambda_star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005901 if (p->error_indicator) {
5902 return NULL;
5903 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005904 StarEtc* a;
5905 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005906 (a = lambda_star_etc_rule(p)) // lambda_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005907 )
5908 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005909 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
5910 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005911 p->error_indicator = 1;
5912 return NULL;
5913 }
5914 goto done;
5915 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005916 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005917 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005918 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005919 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005920 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005921}
5922
Guido van Rossum3941d972020-05-01 09:42:03 -07005923// lambda_slash_no_default:
5924// | lambda_param_no_default+ '/' ','
5925// | lambda_param_no_default+ '/' &':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005926static asdl_seq*
Guido van Rossum3941d972020-05-01 09:42:03 -07005927lambda_slash_no_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005928{
5929 if (p->error_indicator) {
5930 return NULL;
5931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005932 asdl_seq* _res = NULL;
5933 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005934 { // lambda_param_no_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005935 if (p->error_indicator) {
5936 return NULL;
5937 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005938 Token * _literal;
5939 Token * _literal_1;
Guido van Rossum3941d972020-05-01 09:42:03 -07005940 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005941 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005942 (a = _loop1_81_rule(p)) // lambda_param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005943 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005944 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005945 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005946 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005947 )
5948 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005949 _res = a;
5950 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005951 p->error_indicator = 1;
5952 return NULL;
5953 }
5954 goto done;
5955 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005956 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005957 }
5958 { // lambda_param_no_default+ '/' &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005959 if (p->error_indicator) {
5960 return NULL;
5961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005962 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005963 asdl_seq * a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005964 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005965 (a = _loop1_82_rule(p)) // lambda_param_no_default+
Guido van Rossum3941d972020-05-01 09:42:03 -07005966 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005967 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossum3941d972020-05-01 09:42:03 -07005968 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005969 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005970 )
5971 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005972 _res = a;
5973 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005974 p->error_indicator = 1;
5975 return NULL;
5976 }
5977 goto done;
5978 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005979 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005980 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005981 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005982 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005983 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005984}
5985
Guido van Rossum3941d972020-05-01 09:42:03 -07005986// lambda_slash_with_default:
5987// | lambda_param_no_default* lambda_param_with_default+ '/' ','
5988// | lambda_param_no_default* lambda_param_with_default+ '/' &':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005989static SlashWithDefault*
5990lambda_slash_with_default_rule(Parser *p)
5991{
5992 if (p->error_indicator) {
5993 return NULL;
5994 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005995 SlashWithDefault* _res = NULL;
5996 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005997 { // lambda_param_no_default* lambda_param_with_default+ '/' ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03005998 if (p->error_indicator) {
5999 return NULL;
6000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006001 Token * _literal;
6002 Token * _literal_1;
Guido van Rossum3941d972020-05-01 09:42:03 -07006003 asdl_seq * a;
6004 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006005 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006006 (a = _loop0_83_rule(p)) // lambda_param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006007 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006008 (b = _loop1_84_rule(p)) // lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006009 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006010 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006011 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006012 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07006013 )
6014 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006015 _res = _PyPegen_slash_with_default ( p , a , b );
6016 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006017 p->error_indicator = 1;
6018 return NULL;
6019 }
6020 goto done;
6021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006022 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006023 }
6024 { // lambda_param_no_default* lambda_param_with_default+ '/' &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006025 if (p->error_indicator) {
6026 return NULL;
6027 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006028 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07006029 asdl_seq * a;
6030 asdl_seq * b;
Guido van Rossum3941d972020-05-01 09:42:03 -07006031 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006032 (a = _loop0_85_rule(p)) // lambda_param_no_default*
Guido van Rossum3941d972020-05-01 09:42:03 -07006033 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006034 (b = _loop1_86_rule(p)) // lambda_param_with_default+
Guido van Rossum3941d972020-05-01 09:42:03 -07006035 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006036 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossum3941d972020-05-01 09:42:03 -07006037 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006038 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006039 )
6040 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006041 _res = _PyPegen_slash_with_default ( p , a , b );
6042 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006043 p->error_indicator = 1;
6044 return NULL;
6045 }
6046 goto done;
6047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006048 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006049 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006050 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006051 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006052 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006053}
6054
6055// lambda_star_etc:
Guido van Rossum3941d972020-05-01 09:42:03 -07006056// | '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
6057// | '*' ',' lambda_param_maybe_default+ lambda_kwds?
6058// | lambda_kwds
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006059// | invalid_lambda_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006060static StarEtc*
6061lambda_star_etc_rule(Parser *p)
6062{
6063 if (p->error_indicator) {
6064 return NULL;
6065 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006066 StarEtc* _res = NULL;
6067 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006068 { // '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006069 if (p->error_indicator) {
6070 return NULL;
6071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006072 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006073 arg_ty a;
6074 asdl_seq * b;
6075 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006076 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006077 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006078 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006079 (a = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006080 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006081 (b = _loop0_87_rule(p)) // lambda_param_maybe_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006082 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006083 (c = lambda_kwds_rule(p), 1) // lambda_kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006084 )
6085 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006086 _res = _PyPegen_star_etc ( p , a , b , c );
6087 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006088 p->error_indicator = 1;
6089 return NULL;
6090 }
6091 goto done;
6092 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006093 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006094 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006095 { // '*' ',' lambda_param_maybe_default+ lambda_kwds?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006096 if (p->error_indicator) {
6097 return NULL;
6098 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006099 Token * _literal;
6100 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006101 asdl_seq * b;
6102 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006103 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006104 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006105 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006106 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006107 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006108 (b = _loop1_88_rule(p)) // lambda_param_maybe_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006109 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006110 (c = lambda_kwds_rule(p), 1) // lambda_kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006111 )
6112 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006113 _res = _PyPegen_star_etc ( p , NULL , b , c );
6114 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006115 p->error_indicator = 1;
6116 return NULL;
6117 }
6118 goto done;
6119 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006120 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006121 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006122 { // lambda_kwds
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006123 if (p->error_indicator) {
6124 return NULL;
6125 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006126 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006127 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006128 (a = lambda_kwds_rule(p)) // lambda_kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006129 )
6130 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006131 _res = _PyPegen_star_etc ( p , NULL , NULL , a );
6132 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006133 p->error_indicator = 1;
6134 return NULL;
6135 }
6136 goto done;
6137 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006138 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006139 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006140 { // invalid_lambda_star_etc
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006141 if (p->error_indicator) {
6142 return NULL;
6143 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006144 void *invalid_lambda_star_etc_var;
6145 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006146 (invalid_lambda_star_etc_var = invalid_lambda_star_etc_rule(p)) // invalid_lambda_star_etc
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006147 )
6148 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006149 _res = invalid_lambda_star_etc_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006150 goto done;
6151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006152 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03006153 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006154 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006155 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006156 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006157}
6158
Guido van Rossum3941d972020-05-01 09:42:03 -07006159// lambda_kwds: '**' lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006160static arg_ty
Guido van Rossum3941d972020-05-01 09:42:03 -07006161lambda_kwds_rule(Parser *p)
6162{
6163 if (p->error_indicator) {
6164 return NULL;
6165 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006166 arg_ty _res = NULL;
6167 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006168 { // '**' lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006169 if (p->error_indicator) {
6170 return NULL;
6171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006172 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07006173 arg_ty a;
Guido van Rossum3941d972020-05-01 09:42:03 -07006174 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006175 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossum3941d972020-05-01 09:42:03 -07006176 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006177 (a = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -07006178 )
6179 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006180 _res = a;
6181 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006182 p->error_indicator = 1;
6183 return NULL;
6184 }
6185 goto done;
6186 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006187 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006188 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006189 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07006190 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006191 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07006192}
6193
6194// lambda_param_no_default: lambda_param ',' | lambda_param &':'
6195static arg_ty
6196lambda_param_no_default_rule(Parser *p)
6197{
6198 if (p->error_indicator) {
6199 return NULL;
6200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006201 arg_ty _res = NULL;
6202 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006203 { // lambda_param ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006204 if (p->error_indicator) {
6205 return NULL;
6206 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006207 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07006208 arg_ty a;
Guido van Rossum3941d972020-05-01 09:42:03 -07006209 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006210 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006211 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006212 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07006213 )
6214 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006215 _res = a;
6216 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006217 p->error_indicator = 1;
6218 return NULL;
6219 }
6220 goto done;
6221 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006222 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006223 }
6224 { // lambda_param &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006225 if (p->error_indicator) {
6226 return NULL;
6227 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006228 arg_ty a;
6229 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006230 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006231 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006232 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07006233 )
6234 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006235 _res = a;
6236 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006237 p->error_indicator = 1;
6238 return NULL;
6239 }
6240 goto done;
6241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006242 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006244 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07006245 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006246 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07006247}
6248
6249// lambda_param_with_default: lambda_param default ',' | lambda_param default &':'
6250static NameDefaultPair*
6251lambda_param_with_default_rule(Parser *p)
6252{
6253 if (p->error_indicator) {
6254 return NULL;
6255 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006256 NameDefaultPair* _res = NULL;
6257 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006258 { // lambda_param default ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006259 if (p->error_indicator) {
6260 return NULL;
6261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006262 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07006263 arg_ty a;
6264 expr_ty c;
Guido van Rossum3941d972020-05-01 09:42:03 -07006265 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006266 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006267 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006268 (c = default_rule(p)) // default
Guido van Rossum3941d972020-05-01 09:42:03 -07006269 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006270 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07006271 )
6272 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006273 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
6274 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006275 p->error_indicator = 1;
6276 return NULL;
6277 }
6278 goto done;
6279 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006280 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006281 }
6282 { // lambda_param default &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006283 if (p->error_indicator) {
6284 return NULL;
6285 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006286 arg_ty a;
6287 expr_ty c;
6288 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006289 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006290 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006291 (c = default_rule(p)) // default
Guido van Rossum3941d972020-05-01 09:42:03 -07006292 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006293 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07006294 )
6295 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006296 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
6297 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006298 p->error_indicator = 1;
6299 return NULL;
6300 }
6301 goto done;
6302 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006303 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006304 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006305 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07006306 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006307 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07006308}
6309
6310// lambda_param_maybe_default: lambda_param default? ',' | lambda_param default? &':'
6311static NameDefaultPair*
6312lambda_param_maybe_default_rule(Parser *p)
6313{
6314 if (p->error_indicator) {
6315 return NULL;
6316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006317 NameDefaultPair* _res = NULL;
6318 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006319 { // lambda_param default? ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006320 if (p->error_indicator) {
6321 return NULL;
6322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006323 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07006324 arg_ty a;
6325 void *c;
Guido van Rossum3941d972020-05-01 09:42:03 -07006326 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006327 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006328 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006329 (c = default_rule(p), 1) // default?
Guido van Rossum3941d972020-05-01 09:42:03 -07006330 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006331 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07006332 )
6333 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006334 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
6335 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006336 p->error_indicator = 1;
6337 return NULL;
6338 }
6339 goto done;
6340 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006341 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006342 }
6343 { // lambda_param default? &':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006344 if (p->error_indicator) {
6345 return NULL;
6346 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006347 arg_ty a;
6348 void *c;
6349 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006350 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07006351 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006352 (c = default_rule(p), 1) // default?
Guido van Rossum3941d972020-05-01 09:42:03 -07006353 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006354 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07006355 )
6356 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006357 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
6358 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07006359 p->error_indicator = 1;
6360 return NULL;
6361 }
6362 goto done;
6363 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006364 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07006365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006366 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07006367 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006368 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07006369}
6370
6371// lambda_param: NAME
6372static arg_ty
6373lambda_param_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006374{
6375 if (p->error_indicator) {
6376 return NULL;
6377 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006378 arg_ty _res = NULL;
6379 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006380 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6381 p->error_indicator = 1;
6382 return NULL;
6383 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006384 int _start_lineno = p->tokens[_mark]->lineno;
6385 UNUSED(_start_lineno); // Only used by EXTRA macro
6386 int _start_col_offset = p->tokens[_mark]->col_offset;
6387 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006388 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006389 if (p->error_indicator) {
6390 return NULL;
6391 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006392 expr_ty a;
6393 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006394 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006395 )
6396 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006397 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6398 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006399 return NULL;
6400 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006401 int _end_lineno = _token->end_lineno;
6402 UNUSED(_end_lineno); // Only used by EXTRA macro
6403 int _end_col_offset = _token->end_col_offset;
6404 UNUSED(_end_col_offset); // Only used by EXTRA macro
6405 _res = _Py_arg ( a -> v . Name . id , NULL , NULL , EXTRA );
6406 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006407 p->error_indicator = 1;
6408 return NULL;
6409 }
6410 goto done;
6411 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006412 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006413 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006414 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006415 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006416 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006417}
6418
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006419// disjunction: conjunction (('or' conjunction))+ | conjunction
6420static expr_ty
6421disjunction_rule(Parser *p)
6422{
6423 if (p->error_indicator) {
6424 return NULL;
6425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006426 expr_ty _res = NULL;
6427 if (_PyPegen_is_memoized(p, disjunction_type, &_res))
6428 return _res;
6429 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006430 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6431 p->error_indicator = 1;
6432 return NULL;
6433 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006434 int _start_lineno = p->tokens[_mark]->lineno;
6435 UNUSED(_start_lineno); // Only used by EXTRA macro
6436 int _start_col_offset = p->tokens[_mark]->col_offset;
6437 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006438 { // conjunction (('or' conjunction))+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006439 if (p->error_indicator) {
6440 return NULL;
6441 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006442 expr_ty a;
6443 asdl_seq * b;
6444 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006445 (a = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006446 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006447 (b = _loop1_89_rule(p)) // (('or' conjunction))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006448 )
6449 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006450 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6451 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006452 return NULL;
6453 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006454 int _end_lineno = _token->end_lineno;
6455 UNUSED(_end_lineno); // Only used by EXTRA macro
6456 int _end_col_offset = _token->end_col_offset;
6457 UNUSED(_end_col_offset); // Only used by EXTRA macro
6458 _res = _Py_BoolOp ( Or , CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
6459 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006460 p->error_indicator = 1;
6461 return NULL;
6462 }
6463 goto done;
6464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006465 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006466 }
6467 { // conjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006468 if (p->error_indicator) {
6469 return NULL;
6470 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006471 expr_ty conjunction_var;
6472 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006473 (conjunction_var = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006474 )
6475 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006476 _res = conjunction_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006477 goto done;
6478 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006479 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006481 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006482 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006483 _PyPegen_insert_memo(p, _mark, disjunction_type, _res);
6484 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006485}
6486
6487// conjunction: inversion (('and' inversion))+ | inversion
6488static expr_ty
6489conjunction_rule(Parser *p)
6490{
6491 if (p->error_indicator) {
6492 return NULL;
6493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006494 expr_ty _res = NULL;
6495 if (_PyPegen_is_memoized(p, conjunction_type, &_res))
6496 return _res;
6497 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006498 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6499 p->error_indicator = 1;
6500 return NULL;
6501 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006502 int _start_lineno = p->tokens[_mark]->lineno;
6503 UNUSED(_start_lineno); // Only used by EXTRA macro
6504 int _start_col_offset = p->tokens[_mark]->col_offset;
6505 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006506 { // inversion (('and' inversion))+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006507 if (p->error_indicator) {
6508 return NULL;
6509 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006510 expr_ty a;
6511 asdl_seq * b;
6512 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006513 (a = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006514 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006515 (b = _loop1_90_rule(p)) // (('and' inversion))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006516 )
6517 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006518 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6519 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006520 return NULL;
6521 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006522 int _end_lineno = _token->end_lineno;
6523 UNUSED(_end_lineno); // Only used by EXTRA macro
6524 int _end_col_offset = _token->end_col_offset;
6525 UNUSED(_end_col_offset); // Only used by EXTRA macro
6526 _res = _Py_BoolOp ( And , CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
6527 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006528 p->error_indicator = 1;
6529 return NULL;
6530 }
6531 goto done;
6532 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006533 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006534 }
6535 { // inversion
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006536 if (p->error_indicator) {
6537 return NULL;
6538 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006539 expr_ty inversion_var;
6540 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006541 (inversion_var = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006542 )
6543 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006544 _res = inversion_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006545 goto done;
6546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006547 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006548 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006549 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006550 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006551 _PyPegen_insert_memo(p, _mark, conjunction_type, _res);
6552 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006553}
6554
6555// inversion: 'not' inversion | comparison
6556static expr_ty
6557inversion_rule(Parser *p)
6558{
6559 if (p->error_indicator) {
6560 return NULL;
6561 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006562 expr_ty _res = NULL;
6563 if (_PyPegen_is_memoized(p, inversion_type, &_res))
6564 return _res;
6565 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006566 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6567 p->error_indicator = 1;
6568 return NULL;
6569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006570 int _start_lineno = p->tokens[_mark]->lineno;
6571 UNUSED(_start_lineno); // Only used by EXTRA macro
6572 int _start_col_offset = p->tokens[_mark]->col_offset;
6573 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006574 { // 'not' inversion
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006575 if (p->error_indicator) {
6576 return NULL;
6577 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006578 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006579 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006580 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006581 (_keyword = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006582 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006583 (a = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006584 )
6585 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006586 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6587 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006588 return NULL;
6589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006590 int _end_lineno = _token->end_lineno;
6591 UNUSED(_end_lineno); // Only used by EXTRA macro
6592 int _end_col_offset = _token->end_col_offset;
6593 UNUSED(_end_col_offset); // Only used by EXTRA macro
6594 _res = _Py_UnaryOp ( Not , a , EXTRA );
6595 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006596 p->error_indicator = 1;
6597 return NULL;
6598 }
6599 goto done;
6600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006601 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006602 }
6603 { // comparison
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006604 if (p->error_indicator) {
6605 return NULL;
6606 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006607 expr_ty comparison_var;
6608 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006609 (comparison_var = comparison_rule(p)) // comparison
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006610 )
6611 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006612 _res = comparison_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006613 goto done;
6614 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006615 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006616 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006617 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006618 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006619 _PyPegen_insert_memo(p, _mark, inversion_type, _res);
6620 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006621}
6622
6623// comparison: bitwise_or compare_op_bitwise_or_pair+ | bitwise_or
6624static expr_ty
6625comparison_rule(Parser *p)
6626{
6627 if (p->error_indicator) {
6628 return NULL;
6629 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006630 expr_ty _res = NULL;
6631 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006632 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6633 p->error_indicator = 1;
6634 return NULL;
6635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006636 int _start_lineno = p->tokens[_mark]->lineno;
6637 UNUSED(_start_lineno); // Only used by EXTRA macro
6638 int _start_col_offset = p->tokens[_mark]->col_offset;
6639 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006640 { // bitwise_or compare_op_bitwise_or_pair+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006641 if (p->error_indicator) {
6642 return NULL;
6643 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006644 expr_ty a;
6645 asdl_seq * b;
6646 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006647 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006648 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006649 (b = _loop1_91_rule(p)) // compare_op_bitwise_or_pair+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006650 )
6651 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006652 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6653 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006654 return NULL;
6655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006656 int _end_lineno = _token->end_lineno;
6657 UNUSED(_end_lineno); // Only used by EXTRA macro
6658 int _end_col_offset = _token->end_col_offset;
6659 UNUSED(_end_col_offset); // Only used by EXTRA macro
6660 _res = _Py_Compare ( a , CHECK ( _PyPegen_get_cmpops ( p , b ) ) , CHECK ( _PyPegen_get_exprs ( p , b ) ) , EXTRA );
6661 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006662 p->error_indicator = 1;
6663 return NULL;
6664 }
6665 goto done;
6666 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006667 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006668 }
6669 { // bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006670 if (p->error_indicator) {
6671 return NULL;
6672 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006673 expr_ty bitwise_or_var;
6674 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006675 (bitwise_or_var = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006676 )
6677 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006678 _res = bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006679 goto done;
6680 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006681 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006682 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006683 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006684 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006685 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006686}
6687
6688// compare_op_bitwise_or_pair:
6689// | eq_bitwise_or
6690// | noteq_bitwise_or
6691// | lte_bitwise_or
6692// | lt_bitwise_or
6693// | gte_bitwise_or
6694// | gt_bitwise_or
6695// | notin_bitwise_or
6696// | in_bitwise_or
6697// | isnot_bitwise_or
6698// | is_bitwise_or
6699static CmpopExprPair*
6700compare_op_bitwise_or_pair_rule(Parser *p)
6701{
6702 if (p->error_indicator) {
6703 return NULL;
6704 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006705 CmpopExprPair* _res = NULL;
6706 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006707 { // eq_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006708 if (p->error_indicator) {
6709 return NULL;
6710 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006711 CmpopExprPair* eq_bitwise_or_var;
6712 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006713 (eq_bitwise_or_var = eq_bitwise_or_rule(p)) // eq_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006714 )
6715 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006716 _res = eq_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006717 goto done;
6718 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006719 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006720 }
6721 { // noteq_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006722 if (p->error_indicator) {
6723 return NULL;
6724 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006725 CmpopExprPair* noteq_bitwise_or_var;
6726 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006727 (noteq_bitwise_or_var = noteq_bitwise_or_rule(p)) // noteq_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006728 )
6729 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006730 _res = noteq_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006731 goto done;
6732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006733 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006734 }
6735 { // lte_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006736 if (p->error_indicator) {
6737 return NULL;
6738 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006739 CmpopExprPair* lte_bitwise_or_var;
6740 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006741 (lte_bitwise_or_var = lte_bitwise_or_rule(p)) // lte_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006742 )
6743 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006744 _res = lte_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006745 goto done;
6746 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006747 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006748 }
6749 { // lt_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006750 if (p->error_indicator) {
6751 return NULL;
6752 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006753 CmpopExprPair* lt_bitwise_or_var;
6754 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006755 (lt_bitwise_or_var = lt_bitwise_or_rule(p)) // lt_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006756 )
6757 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006758 _res = lt_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006759 goto done;
6760 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006761 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006762 }
6763 { // gte_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006764 if (p->error_indicator) {
6765 return NULL;
6766 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006767 CmpopExprPair* gte_bitwise_or_var;
6768 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006769 (gte_bitwise_or_var = gte_bitwise_or_rule(p)) // gte_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006770 )
6771 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006772 _res = gte_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006773 goto done;
6774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006775 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006776 }
6777 { // gt_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006778 if (p->error_indicator) {
6779 return NULL;
6780 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006781 CmpopExprPair* gt_bitwise_or_var;
6782 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006783 (gt_bitwise_or_var = gt_bitwise_or_rule(p)) // gt_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006784 )
6785 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006786 _res = gt_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006787 goto done;
6788 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006789 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006790 }
6791 { // notin_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006792 if (p->error_indicator) {
6793 return NULL;
6794 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006795 CmpopExprPair* notin_bitwise_or_var;
6796 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006797 (notin_bitwise_or_var = notin_bitwise_or_rule(p)) // notin_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006798 )
6799 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006800 _res = notin_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006801 goto done;
6802 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006803 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006804 }
6805 { // in_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006806 if (p->error_indicator) {
6807 return NULL;
6808 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006809 CmpopExprPair* in_bitwise_or_var;
6810 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006811 (in_bitwise_or_var = in_bitwise_or_rule(p)) // in_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006812 )
6813 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006814 _res = in_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006815 goto done;
6816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006817 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006818 }
6819 { // isnot_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006820 if (p->error_indicator) {
6821 return NULL;
6822 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006823 CmpopExprPair* isnot_bitwise_or_var;
6824 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006825 (isnot_bitwise_or_var = isnot_bitwise_or_rule(p)) // isnot_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006826 )
6827 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006828 _res = isnot_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006829 goto done;
6830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006831 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006832 }
6833 { // is_bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006834 if (p->error_indicator) {
6835 return NULL;
6836 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006837 CmpopExprPair* is_bitwise_or_var;
6838 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006839 (is_bitwise_or_var = is_bitwise_or_rule(p)) // is_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006840 )
6841 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006842 _res = is_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006843 goto done;
6844 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006845 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006846 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006847 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006848 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006849 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006850}
6851
6852// eq_bitwise_or: '==' bitwise_or
6853static CmpopExprPair*
6854eq_bitwise_or_rule(Parser *p)
6855{
6856 if (p->error_indicator) {
6857 return NULL;
6858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006859 CmpopExprPair* _res = NULL;
6860 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006861 { // '==' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006862 if (p->error_indicator) {
6863 return NULL;
6864 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006865 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006866 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006867 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006868 (_literal = _PyPegen_expect_token(p, 27)) // token='=='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006869 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006870 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006871 )
6872 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006873 _res = _PyPegen_cmpop_expr_pair ( p , Eq , a );
6874 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006875 p->error_indicator = 1;
6876 return NULL;
6877 }
6878 goto done;
6879 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006880 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006881 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006882 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006883 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006884 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006885}
6886
Pablo Galindo2b74c832020-04-27 18:02:07 +01006887// noteq_bitwise_or: ('!=') bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006888static CmpopExprPair*
6889noteq_bitwise_or_rule(Parser *p)
6890{
6891 if (p->error_indicator) {
6892 return NULL;
6893 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006894 CmpopExprPair* _res = NULL;
6895 int _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +01006896 { // ('!=') bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006897 if (p->error_indicator) {
6898 return NULL;
6899 }
Guido van Rossum3941d972020-05-01 09:42:03 -07006900 void *_tmp_92_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006901 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006902 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006903 (_tmp_92_var = _tmp_92_rule(p)) // '!='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006904 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006905 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006906 )
6907 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006908 _res = _PyPegen_cmpop_expr_pair ( p , NotEq , a );
6909 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006910 p->error_indicator = 1;
6911 return NULL;
6912 }
6913 goto done;
6914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006915 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006916 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006917 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006918 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006919 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006920}
6921
6922// lte_bitwise_or: '<=' bitwise_or
6923static CmpopExprPair*
6924lte_bitwise_or_rule(Parser *p)
6925{
6926 if (p->error_indicator) {
6927 return NULL;
6928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006929 CmpopExprPair* _res = NULL;
6930 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006931 { // '<=' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006932 if (p->error_indicator) {
6933 return NULL;
6934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006935 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006936 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006937 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006938 (_literal = _PyPegen_expect_token(p, 29)) // token='<='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006939 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006940 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006941 )
6942 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006943 _res = _PyPegen_cmpop_expr_pair ( p , LtE , a );
6944 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006945 p->error_indicator = 1;
6946 return NULL;
6947 }
6948 goto done;
6949 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006950 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006951 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006952 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006953 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006954 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006955}
6956
6957// lt_bitwise_or: '<' bitwise_or
6958static CmpopExprPair*
6959lt_bitwise_or_rule(Parser *p)
6960{
6961 if (p->error_indicator) {
6962 return NULL;
6963 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006964 CmpopExprPair* _res = NULL;
6965 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006966 { // '<' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03006967 if (p->error_indicator) {
6968 return NULL;
6969 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006970 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006971 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006972 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006973 (_literal = _PyPegen_expect_token(p, 20)) // token='<'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006974 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006975 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006976 )
6977 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006978 _res = _PyPegen_cmpop_expr_pair ( p , Lt , a );
6979 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006980 p->error_indicator = 1;
6981 return NULL;
6982 }
6983 goto done;
6984 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006985 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006987 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006988 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006989 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006990}
6991
6992// gte_bitwise_or: '>=' bitwise_or
6993static CmpopExprPair*
6994gte_bitwise_or_rule(Parser *p)
6995{
6996 if (p->error_indicator) {
6997 return NULL;
6998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006999 CmpopExprPair* _res = NULL;
7000 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007001 { // '>=' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007002 if (p->error_indicator) {
7003 return NULL;
7004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007005 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007006 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007007 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007008 (_literal = _PyPegen_expect_token(p, 30)) // token='>='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007009 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007010 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007011 )
7012 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007013 _res = _PyPegen_cmpop_expr_pair ( p , GtE , a );
7014 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007015 p->error_indicator = 1;
7016 return NULL;
7017 }
7018 goto done;
7019 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007020 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007022 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007023 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007024 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007025}
7026
7027// gt_bitwise_or: '>' bitwise_or
7028static CmpopExprPair*
7029gt_bitwise_or_rule(Parser *p)
7030{
7031 if (p->error_indicator) {
7032 return NULL;
7033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007034 CmpopExprPair* _res = NULL;
7035 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007036 { // '>' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007037 if (p->error_indicator) {
7038 return NULL;
7039 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007040 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007041 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007042 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007043 (_literal = _PyPegen_expect_token(p, 21)) // token='>'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007044 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007045 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007046 )
7047 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007048 _res = _PyPegen_cmpop_expr_pair ( p , Gt , a );
7049 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007050 p->error_indicator = 1;
7051 return NULL;
7052 }
7053 goto done;
7054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007055 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007057 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007058 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007059 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007060}
7061
7062// notin_bitwise_or: 'not' 'in' bitwise_or
7063static CmpopExprPair*
7064notin_bitwise_or_rule(Parser *p)
7065{
7066 if (p->error_indicator) {
7067 return NULL;
7068 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007069 CmpopExprPair* _res = NULL;
7070 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007071 { // 'not' 'in' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007072 if (p->error_indicator) {
7073 return NULL;
7074 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007075 Token * _keyword;
7076 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007077 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007078 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007079 (_keyword = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007080 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007081 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007082 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007083 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007084 )
7085 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007086 _res = _PyPegen_cmpop_expr_pair ( p , NotIn , a );
7087 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007088 p->error_indicator = 1;
7089 return NULL;
7090 }
7091 goto done;
7092 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007093 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007095 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007096 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007097 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007098}
7099
7100// in_bitwise_or: 'in' bitwise_or
7101static CmpopExprPair*
7102in_bitwise_or_rule(Parser *p)
7103{
7104 if (p->error_indicator) {
7105 return NULL;
7106 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007107 CmpopExprPair* _res = NULL;
7108 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007109 { // 'in' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007110 if (p->error_indicator) {
7111 return NULL;
7112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007113 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007114 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007115 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007116 (_keyword = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007117 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007118 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007119 )
7120 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007121 _res = _PyPegen_cmpop_expr_pair ( p , In , a );
7122 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007123 p->error_indicator = 1;
7124 return NULL;
7125 }
7126 goto done;
7127 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007128 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007129 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007130 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007131 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007132 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007133}
7134
7135// isnot_bitwise_or: 'is' 'not' bitwise_or
7136static CmpopExprPair*
7137isnot_bitwise_or_rule(Parser *p)
7138{
7139 if (p->error_indicator) {
7140 return NULL;
7141 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007142 CmpopExprPair* _res = NULL;
7143 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007144 { // 'is' 'not' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007145 if (p->error_indicator) {
7146 return NULL;
7147 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007148 Token * _keyword;
7149 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007150 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007151 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007152 (_keyword = _PyPegen_expect_token(p, 526)) // token='is'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007153 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007154 (_keyword_1 = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007155 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007156 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007157 )
7158 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007159 _res = _PyPegen_cmpop_expr_pair ( p , IsNot , a );
7160 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007161 p->error_indicator = 1;
7162 return NULL;
7163 }
7164 goto done;
7165 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007166 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007167 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007168 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007169 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007170 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007171}
7172
7173// is_bitwise_or: 'is' bitwise_or
7174static CmpopExprPair*
7175is_bitwise_or_rule(Parser *p)
7176{
7177 if (p->error_indicator) {
7178 return NULL;
7179 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007180 CmpopExprPair* _res = NULL;
7181 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007182 { // 'is' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007183 if (p->error_indicator) {
7184 return NULL;
7185 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007186 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007187 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007188 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007189 (_keyword = _PyPegen_expect_token(p, 526)) // token='is'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007190 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007191 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007192 )
7193 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007194 _res = _PyPegen_cmpop_expr_pair ( p , Is , a );
7195 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007196 p->error_indicator = 1;
7197 return NULL;
7198 }
7199 goto done;
7200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007201 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007202 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007203 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007204 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007205 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007206}
7207
7208// Left-recursive
7209// bitwise_or: bitwise_or '|' bitwise_xor | bitwise_xor
7210static expr_ty bitwise_or_raw(Parser *);
7211static expr_ty
7212bitwise_or_rule(Parser *p)
7213{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007214 expr_ty _res = NULL;
7215 if (_PyPegen_is_memoized(p, bitwise_or_type, &_res))
7216 return _res;
7217 int _mark = p->mark;
7218 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007219 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007220 int tmpvar_1 = _PyPegen_update_memo(p, _mark, bitwise_or_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007221 if (tmpvar_1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007222 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007223 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007224 p->mark = _mark;
7225 void *_raw = bitwise_or_raw(p);
7226 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007227 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007228 _resmark = p->mark;
7229 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007230 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007231 p->mark = _resmark;
7232 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007233}
7234static expr_ty
7235bitwise_or_raw(Parser *p)
7236{
7237 if (p->error_indicator) {
7238 return NULL;
7239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007240 expr_ty _res = NULL;
7241 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007242 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7243 p->error_indicator = 1;
7244 return NULL;
7245 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007246 int _start_lineno = p->tokens[_mark]->lineno;
7247 UNUSED(_start_lineno); // Only used by EXTRA macro
7248 int _start_col_offset = p->tokens[_mark]->col_offset;
7249 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007250 { // bitwise_or '|' bitwise_xor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007251 if (p->error_indicator) {
7252 return NULL;
7253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007254 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007255 expr_ty a;
7256 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007257 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007258 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007259 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007260 (_literal = _PyPegen_expect_token(p, 18)) // token='|'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007261 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007262 (b = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007263 )
7264 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007265 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7266 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007267 return NULL;
7268 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007269 int _end_lineno = _token->end_lineno;
7270 UNUSED(_end_lineno); // Only used by EXTRA macro
7271 int _end_col_offset = _token->end_col_offset;
7272 UNUSED(_end_col_offset); // Only used by EXTRA macro
7273 _res = _Py_BinOp ( a , BitOr , b , EXTRA );
7274 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007275 p->error_indicator = 1;
7276 return NULL;
7277 }
7278 goto done;
7279 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007280 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007281 }
7282 { // bitwise_xor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007283 if (p->error_indicator) {
7284 return NULL;
7285 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007286 expr_ty bitwise_xor_var;
7287 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007288 (bitwise_xor_var = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007289 )
7290 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007291 _res = bitwise_xor_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007292 goto done;
7293 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007294 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007295 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007296 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007297 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007298 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007299}
7300
7301// Left-recursive
7302// bitwise_xor: bitwise_xor '^' bitwise_and | bitwise_and
7303static expr_ty bitwise_xor_raw(Parser *);
7304static expr_ty
7305bitwise_xor_rule(Parser *p)
7306{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007307 expr_ty _res = NULL;
7308 if (_PyPegen_is_memoized(p, bitwise_xor_type, &_res))
7309 return _res;
7310 int _mark = p->mark;
7311 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007312 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007313 int tmpvar_2 = _PyPegen_update_memo(p, _mark, bitwise_xor_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007314 if (tmpvar_2) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007315 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007317 p->mark = _mark;
7318 void *_raw = bitwise_xor_raw(p);
7319 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007320 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007321 _resmark = p->mark;
7322 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007324 p->mark = _resmark;
7325 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007326}
7327static expr_ty
7328bitwise_xor_raw(Parser *p)
7329{
7330 if (p->error_indicator) {
7331 return NULL;
7332 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007333 expr_ty _res = NULL;
7334 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007335 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7336 p->error_indicator = 1;
7337 return NULL;
7338 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007339 int _start_lineno = p->tokens[_mark]->lineno;
7340 UNUSED(_start_lineno); // Only used by EXTRA macro
7341 int _start_col_offset = p->tokens[_mark]->col_offset;
7342 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007343 { // bitwise_xor '^' bitwise_and
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007344 if (p->error_indicator) {
7345 return NULL;
7346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007347 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007348 expr_ty a;
7349 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007350 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007351 (a = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007352 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007353 (_literal = _PyPegen_expect_token(p, 32)) // token='^'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007354 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007355 (b = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007356 )
7357 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007358 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7359 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007360 return NULL;
7361 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007362 int _end_lineno = _token->end_lineno;
7363 UNUSED(_end_lineno); // Only used by EXTRA macro
7364 int _end_col_offset = _token->end_col_offset;
7365 UNUSED(_end_col_offset); // Only used by EXTRA macro
7366 _res = _Py_BinOp ( a , BitXor , b , EXTRA );
7367 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007368 p->error_indicator = 1;
7369 return NULL;
7370 }
7371 goto done;
7372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007373 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007374 }
7375 { // bitwise_and
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007376 if (p->error_indicator) {
7377 return NULL;
7378 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007379 expr_ty bitwise_and_var;
7380 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007381 (bitwise_and_var = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007382 )
7383 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007384 _res = bitwise_and_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007385 goto done;
7386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007387 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007388 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007389 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007390 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007391 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007392}
7393
7394// Left-recursive
7395// bitwise_and: bitwise_and '&' shift_expr | shift_expr
7396static expr_ty bitwise_and_raw(Parser *);
7397static expr_ty
7398bitwise_and_rule(Parser *p)
7399{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007400 expr_ty _res = NULL;
7401 if (_PyPegen_is_memoized(p, bitwise_and_type, &_res))
7402 return _res;
7403 int _mark = p->mark;
7404 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007405 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007406 int tmpvar_3 = _PyPegen_update_memo(p, _mark, bitwise_and_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007407 if (tmpvar_3) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007408 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007409 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007410 p->mark = _mark;
7411 void *_raw = bitwise_and_raw(p);
7412 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007413 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007414 _resmark = p->mark;
7415 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007416 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007417 p->mark = _resmark;
7418 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007419}
7420static expr_ty
7421bitwise_and_raw(Parser *p)
7422{
7423 if (p->error_indicator) {
7424 return NULL;
7425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007426 expr_ty _res = NULL;
7427 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007428 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7429 p->error_indicator = 1;
7430 return NULL;
7431 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007432 int _start_lineno = p->tokens[_mark]->lineno;
7433 UNUSED(_start_lineno); // Only used by EXTRA macro
7434 int _start_col_offset = p->tokens[_mark]->col_offset;
7435 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007436 { // bitwise_and '&' shift_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007437 if (p->error_indicator) {
7438 return NULL;
7439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007440 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007441 expr_ty a;
7442 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007443 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007444 (a = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007445 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007446 (_literal = _PyPegen_expect_token(p, 19)) // token='&'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007447 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007448 (b = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007449 )
7450 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007451 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7452 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007453 return NULL;
7454 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007455 int _end_lineno = _token->end_lineno;
7456 UNUSED(_end_lineno); // Only used by EXTRA macro
7457 int _end_col_offset = _token->end_col_offset;
7458 UNUSED(_end_col_offset); // Only used by EXTRA macro
7459 _res = _Py_BinOp ( a , BitAnd , b , EXTRA );
7460 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007461 p->error_indicator = 1;
7462 return NULL;
7463 }
7464 goto done;
7465 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007466 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007467 }
7468 { // shift_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007469 if (p->error_indicator) {
7470 return NULL;
7471 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007472 expr_ty shift_expr_var;
7473 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007474 (shift_expr_var = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007475 )
7476 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007477 _res = shift_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007478 goto done;
7479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007480 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007481 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007482 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007483 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007484 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007485}
7486
7487// Left-recursive
7488// shift_expr: shift_expr '<<' sum | shift_expr '>>' sum | sum
7489static expr_ty shift_expr_raw(Parser *);
7490static expr_ty
7491shift_expr_rule(Parser *p)
7492{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007493 expr_ty _res = NULL;
7494 if (_PyPegen_is_memoized(p, shift_expr_type, &_res))
7495 return _res;
7496 int _mark = p->mark;
7497 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007498 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007499 int tmpvar_4 = _PyPegen_update_memo(p, _mark, shift_expr_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007500 if (tmpvar_4) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007501 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007503 p->mark = _mark;
7504 void *_raw = shift_expr_raw(p);
7505 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007506 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007507 _resmark = p->mark;
7508 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007510 p->mark = _resmark;
7511 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007512}
7513static expr_ty
7514shift_expr_raw(Parser *p)
7515{
7516 if (p->error_indicator) {
7517 return NULL;
7518 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007519 expr_ty _res = NULL;
7520 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007521 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7522 p->error_indicator = 1;
7523 return NULL;
7524 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007525 int _start_lineno = p->tokens[_mark]->lineno;
7526 UNUSED(_start_lineno); // Only used by EXTRA macro
7527 int _start_col_offset = p->tokens[_mark]->col_offset;
7528 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007529 { // shift_expr '<<' sum
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007530 if (p->error_indicator) {
7531 return NULL;
7532 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007533 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007534 expr_ty a;
7535 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007536 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007537 (a = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007538 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007539 (_literal = _PyPegen_expect_token(p, 33)) // token='<<'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007540 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007541 (b = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007542 )
7543 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007544 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7545 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007546 return NULL;
7547 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007548 int _end_lineno = _token->end_lineno;
7549 UNUSED(_end_lineno); // Only used by EXTRA macro
7550 int _end_col_offset = _token->end_col_offset;
7551 UNUSED(_end_col_offset); // Only used by EXTRA macro
7552 _res = _Py_BinOp ( a , LShift , b , EXTRA );
7553 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007554 p->error_indicator = 1;
7555 return NULL;
7556 }
7557 goto done;
7558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007559 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007560 }
7561 { // shift_expr '>>' sum
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007562 if (p->error_indicator) {
7563 return NULL;
7564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007565 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007566 expr_ty a;
7567 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007568 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007569 (a = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007570 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007571 (_literal = _PyPegen_expect_token(p, 34)) // token='>>'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007572 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007573 (b = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007574 )
7575 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007576 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7577 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007578 return NULL;
7579 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007580 int _end_lineno = _token->end_lineno;
7581 UNUSED(_end_lineno); // Only used by EXTRA macro
7582 int _end_col_offset = _token->end_col_offset;
7583 UNUSED(_end_col_offset); // Only used by EXTRA macro
7584 _res = _Py_BinOp ( a , RShift , b , EXTRA );
7585 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007586 p->error_indicator = 1;
7587 return NULL;
7588 }
7589 goto done;
7590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007591 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007592 }
7593 { // sum
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007594 if (p->error_indicator) {
7595 return NULL;
7596 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007597 expr_ty sum_var;
7598 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007599 (sum_var = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007600 )
7601 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007602 _res = sum_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007603 goto done;
7604 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007605 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007606 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007607 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007608 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007609 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007610}
7611
7612// Left-recursive
7613// sum: sum '+' term | sum '-' term | term
7614static expr_ty sum_raw(Parser *);
7615static expr_ty
7616sum_rule(Parser *p)
7617{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007618 expr_ty _res = NULL;
7619 if (_PyPegen_is_memoized(p, sum_type, &_res))
7620 return _res;
7621 int _mark = p->mark;
7622 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007623 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007624 int tmpvar_5 = _PyPegen_update_memo(p, _mark, sum_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007625 if (tmpvar_5) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007626 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007628 p->mark = _mark;
7629 void *_raw = sum_raw(p);
7630 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007631 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007632 _resmark = p->mark;
7633 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007634 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007635 p->mark = _resmark;
7636 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007637}
7638static expr_ty
7639sum_raw(Parser *p)
7640{
7641 if (p->error_indicator) {
7642 return NULL;
7643 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007644 expr_ty _res = NULL;
7645 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007646 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7647 p->error_indicator = 1;
7648 return NULL;
7649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007650 int _start_lineno = p->tokens[_mark]->lineno;
7651 UNUSED(_start_lineno); // Only used by EXTRA macro
7652 int _start_col_offset = p->tokens[_mark]->col_offset;
7653 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007654 { // sum '+' term
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007655 if (p->error_indicator) {
7656 return NULL;
7657 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007658 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007659 expr_ty a;
7660 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007661 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007662 (a = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007663 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007664 (_literal = _PyPegen_expect_token(p, 14)) // token='+'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007665 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007666 (b = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007667 )
7668 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007669 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7670 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007671 return NULL;
7672 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007673 int _end_lineno = _token->end_lineno;
7674 UNUSED(_end_lineno); // Only used by EXTRA macro
7675 int _end_col_offset = _token->end_col_offset;
7676 UNUSED(_end_col_offset); // Only used by EXTRA macro
7677 _res = _Py_BinOp ( a , Add , b , EXTRA );
7678 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007679 p->error_indicator = 1;
7680 return NULL;
7681 }
7682 goto done;
7683 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007684 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007685 }
7686 { // sum '-' term
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007687 if (p->error_indicator) {
7688 return NULL;
7689 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007690 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007691 expr_ty a;
7692 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007693 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007694 (a = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007695 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007696 (_literal = _PyPegen_expect_token(p, 15)) // token='-'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007697 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007698 (b = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007699 )
7700 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007701 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7702 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007703 return NULL;
7704 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007705 int _end_lineno = _token->end_lineno;
7706 UNUSED(_end_lineno); // Only used by EXTRA macro
7707 int _end_col_offset = _token->end_col_offset;
7708 UNUSED(_end_col_offset); // Only used by EXTRA macro
7709 _res = _Py_BinOp ( a , Sub , b , EXTRA );
7710 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007711 p->error_indicator = 1;
7712 return NULL;
7713 }
7714 goto done;
7715 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007716 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007717 }
7718 { // term
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007719 if (p->error_indicator) {
7720 return NULL;
7721 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007722 expr_ty term_var;
7723 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007724 (term_var = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007725 )
7726 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007727 _res = term_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007728 goto done;
7729 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007730 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007731 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007732 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007733 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007734 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007735}
7736
7737// Left-recursive
7738// term:
7739// | term '*' factor
7740// | term '/' factor
7741// | term '//' factor
7742// | term '%' factor
7743// | term '@' factor
7744// | factor
7745static expr_ty term_raw(Parser *);
7746static expr_ty
7747term_rule(Parser *p)
7748{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007749 expr_ty _res = NULL;
7750 if (_PyPegen_is_memoized(p, term_type, &_res))
7751 return _res;
7752 int _mark = p->mark;
7753 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007754 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007755 int tmpvar_6 = _PyPegen_update_memo(p, _mark, term_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007756 if (tmpvar_6) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007757 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007758 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007759 p->mark = _mark;
7760 void *_raw = term_raw(p);
7761 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007762 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007763 _resmark = p->mark;
7764 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007765 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007766 p->mark = _resmark;
7767 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007768}
7769static expr_ty
7770term_raw(Parser *p)
7771{
7772 if (p->error_indicator) {
7773 return NULL;
7774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007775 expr_ty _res = NULL;
7776 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007777 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7778 p->error_indicator = 1;
7779 return NULL;
7780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007781 int _start_lineno = p->tokens[_mark]->lineno;
7782 UNUSED(_start_lineno); // Only used by EXTRA macro
7783 int _start_col_offset = p->tokens[_mark]->col_offset;
7784 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007785 { // term '*' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007786 if (p->error_indicator) {
7787 return NULL;
7788 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007789 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007790 expr_ty a;
7791 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007792 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007793 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007794 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007795 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007796 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007797 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007798 )
7799 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007800 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7801 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007802 return NULL;
7803 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007804 int _end_lineno = _token->end_lineno;
7805 UNUSED(_end_lineno); // Only used by EXTRA macro
7806 int _end_col_offset = _token->end_col_offset;
7807 UNUSED(_end_col_offset); // Only used by EXTRA macro
7808 _res = _Py_BinOp ( a , Mult , b , EXTRA );
7809 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007810 p->error_indicator = 1;
7811 return NULL;
7812 }
7813 goto done;
7814 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007815 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007816 }
7817 { // term '/' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007818 if (p->error_indicator) {
7819 return NULL;
7820 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007821 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007822 expr_ty a;
7823 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007824 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007825 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007826 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007827 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007828 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007829 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007830 )
7831 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007832 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7833 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007834 return NULL;
7835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007836 int _end_lineno = _token->end_lineno;
7837 UNUSED(_end_lineno); // Only used by EXTRA macro
7838 int _end_col_offset = _token->end_col_offset;
7839 UNUSED(_end_col_offset); // Only used by EXTRA macro
7840 _res = _Py_BinOp ( a , Div , b , EXTRA );
7841 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007842 p->error_indicator = 1;
7843 return NULL;
7844 }
7845 goto done;
7846 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007847 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007848 }
7849 { // term '//' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007850 if (p->error_indicator) {
7851 return NULL;
7852 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007853 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007854 expr_ty a;
7855 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007856 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007857 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007858 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007859 (_literal = _PyPegen_expect_token(p, 47)) // token='//'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007860 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007861 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007862 )
7863 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007864 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7865 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007866 return NULL;
7867 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007868 int _end_lineno = _token->end_lineno;
7869 UNUSED(_end_lineno); // Only used by EXTRA macro
7870 int _end_col_offset = _token->end_col_offset;
7871 UNUSED(_end_col_offset); // Only used by EXTRA macro
7872 _res = _Py_BinOp ( a , FloorDiv , b , EXTRA );
7873 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007874 p->error_indicator = 1;
7875 return NULL;
7876 }
7877 goto done;
7878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007879 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007880 }
7881 { // term '%' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007882 if (p->error_indicator) {
7883 return NULL;
7884 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007885 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007886 expr_ty a;
7887 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007888 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007889 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007890 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007891 (_literal = _PyPegen_expect_token(p, 24)) // token='%'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007892 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007893 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007894 )
7895 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007896 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7897 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007898 return NULL;
7899 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007900 int _end_lineno = _token->end_lineno;
7901 UNUSED(_end_lineno); // Only used by EXTRA macro
7902 int _end_col_offset = _token->end_col_offset;
7903 UNUSED(_end_col_offset); // Only used by EXTRA macro
7904 _res = _Py_BinOp ( a , Mod , b , EXTRA );
7905 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007906 p->error_indicator = 1;
7907 return NULL;
7908 }
7909 goto done;
7910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007911 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007912 }
7913 { // term '@' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007914 if (p->error_indicator) {
7915 return NULL;
7916 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007917 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007918 expr_ty a;
7919 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007920 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007921 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007922 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007923 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007924 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007925 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007926 )
7927 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007928 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7929 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007930 return NULL;
7931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007932 int _end_lineno = _token->end_lineno;
7933 UNUSED(_end_lineno); // Only used by EXTRA macro
7934 int _end_col_offset = _token->end_col_offset;
7935 UNUSED(_end_col_offset); // Only used by EXTRA macro
7936 _res = CHECK_VERSION ( 5 , "The '@' operator is" , _Py_BinOp ( a , MatMult , b , EXTRA ) );
7937 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007938 p->error_indicator = 1;
7939 return NULL;
7940 }
7941 goto done;
7942 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007943 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007944 }
7945 { // factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007946 if (p->error_indicator) {
7947 return NULL;
7948 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007949 expr_ty factor_var;
7950 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007951 (factor_var = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007952 )
7953 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007954 _res = factor_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007955 goto done;
7956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007957 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007958 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007959 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007960 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007961 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007962}
7963
7964// factor: '+' factor | '-' factor | '~' factor | power
7965static expr_ty
7966factor_rule(Parser *p)
7967{
7968 if (p->error_indicator) {
7969 return NULL;
7970 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007971 expr_ty _res = NULL;
7972 if (_PyPegen_is_memoized(p, factor_type, &_res))
7973 return _res;
7974 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007975 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7976 p->error_indicator = 1;
7977 return NULL;
7978 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007979 int _start_lineno = p->tokens[_mark]->lineno;
7980 UNUSED(_start_lineno); // Only used by EXTRA macro
7981 int _start_col_offset = p->tokens[_mark]->col_offset;
7982 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007983 { // '+' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03007984 if (p->error_indicator) {
7985 return NULL;
7986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007987 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007988 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007989 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007990 (_literal = _PyPegen_expect_token(p, 14)) // token='+'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007991 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007992 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007993 )
7994 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007995 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7996 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007997 return NULL;
7998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007999 int _end_lineno = _token->end_lineno;
8000 UNUSED(_end_lineno); // Only used by EXTRA macro
8001 int _end_col_offset = _token->end_col_offset;
8002 UNUSED(_end_col_offset); // Only used by EXTRA macro
8003 _res = _Py_UnaryOp ( UAdd , a , EXTRA );
8004 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008005 p->error_indicator = 1;
8006 return NULL;
8007 }
8008 goto done;
8009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008010 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008011 }
8012 { // '-' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008013 if (p->error_indicator) {
8014 return NULL;
8015 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008016 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008017 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008018 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008019 (_literal = _PyPegen_expect_token(p, 15)) // token='-'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008020 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008021 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008022 )
8023 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008024 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8025 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008026 return NULL;
8027 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008028 int _end_lineno = _token->end_lineno;
8029 UNUSED(_end_lineno); // Only used by EXTRA macro
8030 int _end_col_offset = _token->end_col_offset;
8031 UNUSED(_end_col_offset); // Only used by EXTRA macro
8032 _res = _Py_UnaryOp ( USub , a , EXTRA );
8033 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008034 p->error_indicator = 1;
8035 return NULL;
8036 }
8037 goto done;
8038 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008039 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008040 }
8041 { // '~' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008042 if (p->error_indicator) {
8043 return NULL;
8044 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008045 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008046 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008047 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008048 (_literal = _PyPegen_expect_token(p, 31)) // token='~'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008049 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008050 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008051 )
8052 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008053 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8054 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008055 return NULL;
8056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008057 int _end_lineno = _token->end_lineno;
8058 UNUSED(_end_lineno); // Only used by EXTRA macro
8059 int _end_col_offset = _token->end_col_offset;
8060 UNUSED(_end_col_offset); // Only used by EXTRA macro
8061 _res = _Py_UnaryOp ( Invert , a , EXTRA );
8062 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008063 p->error_indicator = 1;
8064 return NULL;
8065 }
8066 goto done;
8067 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008068 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008069 }
8070 { // power
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008071 if (p->error_indicator) {
8072 return NULL;
8073 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008074 expr_ty power_var;
8075 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008076 (power_var = power_rule(p)) // power
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008077 )
8078 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008079 _res = power_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008080 goto done;
8081 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008082 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008083 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008084 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008085 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008086 _PyPegen_insert_memo(p, _mark, factor_type, _res);
8087 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008088}
8089
8090// power: await_primary '**' factor | await_primary
8091static expr_ty
8092power_rule(Parser *p)
8093{
8094 if (p->error_indicator) {
8095 return NULL;
8096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008097 expr_ty _res = NULL;
8098 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008099 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8100 p->error_indicator = 1;
8101 return NULL;
8102 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008103 int _start_lineno = p->tokens[_mark]->lineno;
8104 UNUSED(_start_lineno); // Only used by EXTRA macro
8105 int _start_col_offset = p->tokens[_mark]->col_offset;
8106 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008107 { // await_primary '**' factor
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008108 if (p->error_indicator) {
8109 return NULL;
8110 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008111 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008112 expr_ty a;
8113 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008114 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008115 (a = await_primary_rule(p)) // await_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008116 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008117 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008118 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008119 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008120 )
8121 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008122 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8123 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008124 return NULL;
8125 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008126 int _end_lineno = _token->end_lineno;
8127 UNUSED(_end_lineno); // Only used by EXTRA macro
8128 int _end_col_offset = _token->end_col_offset;
8129 UNUSED(_end_col_offset); // Only used by EXTRA macro
8130 _res = _Py_BinOp ( a , Pow , b , EXTRA );
8131 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008132 p->error_indicator = 1;
8133 return NULL;
8134 }
8135 goto done;
8136 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008137 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008138 }
8139 { // await_primary
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008140 if (p->error_indicator) {
8141 return NULL;
8142 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008143 expr_ty await_primary_var;
8144 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008145 (await_primary_var = await_primary_rule(p)) // await_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008146 )
8147 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008148 _res = await_primary_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008149 goto done;
8150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008151 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008153 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008154 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008155 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008156}
8157
8158// await_primary: AWAIT primary | primary
8159static expr_ty
8160await_primary_rule(Parser *p)
8161{
8162 if (p->error_indicator) {
8163 return NULL;
8164 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008165 expr_ty _res = NULL;
8166 if (_PyPegen_is_memoized(p, await_primary_type, &_res))
8167 return _res;
8168 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008169 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8170 p->error_indicator = 1;
8171 return NULL;
8172 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008173 int _start_lineno = p->tokens[_mark]->lineno;
8174 UNUSED(_start_lineno); // Only used by EXTRA macro
8175 int _start_col_offset = p->tokens[_mark]->col_offset;
8176 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008177 { // AWAIT primary
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008178 if (p->error_indicator) {
8179 return NULL;
8180 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008181 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01008182 Token * await_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008183 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008184 (await_var = _PyPegen_expect_token(p, AWAIT)) // token='AWAIT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008185 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008186 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008187 )
8188 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008189 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8190 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008191 return NULL;
8192 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008193 int _end_lineno = _token->end_lineno;
8194 UNUSED(_end_lineno); // Only used by EXTRA macro
8195 int _end_col_offset = _token->end_col_offset;
8196 UNUSED(_end_col_offset); // Only used by EXTRA macro
8197 _res = CHECK_VERSION ( 5 , "Await expressions are" , _Py_Await ( a , EXTRA ) );
8198 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008199 p->error_indicator = 1;
8200 return NULL;
8201 }
8202 goto done;
8203 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008204 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008205 }
8206 { // primary
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008207 if (p->error_indicator) {
8208 return NULL;
8209 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008210 expr_ty primary_var;
8211 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008212 (primary_var = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008213 )
8214 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008215 _res = primary_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008216 goto done;
8217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008218 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008220 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008221 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008222 _PyPegen_insert_memo(p, _mark, await_primary_type, _res);
8223 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008224}
8225
8226// Left-recursive
8227// primary:
8228// | primary '.' NAME
8229// | primary genexp
8230// | primary '(' arguments? ')'
8231// | primary '[' slices ']'
8232// | atom
8233static expr_ty primary_raw(Parser *);
8234static expr_ty
8235primary_rule(Parser *p)
8236{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008237 expr_ty _res = NULL;
8238 if (_PyPegen_is_memoized(p, primary_type, &_res))
8239 return _res;
8240 int _mark = p->mark;
8241 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008242 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008243 int tmpvar_7 = _PyPegen_update_memo(p, _mark, primary_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008244 if (tmpvar_7) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008245 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008247 p->mark = _mark;
8248 void *_raw = primary_raw(p);
8249 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008250 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008251 _resmark = p->mark;
8252 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008254 p->mark = _resmark;
8255 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008256}
8257static expr_ty
8258primary_raw(Parser *p)
8259{
8260 if (p->error_indicator) {
8261 return NULL;
8262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008263 expr_ty _res = NULL;
8264 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008265 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8266 p->error_indicator = 1;
8267 return NULL;
8268 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008269 int _start_lineno = p->tokens[_mark]->lineno;
8270 UNUSED(_start_lineno); // Only used by EXTRA macro
8271 int _start_col_offset = p->tokens[_mark]->col_offset;
8272 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008273 { // primary '.' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008274 if (p->error_indicator) {
8275 return NULL;
8276 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008277 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008278 expr_ty a;
8279 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008280 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008281 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008282 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008283 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008284 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008285 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008286 )
8287 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008288 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8289 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008290 return NULL;
8291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008292 int _end_lineno = _token->end_lineno;
8293 UNUSED(_end_lineno); // Only used by EXTRA macro
8294 int _end_col_offset = _token->end_col_offset;
8295 UNUSED(_end_col_offset); // Only used by EXTRA macro
8296 _res = _Py_Attribute ( a , b -> v . Name . id , Load , EXTRA );
8297 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008298 p->error_indicator = 1;
8299 return NULL;
8300 }
8301 goto done;
8302 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008303 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008304 }
8305 { // primary genexp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008306 if (p->error_indicator) {
8307 return NULL;
8308 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008309 expr_ty a;
8310 expr_ty b;
8311 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008312 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008313 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008314 (b = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008315 )
8316 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008317 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8318 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008319 return NULL;
8320 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008321 int _end_lineno = _token->end_lineno;
8322 UNUSED(_end_lineno); // Only used by EXTRA macro
8323 int _end_col_offset = _token->end_col_offset;
8324 UNUSED(_end_col_offset); // Only used by EXTRA macro
8325 _res = _Py_Call ( a , CHECK ( _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
8326 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008327 p->error_indicator = 1;
8328 return NULL;
8329 }
8330 goto done;
8331 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008332 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008333 }
8334 { // primary '(' arguments? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008335 if (p->error_indicator) {
8336 return NULL;
8337 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008338 Token * _literal;
8339 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008340 expr_ty a;
8341 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008342 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008343 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008344 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008345 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008346 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008347 (b = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008348 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008349 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008350 )
8351 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008352 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8353 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008354 return NULL;
8355 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008356 int _end_lineno = _token->end_lineno;
8357 UNUSED(_end_lineno); // Only used by EXTRA macro
8358 int _end_col_offset = _token->end_col_offset;
8359 UNUSED(_end_col_offset); // Only used by EXTRA macro
8360 _res = _Py_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
8361 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008362 p->error_indicator = 1;
8363 return NULL;
8364 }
8365 goto done;
8366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008367 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008368 }
8369 { // primary '[' slices ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008370 if (p->error_indicator) {
8371 return NULL;
8372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008373 Token * _literal;
8374 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008375 expr_ty a;
8376 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008377 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008378 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008379 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008380 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008381 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008382 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008383 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008384 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008385 )
8386 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008387 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8388 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008389 return NULL;
8390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008391 int _end_lineno = _token->end_lineno;
8392 UNUSED(_end_lineno); // Only used by EXTRA macro
8393 int _end_col_offset = _token->end_col_offset;
8394 UNUSED(_end_col_offset); // Only used by EXTRA macro
8395 _res = _Py_Subscript ( a , b , Load , EXTRA );
8396 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008397 p->error_indicator = 1;
8398 return NULL;
8399 }
8400 goto done;
8401 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008402 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008403 }
8404 { // atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008405 if (p->error_indicator) {
8406 return NULL;
8407 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008408 expr_ty atom_var;
8409 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008410 (atom_var = atom_rule(p)) // atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008411 )
8412 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008413 _res = atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008414 goto done;
8415 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008416 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008417 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008418 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008419 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008420 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008421}
8422
8423// slices: slice !',' | ','.slice+ ','?
8424static expr_ty
8425slices_rule(Parser *p)
8426{
8427 if (p->error_indicator) {
8428 return NULL;
8429 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008430 expr_ty _res = NULL;
8431 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008432 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8433 p->error_indicator = 1;
8434 return NULL;
8435 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008436 int _start_lineno = p->tokens[_mark]->lineno;
8437 UNUSED(_start_lineno); // Only used by EXTRA macro
8438 int _start_col_offset = p->tokens[_mark]->col_offset;
8439 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008440 { // slice !','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008441 if (p->error_indicator) {
8442 return NULL;
8443 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008444 expr_ty a;
8445 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008446 (a = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008447 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008448 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008449 )
8450 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008451 _res = a;
8452 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008453 p->error_indicator = 1;
8454 return NULL;
8455 }
8456 goto done;
8457 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008458 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008459 }
8460 { // ','.slice+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008461 if (p->error_indicator) {
8462 return NULL;
8463 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008464 void *_opt_var;
8465 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008466 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008467 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008468 (a = _gather_93_rule(p)) // ','.slice+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008469 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008470 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008471 )
8472 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008473 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8474 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008475 return NULL;
8476 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008477 int _end_lineno = _token->end_lineno;
8478 UNUSED(_end_lineno); // Only used by EXTRA macro
8479 int _end_col_offset = _token->end_col_offset;
8480 UNUSED(_end_col_offset); // Only used by EXTRA macro
8481 _res = _Py_Tuple ( a , Load , EXTRA );
8482 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008483 p->error_indicator = 1;
8484 return NULL;
8485 }
8486 goto done;
8487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008488 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008489 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008490 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008491 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008492 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008493}
8494
8495// slice: expression? ':' expression? [':' expression?] | expression
8496static expr_ty
8497slice_rule(Parser *p)
8498{
8499 if (p->error_indicator) {
8500 return NULL;
8501 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008502 expr_ty _res = NULL;
8503 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008504 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8505 p->error_indicator = 1;
8506 return NULL;
8507 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008508 int _start_lineno = p->tokens[_mark]->lineno;
8509 UNUSED(_start_lineno); // Only used by EXTRA macro
8510 int _start_col_offset = p->tokens[_mark]->col_offset;
8511 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008512 { // expression? ':' expression? [':' expression?]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008513 if (p->error_indicator) {
8514 return NULL;
8515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008516 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008517 void *a;
8518 void *b;
8519 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008520 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008521 (a = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008522 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008523 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008524 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008525 (b = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008526 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008527 (c = _tmp_95_rule(p), 1) // [':' expression?]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008528 )
8529 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008530 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8531 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008532 return NULL;
8533 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008534 int _end_lineno = _token->end_lineno;
8535 UNUSED(_end_lineno); // Only used by EXTRA macro
8536 int _end_col_offset = _token->end_col_offset;
8537 UNUSED(_end_col_offset); // Only used by EXTRA macro
8538 _res = _Py_Slice ( a , b , c , EXTRA );
8539 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008540 p->error_indicator = 1;
8541 return NULL;
8542 }
8543 goto done;
8544 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008545 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008546 }
8547 { // expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008548 if (p->error_indicator) {
8549 return NULL;
8550 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008551 expr_ty a;
8552 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008553 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008554 )
8555 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008556 _res = a;
8557 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008558 p->error_indicator = 1;
8559 return NULL;
8560 }
8561 goto done;
8562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008563 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008565 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008566 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008567 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008568}
8569
8570// atom:
8571// | NAME
8572// | 'True'
8573// | 'False'
8574// | 'None'
8575// | '__new_parser__'
8576// | &STRING strings
8577// | NUMBER
8578// | &'(' (tuple | group | genexp)
8579// | &'[' (list | listcomp)
8580// | &'{' (dict | set | dictcomp | setcomp)
8581// | '...'
8582static expr_ty
8583atom_rule(Parser *p)
8584{
8585 if (p->error_indicator) {
8586 return NULL;
8587 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008588 expr_ty _res = NULL;
8589 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008590 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8591 p->error_indicator = 1;
8592 return NULL;
8593 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008594 int _start_lineno = p->tokens[_mark]->lineno;
8595 UNUSED(_start_lineno); // Only used by EXTRA macro
8596 int _start_col_offset = p->tokens[_mark]->col_offset;
8597 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008598 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008599 if (p->error_indicator) {
8600 return NULL;
8601 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008602 expr_ty name_var;
8603 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008604 (name_var = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008605 )
8606 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008607 _res = name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008608 goto done;
8609 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008610 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008611 }
8612 { // 'True'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008613 if (p->error_indicator) {
8614 return NULL;
8615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008616 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008617 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008618 (_keyword = _PyPegen_expect_token(p, 527)) // token='True'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008619 )
8620 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008621 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8622 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008623 return NULL;
8624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008625 int _end_lineno = _token->end_lineno;
8626 UNUSED(_end_lineno); // Only used by EXTRA macro
8627 int _end_col_offset = _token->end_col_offset;
8628 UNUSED(_end_col_offset); // Only used by EXTRA macro
8629 _res = _Py_Constant ( Py_True , NULL , EXTRA );
8630 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008631 p->error_indicator = 1;
8632 return NULL;
8633 }
8634 goto done;
8635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008636 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008637 }
8638 { // 'False'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008639 if (p->error_indicator) {
8640 return NULL;
8641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008642 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008643 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008644 (_keyword = _PyPegen_expect_token(p, 528)) // token='False'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008645 )
8646 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008647 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8648 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008649 return NULL;
8650 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008651 int _end_lineno = _token->end_lineno;
8652 UNUSED(_end_lineno); // Only used by EXTRA macro
8653 int _end_col_offset = _token->end_col_offset;
8654 UNUSED(_end_col_offset); // Only used by EXTRA macro
8655 _res = _Py_Constant ( Py_False , NULL , EXTRA );
8656 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008657 p->error_indicator = 1;
8658 return NULL;
8659 }
8660 goto done;
8661 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008662 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008663 }
8664 { // 'None'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008665 if (p->error_indicator) {
8666 return NULL;
8667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008668 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008669 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008670 (_keyword = _PyPegen_expect_token(p, 529)) // token='None'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008671 )
8672 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008673 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8674 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008675 return NULL;
8676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008677 int _end_lineno = _token->end_lineno;
8678 UNUSED(_end_lineno); // Only used by EXTRA macro
8679 int _end_col_offset = _token->end_col_offset;
8680 UNUSED(_end_col_offset); // Only used by EXTRA macro
8681 _res = _Py_Constant ( Py_None , NULL , EXTRA );
8682 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008683 p->error_indicator = 1;
8684 return NULL;
8685 }
8686 goto done;
8687 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008688 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008689 }
8690 { // '__new_parser__'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008691 if (p->error_indicator) {
8692 return NULL;
8693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008694 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008695 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008696 (_keyword = _PyPegen_expect_token(p, 530)) // token='__new_parser__'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008697 )
8698 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008699 _res = RAISE_SYNTAX_ERROR ( "You found it!" );
8700 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008701 p->error_indicator = 1;
8702 return NULL;
8703 }
8704 goto done;
8705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008706 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008707 }
8708 { // &STRING strings
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008709 if (p->error_indicator) {
8710 return NULL;
8711 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008712 expr_ty strings_var;
8713 if (
8714 _PyPegen_lookahead(1, _PyPegen_string_token, p)
8715 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008716 (strings_var = strings_rule(p)) // strings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008717 )
8718 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008719 _res = strings_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008720 goto done;
8721 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008722 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008723 }
8724 { // NUMBER
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008725 if (p->error_indicator) {
8726 return NULL;
8727 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008728 expr_ty number_var;
8729 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008730 (number_var = _PyPegen_number_token(p)) // NUMBER
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008731 )
8732 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008733 _res = number_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008734 goto done;
8735 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008736 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008737 }
8738 { // &'(' (tuple | group | genexp)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008739 if (p->error_indicator) {
8740 return NULL;
8741 }
Guido van Rossum3941d972020-05-01 09:42:03 -07008742 void *_tmp_96_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008743 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008744 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008745 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008746 (_tmp_96_var = _tmp_96_rule(p)) // tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008747 )
8748 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008749 _res = _tmp_96_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008750 goto done;
8751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008752 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008753 }
Pablo Galindo2b74c832020-04-27 18:02:07 +01008754 { // &'[' (list | listcomp)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008755 if (p->error_indicator) {
8756 return NULL;
8757 }
Guido van Rossum3941d972020-05-01 09:42:03 -07008758 void *_tmp_97_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008759 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008760 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008761 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008762 (_tmp_97_var = _tmp_97_rule(p)) // list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008763 )
8764 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008765 _res = _tmp_97_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008766 goto done;
8767 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008768 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008769 }
Pablo Galindo2b74c832020-04-27 18:02:07 +01008770 { // &'{' (dict | set | dictcomp | setcomp)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008771 if (p->error_indicator) {
8772 return NULL;
8773 }
Guido van Rossum3941d972020-05-01 09:42:03 -07008774 void *_tmp_98_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008775 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008776 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25) // token='{'
Pablo Galindo2b74c832020-04-27 18:02:07 +01008777 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008778 (_tmp_98_var = _tmp_98_rule(p)) // dict | set | dictcomp | setcomp
Pablo Galindo2b74c832020-04-27 18:02:07 +01008779 )
8780 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008781 _res = _tmp_98_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008782 goto done;
8783 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008784 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008785 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008786 { // '...'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008787 if (p->error_indicator) {
8788 return NULL;
8789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008790 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008791 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008792 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008793 )
8794 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008795 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8796 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008797 return NULL;
8798 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008799 int _end_lineno = _token->end_lineno;
8800 UNUSED(_end_lineno); // Only used by EXTRA macro
8801 int _end_col_offset = _token->end_col_offset;
8802 UNUSED(_end_col_offset); // Only used by EXTRA macro
8803 _res = _Py_Constant ( Py_Ellipsis , NULL , EXTRA );
8804 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008805 p->error_indicator = 1;
8806 return NULL;
8807 }
8808 goto done;
8809 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008810 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008812 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008813 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008814 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008815}
8816
8817// strings: STRING+
8818static expr_ty
8819strings_rule(Parser *p)
8820{
8821 if (p->error_indicator) {
8822 return NULL;
8823 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008824 expr_ty _res = NULL;
8825 if (_PyPegen_is_memoized(p, strings_type, &_res))
8826 return _res;
8827 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008828 { // STRING+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008829 if (p->error_indicator) {
8830 return NULL;
8831 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008832 asdl_seq * a;
8833 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008834 (a = _loop1_99_rule(p)) // STRING+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008835 )
8836 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008837 _res = _PyPegen_concatenate_strings ( p , a );
8838 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008839 p->error_indicator = 1;
8840 return NULL;
8841 }
8842 goto done;
8843 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008844 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008845 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008846 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008847 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008848 _PyPegen_insert_memo(p, _mark, strings_type, _res);
8849 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008850}
8851
8852// list: '[' star_named_expressions? ']'
8853static expr_ty
8854list_rule(Parser *p)
8855{
8856 if (p->error_indicator) {
8857 return NULL;
8858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008859 expr_ty _res = NULL;
8860 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008861 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8862 p->error_indicator = 1;
8863 return NULL;
8864 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008865 int _start_lineno = p->tokens[_mark]->lineno;
8866 UNUSED(_start_lineno); // Only used by EXTRA macro
8867 int _start_col_offset = p->tokens[_mark]->col_offset;
8868 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008869 { // '[' star_named_expressions? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008870 if (p->error_indicator) {
8871 return NULL;
8872 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008873 Token * _literal;
8874 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008875 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008876 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008877 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008878 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008879 (a = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008880 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008881 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008882 )
8883 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008884 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8885 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008886 return NULL;
8887 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008888 int _end_lineno = _token->end_lineno;
8889 UNUSED(_end_lineno); // Only used by EXTRA macro
8890 int _end_col_offset = _token->end_col_offset;
8891 UNUSED(_end_col_offset); // Only used by EXTRA macro
8892 _res = _Py_List ( a , Load , EXTRA );
8893 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008894 p->error_indicator = 1;
8895 return NULL;
8896 }
8897 goto done;
8898 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008899 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008900 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008901 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008902 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008903 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008904}
8905
8906// listcomp: '[' named_expression for_if_clauses ']' | invalid_comprehension
8907static expr_ty
8908listcomp_rule(Parser *p)
8909{
8910 if (p->error_indicator) {
8911 return NULL;
8912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008913 expr_ty _res = NULL;
8914 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008915 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8916 p->error_indicator = 1;
8917 return NULL;
8918 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008919 int _start_lineno = p->tokens[_mark]->lineno;
8920 UNUSED(_start_lineno); // Only used by EXTRA macro
8921 int _start_col_offset = p->tokens[_mark]->col_offset;
8922 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008923 { // '[' named_expression for_if_clauses ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008924 if (p->error_indicator) {
8925 return NULL;
8926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008927 Token * _literal;
8928 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008929 expr_ty a;
8930 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008931 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008932 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008933 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008934 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008935 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008936 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008937 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008938 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008939 )
8940 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008941 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8942 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008943 return NULL;
8944 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008945 int _end_lineno = _token->end_lineno;
8946 UNUSED(_end_lineno); // Only used by EXTRA macro
8947 int _end_col_offset = _token->end_col_offset;
8948 UNUSED(_end_col_offset); // Only used by EXTRA macro
8949 _res = _Py_ListComp ( a , b , EXTRA );
8950 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008951 p->error_indicator = 1;
8952 return NULL;
8953 }
8954 goto done;
8955 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008956 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008957 }
8958 { // invalid_comprehension
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008959 if (p->error_indicator) {
8960 return NULL;
8961 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008962 void *invalid_comprehension_var;
8963 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008964 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008965 )
8966 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008967 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008968 goto done;
8969 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008970 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008972 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008973 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008974 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008975}
8976
8977// tuple: '(' [star_named_expression ',' star_named_expressions?] ')'
8978static expr_ty
8979tuple_rule(Parser *p)
8980{
8981 if (p->error_indicator) {
8982 return NULL;
8983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008984 expr_ty _res = NULL;
8985 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008986 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8987 p->error_indicator = 1;
8988 return NULL;
8989 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008990 int _start_lineno = p->tokens[_mark]->lineno;
8991 UNUSED(_start_lineno); // Only used by EXTRA macro
8992 int _start_col_offset = p->tokens[_mark]->col_offset;
8993 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008994 { // '(' [star_named_expression ',' star_named_expressions?] ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03008995 if (p->error_indicator) {
8996 return NULL;
8997 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008998 Token * _literal;
8999 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009000 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009001 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009002 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009003 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009004 (a = _tmp_100_rule(p), 1) // [star_named_expression ',' star_named_expressions?]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009005 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009006 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009007 )
9008 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009009 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9010 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009011 return NULL;
9012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009013 int _end_lineno = _token->end_lineno;
9014 UNUSED(_end_lineno); // Only used by EXTRA macro
9015 int _end_col_offset = _token->end_col_offset;
9016 UNUSED(_end_col_offset); // Only used by EXTRA macro
9017 _res = _Py_Tuple ( a , Load , EXTRA );
9018 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009019 p->error_indicator = 1;
9020 return NULL;
9021 }
9022 goto done;
9023 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009024 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009025 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009026 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009027 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009028 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009029}
9030
9031// group: '(' (yield_expr | named_expression) ')'
9032static expr_ty
9033group_rule(Parser *p)
9034{
9035 if (p->error_indicator) {
9036 return NULL;
9037 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009038 expr_ty _res = NULL;
9039 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009040 { // '(' (yield_expr | named_expression) ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009041 if (p->error_indicator) {
9042 return NULL;
9043 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009044 Token * _literal;
9045 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009046 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009047 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009048 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009049 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009050 (a = _tmp_101_rule(p)) // yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009051 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009052 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009053 )
9054 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009055 _res = a;
9056 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009057 p->error_indicator = 1;
9058 return NULL;
9059 }
9060 goto done;
9061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009062 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009063 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009064 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009065 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009066 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009067}
9068
9069// genexp: '(' expression for_if_clauses ')' | invalid_comprehension
9070static expr_ty
9071genexp_rule(Parser *p)
9072{
9073 if (p->error_indicator) {
9074 return NULL;
9075 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009076 expr_ty _res = NULL;
9077 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009078 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9079 p->error_indicator = 1;
9080 return NULL;
9081 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009082 int _start_lineno = p->tokens[_mark]->lineno;
9083 UNUSED(_start_lineno); // Only used by EXTRA macro
9084 int _start_col_offset = p->tokens[_mark]->col_offset;
9085 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009086 { // '(' expression for_if_clauses ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009087 if (p->error_indicator) {
9088 return NULL;
9089 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009090 Token * _literal;
9091 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009092 expr_ty a;
9093 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009094 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009095 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009096 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009097 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009098 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009099 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009100 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009101 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009102 )
9103 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009104 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9105 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009106 return NULL;
9107 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009108 int _end_lineno = _token->end_lineno;
9109 UNUSED(_end_lineno); // Only used by EXTRA macro
9110 int _end_col_offset = _token->end_col_offset;
9111 UNUSED(_end_col_offset); // Only used by EXTRA macro
9112 _res = _Py_GeneratorExp ( a , b , EXTRA );
9113 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009114 p->error_indicator = 1;
9115 return NULL;
9116 }
9117 goto done;
9118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009119 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009120 }
9121 { // invalid_comprehension
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009122 if (p->error_indicator) {
9123 return NULL;
9124 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009125 void *invalid_comprehension_var;
9126 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009127 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009128 )
9129 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009130 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009131 goto done;
9132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009133 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009134 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009135 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009136 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009137 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009138}
9139
9140// set: '{' expressions_list '}'
9141static expr_ty
9142set_rule(Parser *p)
9143{
9144 if (p->error_indicator) {
9145 return NULL;
9146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009147 expr_ty _res = NULL;
9148 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009149 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9150 p->error_indicator = 1;
9151 return NULL;
9152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009153 int _start_lineno = p->tokens[_mark]->lineno;
9154 UNUSED(_start_lineno); // Only used by EXTRA macro
9155 int _start_col_offset = p->tokens[_mark]->col_offset;
9156 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009157 { // '{' expressions_list '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009158 if (p->error_indicator) {
9159 return NULL;
9160 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009161 Token * _literal;
9162 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009163 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009164 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009165 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009166 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009167 (a = expressions_list_rule(p)) // expressions_list
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009168 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009169 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009170 )
9171 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009172 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9173 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009174 return NULL;
9175 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009176 int _end_lineno = _token->end_lineno;
9177 UNUSED(_end_lineno); // Only used by EXTRA macro
9178 int _end_col_offset = _token->end_col_offset;
9179 UNUSED(_end_col_offset); // Only used by EXTRA macro
9180 _res = _Py_Set ( a , EXTRA );
9181 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009182 p->error_indicator = 1;
9183 return NULL;
9184 }
9185 goto done;
9186 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009187 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009188 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009189 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009190 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009191 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009192}
9193
9194// setcomp: '{' expression for_if_clauses '}' | invalid_comprehension
9195static expr_ty
9196setcomp_rule(Parser *p)
9197{
9198 if (p->error_indicator) {
9199 return NULL;
9200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009201 expr_ty _res = NULL;
9202 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009203 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9204 p->error_indicator = 1;
9205 return NULL;
9206 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009207 int _start_lineno = p->tokens[_mark]->lineno;
9208 UNUSED(_start_lineno); // Only used by EXTRA macro
9209 int _start_col_offset = p->tokens[_mark]->col_offset;
9210 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009211 { // '{' expression for_if_clauses '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009212 if (p->error_indicator) {
9213 return NULL;
9214 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009215 Token * _literal;
9216 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009217 expr_ty a;
9218 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009219 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009220 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009221 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009222 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009223 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009224 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009225 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009226 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009227 )
9228 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009229 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9230 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009231 return NULL;
9232 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009233 int _end_lineno = _token->end_lineno;
9234 UNUSED(_end_lineno); // Only used by EXTRA macro
9235 int _end_col_offset = _token->end_col_offset;
9236 UNUSED(_end_col_offset); // Only used by EXTRA macro
9237 _res = _Py_SetComp ( a , b , EXTRA );
9238 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009239 p->error_indicator = 1;
9240 return NULL;
9241 }
9242 goto done;
9243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009244 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009245 }
9246 { // invalid_comprehension
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009247 if (p->error_indicator) {
9248 return NULL;
9249 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009250 void *invalid_comprehension_var;
9251 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009252 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009253 )
9254 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009255 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009256 goto done;
9257 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009258 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009259 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009260 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009261 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009262 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009263}
9264
9265// dict: '{' kvpairs? '}'
9266static expr_ty
9267dict_rule(Parser *p)
9268{
9269 if (p->error_indicator) {
9270 return NULL;
9271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009272 expr_ty _res = NULL;
9273 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009274 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9275 p->error_indicator = 1;
9276 return NULL;
9277 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009278 int _start_lineno = p->tokens[_mark]->lineno;
9279 UNUSED(_start_lineno); // Only used by EXTRA macro
9280 int _start_col_offset = p->tokens[_mark]->col_offset;
9281 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009282 { // '{' kvpairs? '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009283 if (p->error_indicator) {
9284 return NULL;
9285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009286 Token * _literal;
9287 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009288 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009289 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009290 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009291 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009292 (a = kvpairs_rule(p), 1) // kvpairs?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009293 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009294 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009295 )
9296 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009297 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9298 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009299 return NULL;
9300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009301 int _end_lineno = _token->end_lineno;
9302 UNUSED(_end_lineno); // Only used by EXTRA macro
9303 int _end_col_offset = _token->end_col_offset;
9304 UNUSED(_end_col_offset); // Only used by EXTRA macro
9305 _res = _Py_Dict ( CHECK ( _PyPegen_get_keys ( p , a ) ) , CHECK ( _PyPegen_get_values ( p , a ) ) , EXTRA );
9306 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009307 p->error_indicator = 1;
9308 return NULL;
9309 }
9310 goto done;
9311 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009312 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009313 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009314 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009315 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009316 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009317}
9318
9319// dictcomp: '{' kvpair for_if_clauses '}'
9320static expr_ty
9321dictcomp_rule(Parser *p)
9322{
9323 if (p->error_indicator) {
9324 return NULL;
9325 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009326 expr_ty _res = NULL;
9327 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009328 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9329 p->error_indicator = 1;
9330 return NULL;
9331 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009332 int _start_lineno = p->tokens[_mark]->lineno;
9333 UNUSED(_start_lineno); // Only used by EXTRA macro
9334 int _start_col_offset = p->tokens[_mark]->col_offset;
9335 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009336 { // '{' kvpair for_if_clauses '}'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009337 if (p->error_indicator) {
9338 return NULL;
9339 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009340 Token * _literal;
9341 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009342 KeyValuePair* a;
9343 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009344 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009345 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009346 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009347 (a = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009348 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009349 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009350 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009351 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009352 )
9353 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009354 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9355 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009356 return NULL;
9357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009358 int _end_lineno = _token->end_lineno;
9359 UNUSED(_end_lineno); // Only used by EXTRA macro
9360 int _end_col_offset = _token->end_col_offset;
9361 UNUSED(_end_col_offset); // Only used by EXTRA macro
9362 _res = _Py_DictComp ( a -> key , a -> value , b , EXTRA );
9363 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009364 p->error_indicator = 1;
9365 return NULL;
9366 }
9367 goto done;
9368 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009369 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009370 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009371 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009372 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009373 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009374}
9375
9376// kvpairs: ','.kvpair+ ','?
9377static asdl_seq*
9378kvpairs_rule(Parser *p)
9379{
9380 if (p->error_indicator) {
9381 return NULL;
9382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009383 asdl_seq* _res = NULL;
9384 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009385 { // ','.kvpair+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009386 if (p->error_indicator) {
9387 return NULL;
9388 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009389 void *_opt_var;
9390 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009391 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009392 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009393 (a = _gather_102_rule(p)) // ','.kvpair+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009394 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009395 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009396 )
9397 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009398 _res = a;
9399 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009400 p->error_indicator = 1;
9401 return NULL;
9402 }
9403 goto done;
9404 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009405 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009407 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009408 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009409 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009410}
9411
9412// kvpair: '**' bitwise_or | expression ':' expression
9413static KeyValuePair*
9414kvpair_rule(Parser *p)
9415{
9416 if (p->error_indicator) {
9417 return NULL;
9418 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009419 KeyValuePair* _res = NULL;
9420 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009421 { // '**' bitwise_or
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009422 if (p->error_indicator) {
9423 return NULL;
9424 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009425 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009426 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009427 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009428 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009429 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009430 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009431 )
9432 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009433 _res = _PyPegen_key_value_pair ( p , NULL , a );
9434 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009435 p->error_indicator = 1;
9436 return NULL;
9437 }
9438 goto done;
9439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009440 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009441 }
9442 { // expression ':' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009443 if (p->error_indicator) {
9444 return NULL;
9445 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009446 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009447 expr_ty a;
9448 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009449 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009450 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009451 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009452 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009453 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009454 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009455 )
9456 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009457 _res = _PyPegen_key_value_pair ( p , a , b );
9458 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009459 p->error_indicator = 1;
9460 return NULL;
9461 }
9462 goto done;
9463 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009464 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009465 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009466 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009467 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009468 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009469}
9470
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009471// for_if_clauses: for_if_clause+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009472static asdl_seq*
9473for_if_clauses_rule(Parser *p)
9474{
9475 if (p->error_indicator) {
9476 return NULL;
9477 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009478 asdl_seq* _res = NULL;
9479 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009480 { // for_if_clause+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009481 if (p->error_indicator) {
9482 return NULL;
9483 }
Guido van Rossum3941d972020-05-01 09:42:03 -07009484 asdl_seq * _loop1_104_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009485 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009486 (_loop1_104_var = _loop1_104_rule(p)) // for_if_clause+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009487 )
9488 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009489 _res = _loop1_104_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009490 goto done;
9491 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009492 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009494 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009495 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009496 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009497}
9498
9499// for_if_clause:
9500// | ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*
9501// | 'for' star_targets 'in' disjunction (('if' disjunction))*
9502static comprehension_ty
9503for_if_clause_rule(Parser *p)
9504{
9505 if (p->error_indicator) {
9506 return NULL;
9507 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009508 comprehension_ty _res = NULL;
9509 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009510 { // ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009511 if (p->error_indicator) {
9512 return NULL;
9513 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009514 Token * _keyword;
9515 Token * _keyword_1;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009516 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01009517 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009518 expr_ty b;
9519 asdl_seq * c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009520 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009521 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009522 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009523 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009524 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009525 (a = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009526 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009527 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009528 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009529 (b = disjunction_rule(p)) // disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009530 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009531 (c = _loop0_105_rule(p)) // (('if' disjunction))*
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009532 )
9533 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009534 _res = CHECK_VERSION ( 6 , "Async comprehensions are" , _Py_comprehension ( a , b , c , 1 , p -> arena ) );
9535 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009536 p->error_indicator = 1;
9537 return NULL;
9538 }
9539 goto done;
9540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009541 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009542 }
9543 { // 'for' star_targets 'in' disjunction (('if' disjunction))*
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009544 if (p->error_indicator) {
9545 return NULL;
9546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009547 Token * _keyword;
9548 Token * _keyword_1;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009549 expr_ty a;
9550 expr_ty b;
9551 asdl_seq * c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009552 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009553 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009554 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009555 (a = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009556 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009557 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009558 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009559 (b = disjunction_rule(p)) // disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009560 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009561 (c = _loop0_106_rule(p)) // (('if' disjunction))*
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03009562 )
9563 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009564 _res = _Py_comprehension ( a , b , c , 0 , p -> arena );
9565 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009566 p->error_indicator = 1;
9567 return NULL;
9568 }
9569 goto done;
9570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009571 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009572 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009573 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009574 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009575 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009576}
9577
9578// yield_expr: 'yield' 'from' expression | 'yield' star_expressions?
9579static expr_ty
9580yield_expr_rule(Parser *p)
9581{
9582 if (p->error_indicator) {
9583 return NULL;
9584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009585 expr_ty _res = NULL;
9586 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009587 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9588 p->error_indicator = 1;
9589 return NULL;
9590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009591 int _start_lineno = p->tokens[_mark]->lineno;
9592 UNUSED(_start_lineno); // Only used by EXTRA macro
9593 int _start_col_offset = p->tokens[_mark]->col_offset;
9594 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009595 { // 'yield' 'from' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009596 if (p->error_indicator) {
9597 return NULL;
9598 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009599 Token * _keyword;
9600 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009601 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009602 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009603 (_keyword = _PyPegen_expect_token(p, 504)) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009604 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009605 (_keyword_1 = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009606 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009607 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009608 )
9609 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009610 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9611 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009612 return NULL;
9613 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009614 int _end_lineno = _token->end_lineno;
9615 UNUSED(_end_lineno); // Only used by EXTRA macro
9616 int _end_col_offset = _token->end_col_offset;
9617 UNUSED(_end_col_offset); // Only used by EXTRA macro
9618 _res = _Py_YieldFrom ( a , EXTRA );
9619 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009620 p->error_indicator = 1;
9621 return NULL;
9622 }
9623 goto done;
9624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009625 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009626 }
9627 { // 'yield' star_expressions?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009628 if (p->error_indicator) {
9629 return NULL;
9630 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009631 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009632 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009633 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009634 (_keyword = _PyPegen_expect_token(p, 504)) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009635 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009636 (a = star_expressions_rule(p), 1) // star_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009637 )
9638 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009639 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9640 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009641 return NULL;
9642 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009643 int _end_lineno = _token->end_lineno;
9644 UNUSED(_end_lineno); // Only used by EXTRA macro
9645 int _end_col_offset = _token->end_col_offset;
9646 UNUSED(_end_col_offset); // Only used by EXTRA macro
9647 _res = _Py_Yield ( a , EXTRA );
9648 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009649 p->error_indicator = 1;
9650 return NULL;
9651 }
9652 goto done;
9653 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009654 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009656 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009657 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009658 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009659}
9660
9661// arguments: args ','? &')' | incorrect_arguments
9662static expr_ty
9663arguments_rule(Parser *p)
9664{
9665 if (p->error_indicator) {
9666 return NULL;
9667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009668 expr_ty _res = NULL;
9669 if (_PyPegen_is_memoized(p, arguments_type, &_res))
9670 return _res;
9671 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009672 { // args ','? &')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009673 if (p->error_indicator) {
9674 return NULL;
9675 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009676 void *_opt_var;
9677 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009678 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009679 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009680 (a = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009681 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009682 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009683 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009684 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009685 )
9686 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009687 _res = a;
9688 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009689 p->error_indicator = 1;
9690 return NULL;
9691 }
9692 goto done;
9693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009694 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009695 }
9696 { // incorrect_arguments
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009697 if (p->error_indicator) {
9698 return NULL;
9699 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009700 void *incorrect_arguments_var;
9701 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009702 (incorrect_arguments_var = incorrect_arguments_rule(p)) // incorrect_arguments
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009703 )
9704 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009705 _res = incorrect_arguments_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009706 goto done;
9707 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009708 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009709 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009710 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009711 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009712 _PyPegen_insert_memo(p, _mark, arguments_type, _res);
9713 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009714}
9715
9716// args: starred_expression [',' args] | kwargs | named_expression [',' args]
9717static expr_ty
9718args_rule(Parser *p)
9719{
9720 if (p->error_indicator) {
9721 return NULL;
9722 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009723 expr_ty _res = NULL;
9724 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009725 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9726 p->error_indicator = 1;
9727 return NULL;
9728 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009729 int _start_lineno = p->tokens[_mark]->lineno;
9730 UNUSED(_start_lineno); // Only used by EXTRA macro
9731 int _start_col_offset = p->tokens[_mark]->col_offset;
9732 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009733 { // starred_expression [',' args]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009734 if (p->error_indicator) {
9735 return NULL;
9736 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009737 expr_ty a;
9738 void *b;
9739 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009740 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009741 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009742 (b = _tmp_107_rule(p), 1) // [',' args]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009743 )
9744 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009745 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9746 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009747 return NULL;
9748 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009749 int _end_lineno = _token->end_lineno;
9750 UNUSED(_end_lineno); // Only used by EXTRA macro
9751 int _end_col_offset = _token->end_col_offset;
9752 UNUSED(_end_col_offset); // Only used by EXTRA macro
9753 _res = _Py_Call ( _PyPegen_dummy_name ( p ) , ( b ) ? CHECK ( _PyPegen_seq_insert_in_front ( p , a , ( ( expr_ty ) b ) -> v . Call . args ) ) : CHECK ( _PyPegen_singleton_seq ( p , a ) ) , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
9754 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009755 p->error_indicator = 1;
9756 return NULL;
9757 }
9758 goto done;
9759 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009760 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009761 }
9762 { // kwargs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009763 if (p->error_indicator) {
9764 return NULL;
9765 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009766 asdl_seq* a;
9767 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009768 (a = kwargs_rule(p)) // kwargs
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009769 )
9770 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009771 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9772 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009773 return NULL;
9774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009775 int _end_lineno = _token->end_lineno;
9776 UNUSED(_end_lineno); // Only used by EXTRA macro
9777 int _end_col_offset = _token->end_col_offset;
9778 UNUSED(_end_col_offset); // Only used by EXTRA macro
9779 _res = _Py_Call ( _PyPegen_dummy_name ( p ) , CHECK_NULL_ALLOWED ( _PyPegen_seq_extract_starred_exprs ( p , a ) ) , CHECK_NULL_ALLOWED ( _PyPegen_seq_delete_starred_exprs ( p , a ) ) , EXTRA );
9780 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009781 p->error_indicator = 1;
9782 return NULL;
9783 }
9784 goto done;
9785 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009786 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009787 }
9788 { // named_expression [',' args]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009789 if (p->error_indicator) {
9790 return NULL;
9791 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009792 expr_ty a;
9793 void *b;
9794 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009795 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009796 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009797 (b = _tmp_108_rule(p), 1) // [',' args]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009798 )
9799 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009800 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9801 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009802 return NULL;
9803 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009804 int _end_lineno = _token->end_lineno;
9805 UNUSED(_end_lineno); // Only used by EXTRA macro
9806 int _end_col_offset = _token->end_col_offset;
9807 UNUSED(_end_col_offset); // Only used by EXTRA macro
9808 _res = _Py_Call ( _PyPegen_dummy_name ( p ) , ( b ) ? CHECK ( _PyPegen_seq_insert_in_front ( p , a , ( ( expr_ty ) b ) -> v . Call . args ) ) : CHECK ( _PyPegen_singleton_seq ( p , a ) ) , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
9809 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009810 p->error_indicator = 1;
9811 return NULL;
9812 }
9813 goto done;
9814 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009815 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009817 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009818 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009819 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009820}
9821
9822// kwargs:
9823// | ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
9824// | ','.kwarg_or_starred+
9825// | ','.kwarg_or_double_starred+
9826static asdl_seq*
9827kwargs_rule(Parser *p)
9828{
9829 if (p->error_indicator) {
9830 return NULL;
9831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009832 asdl_seq* _res = NULL;
9833 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009834 { // ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009835 if (p->error_indicator) {
9836 return NULL;
9837 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009838 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009839 asdl_seq * a;
9840 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009841 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009842 (a = _gather_109_rule(p)) // ','.kwarg_or_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009843 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009844 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009845 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009846 (b = _gather_111_rule(p)) // ','.kwarg_or_double_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009847 )
9848 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009849 _res = _PyPegen_join_sequences ( p , a , b );
9850 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009851 p->error_indicator = 1;
9852 return NULL;
9853 }
9854 goto done;
9855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009856 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009857 }
9858 { // ','.kwarg_or_starred+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009859 if (p->error_indicator) {
9860 return NULL;
9861 }
Guido van Rossum3941d972020-05-01 09:42:03 -07009862 asdl_seq * _gather_113_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009863 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009864 (_gather_113_var = _gather_113_rule(p)) // ','.kwarg_or_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009865 )
9866 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009867 _res = _gather_113_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009868 goto done;
9869 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009870 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009871 }
9872 { // ','.kwarg_or_double_starred+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009873 if (p->error_indicator) {
9874 return NULL;
9875 }
Guido van Rossum3941d972020-05-01 09:42:03 -07009876 asdl_seq * _gather_115_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009877 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009878 (_gather_115_var = _gather_115_rule(p)) // ','.kwarg_or_double_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009879 )
9880 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009881 _res = _gather_115_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009882 goto done;
9883 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009884 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009885 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009886 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009887 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009888 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009889}
9890
9891// starred_expression: '*' expression
9892static expr_ty
9893starred_expression_rule(Parser *p)
9894{
9895 if (p->error_indicator) {
9896 return NULL;
9897 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009898 expr_ty _res = NULL;
9899 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009900 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9901 p->error_indicator = 1;
9902 return NULL;
9903 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009904 int _start_lineno = p->tokens[_mark]->lineno;
9905 UNUSED(_start_lineno); // Only used by EXTRA macro
9906 int _start_col_offset = p->tokens[_mark]->col_offset;
9907 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009908 { // '*' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009909 if (p->error_indicator) {
9910 return NULL;
9911 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009912 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009913 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009914 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009915 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009916 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009917 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009918 )
9919 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009920 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9921 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009922 return NULL;
9923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009924 int _end_lineno = _token->end_lineno;
9925 UNUSED(_end_lineno); // Only used by EXTRA macro
9926 int _end_col_offset = _token->end_col_offset;
9927 UNUSED(_end_col_offset); // Only used by EXTRA macro
9928 _res = _Py_Starred ( a , Load , EXTRA );
9929 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009930 p->error_indicator = 1;
9931 return NULL;
9932 }
9933 goto done;
9934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009935 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009937 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009938 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009939 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009940}
9941
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009942// kwarg_or_starred: NAME '=' expression | starred_expression | invalid_kwarg
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009943static KeywordOrStarred*
9944kwarg_or_starred_rule(Parser *p)
9945{
9946 if (p->error_indicator) {
9947 return NULL;
9948 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009949 KeywordOrStarred* _res = NULL;
9950 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009951 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9952 p->error_indicator = 1;
9953 return NULL;
9954 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009955 int _start_lineno = p->tokens[_mark]->lineno;
9956 UNUSED(_start_lineno); // Only used by EXTRA macro
9957 int _start_col_offset = p->tokens[_mark]->col_offset;
9958 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009959 { // NAME '=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009960 if (p->error_indicator) {
9961 return NULL;
9962 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009963 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009964 expr_ty a;
9965 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009966 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009967 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009968 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009969 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009970 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009971 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009972 )
9973 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009974 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9975 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009976 return NULL;
9977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009978 int _end_lineno = _token->end_lineno;
9979 UNUSED(_end_lineno); // Only used by EXTRA macro
9980 int _end_col_offset = _token->end_col_offset;
9981 UNUSED(_end_col_offset); // Only used by EXTRA macro
9982 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
9983 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009984 p->error_indicator = 1;
9985 return NULL;
9986 }
9987 goto done;
9988 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009989 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009990 }
9991 { // starred_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +03009992 if (p->error_indicator) {
9993 return NULL;
9994 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009995 expr_ty a;
9996 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009997 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009998 )
9999 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010000 _res = _PyPegen_keyword_or_starred ( p , a , 0 );
10001 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010002 p->error_indicator = 1;
10003 return NULL;
10004 }
10005 goto done;
10006 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010007 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010008 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010009 { // invalid_kwarg
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010010 if (p->error_indicator) {
10011 return NULL;
10012 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010013 void *invalid_kwarg_var;
10014 if (
10015 (invalid_kwarg_var = invalid_kwarg_rule(p)) // invalid_kwarg
10016 )
10017 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010018 _res = invalid_kwarg_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010019 goto done;
10020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010021 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010022 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010023 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010024 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010025 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010026}
10027
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010028// kwarg_or_double_starred: NAME '=' expression | '**' expression | invalid_kwarg
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010029static KeywordOrStarred*
10030kwarg_or_double_starred_rule(Parser *p)
10031{
10032 if (p->error_indicator) {
10033 return NULL;
10034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010035 KeywordOrStarred* _res = NULL;
10036 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010037 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10038 p->error_indicator = 1;
10039 return NULL;
10040 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010041 int _start_lineno = p->tokens[_mark]->lineno;
10042 UNUSED(_start_lineno); // Only used by EXTRA macro
10043 int _start_col_offset = p->tokens[_mark]->col_offset;
10044 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010045 { // NAME '=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010046 if (p->error_indicator) {
10047 return NULL;
10048 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010049 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010050 expr_ty a;
10051 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010052 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010053 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010054 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010055 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010056 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010057 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010058 )
10059 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010060 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10061 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010062 return NULL;
10063 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010064 int _end_lineno = _token->end_lineno;
10065 UNUSED(_end_lineno); // Only used by EXTRA macro
10066 int _end_col_offset = _token->end_col_offset;
10067 UNUSED(_end_col_offset); // Only used by EXTRA macro
10068 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
10069 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010070 p->error_indicator = 1;
10071 return NULL;
10072 }
10073 goto done;
10074 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010075 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010076 }
10077 { // '**' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010078 if (p->error_indicator) {
10079 return NULL;
10080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010081 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010082 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010083 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010084 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010085 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010086 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010087 )
10088 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010089 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10090 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010091 return NULL;
10092 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010093 int _end_lineno = _token->end_lineno;
10094 UNUSED(_end_lineno); // Only used by EXTRA macro
10095 int _end_col_offset = _token->end_col_offset;
10096 UNUSED(_end_col_offset); // Only used by EXTRA macro
10097 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( NULL , a , EXTRA ) ) , 1 );
10098 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010099 p->error_indicator = 1;
10100 return NULL;
10101 }
10102 goto done;
10103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010104 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010105 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010106 { // invalid_kwarg
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010107 if (p->error_indicator) {
10108 return NULL;
10109 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010110 void *invalid_kwarg_var;
10111 if (
10112 (invalid_kwarg_var = invalid_kwarg_rule(p)) // invalid_kwarg
10113 )
10114 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010115 _res = invalid_kwarg_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010116 goto done;
10117 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010118 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010119 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010120 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010121 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010122 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010123}
10124
10125// star_targets: star_target !',' | star_target ((',' star_target))* ','?
10126static expr_ty
10127star_targets_rule(Parser *p)
10128{
10129 if (p->error_indicator) {
10130 return NULL;
10131 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010132 expr_ty _res = NULL;
10133 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010134 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10135 p->error_indicator = 1;
10136 return NULL;
10137 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010138 int _start_lineno = p->tokens[_mark]->lineno;
10139 UNUSED(_start_lineno); // Only used by EXTRA macro
10140 int _start_col_offset = p->tokens[_mark]->col_offset;
10141 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010142 { // star_target !','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010143 if (p->error_indicator) {
10144 return NULL;
10145 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010146 expr_ty a;
10147 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010148 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010149 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010150 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010151 )
10152 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010153 _res = a;
10154 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010155 p->error_indicator = 1;
10156 return NULL;
10157 }
10158 goto done;
10159 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010160 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010161 }
10162 { // star_target ((',' star_target))* ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010163 if (p->error_indicator) {
10164 return NULL;
10165 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010166 void *_opt_var;
10167 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010168 expr_ty a;
10169 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010170 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010171 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010172 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010173 (b = _loop0_117_rule(p)) // ((',' star_target))*
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010174 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010175 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010176 )
10177 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010178 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10179 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010180 return NULL;
10181 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010182 int _end_lineno = _token->end_lineno;
10183 UNUSED(_end_lineno); // Only used by EXTRA macro
10184 int _end_col_offset = _token->end_col_offset;
10185 UNUSED(_end_col_offset); // Only used by EXTRA macro
10186 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Store , EXTRA );
10187 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010188 p->error_indicator = 1;
10189 return NULL;
10190 }
10191 goto done;
10192 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010193 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010194 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010195 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010196 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010197 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010198}
10199
10200// star_targets_seq: ','.star_target+ ','?
10201static asdl_seq*
10202star_targets_seq_rule(Parser *p)
10203{
10204 if (p->error_indicator) {
10205 return NULL;
10206 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010207 asdl_seq* _res = NULL;
10208 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010209 { // ','.star_target+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010210 if (p->error_indicator) {
10211 return NULL;
10212 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010213 void *_opt_var;
10214 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010215 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010216 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010217 (a = _gather_118_rule(p)) // ','.star_target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010218 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010219 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010220 )
10221 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010222 _res = a;
10223 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010224 p->error_indicator = 1;
10225 return NULL;
10226 }
10227 goto done;
10228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010229 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010230 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010231 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010232 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010233 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010234}
10235
10236// star_target:
10237// | '*' (!'*' star_target)
10238// | t_primary '.' NAME !t_lookahead
10239// | t_primary '[' slices ']' !t_lookahead
10240// | star_atom
10241static expr_ty
10242star_target_rule(Parser *p)
10243{
10244 if (p->error_indicator) {
10245 return NULL;
10246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010247 expr_ty _res = NULL;
10248 if (_PyPegen_is_memoized(p, star_target_type, &_res))
10249 return _res;
10250 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010251 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10252 p->error_indicator = 1;
10253 return NULL;
10254 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010255 int _start_lineno = p->tokens[_mark]->lineno;
10256 UNUSED(_start_lineno); // Only used by EXTRA macro
10257 int _start_col_offset = p->tokens[_mark]->col_offset;
10258 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010259 { // '*' (!'*' star_target)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010260 if (p->error_indicator) {
10261 return NULL;
10262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010263 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010264 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010265 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010266 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010267 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010268 (a = _tmp_120_rule(p)) // !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010269 )
10270 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010271 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10272 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010273 return NULL;
10274 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010275 int _end_lineno = _token->end_lineno;
10276 UNUSED(_end_lineno); // Only used by EXTRA macro
10277 int _end_col_offset = _token->end_col_offset;
10278 UNUSED(_end_col_offset); // Only used by EXTRA macro
10279 _res = _Py_Starred ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , Store , EXTRA );
10280 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010281 p->error_indicator = 1;
10282 return NULL;
10283 }
10284 goto done;
10285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010286 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010287 }
10288 { // t_primary '.' NAME !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010289 if (p->error_indicator) {
10290 return NULL;
10291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010292 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010293 expr_ty a;
10294 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010295 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010296 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010297 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010298 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010299 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010300 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010301 &&
10302 _PyPegen_lookahead(0, t_lookahead_rule, p)
10303 )
10304 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010305 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10306 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010307 return NULL;
10308 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010309 int _end_lineno = _token->end_lineno;
10310 UNUSED(_end_lineno); // Only used by EXTRA macro
10311 int _end_col_offset = _token->end_col_offset;
10312 UNUSED(_end_col_offset); // Only used by EXTRA macro
10313 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
10314 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010315 p->error_indicator = 1;
10316 return NULL;
10317 }
10318 goto done;
10319 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010320 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010321 }
10322 { // t_primary '[' slices ']' !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010323 if (p->error_indicator) {
10324 return NULL;
10325 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010326 Token * _literal;
10327 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010328 expr_ty a;
10329 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010330 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010331 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010332 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010333 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010334 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010335 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010336 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010337 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010338 &&
10339 _PyPegen_lookahead(0, t_lookahead_rule, p)
10340 )
10341 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010342 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10343 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010344 return NULL;
10345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010346 int _end_lineno = _token->end_lineno;
10347 UNUSED(_end_lineno); // Only used by EXTRA macro
10348 int _end_col_offset = _token->end_col_offset;
10349 UNUSED(_end_col_offset); // Only used by EXTRA macro
10350 _res = _Py_Subscript ( a , b , Store , EXTRA );
10351 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010352 p->error_indicator = 1;
10353 return NULL;
10354 }
10355 goto done;
10356 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010357 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010358 }
10359 { // star_atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010360 if (p->error_indicator) {
10361 return NULL;
10362 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010363 expr_ty star_atom_var;
10364 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010365 (star_atom_var = star_atom_rule(p)) // star_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010366 )
10367 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010368 _res = star_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010369 goto done;
10370 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010371 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010373 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010374 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010375 _PyPegen_insert_memo(p, _mark, star_target_type, _res);
10376 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010377}
10378
10379// star_atom:
10380// | NAME
10381// | '(' star_target ')'
10382// | '(' star_targets_seq? ')'
10383// | '[' star_targets_seq? ']'
10384static expr_ty
10385star_atom_rule(Parser *p)
10386{
10387 if (p->error_indicator) {
10388 return NULL;
10389 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010390 expr_ty _res = NULL;
10391 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010392 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10393 p->error_indicator = 1;
10394 return NULL;
10395 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010396 int _start_lineno = p->tokens[_mark]->lineno;
10397 UNUSED(_start_lineno); // Only used by EXTRA macro
10398 int _start_col_offset = p->tokens[_mark]->col_offset;
10399 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010400 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010401 if (p->error_indicator) {
10402 return NULL;
10403 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010404 expr_ty a;
10405 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010406 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010407 )
10408 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010409 _res = _PyPegen_set_expr_context ( p , a , Store );
10410 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010411 p->error_indicator = 1;
10412 return NULL;
10413 }
10414 goto done;
10415 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010416 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010417 }
10418 { // '(' star_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010419 if (p->error_indicator) {
10420 return NULL;
10421 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010422 Token * _literal;
10423 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010424 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010425 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010426 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010427 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010428 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010429 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010430 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010431 )
10432 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010433 _res = _PyPegen_set_expr_context ( p , a , Store );
10434 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010435 p->error_indicator = 1;
10436 return NULL;
10437 }
10438 goto done;
10439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010440 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010441 }
10442 { // '(' star_targets_seq? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010443 if (p->error_indicator) {
10444 return NULL;
10445 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010446 Token * _literal;
10447 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010448 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010449 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010450 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010451 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010452 (a = star_targets_seq_rule(p), 1) // star_targets_seq?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010453 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010454 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010455 )
10456 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010457 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10458 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010459 return NULL;
10460 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010461 int _end_lineno = _token->end_lineno;
10462 UNUSED(_end_lineno); // Only used by EXTRA macro
10463 int _end_col_offset = _token->end_col_offset;
10464 UNUSED(_end_col_offset); // Only used by EXTRA macro
10465 _res = _Py_Tuple ( a , Store , EXTRA );
10466 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010467 p->error_indicator = 1;
10468 return NULL;
10469 }
10470 goto done;
10471 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010472 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010473 }
10474 { // '[' star_targets_seq? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010475 if (p->error_indicator) {
10476 return NULL;
10477 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010478 Token * _literal;
10479 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010480 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010481 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010482 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010483 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010484 (a = star_targets_seq_rule(p), 1) // star_targets_seq?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010485 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010486 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010487 )
10488 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010489 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10490 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010491 return NULL;
10492 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010493 int _end_lineno = _token->end_lineno;
10494 UNUSED(_end_lineno); // Only used by EXTRA macro
10495 int _end_col_offset = _token->end_col_offset;
10496 UNUSED(_end_col_offset); // Only used by EXTRA macro
10497 _res = _Py_List ( a , Store , EXTRA );
10498 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010499 p->error_indicator = 1;
10500 return NULL;
10501 }
10502 goto done;
10503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010504 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010505 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010506 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010507 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010508 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010509}
10510
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010511// single_target: single_subscript_attribute_target | NAME | '(' single_target ')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010512static expr_ty
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010513single_target_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010514{
10515 if (p->error_indicator) {
10516 return NULL;
10517 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010518 expr_ty _res = NULL;
10519 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010520 { // single_subscript_attribute_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010521 if (p->error_indicator) {
10522 return NULL;
10523 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010524 expr_ty single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010525 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010526 (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p)) // single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010527 )
10528 {
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010529 _res = single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010530 goto done;
10531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010532 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010533 }
10534 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010535 if (p->error_indicator) {
10536 return NULL;
10537 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010538 expr_ty a;
10539 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010540 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010541 )
10542 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010543 _res = _PyPegen_set_expr_context ( p , a , Store );
10544 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010545 p->error_indicator = 1;
10546 return NULL;
10547 }
10548 goto done;
10549 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010550 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010551 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010552 { // '(' single_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010553 if (p->error_indicator) {
10554 return NULL;
10555 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010556 Token * _literal;
10557 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010558 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010559 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010560 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010561 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010562 (a = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010563 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010564 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010565 )
10566 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010567 _res = a;
10568 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010569 p->error_indicator = 1;
10570 return NULL;
10571 }
10572 goto done;
10573 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010574 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010575 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010576 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010577 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010578 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010579}
10580
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010581// single_subscript_attribute_target:
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010582// | t_primary '.' NAME !t_lookahead
10583// | t_primary '[' slices ']' !t_lookahead
10584static expr_ty
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030010585single_subscript_attribute_target_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010586{
10587 if (p->error_indicator) {
10588 return NULL;
10589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010590 expr_ty _res = NULL;
10591 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010592 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10593 p->error_indicator = 1;
10594 return NULL;
10595 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010596 int _start_lineno = p->tokens[_mark]->lineno;
10597 UNUSED(_start_lineno); // Only used by EXTRA macro
10598 int _start_col_offset = p->tokens[_mark]->col_offset;
10599 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010600 { // t_primary '.' NAME !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010601 if (p->error_indicator) {
10602 return NULL;
10603 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010604 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010605 expr_ty a;
10606 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010607 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010608 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010609 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010610 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010611 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010612 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010613 &&
10614 _PyPegen_lookahead(0, t_lookahead_rule, p)
10615 )
10616 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010617 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10618 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010619 return NULL;
10620 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010621 int _end_lineno = _token->end_lineno;
10622 UNUSED(_end_lineno); // Only used by EXTRA macro
10623 int _end_col_offset = _token->end_col_offset;
10624 UNUSED(_end_col_offset); // Only used by EXTRA macro
10625 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
10626 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010627 p->error_indicator = 1;
10628 return NULL;
10629 }
10630 goto done;
10631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010632 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010633 }
10634 { // t_primary '[' slices ']' !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010635 if (p->error_indicator) {
10636 return NULL;
10637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010638 Token * _literal;
10639 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010640 expr_ty a;
10641 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010642 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010643 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010644 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010645 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010646 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010647 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010648 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010649 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010650 &&
10651 _PyPegen_lookahead(0, t_lookahead_rule, p)
10652 )
10653 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010654 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10655 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010656 return NULL;
10657 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010658 int _end_lineno = _token->end_lineno;
10659 UNUSED(_end_lineno); // Only used by EXTRA macro
10660 int _end_col_offset = _token->end_col_offset;
10661 UNUSED(_end_col_offset); // Only used by EXTRA macro
10662 _res = _Py_Subscript ( a , b , Store , EXTRA );
10663 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010664 p->error_indicator = 1;
10665 return NULL;
10666 }
10667 goto done;
10668 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010669 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010670 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010671 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010672 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010673 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010674}
10675
10676// del_targets: ','.del_target+ ','?
10677static asdl_seq*
10678del_targets_rule(Parser *p)
10679{
10680 if (p->error_indicator) {
10681 return NULL;
10682 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010683 asdl_seq* _res = NULL;
10684 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010685 { // ','.del_target+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010686 if (p->error_indicator) {
10687 return NULL;
10688 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010689 void *_opt_var;
10690 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010691 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010692 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010693 (a = _gather_121_rule(p)) // ','.del_target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010694 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010695 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010696 )
10697 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010698 _res = a;
10699 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010700 p->error_indicator = 1;
10701 return NULL;
10702 }
10703 goto done;
10704 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010705 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010706 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010707 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010708 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010709 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010710}
10711
10712// del_target:
Shantanu27c0d9b2020-05-11 14:53:58 -070010713// | t_primary '.' NAME &del_target_end
10714// | t_primary '[' slices ']' &del_target_end
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010715// | del_t_atom
10716static expr_ty
10717del_target_rule(Parser *p)
10718{
10719 if (p->error_indicator) {
10720 return NULL;
10721 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010722 expr_ty _res = NULL;
10723 if (_PyPegen_is_memoized(p, del_target_type, &_res))
10724 return _res;
10725 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010726 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10727 p->error_indicator = 1;
10728 return NULL;
10729 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010730 int _start_lineno = p->tokens[_mark]->lineno;
10731 UNUSED(_start_lineno); // Only used by EXTRA macro
10732 int _start_col_offset = p->tokens[_mark]->col_offset;
10733 UNUSED(_start_col_offset); // Only used by EXTRA macro
Shantanu27c0d9b2020-05-11 14:53:58 -070010734 { // t_primary '.' NAME &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010735 if (p->error_indicator) {
10736 return NULL;
10737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010738 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010739 expr_ty a;
10740 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010741 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010742 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010743 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010744 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010745 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010746 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010747 &&
Shantanu27c0d9b2020-05-11 14:53:58 -070010748 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010749 )
10750 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010751 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10752 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010753 return NULL;
10754 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010755 int _end_lineno = _token->end_lineno;
10756 UNUSED(_end_lineno); // Only used by EXTRA macro
10757 int _end_col_offset = _token->end_col_offset;
10758 UNUSED(_end_col_offset); // Only used by EXTRA macro
10759 _res = _Py_Attribute ( a , b -> v . Name . id , Del , EXTRA );
10760 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010761 p->error_indicator = 1;
10762 return NULL;
10763 }
10764 goto done;
10765 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010766 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010767 }
Shantanu27c0d9b2020-05-11 14:53:58 -070010768 { // t_primary '[' slices ']' &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010769 if (p->error_indicator) {
10770 return NULL;
10771 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010772 Token * _literal;
10773 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010774 expr_ty a;
10775 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010776 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010777 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010778 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010779 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010780 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010781 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010782 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010783 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010784 &&
Shantanu27c0d9b2020-05-11 14:53:58 -070010785 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010786 )
10787 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010788 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10789 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010790 return NULL;
10791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010792 int _end_lineno = _token->end_lineno;
10793 UNUSED(_end_lineno); // Only used by EXTRA macro
10794 int _end_col_offset = _token->end_col_offset;
10795 UNUSED(_end_col_offset); // Only used by EXTRA macro
10796 _res = _Py_Subscript ( a , b , Del , EXTRA );
10797 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010798 p->error_indicator = 1;
10799 return NULL;
10800 }
10801 goto done;
10802 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010803 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010804 }
10805 { // del_t_atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010806 if (p->error_indicator) {
10807 return NULL;
10808 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010809 expr_ty del_t_atom_var;
10810 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010811 (del_t_atom_var = del_t_atom_rule(p)) // del_t_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010812 )
10813 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010814 _res = del_t_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010815 goto done;
10816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010817 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010818 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010819 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010820 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010821 _PyPegen_insert_memo(p, _mark, del_target_type, _res);
10822 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010823}
10824
Shantanu27c0d9b2020-05-11 14:53:58 -070010825// del_t_atom:
10826// | NAME &del_target_end
10827// | '(' del_target ')'
10828// | '(' del_targets? ')'
10829// | '[' del_targets? ']'
10830// | invalid_del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010831static expr_ty
10832del_t_atom_rule(Parser *p)
10833{
10834 if (p->error_indicator) {
10835 return NULL;
10836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010837 expr_ty _res = NULL;
10838 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010839 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10840 p->error_indicator = 1;
10841 return NULL;
10842 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010843 int _start_lineno = p->tokens[_mark]->lineno;
10844 UNUSED(_start_lineno); // Only used by EXTRA macro
10845 int _start_col_offset = p->tokens[_mark]->col_offset;
10846 UNUSED(_start_col_offset); // Only used by EXTRA macro
Shantanu27c0d9b2020-05-11 14:53:58 -070010847 { // NAME &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010848 if (p->error_indicator) {
10849 return NULL;
10850 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010851 expr_ty a;
10852 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010853 (a = _PyPegen_name_token(p)) // NAME
Shantanu27c0d9b2020-05-11 14:53:58 -070010854 &&
10855 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010856 )
10857 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010858 _res = _PyPegen_set_expr_context ( p , a , Del );
10859 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010860 p->error_indicator = 1;
10861 return NULL;
10862 }
10863 goto done;
10864 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010865 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010866 }
10867 { // '(' del_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010868 if (p->error_indicator) {
10869 return NULL;
10870 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010871 Token * _literal;
10872 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010873 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010874 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010875 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010876 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010877 (a = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010878 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010879 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010880 )
10881 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010882 _res = _PyPegen_set_expr_context ( p , a , Del );
10883 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010884 p->error_indicator = 1;
10885 return NULL;
10886 }
10887 goto done;
10888 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010889 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010890 }
10891 { // '(' del_targets? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010892 if (p->error_indicator) {
10893 return NULL;
10894 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010895 Token * _literal;
10896 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010897 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010898 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010899 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010900 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010901 (a = del_targets_rule(p), 1) // del_targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010902 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010903 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010904 )
10905 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010906 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10907 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010908 return NULL;
10909 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010910 int _end_lineno = _token->end_lineno;
10911 UNUSED(_end_lineno); // Only used by EXTRA macro
10912 int _end_col_offset = _token->end_col_offset;
10913 UNUSED(_end_col_offset); // Only used by EXTRA macro
10914 _res = _Py_Tuple ( a , Del , EXTRA );
10915 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010916 p->error_indicator = 1;
10917 return NULL;
10918 }
10919 goto done;
10920 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010921 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010922 }
10923 { // '[' del_targets? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010924 if (p->error_indicator) {
10925 return NULL;
10926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010927 Token * _literal;
10928 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010929 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010930 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010931 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010932 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010933 (a = del_targets_rule(p), 1) // del_targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010934 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010935 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010936 )
10937 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010938 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10939 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010940 return NULL;
10941 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010942 int _end_lineno = _token->end_lineno;
10943 UNUSED(_end_lineno); // Only used by EXTRA macro
10944 int _end_col_offset = _token->end_col_offset;
10945 UNUSED(_end_col_offset); // Only used by EXTRA macro
10946 _res = _Py_List ( a , Del , EXTRA );
10947 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010948 p->error_indicator = 1;
10949 return NULL;
10950 }
10951 goto done;
10952 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010953 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010954 }
Shantanu27c0d9b2020-05-11 14:53:58 -070010955 { // invalid_del_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010956 if (p->error_indicator) {
10957 return NULL;
10958 }
Shantanu27c0d9b2020-05-11 14:53:58 -070010959 void *invalid_del_target_var;
10960 if (
10961 (invalid_del_target_var = invalid_del_target_rule(p)) // invalid_del_target
10962 )
10963 {
10964 _res = invalid_del_target_var;
10965 goto done;
10966 }
10967 p->mark = _mark;
10968 }
10969 _res = NULL;
10970 done:
10971 return _res;
10972}
10973
10974// del_target_end: ')' | ']' | ',' | ';' | NEWLINE
10975static void *
10976del_target_end_rule(Parser *p)
10977{
10978 if (p->error_indicator) {
10979 return NULL;
10980 }
10981 void * _res = NULL;
10982 int _mark = p->mark;
10983 { // ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010984 if (p->error_indicator) {
10985 return NULL;
10986 }
Shantanu27c0d9b2020-05-11 14:53:58 -070010987 Token * _literal;
10988 if (
10989 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
10990 )
10991 {
10992 _res = _literal;
10993 goto done;
10994 }
10995 p->mark = _mark;
10996 }
10997 { // ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030010998 if (p->error_indicator) {
10999 return NULL;
11000 }
Shantanu27c0d9b2020-05-11 14:53:58 -070011001 Token * _literal;
11002 if (
11003 (_literal = _PyPegen_expect_token(p, 10)) // token=']'
11004 )
11005 {
11006 _res = _literal;
11007 goto done;
11008 }
11009 p->mark = _mark;
11010 }
11011 { // ','
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011012 if (p->error_indicator) {
11013 return NULL;
11014 }
Shantanu27c0d9b2020-05-11 14:53:58 -070011015 Token * _literal;
11016 if (
11017 (_literal = _PyPegen_expect_token(p, 12)) // token=','
11018 )
11019 {
11020 _res = _literal;
11021 goto done;
11022 }
11023 p->mark = _mark;
11024 }
11025 { // ';'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011026 if (p->error_indicator) {
11027 return NULL;
11028 }
Shantanu27c0d9b2020-05-11 14:53:58 -070011029 Token * _literal;
11030 if (
11031 (_literal = _PyPegen_expect_token(p, 13)) // token=';'
11032 )
11033 {
11034 _res = _literal;
11035 goto done;
11036 }
11037 p->mark = _mark;
11038 }
11039 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011040 if (p->error_indicator) {
11041 return NULL;
11042 }
Shantanu27c0d9b2020-05-11 14:53:58 -070011043 Token * newline_var;
11044 if (
11045 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
11046 )
11047 {
11048 _res = newline_var;
11049 goto done;
11050 }
11051 p->mark = _mark;
11052 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011053 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011054 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011055 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011056}
11057
11058// targets: ','.target+ ','?
11059static asdl_seq*
11060targets_rule(Parser *p)
11061{
11062 if (p->error_indicator) {
11063 return NULL;
11064 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011065 asdl_seq* _res = NULL;
11066 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011067 { // ','.target+ ','?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011068 if (p->error_indicator) {
11069 return NULL;
11070 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011071 void *_opt_var;
11072 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011073 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011074 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011075 (a = _gather_123_rule(p)) // ','.target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011076 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011077 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011078 )
11079 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011080 _res = a;
11081 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011082 p->error_indicator = 1;
11083 return NULL;
11084 }
11085 goto done;
11086 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011087 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011088 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011089 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011090 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011091 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011092}
11093
11094// target:
11095// | t_primary '.' NAME !t_lookahead
11096// | t_primary '[' slices ']' !t_lookahead
11097// | t_atom
11098static expr_ty
11099target_rule(Parser *p)
11100{
11101 if (p->error_indicator) {
11102 return NULL;
11103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011104 expr_ty _res = NULL;
11105 if (_PyPegen_is_memoized(p, target_type, &_res))
11106 return _res;
11107 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011108 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11109 p->error_indicator = 1;
11110 return NULL;
11111 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011112 int _start_lineno = p->tokens[_mark]->lineno;
11113 UNUSED(_start_lineno); // Only used by EXTRA macro
11114 int _start_col_offset = p->tokens[_mark]->col_offset;
11115 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011116 { // t_primary '.' NAME !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011117 if (p->error_indicator) {
11118 return NULL;
11119 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011120 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011121 expr_ty a;
11122 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011123 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011124 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011125 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011126 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011127 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011128 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011129 &&
11130 _PyPegen_lookahead(0, t_lookahead_rule, p)
11131 )
11132 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011133 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11134 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011135 return NULL;
11136 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011137 int _end_lineno = _token->end_lineno;
11138 UNUSED(_end_lineno); // Only used by EXTRA macro
11139 int _end_col_offset = _token->end_col_offset;
11140 UNUSED(_end_col_offset); // Only used by EXTRA macro
11141 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
11142 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011143 p->error_indicator = 1;
11144 return NULL;
11145 }
11146 goto done;
11147 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011148 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011149 }
11150 { // t_primary '[' slices ']' !t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011151 if (p->error_indicator) {
11152 return NULL;
11153 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011154 Token * _literal;
11155 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011156 expr_ty a;
11157 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011158 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011159 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011160 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011161 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011162 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011163 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011164 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011165 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011166 &&
11167 _PyPegen_lookahead(0, t_lookahead_rule, p)
11168 )
11169 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011170 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11171 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011172 return NULL;
11173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011174 int _end_lineno = _token->end_lineno;
11175 UNUSED(_end_lineno); // Only used by EXTRA macro
11176 int _end_col_offset = _token->end_col_offset;
11177 UNUSED(_end_col_offset); // Only used by EXTRA macro
11178 _res = _Py_Subscript ( a , b , Store , EXTRA );
11179 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011180 p->error_indicator = 1;
11181 return NULL;
11182 }
11183 goto done;
11184 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011185 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011186 }
11187 { // t_atom
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011188 if (p->error_indicator) {
11189 return NULL;
11190 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011191 expr_ty t_atom_var;
11192 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011193 (t_atom_var = t_atom_rule(p)) // t_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011194 )
11195 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011196 _res = t_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011197 goto done;
11198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011199 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011201 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011202 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011203 _PyPegen_insert_memo(p, _mark, target_type, _res);
11204 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011205}
11206
11207// Left-recursive
11208// t_primary:
11209// | t_primary '.' NAME &t_lookahead
11210// | t_primary '[' slices ']' &t_lookahead
11211// | t_primary genexp &t_lookahead
11212// | t_primary '(' arguments? ')' &t_lookahead
11213// | atom &t_lookahead
11214static expr_ty t_primary_raw(Parser *);
11215static expr_ty
11216t_primary_rule(Parser *p)
11217{
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011218 expr_ty _res = NULL;
11219 if (_PyPegen_is_memoized(p, t_primary_type, &_res))
11220 return _res;
11221 int _mark = p->mark;
11222 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011223 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011224 int tmpvar_8 = _PyPegen_update_memo(p, _mark, t_primary_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011225 if (tmpvar_8) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011226 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011228 p->mark = _mark;
11229 void *_raw = t_primary_raw(p);
11230 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011231 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011232 _resmark = p->mark;
11233 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011234 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011235 p->mark = _resmark;
11236 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011237}
11238static expr_ty
11239t_primary_raw(Parser *p)
11240{
11241 if (p->error_indicator) {
11242 return NULL;
11243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011244 expr_ty _res = NULL;
11245 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011246 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11247 p->error_indicator = 1;
11248 return NULL;
11249 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011250 int _start_lineno = p->tokens[_mark]->lineno;
11251 UNUSED(_start_lineno); // Only used by EXTRA macro
11252 int _start_col_offset = p->tokens[_mark]->col_offset;
11253 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011254 { // t_primary '.' NAME &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011255 if (p->error_indicator) {
11256 return NULL;
11257 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011258 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011259 expr_ty a;
11260 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011261 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011262 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011263 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011264 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011265 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011266 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011267 &&
11268 _PyPegen_lookahead(1, t_lookahead_rule, p)
11269 )
11270 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011271 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11272 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011273 return NULL;
11274 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011275 int _end_lineno = _token->end_lineno;
11276 UNUSED(_end_lineno); // Only used by EXTRA macro
11277 int _end_col_offset = _token->end_col_offset;
11278 UNUSED(_end_col_offset); // Only used by EXTRA macro
11279 _res = _Py_Attribute ( a , b -> v . Name . id , Load , EXTRA );
11280 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011281 p->error_indicator = 1;
11282 return NULL;
11283 }
11284 goto done;
11285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011286 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011287 }
11288 { // t_primary '[' slices ']' &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011289 if (p->error_indicator) {
11290 return NULL;
11291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011292 Token * _literal;
11293 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011294 expr_ty a;
11295 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011296 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011297 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011298 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011299 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011300 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011301 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011302 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011303 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011304 &&
11305 _PyPegen_lookahead(1, t_lookahead_rule, p)
11306 )
11307 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011308 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11309 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011310 return NULL;
11311 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011312 int _end_lineno = _token->end_lineno;
11313 UNUSED(_end_lineno); // Only used by EXTRA macro
11314 int _end_col_offset = _token->end_col_offset;
11315 UNUSED(_end_col_offset); // Only used by EXTRA macro
11316 _res = _Py_Subscript ( a , b , Load , EXTRA );
11317 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011318 p->error_indicator = 1;
11319 return NULL;
11320 }
11321 goto done;
11322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011323 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011324 }
11325 { // t_primary genexp &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011326 if (p->error_indicator) {
11327 return NULL;
11328 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011329 expr_ty a;
11330 expr_ty b;
11331 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011332 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011333 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011334 (b = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011335 &&
11336 _PyPegen_lookahead(1, t_lookahead_rule, p)
11337 )
11338 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011339 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11340 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011341 return NULL;
11342 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011343 int _end_lineno = _token->end_lineno;
11344 UNUSED(_end_lineno); // Only used by EXTRA macro
11345 int _end_col_offset = _token->end_col_offset;
11346 UNUSED(_end_col_offset); // Only used by EXTRA macro
11347 _res = _Py_Call ( a , CHECK ( _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
11348 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011349 p->error_indicator = 1;
11350 return NULL;
11351 }
11352 goto done;
11353 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011354 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011355 }
11356 { // t_primary '(' arguments? ')' &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011357 if (p->error_indicator) {
11358 return NULL;
11359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011360 Token * _literal;
11361 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011362 expr_ty a;
11363 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011364 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011365 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011366 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011367 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011368 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011369 (b = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011370 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011371 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011372 &&
11373 _PyPegen_lookahead(1, t_lookahead_rule, p)
11374 )
11375 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011376 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11377 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011378 return NULL;
11379 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011380 int _end_lineno = _token->end_lineno;
11381 UNUSED(_end_lineno); // Only used by EXTRA macro
11382 int _end_col_offset = _token->end_col_offset;
11383 UNUSED(_end_col_offset); // Only used by EXTRA macro
11384 _res = _Py_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
11385 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011386 p->error_indicator = 1;
11387 return NULL;
11388 }
11389 goto done;
11390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011391 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011392 }
11393 { // atom &t_lookahead
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011394 if (p->error_indicator) {
11395 return NULL;
11396 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011397 expr_ty a;
11398 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011399 (a = atom_rule(p)) // atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011400 &&
11401 _PyPegen_lookahead(1, t_lookahead_rule, p)
11402 )
11403 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011404 _res = a;
11405 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011406 p->error_indicator = 1;
11407 return NULL;
11408 }
11409 goto done;
11410 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011411 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011413 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011414 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011415 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011416}
11417
11418// t_lookahead: '(' | '[' | '.'
11419static void *
11420t_lookahead_rule(Parser *p)
11421{
11422 if (p->error_indicator) {
11423 return NULL;
11424 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011425 void * _res = NULL;
11426 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011427 { // '('
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011428 if (p->error_indicator) {
11429 return NULL;
11430 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011431 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011432 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011433 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011434 )
11435 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011436 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011437 goto done;
11438 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011439 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011440 }
11441 { // '['
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011442 if (p->error_indicator) {
11443 return NULL;
11444 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011445 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011446 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011447 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011448 )
11449 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011450 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011451 goto done;
11452 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011453 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011454 }
11455 { // '.'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011456 if (p->error_indicator) {
11457 return NULL;
11458 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011459 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011460 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011461 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011462 )
11463 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011464 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011465 goto done;
11466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011467 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011469 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011470 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011471 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011472}
11473
11474// t_atom: NAME | '(' target ')' | '(' targets? ')' | '[' targets? ']'
11475static expr_ty
11476t_atom_rule(Parser *p)
11477{
11478 if (p->error_indicator) {
11479 return NULL;
11480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011481 expr_ty _res = NULL;
11482 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011483 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11484 p->error_indicator = 1;
11485 return NULL;
11486 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011487 int _start_lineno = p->tokens[_mark]->lineno;
11488 UNUSED(_start_lineno); // Only used by EXTRA macro
11489 int _start_col_offset = p->tokens[_mark]->col_offset;
11490 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011491 { // NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011492 if (p->error_indicator) {
11493 return NULL;
11494 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011495 expr_ty a;
11496 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011497 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011498 )
11499 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011500 _res = _PyPegen_set_expr_context ( p , a , Store );
11501 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011502 p->error_indicator = 1;
11503 return NULL;
11504 }
11505 goto done;
11506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011507 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011508 }
11509 { // '(' target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011510 if (p->error_indicator) {
11511 return NULL;
11512 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011513 Token * _literal;
11514 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011515 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011516 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011517 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011518 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011519 (a = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011520 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011521 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011522 )
11523 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011524 _res = _PyPegen_set_expr_context ( p , a , Store );
11525 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011526 p->error_indicator = 1;
11527 return NULL;
11528 }
11529 goto done;
11530 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011531 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011532 }
11533 { // '(' targets? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011534 if (p->error_indicator) {
11535 return NULL;
11536 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011537 Token * _literal;
11538 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011539 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011540 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011541 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011542 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011543 (b = targets_rule(p), 1) // targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011544 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011545 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011546 )
11547 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011548 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11549 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011550 return NULL;
11551 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011552 int _end_lineno = _token->end_lineno;
11553 UNUSED(_end_lineno); // Only used by EXTRA macro
11554 int _end_col_offset = _token->end_col_offset;
11555 UNUSED(_end_col_offset); // Only used by EXTRA macro
11556 _res = _Py_Tuple ( b , Store , EXTRA );
11557 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011558 p->error_indicator = 1;
11559 return NULL;
11560 }
11561 goto done;
11562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011563 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011564 }
11565 { // '[' targets? ']'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011566 if (p->error_indicator) {
11567 return NULL;
11568 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011569 Token * _literal;
11570 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011571 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011572 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011573 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011574 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011575 (b = targets_rule(p), 1) // targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011576 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011577 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011578 )
11579 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011580 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11581 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011582 return NULL;
11583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011584 int _end_lineno = _token->end_lineno;
11585 UNUSED(_end_lineno); // Only used by EXTRA macro
11586 int _end_col_offset = _token->end_col_offset;
11587 UNUSED(_end_col_offset); // Only used by EXTRA macro
11588 _res = _Py_List ( b , Store , EXTRA );
11589 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011590 p->error_indicator = 1;
11591 return NULL;
11592 }
11593 goto done;
11594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011595 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011596 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011597 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011598 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011599 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011600}
11601
11602// incorrect_arguments:
11603// | args ',' '*'
11604// | expression for_if_clauses ',' [args | expression for_if_clauses]
11605// | args ',' args
11606static void *
11607incorrect_arguments_rule(Parser *p)
11608{
11609 if (p->error_indicator) {
11610 return NULL;
11611 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011612 void * _res = NULL;
11613 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011614 { // args ',' '*'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011615 if (p->error_indicator) {
11616 return NULL;
11617 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011618 Token * _literal;
11619 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011620 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011621 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011622 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011623 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011624 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011625 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011626 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011627 )
11628 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011629 _res = RAISE_SYNTAX_ERROR ( "iterable argument unpacking follows keyword argument unpacking" );
11630 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011631 p->error_indicator = 1;
11632 return NULL;
11633 }
11634 goto done;
11635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011636 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011637 }
11638 { // expression for_if_clauses ',' [args | expression for_if_clauses]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011639 if (p->error_indicator) {
11640 return NULL;
11641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011642 Token * _literal;
11643 void *_opt_var;
11644 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011645 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011646 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011647 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011648 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011649 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011650 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011651 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011652 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011653 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011654 (_opt_var = _tmp_125_rule(p), 1) // [args | expression for_if_clauses]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011655 )
11656 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011657 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "Generator expression must be parenthesized" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011658 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011659 p->error_indicator = 1;
11660 return NULL;
11661 }
11662 goto done;
11663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011664 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011665 }
11666 { // args ',' args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011667 if (p->error_indicator) {
11668 return NULL;
11669 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011670 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011671 expr_ty a;
11672 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011673 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011674 (a = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011675 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011676 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011677 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011678 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011679 )
11680 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011681 _res = _PyPegen_arguments_parsing_error ( p , a );
11682 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011683 p->error_indicator = 1;
11684 return NULL;
11685 }
11686 goto done;
11687 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011688 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011689 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011690 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011691 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011692 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011693}
11694
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011695// invalid_kwarg: expression '='
11696static void *
11697invalid_kwarg_rule(Parser *p)
11698{
11699 if (p->error_indicator) {
11700 return NULL;
11701 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011702 void * _res = NULL;
11703 int _mark = p->mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011704 { // expression '='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011705 if (p->error_indicator) {
11706 return NULL;
11707 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011708 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011709 expr_ty a;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011710 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011711 (a = expression_rule(p)) // expression
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011712 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011713 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011714 )
11715 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011716 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression cannot contain assignment, perhaps you meant \"==\"?" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011717 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011718 p->error_indicator = 1;
11719 return NULL;
11720 }
11721 goto done;
11722 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011723 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011724 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011725 _res = NULL;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011726 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011727 return _res;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030011728}
11729
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011730// invalid_named_expression: expression ':=' expression
11731static void *
11732invalid_named_expression_rule(Parser *p)
11733{
11734 if (p->error_indicator) {
11735 return NULL;
11736 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011737 void * _res = NULL;
11738 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011739 { // expression ':=' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011740 if (p->error_indicator) {
11741 return NULL;
11742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011743 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011744 expr_ty a;
11745 expr_ty expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011746 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011747 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011748 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011749 (_literal = _PyPegen_expect_token(p, 53)) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011750 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011751 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011752 )
11753 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011754 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use assignment expressions with %s" , _PyPegen_get_expr_name ( a ) );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011755 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011756 p->error_indicator = 1;
11757 return NULL;
11758 }
11759 goto done;
11760 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011761 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011762 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011763 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011764 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011765 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011766}
11767
11768// invalid_assignment:
11769// | list ':'
11770// | tuple ':'
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011771// | star_named_expression ',' star_named_expressions* ':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011772// | expression ':' expression ['=' annotated_rhs]
Pablo Galindo16ab0702020-05-15 02:04:52 +010011773// | star_expressions '=' (yield_expr | star_expressions)
11774// | star_expressions augassign (yield_expr | star_expressions)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011775static void *
11776invalid_assignment_rule(Parser *p)
11777{
11778 if (p->error_indicator) {
11779 return NULL;
11780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011781 void * _res = NULL;
11782 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011783 { // list ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011784 if (p->error_indicator) {
11785 return NULL;
11786 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011787 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011788 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011789 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011790 (a = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011791 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011792 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011793 )
11794 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011795 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not list) can be annotated" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011796 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011797 p->error_indicator = 1;
11798 return NULL;
11799 }
11800 goto done;
11801 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011802 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011803 }
11804 { // tuple ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011805 if (p->error_indicator) {
11806 return NULL;
11807 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011808 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011809 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011810 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011811 (a = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011812 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011813 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011814 )
11815 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011816 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
11817 if (_res == NULL && PyErr_Occurred()) {
11818 p->error_indicator = 1;
11819 return NULL;
11820 }
11821 goto done;
11822 }
11823 p->mark = _mark;
11824 }
11825 { // star_named_expression ',' star_named_expressions* ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011826 if (p->error_indicator) {
11827 return NULL;
11828 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011829 Token * _literal;
11830 Token * _literal_1;
11831 asdl_seq * _loop0_126_var;
11832 expr_ty a;
11833 if (
11834 (a = star_named_expression_rule(p)) // star_named_expression
11835 &&
11836 (_literal = _PyPegen_expect_token(p, 12)) // token=','
11837 &&
11838 (_loop0_126_var = _loop0_126_rule(p)) // star_named_expressions*
11839 &&
11840 (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':'
11841 )
11842 {
11843 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011844 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011845 p->error_indicator = 1;
11846 return NULL;
11847 }
11848 goto done;
11849 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011850 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011851 }
11852 { // expression ':' expression ['=' annotated_rhs]
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011853 if (p->error_indicator) {
11854 return NULL;
11855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011856 Token * _literal;
11857 void *_opt_var;
11858 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011859 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011860 expr_ty expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011861 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011862 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011863 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011864 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011865 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011866 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011867 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011868 (_opt_var = _tmp_127_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011869 )
11870 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011871 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "illegal target for annotation" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011872 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011873 p->error_indicator = 1;
11874 return NULL;
11875 }
11876 goto done;
11877 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011878 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011879 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010011880 { // star_expressions '=' (yield_expr | star_expressions)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011881 if (p->error_indicator) {
11882 return NULL;
11883 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010011884 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070011885 void *_tmp_128_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011886 expr_ty a;
11887 if (
Pablo Galindo16ab0702020-05-15 02:04:52 +010011888 (a = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011889 &&
Pablo Galindo16ab0702020-05-15 02:04:52 +010011890 (_literal = _PyPegen_expect_token(p, 22)) // token='='
11891 &&
11892 (_tmp_128_var = _tmp_128_rule(p)) // yield_expr | star_expressions
11893 )
11894 {
11895 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( _PyPegen_get_invalid_target ( a ) , "cannot assign to %s" , _PyPegen_get_expr_name ( _PyPegen_get_invalid_target ( a ) ) );
11896 if (_res == NULL && PyErr_Occurred()) {
11897 p->error_indicator = 1;
11898 return NULL;
11899 }
11900 goto done;
11901 }
11902 p->mark = _mark;
11903 }
11904 { // star_expressions augassign (yield_expr | star_expressions)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011905 if (p->error_indicator) {
11906 return NULL;
11907 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010011908 void *_tmp_129_var;
11909 expr_ty a;
11910 AugOperator* augassign_var;
11911 if (
11912 (a = star_expressions_rule(p)) // star_expressions
11913 &&
11914 (augassign_var = augassign_rule(p)) // augassign
Pablo Galindo2b74c832020-04-27 18:02:07 +010011915 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011916 (_tmp_129_var = _tmp_129_rule(p)) // yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011917 )
11918 {
Pablo Galindo16ab0702020-05-15 02:04:52 +010011919 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "'%s' is an illegal expression for augmented assignment" , _PyPegen_get_expr_name ( a ) );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011920 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011921 p->error_indicator = 1;
11922 return NULL;
11923 }
11924 goto done;
11925 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011926 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011927 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011928 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011929 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011930 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011931}
11932
11933// invalid_block: NEWLINE !INDENT
11934static void *
11935invalid_block_rule(Parser *p)
11936{
11937 if (p->error_indicator) {
11938 return NULL;
11939 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011940 void * _res = NULL;
11941 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011942 { // NEWLINE !INDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011943 if (p->error_indicator) {
11944 return NULL;
11945 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010011946 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011947 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011948 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011949 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011950 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT) // token=INDENT
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011951 )
11952 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011953 _res = RAISE_INDENTATION_ERROR ( "expected an indented block" );
11954 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011955 p->error_indicator = 1;
11956 return NULL;
11957 }
11958 goto done;
11959 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011960 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011962 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011963 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011964 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011965}
11966
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011967// invalid_comprehension: ('[' | '(' | '{') starred_expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011968static void *
11969invalid_comprehension_rule(Parser *p)
11970{
11971 if (p->error_indicator) {
11972 return NULL;
11973 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011974 void * _res = NULL;
11975 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011976 { // ('[' | '(' | '{') starred_expression for_if_clauses
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030011977 if (p->error_indicator) {
11978 return NULL;
11979 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011980 void *_tmp_130_var;
11981 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011982 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011983 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011984 (_tmp_130_var = _tmp_130_rule(p)) // '[' | '(' | '{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011985 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011986 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011987 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011988 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011989 )
11990 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011991 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "iterable unpacking cannot be used in comprehension" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011992 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011993 p->error_indicator = 1;
11994 return NULL;
11995 }
11996 goto done;
11997 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011998 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011999 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012000 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012001 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012002 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012003}
12004
12005// invalid_parameters:
Guido van Rossumc001c092020-04-30 12:12:19 -070012006// | param_no_default* (slash_with_default | param_with_default+) param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012007static void *
12008invalid_parameters_rule(Parser *p)
12009{
12010 if (p->error_indicator) {
12011 return NULL;
12012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012013 void * _res = NULL;
12014 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012015 { // param_no_default* (slash_with_default | param_with_default+) param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012016 if (p->error_indicator) {
12017 return NULL;
12018 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012019 asdl_seq * _loop0_131_var;
12020 void *_tmp_132_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012021 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012022 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012023 (_loop0_131_var = _loop0_131_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012024 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012025 (_tmp_132_var = _tmp_132_rule(p)) // slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012026 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012027 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012028 )
12029 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012030 _res = RAISE_SYNTAX_ERROR ( "non-default argument follows default argument" );
12031 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012032 p->error_indicator = 1;
12033 return NULL;
12034 }
12035 goto done;
12036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012037 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012038 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012039 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012040 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012041 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012042}
12043
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012044// invalid_star_etc: '*' (')' | ',' (')' | '**'))
12045static void *
12046invalid_star_etc_rule(Parser *p)
12047{
12048 if (p->error_indicator) {
12049 return NULL;
12050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012051 void * _res = NULL;
12052 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012053 { // '*' (')' | ',' (')' | '**'))
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012054 if (p->error_indicator) {
12055 return NULL;
12056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012057 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012058 void *_tmp_133_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012059 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012060 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012061 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012062 (_tmp_133_var = _tmp_133_rule(p)) // ')' | ',' (')' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012063 )
12064 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012065 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
12066 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012067 p->error_indicator = 1;
12068 return NULL;
12069 }
12070 goto done;
12071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012072 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012073 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012074 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012075 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012076 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012077}
12078
12079// invalid_lambda_star_etc: '*' (':' | ',' (':' | '**'))
12080static void *
12081invalid_lambda_star_etc_rule(Parser *p)
12082{
12083 if (p->error_indicator) {
12084 return NULL;
12085 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012086 void * _res = NULL;
12087 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012088 { // '*' (':' | ',' (':' | '**'))
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012089 if (p->error_indicator) {
12090 return NULL;
12091 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012092 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012093 void *_tmp_134_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012094 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012095 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012096 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012097 (_tmp_134_var = _tmp_134_rule(p)) // ':' | ',' (':' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012098 )
12099 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012100 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
12101 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012102 p->error_indicator = 1;
12103 return NULL;
12104 }
12105 goto done;
12106 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012107 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012108 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012109 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012110 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012111 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030012112}
12113
Guido van Rossumc001c092020-04-30 12:12:19 -070012114// invalid_double_type_comments: TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
12115static void *
12116invalid_double_type_comments_rule(Parser *p)
12117{
12118 if (p->error_indicator) {
12119 return NULL;
12120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012121 void * _res = NULL;
12122 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012123 { // TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012124 if (p->error_indicator) {
12125 return NULL;
12126 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010012127 Token * indent_var;
12128 Token * newline_var;
12129 Token * newline_var_1;
12130 Token * type_comment_var;
12131 Token * type_comment_var_1;
Guido van Rossumc001c092020-04-30 12:12:19 -070012132 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012133 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070012134 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012135 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070012136 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012137 (type_comment_var_1 = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070012138 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012139 (newline_var_1 = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070012140 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012141 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070012142 )
12143 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012144 _res = RAISE_SYNTAX_ERROR ( "Cannot have two type comments on def" );
12145 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012146 p->error_indicator = 1;
12147 return NULL;
12148 }
12149 goto done;
12150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012151 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012153 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012154 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012155 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012156}
12157
Shantanu27c0d9b2020-05-11 14:53:58 -070012158// invalid_del_target: star_expression &del_target_end
12159static void *
12160invalid_del_target_rule(Parser *p)
12161{
12162 if (p->error_indicator) {
12163 return NULL;
12164 }
12165 void * _res = NULL;
12166 int _mark = p->mark;
12167 { // star_expression &del_target_end
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012168 if (p->error_indicator) {
12169 return NULL;
12170 }
Shantanu27c0d9b2020-05-11 14:53:58 -070012171 expr_ty a;
12172 if (
12173 (a = star_expression_rule(p)) // star_expression
12174 &&
12175 _PyPegen_lookahead(1, del_target_end_rule, p)
12176 )
12177 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012178 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot delete %s" , _PyPegen_get_expr_name ( a ) );
Shantanu27c0d9b2020-05-11 14:53:58 -070012179 if (_res == NULL && PyErr_Occurred()) {
12180 p->error_indicator = 1;
12181 return NULL;
12182 }
12183 goto done;
12184 }
12185 p->mark = _mark;
12186 }
12187 _res = NULL;
12188 done:
12189 return _res;
12190}
12191
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012192// _loop0_1: NEWLINE
12193static asdl_seq *
12194_loop0_1_rule(Parser *p)
12195{
12196 if (p->error_indicator) {
12197 return NULL;
12198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012199 void *_res = NULL;
12200 int _mark = p->mark;
12201 int _start_mark = p->mark;
12202 void **_children = PyMem_Malloc(sizeof(void *));
12203 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012204 p->error_indicator = 1;
12205 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012206 return NULL;
12207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012208 ssize_t _children_capacity = 1;
12209 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012210 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012211 if (p->error_indicator) {
12212 return NULL;
12213 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010012214 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012215 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010012216 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012217 )
12218 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012219 _res = newline_var;
12220 if (_n == _children_capacity) {
12221 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012222 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12223 if (!_new_children) {
12224 p->error_indicator = 1;
12225 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012226 return NULL;
12227 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012228 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012229 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012230 _children[_n++] = _res;
12231 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012232 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012233 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012234 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012235 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12236 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012237 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012238 p->error_indicator = 1;
12239 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012240 return NULL;
12241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012242 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12243 PyMem_Free(_children);
12244 _PyPegen_insert_memo(p, _start_mark, _loop0_1_type, _seq);
12245 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012246}
12247
Guido van Rossumc001c092020-04-30 12:12:19 -070012248// _loop0_2: NEWLINE
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012249static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012250_loop0_2_rule(Parser *p)
12251{
12252 if (p->error_indicator) {
12253 return NULL;
12254 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012255 void *_res = NULL;
12256 int _mark = p->mark;
12257 int _start_mark = p->mark;
12258 void **_children = PyMem_Malloc(sizeof(void *));
12259 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012260 p->error_indicator = 1;
12261 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012262 return NULL;
12263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012264 ssize_t _children_capacity = 1;
12265 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012266 { // NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012267 if (p->error_indicator) {
12268 return NULL;
12269 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010012270 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012271 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010012272 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070012273 )
12274 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012275 _res = newline_var;
12276 if (_n == _children_capacity) {
12277 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012278 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12279 if (!_new_children) {
12280 p->error_indicator = 1;
12281 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012282 return NULL;
12283 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012284 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012286 _children[_n++] = _res;
12287 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012288 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012289 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012290 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012291 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12292 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012293 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012294 p->error_indicator = 1;
12295 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012296 return NULL;
12297 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012298 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12299 PyMem_Free(_children);
12300 _PyPegen_insert_memo(p, _start_mark, _loop0_2_type, _seq);
12301 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012302}
12303
12304// _loop0_4: ',' expression
12305static asdl_seq *
12306_loop0_4_rule(Parser *p)
12307{
12308 if (p->error_indicator) {
12309 return NULL;
12310 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012311 void *_res = NULL;
12312 int _mark = p->mark;
12313 int _start_mark = p->mark;
12314 void **_children = PyMem_Malloc(sizeof(void *));
12315 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012316 p->error_indicator = 1;
12317 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012318 return NULL;
12319 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012320 ssize_t _children_capacity = 1;
12321 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012322 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012323 if (p->error_indicator) {
12324 return NULL;
12325 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012326 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012327 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012328 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012329 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012330 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012331 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012332 )
12333 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012334 _res = elem;
12335 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012336 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012337 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012338 return NULL;
12339 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012340 if (_n == _children_capacity) {
12341 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012342 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12343 if (!_new_children) {
12344 p->error_indicator = 1;
12345 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012346 return NULL;
12347 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012348 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012349 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012350 _children[_n++] = _res;
12351 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012352 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012353 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012354 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012355 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12356 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012357 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012358 p->error_indicator = 1;
12359 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012360 return NULL;
12361 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012362 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12363 PyMem_Free(_children);
12364 _PyPegen_insert_memo(p, _start_mark, _loop0_4_type, _seq);
12365 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012366}
12367
12368// _gather_3: expression _loop0_4
12369static asdl_seq *
12370_gather_3_rule(Parser *p)
12371{
12372 if (p->error_indicator) {
12373 return NULL;
12374 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012375 asdl_seq * _res = NULL;
12376 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012377 { // expression _loop0_4
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012378 if (p->error_indicator) {
12379 return NULL;
12380 }
Guido van Rossumc001c092020-04-30 12:12:19 -070012381 expr_ty elem;
12382 asdl_seq * seq;
12383 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012384 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012385 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012386 (seq = _loop0_4_rule(p)) // _loop0_4
Guido van Rossumc001c092020-04-30 12:12:19 -070012387 )
12388 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012389 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012390 goto done;
12391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012392 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012394 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012395 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012396 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012397}
12398
12399// _loop0_6: ',' expression
12400static asdl_seq *
12401_loop0_6_rule(Parser *p)
12402{
12403 if (p->error_indicator) {
12404 return NULL;
12405 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012406 void *_res = NULL;
12407 int _mark = p->mark;
12408 int _start_mark = p->mark;
12409 void **_children = PyMem_Malloc(sizeof(void *));
12410 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012411 p->error_indicator = 1;
12412 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012413 return NULL;
12414 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012415 ssize_t _children_capacity = 1;
12416 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012417 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012418 if (p->error_indicator) {
12419 return NULL;
12420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012421 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012422 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012423 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012424 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012425 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012426 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012427 )
12428 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012429 _res = elem;
12430 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012431 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012432 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012433 return NULL;
12434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012435 if (_n == _children_capacity) {
12436 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012437 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12438 if (!_new_children) {
12439 p->error_indicator = 1;
12440 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012441 return NULL;
12442 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012443 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012444 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012445 _children[_n++] = _res;
12446 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012447 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012448 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012449 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012450 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12451 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012452 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012453 p->error_indicator = 1;
12454 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012455 return NULL;
12456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012457 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12458 PyMem_Free(_children);
12459 _PyPegen_insert_memo(p, _start_mark, _loop0_6_type, _seq);
12460 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012461}
12462
12463// _gather_5: expression _loop0_6
12464static asdl_seq *
12465_gather_5_rule(Parser *p)
12466{
12467 if (p->error_indicator) {
12468 return NULL;
12469 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012470 asdl_seq * _res = NULL;
12471 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012472 { // expression _loop0_6
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012473 if (p->error_indicator) {
12474 return NULL;
12475 }
Guido van Rossumc001c092020-04-30 12:12:19 -070012476 expr_ty elem;
12477 asdl_seq * seq;
12478 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012479 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012480 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012481 (seq = _loop0_6_rule(p)) // _loop0_6
Guido van Rossumc001c092020-04-30 12:12:19 -070012482 )
12483 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012484 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012485 goto done;
12486 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012487 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012488 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012489 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012490 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012491 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012492}
12493
12494// _loop0_8: ',' expression
12495static asdl_seq *
12496_loop0_8_rule(Parser *p)
12497{
12498 if (p->error_indicator) {
12499 return NULL;
12500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012501 void *_res = NULL;
12502 int _mark = p->mark;
12503 int _start_mark = p->mark;
12504 void **_children = PyMem_Malloc(sizeof(void *));
12505 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012506 p->error_indicator = 1;
12507 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012508 return NULL;
12509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012510 ssize_t _children_capacity = 1;
12511 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012512 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012513 if (p->error_indicator) {
12514 return NULL;
12515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012516 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012517 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012518 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012519 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012520 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012521 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012522 )
12523 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012524 _res = elem;
12525 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012526 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012527 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012528 return NULL;
12529 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012530 if (_n == _children_capacity) {
12531 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012532 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12533 if (!_new_children) {
12534 p->error_indicator = 1;
12535 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012536 return NULL;
12537 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012538 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012539 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012540 _children[_n++] = _res;
12541 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012542 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012543 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012544 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012545 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12546 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012547 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012548 p->error_indicator = 1;
12549 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012550 return NULL;
12551 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012552 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12553 PyMem_Free(_children);
12554 _PyPegen_insert_memo(p, _start_mark, _loop0_8_type, _seq);
12555 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012556}
12557
12558// _gather_7: expression _loop0_8
12559static asdl_seq *
12560_gather_7_rule(Parser *p)
12561{
12562 if (p->error_indicator) {
12563 return NULL;
12564 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012565 asdl_seq * _res = NULL;
12566 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012567 { // expression _loop0_8
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012568 if (p->error_indicator) {
12569 return NULL;
12570 }
Guido van Rossumc001c092020-04-30 12:12:19 -070012571 expr_ty elem;
12572 asdl_seq * seq;
12573 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012574 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012575 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012576 (seq = _loop0_8_rule(p)) // _loop0_8
Guido van Rossumc001c092020-04-30 12:12:19 -070012577 )
12578 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012579 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012580 goto done;
12581 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012582 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012584 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012585 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012586 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012587}
12588
12589// _loop0_10: ',' expression
12590static asdl_seq *
12591_loop0_10_rule(Parser *p)
12592{
12593 if (p->error_indicator) {
12594 return NULL;
12595 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012596 void *_res = NULL;
12597 int _mark = p->mark;
12598 int _start_mark = p->mark;
12599 void **_children = PyMem_Malloc(sizeof(void *));
12600 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012601 p->error_indicator = 1;
12602 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012603 return NULL;
12604 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012605 ssize_t _children_capacity = 1;
12606 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012607 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012608 if (p->error_indicator) {
12609 return NULL;
12610 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012611 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012612 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012613 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012614 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012615 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012616 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012617 )
12618 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012619 _res = elem;
12620 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012621 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012622 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012623 return NULL;
12624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012625 if (_n == _children_capacity) {
12626 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012627 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12628 if (!_new_children) {
12629 p->error_indicator = 1;
12630 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012631 return NULL;
12632 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012633 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070012634 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012635 _children[_n++] = _res;
12636 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012638 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012639 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012640 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12641 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012642 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012643 p->error_indicator = 1;
12644 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070012645 return NULL;
12646 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012647 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12648 PyMem_Free(_children);
12649 _PyPegen_insert_memo(p, _start_mark, _loop0_10_type, _seq);
12650 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012651}
12652
12653// _gather_9: expression _loop0_10
12654static asdl_seq *
12655_gather_9_rule(Parser *p)
12656{
12657 if (p->error_indicator) {
12658 return NULL;
12659 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012660 asdl_seq * _res = NULL;
12661 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012662 { // expression _loop0_10
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012663 if (p->error_indicator) {
12664 return NULL;
12665 }
Guido van Rossumc001c092020-04-30 12:12:19 -070012666 expr_ty elem;
12667 asdl_seq * seq;
12668 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012669 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012670 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012671 (seq = _loop0_10_rule(p)) // _loop0_10
Guido van Rossumc001c092020-04-30 12:12:19 -070012672 )
12673 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012674 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012675 goto done;
12676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012677 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012678 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012679 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012680 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012681 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012682}
12683
12684// _loop1_11: statement
12685static asdl_seq *
12686_loop1_11_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012687{
12688 if (p->error_indicator) {
12689 return NULL;
12690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012691 void *_res = NULL;
12692 int _mark = p->mark;
12693 int _start_mark = p->mark;
12694 void **_children = PyMem_Malloc(sizeof(void *));
12695 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012696 p->error_indicator = 1;
12697 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012698 return NULL;
12699 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012700 ssize_t _children_capacity = 1;
12701 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012702 { // statement
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012703 if (p->error_indicator) {
12704 return NULL;
12705 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012706 asdl_seq* statement_var;
12707 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010012708 (statement_var = statement_rule(p)) // statement
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012709 )
12710 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012711 _res = statement_var;
12712 if (_n == _children_capacity) {
12713 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012714 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12715 if (!_new_children) {
12716 p->error_indicator = 1;
12717 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012718 return NULL;
12719 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012720 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012721 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012722 _children[_n++] = _res;
12723 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012724 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012725 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012726 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012727 if (_n == 0 || p->error_indicator) {
12728 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012729 return NULL;
12730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012731 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12732 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012733 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012734 p->error_indicator = 1;
12735 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012736 return NULL;
12737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012738 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12739 PyMem_Free(_children);
12740 _PyPegen_insert_memo(p, _start_mark, _loop1_11_type, _seq);
12741 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012742}
12743
Guido van Rossumc001c092020-04-30 12:12:19 -070012744// _loop0_13: ';' small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012745static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012746_loop0_13_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012747{
12748 if (p->error_indicator) {
12749 return NULL;
12750 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012751 void *_res = NULL;
12752 int _mark = p->mark;
12753 int _start_mark = p->mark;
12754 void **_children = PyMem_Malloc(sizeof(void *));
12755 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012756 p->error_indicator = 1;
12757 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012758 return NULL;
12759 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012760 ssize_t _children_capacity = 1;
12761 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012762 { // ';' small_stmt
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012763 if (p->error_indicator) {
12764 return NULL;
12765 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012766 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012767 stmt_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012768 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012769 (_literal = _PyPegen_expect_token(p, 13)) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012770 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012771 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012772 )
12773 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012774 _res = elem;
12775 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012776 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012777 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012778 return NULL;
12779 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012780 if (_n == _children_capacity) {
12781 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012782 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12783 if (!_new_children) {
12784 p->error_indicator = 1;
12785 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012786 return NULL;
12787 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012788 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012790 _children[_n++] = _res;
12791 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012792 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012793 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012794 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012795 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12796 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012797 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030012798 p->error_indicator = 1;
12799 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012800 return NULL;
12801 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012802 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12803 PyMem_Free(_children);
12804 _PyPegen_insert_memo(p, _start_mark, _loop0_13_type, _seq);
12805 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012806}
12807
Guido van Rossumc001c092020-04-30 12:12:19 -070012808// _gather_12: small_stmt _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012809static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012810_gather_12_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012811{
12812 if (p->error_indicator) {
12813 return NULL;
12814 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012815 asdl_seq * _res = NULL;
12816 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012817 { // small_stmt _loop0_13
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012818 if (p->error_indicator) {
12819 return NULL;
12820 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012821 stmt_ty elem;
12822 asdl_seq * seq;
12823 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012824 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012825 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012826 (seq = _loop0_13_rule(p)) // _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012827 )
12828 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012829 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012830 goto done;
12831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012832 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012834 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012835 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012836 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012837}
12838
Guido van Rossumc001c092020-04-30 12:12:19 -070012839// _tmp_14: 'import' | 'from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012840static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070012841_tmp_14_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012842{
12843 if (p->error_indicator) {
12844 return NULL;
12845 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012846 void * _res = NULL;
12847 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012848 { // 'import'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012849 if (p->error_indicator) {
12850 return NULL;
12851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012852 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012853 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012854 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012855 )
12856 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012857 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012858 goto done;
12859 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012860 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012861 }
12862 { // 'from'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012863 if (p->error_indicator) {
12864 return NULL;
12865 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012866 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012867 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012868 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012869 )
12870 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012871 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012872 goto done;
12873 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012874 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012876 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012877 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012878 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012879}
12880
Guido van Rossumc001c092020-04-30 12:12:19 -070012881// _tmp_15: 'def' | '@' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012882static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070012883_tmp_15_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012884{
12885 if (p->error_indicator) {
12886 return NULL;
12887 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012888 void * _res = NULL;
12889 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012890 { // 'def'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012891 if (p->error_indicator) {
12892 return NULL;
12893 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012894 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012895 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012896 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012897 )
12898 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012899 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012900 goto done;
12901 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012902 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012903 }
12904 { // '@'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012905 if (p->error_indicator) {
12906 return NULL;
12907 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012908 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012909 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012910 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012911 )
12912 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012913 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012914 goto done;
12915 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012916 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012917 }
12918 { // ASYNC
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012919 if (p->error_indicator) {
12920 return NULL;
12921 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010012922 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012923 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012924 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012925 )
12926 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012927 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012928 goto done;
12929 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012930 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012932 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012933 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012934 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012935}
12936
Guido van Rossumc001c092020-04-30 12:12:19 -070012937// _tmp_16: 'class' | '@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012938static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070012939_tmp_16_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012940{
12941 if (p->error_indicator) {
12942 return NULL;
12943 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012944 void * _res = NULL;
12945 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012946 { // 'class'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012947 if (p->error_indicator) {
12948 return NULL;
12949 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012950 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012951 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012952 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012953 )
12954 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012955 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012956 goto done;
12957 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012958 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012959 }
12960 { // '@'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012961 if (p->error_indicator) {
12962 return NULL;
12963 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012964 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012965 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012966 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012967 )
12968 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012969 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012970 goto done;
12971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012972 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012973 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012974 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012975 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012976 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012977}
12978
Guido van Rossumc001c092020-04-30 12:12:19 -070012979// _tmp_17: 'with' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012980static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070012981_tmp_17_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012982{
12983 if (p->error_indicator) {
12984 return NULL;
12985 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012986 void * _res = NULL;
12987 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012988 { // 'with'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030012989 if (p->error_indicator) {
12990 return NULL;
12991 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012992 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012993 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012994 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012995 )
12996 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012997 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012998 goto done;
12999 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013000 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013001 }
13002 { // ASYNC
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013003 if (p->error_indicator) {
13004 return NULL;
13005 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010013006 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013007 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013008 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013009 )
13010 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013011 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013012 goto done;
13013 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013014 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013015 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013016 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013017 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013018 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013019}
13020
Guido van Rossumc001c092020-04-30 12:12:19 -070013021// _tmp_18: 'for' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013022static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013023_tmp_18_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013024{
13025 if (p->error_indicator) {
13026 return NULL;
13027 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013028 void * _res = NULL;
13029 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013030 { // 'for'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013031 if (p->error_indicator) {
13032 return NULL;
13033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013034 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013035 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013036 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013037 )
13038 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013039 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013040 goto done;
13041 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013042 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013043 }
13044 { // ASYNC
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013045 if (p->error_indicator) {
13046 return NULL;
13047 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010013048 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013049 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013050 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013051 )
13052 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013053 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013054 goto done;
13055 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013056 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013057 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013058 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013059 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013060 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013061}
13062
Guido van Rossumc001c092020-04-30 12:12:19 -070013063// _tmp_19: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013064static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013065_tmp_19_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013066{
13067 if (p->error_indicator) {
13068 return NULL;
13069 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013070 void * _res = NULL;
13071 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013072 { // '=' annotated_rhs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013073 if (p->error_indicator) {
13074 return NULL;
13075 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013076 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013077 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013078 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013079 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013080 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013081 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013082 )
13083 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013084 _res = d;
13085 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013086 p->error_indicator = 1;
13087 return NULL;
13088 }
13089 goto done;
13090 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013091 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013092 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013093 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013094 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013095 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013096}
13097
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013098// _tmp_20: '(' single_target ')' | single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013099static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013100_tmp_20_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013101{
13102 if (p->error_indicator) {
13103 return NULL;
13104 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013105 void * _res = NULL;
13106 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013107 { // '(' single_target ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013108 if (p->error_indicator) {
13109 return NULL;
13110 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013111 Token * _literal;
13112 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013113 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013114 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013115 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013116 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013117 (b = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013118 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013119 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013120 )
13121 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013122 _res = b;
13123 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013124 p->error_indicator = 1;
13125 return NULL;
13126 }
13127 goto done;
13128 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013129 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013130 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013131 { // single_subscript_attribute_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013132 if (p->error_indicator) {
13133 return NULL;
13134 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013135 expr_ty single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013136 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013137 (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p)) // single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013138 )
13139 {
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013140 _res = single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013141 goto done;
13142 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013143 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013145 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013146 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013147 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013148}
13149
Guido van Rossumc001c092020-04-30 12:12:19 -070013150// _tmp_21: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013151static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013152_tmp_21_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013153{
13154 if (p->error_indicator) {
13155 return NULL;
13156 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013157 void * _res = NULL;
13158 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013159 { // '=' annotated_rhs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013160 if (p->error_indicator) {
13161 return NULL;
13162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013163 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013164 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013165 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013166 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013167 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013168 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013169 )
13170 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013171 _res = d;
13172 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013173 p->error_indicator = 1;
13174 return NULL;
13175 }
13176 goto done;
13177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013178 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013179 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013180 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013181 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013182 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013183}
13184
Guido van Rossumc001c092020-04-30 12:12:19 -070013185// _loop1_22: (star_targets '=')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013186static asdl_seq *
13187_loop1_22_rule(Parser *p)
13188{
13189 if (p->error_indicator) {
13190 return NULL;
13191 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013192 void *_res = NULL;
13193 int _mark = p->mark;
13194 int _start_mark = p->mark;
13195 void **_children = PyMem_Malloc(sizeof(void *));
13196 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013197 p->error_indicator = 1;
13198 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013199 return NULL;
13200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013201 ssize_t _children_capacity = 1;
13202 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013203 { // (star_targets '=')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013204 if (p->error_indicator) {
13205 return NULL;
13206 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013207 void *_tmp_135_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013208 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013209 (_tmp_135_var = _tmp_135_rule(p)) // star_targets '='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013210 )
13211 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013212 _res = _tmp_135_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013213 if (_n == _children_capacity) {
13214 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013215 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13216 if (!_new_children) {
13217 p->error_indicator = 1;
13218 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013219 return NULL;
13220 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013221 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013223 _children[_n++] = _res;
13224 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013225 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013226 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013228 if (_n == 0 || p->error_indicator) {
13229 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013230 return NULL;
13231 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013232 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13233 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013234 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013235 p->error_indicator = 1;
13236 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013237 return NULL;
13238 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013239 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13240 PyMem_Free(_children);
13241 _PyPegen_insert_memo(p, _start_mark, _loop1_22_type, _seq);
13242 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013243}
13244
Guido van Rossumc001c092020-04-30 12:12:19 -070013245// _tmp_23: yield_expr | star_expressions
13246static void *
13247_tmp_23_rule(Parser *p)
13248{
13249 if (p->error_indicator) {
13250 return NULL;
13251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013252 void * _res = NULL;
13253 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013254 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013255 if (p->error_indicator) {
13256 return NULL;
13257 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013258 expr_ty yield_expr_var;
13259 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013260 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070013261 )
13262 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013263 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013264 goto done;
13265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013266 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013267 }
13268 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013269 if (p->error_indicator) {
13270 return NULL;
13271 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013272 expr_ty star_expressions_var;
13273 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013274 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070013275 )
13276 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013277 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013278 goto done;
13279 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013280 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013281 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013282 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013283 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013284 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013285}
13286
13287// _tmp_24: yield_expr | star_expressions
13288static void *
13289_tmp_24_rule(Parser *p)
13290{
13291 if (p->error_indicator) {
13292 return NULL;
13293 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013294 void * _res = NULL;
13295 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013296 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013297 if (p->error_indicator) {
13298 return NULL;
13299 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013300 expr_ty yield_expr_var;
13301 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013302 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070013303 )
13304 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013305 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013306 goto done;
13307 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013308 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013309 }
13310 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013311 if (p->error_indicator) {
13312 return NULL;
13313 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013314 expr_ty star_expressions_var;
13315 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013316 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070013317 )
13318 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013319 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013320 goto done;
13321 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013322 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013324 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013325 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013326 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013327}
13328
13329// _loop0_26: ',' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013330static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070013331_loop0_26_rule(Parser *p)
13332{
13333 if (p->error_indicator) {
13334 return NULL;
13335 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013336 void *_res = NULL;
13337 int _mark = p->mark;
13338 int _start_mark = p->mark;
13339 void **_children = PyMem_Malloc(sizeof(void *));
13340 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013341 p->error_indicator = 1;
13342 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013343 return NULL;
13344 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013345 ssize_t _children_capacity = 1;
13346 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013347 { // ',' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013348 if (p->error_indicator) {
13349 return NULL;
13350 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013351 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070013352 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070013353 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013354 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070013355 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013356 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070013357 )
13358 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013359 _res = elem;
13360 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013361 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013362 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013363 return NULL;
13364 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013365 if (_n == _children_capacity) {
13366 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013367 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13368 if (!_new_children) {
13369 p->error_indicator = 1;
13370 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013371 return NULL;
13372 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013373 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013374 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013375 _children[_n++] = _res;
13376 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013377 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013378 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013379 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013380 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13381 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013382 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013383 p->error_indicator = 1;
13384 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013385 return NULL;
13386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013387 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13388 PyMem_Free(_children);
13389 _PyPegen_insert_memo(p, _start_mark, _loop0_26_type, _seq);
13390 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013391}
13392
13393// _gather_25: NAME _loop0_26
13394static asdl_seq *
13395_gather_25_rule(Parser *p)
13396{
13397 if (p->error_indicator) {
13398 return NULL;
13399 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013400 asdl_seq * _res = NULL;
13401 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013402 { // NAME _loop0_26
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013403 if (p->error_indicator) {
13404 return NULL;
13405 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013406 expr_ty elem;
13407 asdl_seq * seq;
13408 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013409 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070013410 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013411 (seq = _loop0_26_rule(p)) // _loop0_26
Guido van Rossumc001c092020-04-30 12:12:19 -070013412 )
13413 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013414 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070013415 goto done;
13416 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013417 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013418 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013419 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013420 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013421 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013422}
13423
13424// _loop0_28: ',' NAME
13425static asdl_seq *
13426_loop0_28_rule(Parser *p)
13427{
13428 if (p->error_indicator) {
13429 return NULL;
13430 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013431 void *_res = NULL;
13432 int _mark = p->mark;
13433 int _start_mark = p->mark;
13434 void **_children = PyMem_Malloc(sizeof(void *));
13435 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013436 p->error_indicator = 1;
13437 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013438 return NULL;
13439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013440 ssize_t _children_capacity = 1;
13441 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013442 { // ',' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013443 if (p->error_indicator) {
13444 return NULL;
13445 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013446 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070013447 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070013448 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013449 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070013450 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013451 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070013452 )
13453 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013454 _res = elem;
13455 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013456 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013457 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013458 return NULL;
13459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013460 if (_n == _children_capacity) {
13461 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013462 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13463 if (!_new_children) {
13464 p->error_indicator = 1;
13465 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013466 return NULL;
13467 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013468 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013469 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013470 _children[_n++] = _res;
13471 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013473 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013475 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13476 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013477 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013478 p->error_indicator = 1;
13479 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013480 return NULL;
13481 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013482 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13483 PyMem_Free(_children);
13484 _PyPegen_insert_memo(p, _start_mark, _loop0_28_type, _seq);
13485 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013486}
13487
13488// _gather_27: NAME _loop0_28
13489static asdl_seq *
13490_gather_27_rule(Parser *p)
13491{
13492 if (p->error_indicator) {
13493 return NULL;
13494 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013495 asdl_seq * _res = NULL;
13496 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013497 { // NAME _loop0_28
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013498 if (p->error_indicator) {
13499 return NULL;
13500 }
Guido van Rossumc001c092020-04-30 12:12:19 -070013501 expr_ty elem;
13502 asdl_seq * seq;
13503 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013504 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070013505 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013506 (seq = _loop0_28_rule(p)) // _loop0_28
Guido van Rossumc001c092020-04-30 12:12:19 -070013507 )
13508 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013509 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070013510 goto done;
13511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013512 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013513 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013514 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013515 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013516 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013517}
13518
13519// _tmp_29: ',' expression
13520static void *
13521_tmp_29_rule(Parser *p)
13522{
13523 if (p->error_indicator) {
13524 return NULL;
13525 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013526 void * _res = NULL;
13527 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013528 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013529 if (p->error_indicator) {
13530 return NULL;
13531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013532 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070013533 expr_ty z;
13534 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013535 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070013536 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013537 (z = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070013538 )
13539 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013540 _res = z;
13541 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013542 p->error_indicator = 1;
13543 return NULL;
13544 }
13545 goto done;
13546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013547 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013548 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013549 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013550 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013551 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013552}
13553
13554// _loop0_30: ('.' | '...')
13555static asdl_seq *
13556_loop0_30_rule(Parser *p)
13557{
13558 if (p->error_indicator) {
13559 return NULL;
13560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013561 void *_res = NULL;
13562 int _mark = p->mark;
13563 int _start_mark = p->mark;
13564 void **_children = PyMem_Malloc(sizeof(void *));
13565 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013566 p->error_indicator = 1;
13567 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013568 return NULL;
13569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013570 ssize_t _children_capacity = 1;
13571 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013572 { // ('.' | '...')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013573 if (p->error_indicator) {
13574 return NULL;
13575 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013576 void *_tmp_136_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013577 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013578 (_tmp_136_var = _tmp_136_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070013579 )
13580 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013581 _res = _tmp_136_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013582 if (_n == _children_capacity) {
13583 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013584 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13585 if (!_new_children) {
13586 p->error_indicator = 1;
13587 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013588 return NULL;
13589 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013590 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013591 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013592 _children[_n++] = _res;
13593 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013595 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013596 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013597 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13598 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013599 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013600 p->error_indicator = 1;
13601 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013602 return NULL;
13603 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013604 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13605 PyMem_Free(_children);
13606 _PyPegen_insert_memo(p, _start_mark, _loop0_30_type, _seq);
13607 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013608}
13609
13610// _loop1_31: ('.' | '...')
13611static asdl_seq *
13612_loop1_31_rule(Parser *p)
13613{
13614 if (p->error_indicator) {
13615 return NULL;
13616 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013617 void *_res = NULL;
13618 int _mark = p->mark;
13619 int _start_mark = p->mark;
13620 void **_children = PyMem_Malloc(sizeof(void *));
13621 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013622 p->error_indicator = 1;
13623 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013624 return NULL;
13625 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013626 ssize_t _children_capacity = 1;
13627 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013628 { // ('.' | '...')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013629 if (p->error_indicator) {
13630 return NULL;
13631 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013632 void *_tmp_137_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013633 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013634 (_tmp_137_var = _tmp_137_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070013635 )
13636 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013637 _res = _tmp_137_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013638 if (_n == _children_capacity) {
13639 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013640 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13641 if (!_new_children) {
13642 p->error_indicator = 1;
13643 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013644 return NULL;
13645 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013646 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070013647 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013648 _children[_n++] = _res;
13649 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013650 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013651 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013652 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013653 if (_n == 0 || p->error_indicator) {
13654 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013655 return NULL;
13656 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013657 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13658 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013659 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013660 p->error_indicator = 1;
13661 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070013662 return NULL;
13663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013664 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13665 PyMem_Free(_children);
13666 _PyPegen_insert_memo(p, _start_mark, _loop1_31_type, _seq);
13667 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013668}
13669
13670// _loop0_33: ',' import_from_as_name
13671static asdl_seq *
13672_loop0_33_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013673{
13674 if (p->error_indicator) {
13675 return NULL;
13676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013677 void *_res = NULL;
13678 int _mark = p->mark;
13679 int _start_mark = p->mark;
13680 void **_children = PyMem_Malloc(sizeof(void *));
13681 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013682 p->error_indicator = 1;
13683 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013684 return NULL;
13685 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013686 ssize_t _children_capacity = 1;
13687 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013688 { // ',' import_from_as_name
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013689 if (p->error_indicator) {
13690 return NULL;
13691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013692 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013693 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013694 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013695 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013696 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013697 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013698 )
13699 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013700 _res = elem;
13701 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013702 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013703 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013704 return NULL;
13705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013706 if (_n == _children_capacity) {
13707 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013708 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13709 if (!_new_children) {
13710 p->error_indicator = 1;
13711 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013712 return NULL;
13713 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013714 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013715 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013716 _children[_n++] = _res;
13717 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013718 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013719 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013720 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013721 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13722 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013723 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013724 p->error_indicator = 1;
13725 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013726 return NULL;
13727 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013728 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13729 PyMem_Free(_children);
13730 _PyPegen_insert_memo(p, _start_mark, _loop0_33_type, _seq);
13731 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013732}
13733
Guido van Rossumc001c092020-04-30 12:12:19 -070013734// _gather_32: import_from_as_name _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013735static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070013736_gather_32_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013737{
13738 if (p->error_indicator) {
13739 return NULL;
13740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013741 asdl_seq * _res = NULL;
13742 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013743 { // import_from_as_name _loop0_33
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013744 if (p->error_indicator) {
13745 return NULL;
13746 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013747 alias_ty elem;
13748 asdl_seq * seq;
13749 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013750 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013751 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013752 (seq = _loop0_33_rule(p)) // _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013753 )
13754 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013755 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013756 goto done;
13757 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013758 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013759 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013760 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013761 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013762 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013763}
13764
Guido van Rossumc001c092020-04-30 12:12:19 -070013765// _tmp_34: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013766static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013767_tmp_34_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013768{
13769 if (p->error_indicator) {
13770 return NULL;
13771 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013772 void * _res = NULL;
13773 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013774 { // 'as' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013775 if (p->error_indicator) {
13776 return NULL;
13777 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013778 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013779 expr_ty z;
13780 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013781 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013782 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013783 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013784 )
13785 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013786 _res = z;
13787 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013788 p->error_indicator = 1;
13789 return NULL;
13790 }
13791 goto done;
13792 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013793 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013794 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013795 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013796 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013797 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013798}
13799
Guido van Rossumc001c092020-04-30 12:12:19 -070013800// _loop0_36: ',' dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013801static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070013802_loop0_36_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013803{
13804 if (p->error_indicator) {
13805 return NULL;
13806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013807 void *_res = NULL;
13808 int _mark = p->mark;
13809 int _start_mark = p->mark;
13810 void **_children = PyMem_Malloc(sizeof(void *));
13811 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013812 p->error_indicator = 1;
13813 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013814 return NULL;
13815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013816 ssize_t _children_capacity = 1;
13817 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013818 { // ',' dotted_as_name
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013819 if (p->error_indicator) {
13820 return NULL;
13821 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013822 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013823 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013824 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013825 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013826 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013827 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013828 )
13829 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013830 _res = elem;
13831 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013832 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013833 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013834 return NULL;
13835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013836 if (_n == _children_capacity) {
13837 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013838 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13839 if (!_new_children) {
13840 p->error_indicator = 1;
13841 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013842 return NULL;
13843 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013844 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013845 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013846 _children[_n++] = _res;
13847 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013848 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013849 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013850 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013851 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13852 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013853 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013854 p->error_indicator = 1;
13855 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013856 return NULL;
13857 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013858 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13859 PyMem_Free(_children);
13860 _PyPegen_insert_memo(p, _start_mark, _loop0_36_type, _seq);
13861 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013862}
13863
Guido van Rossumc001c092020-04-30 12:12:19 -070013864// _gather_35: dotted_as_name _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013865static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070013866_gather_35_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013867{
13868 if (p->error_indicator) {
13869 return NULL;
13870 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013871 asdl_seq * _res = NULL;
13872 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013873 { // dotted_as_name _loop0_36
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013874 if (p->error_indicator) {
13875 return NULL;
13876 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013877 alias_ty elem;
13878 asdl_seq * seq;
13879 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013880 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013881 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013882 (seq = _loop0_36_rule(p)) // _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013883 )
13884 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013885 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013886 goto done;
13887 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013888 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013889 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013890 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013891 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013892 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013893}
13894
Guido van Rossumc001c092020-04-30 12:12:19 -070013895// _tmp_37: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013896static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070013897_tmp_37_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013898{
13899 if (p->error_indicator) {
13900 return NULL;
13901 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013902 void * _res = NULL;
13903 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013904 { // 'as' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013905 if (p->error_indicator) {
13906 return NULL;
13907 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013908 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013909 expr_ty z;
13910 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013911 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013912 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013913 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013914 )
13915 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013916 _res = z;
13917 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013918 p->error_indicator = 1;
13919 return NULL;
13920 }
13921 goto done;
13922 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013923 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013924 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013925 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013926 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013927 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013928}
13929
Guido van Rossumc001c092020-04-30 12:12:19 -070013930// _loop0_39: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013931static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070013932_loop0_39_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013933{
13934 if (p->error_indicator) {
13935 return NULL;
13936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013937 void *_res = NULL;
13938 int _mark = p->mark;
13939 int _start_mark = p->mark;
13940 void **_children = PyMem_Malloc(sizeof(void *));
13941 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013942 p->error_indicator = 1;
13943 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013944 return NULL;
13945 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013946 ssize_t _children_capacity = 1;
13947 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013948 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030013949 if (p->error_indicator) {
13950 return NULL;
13951 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013952 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013953 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013954 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013955 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013956 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013957 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013958 )
13959 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013960 _res = elem;
13961 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013962 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013963 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013964 return NULL;
13965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013966 if (_n == _children_capacity) {
13967 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013968 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13969 if (!_new_children) {
13970 p->error_indicator = 1;
13971 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013972 return NULL;
13973 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013974 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013975 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013976 _children[_n++] = _res;
13977 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013978 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013979 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013980 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013981 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13982 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013983 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030013984 p->error_indicator = 1;
13985 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013986 return NULL;
13987 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013988 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13989 PyMem_Free(_children);
13990 _PyPegen_insert_memo(p, _start_mark, _loop0_39_type, _seq);
13991 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013992}
13993
Guido van Rossumc001c092020-04-30 12:12:19 -070013994// _gather_38: with_item _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013995static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070013996_gather_38_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013997{
13998 if (p->error_indicator) {
13999 return NULL;
14000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014001 asdl_seq * _res = NULL;
14002 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014003 { // with_item _loop0_39
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014004 if (p->error_indicator) {
14005 return NULL;
14006 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014007 withitem_ty elem;
14008 asdl_seq * seq;
14009 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014010 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014011 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014012 (seq = _loop0_39_rule(p)) // _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014013 )
14014 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014015 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014016 goto done;
14017 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014018 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014019 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014020 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014021 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014022 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014023}
14024
Guido van Rossumc001c092020-04-30 12:12:19 -070014025// _loop0_41: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014026static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070014027_loop0_41_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014028{
14029 if (p->error_indicator) {
14030 return NULL;
14031 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014032 void *_res = NULL;
14033 int _mark = p->mark;
14034 int _start_mark = p->mark;
14035 void **_children = PyMem_Malloc(sizeof(void *));
14036 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014037 p->error_indicator = 1;
14038 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014039 return NULL;
14040 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014041 ssize_t _children_capacity = 1;
14042 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014043 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014044 if (p->error_indicator) {
14045 return NULL;
14046 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014047 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014048 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014049 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014050 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014051 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014052 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014053 )
14054 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014055 _res = elem;
14056 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014057 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014058 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014059 return NULL;
14060 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014061 if (_n == _children_capacity) {
14062 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014063 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14064 if (!_new_children) {
14065 p->error_indicator = 1;
14066 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014067 return NULL;
14068 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014069 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014070 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014071 _children[_n++] = _res;
14072 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014073 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014074 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014075 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014076 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14077 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014078 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014079 p->error_indicator = 1;
14080 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014081 return NULL;
14082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014083 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14084 PyMem_Free(_children);
14085 _PyPegen_insert_memo(p, _start_mark, _loop0_41_type, _seq);
14086 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014087}
14088
Guido van Rossumc001c092020-04-30 12:12:19 -070014089// _gather_40: with_item _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014090static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070014091_gather_40_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014092{
14093 if (p->error_indicator) {
14094 return NULL;
14095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014096 asdl_seq * _res = NULL;
14097 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014098 { // with_item _loop0_41
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014099 if (p->error_indicator) {
14100 return NULL;
14101 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014102 withitem_ty elem;
14103 asdl_seq * seq;
14104 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014105 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014106 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014107 (seq = _loop0_41_rule(p)) // _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014108 )
14109 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014110 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014111 goto done;
14112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014113 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014115 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014116 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014117 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014118}
14119
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014120// _loop0_43: ',' with_item
14121static asdl_seq *
14122_loop0_43_rule(Parser *p)
14123{
14124 if (p->error_indicator) {
14125 return NULL;
14126 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014127 void *_res = NULL;
14128 int _mark = p->mark;
14129 int _start_mark = p->mark;
14130 void **_children = PyMem_Malloc(sizeof(void *));
14131 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014132 p->error_indicator = 1;
14133 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014134 return NULL;
14135 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014136 ssize_t _children_capacity = 1;
14137 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014138 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014139 if (p->error_indicator) {
14140 return NULL;
14141 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014142 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014143 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014144 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014145 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014146 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014147 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014148 )
14149 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014150 _res = elem;
14151 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014152 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014153 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014154 return NULL;
14155 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014156 if (_n == _children_capacity) {
14157 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014158 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14159 if (!_new_children) {
14160 p->error_indicator = 1;
14161 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014162 return NULL;
14163 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014164 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014165 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014166 _children[_n++] = _res;
14167 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014168 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014169 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014170 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014171 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14172 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014173 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014174 p->error_indicator = 1;
14175 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014176 return NULL;
14177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014178 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14179 PyMem_Free(_children);
14180 _PyPegen_insert_memo(p, _start_mark, _loop0_43_type, _seq);
14181 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014182}
14183
14184// _gather_42: with_item _loop0_43
14185static asdl_seq *
14186_gather_42_rule(Parser *p)
14187{
14188 if (p->error_indicator) {
14189 return NULL;
14190 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014191 asdl_seq * _res = NULL;
14192 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014193 { // with_item _loop0_43
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014194 if (p->error_indicator) {
14195 return NULL;
14196 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014197 withitem_ty elem;
14198 asdl_seq * seq;
14199 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014200 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014201 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014202 (seq = _loop0_43_rule(p)) // _loop0_43
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014203 )
14204 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014205 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014206 goto done;
14207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014208 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014210 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014211 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014212 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014213}
14214
14215// _loop0_45: ',' with_item
14216static asdl_seq *
14217_loop0_45_rule(Parser *p)
14218{
14219 if (p->error_indicator) {
14220 return NULL;
14221 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014222 void *_res = NULL;
14223 int _mark = p->mark;
14224 int _start_mark = p->mark;
14225 void **_children = PyMem_Malloc(sizeof(void *));
14226 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014227 p->error_indicator = 1;
14228 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014229 return NULL;
14230 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014231 ssize_t _children_capacity = 1;
14232 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014233 { // ',' with_item
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014234 if (p->error_indicator) {
14235 return NULL;
14236 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014237 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014238 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014239 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014240 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014241 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014242 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014243 )
14244 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014245 _res = elem;
14246 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014247 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014248 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014249 return NULL;
14250 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014251 if (_n == _children_capacity) {
14252 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014253 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14254 if (!_new_children) {
14255 p->error_indicator = 1;
14256 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014257 return NULL;
14258 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014259 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014260 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014261 _children[_n++] = _res;
14262 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014264 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014266 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14267 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014268 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014269 p->error_indicator = 1;
14270 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014271 return NULL;
14272 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014273 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14274 PyMem_Free(_children);
14275 _PyPegen_insert_memo(p, _start_mark, _loop0_45_type, _seq);
14276 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014277}
14278
14279// _gather_44: with_item _loop0_45
14280static asdl_seq *
14281_gather_44_rule(Parser *p)
14282{
14283 if (p->error_indicator) {
14284 return NULL;
14285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014286 asdl_seq * _res = NULL;
14287 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014288 { // with_item _loop0_45
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014289 if (p->error_indicator) {
14290 return NULL;
14291 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014292 withitem_ty elem;
14293 asdl_seq * seq;
14294 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014295 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014296 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014297 (seq = _loop0_45_rule(p)) // _loop0_45
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014298 )
14299 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014300 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014301 goto done;
14302 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014303 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014304 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014305 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014306 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014307 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014308}
14309
14310// _tmp_46: 'as' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014311static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014312_tmp_46_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014313{
14314 if (p->error_indicator) {
14315 return NULL;
14316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014317 void * _res = NULL;
14318 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014319 { // 'as' target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014320 if (p->error_indicator) {
14321 return NULL;
14322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014323 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014324 expr_ty t;
14325 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014326 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014327 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014328 (t = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014329 )
14330 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014331 _res = t;
14332 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014333 p->error_indicator = 1;
14334 return NULL;
14335 }
14336 goto done;
14337 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014338 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014339 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014340 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014341 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014342 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014343}
14344
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014345// _loop1_47: except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014346static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014347_loop1_47_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014348{
14349 if (p->error_indicator) {
14350 return NULL;
14351 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014352 void *_res = NULL;
14353 int _mark = p->mark;
14354 int _start_mark = p->mark;
14355 void **_children = PyMem_Malloc(sizeof(void *));
14356 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014357 p->error_indicator = 1;
14358 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014359 return NULL;
14360 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014361 ssize_t _children_capacity = 1;
14362 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014363 { // except_block
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014364 if (p->error_indicator) {
14365 return NULL;
14366 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014367 excepthandler_ty except_block_var;
14368 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014369 (except_block_var = except_block_rule(p)) // except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014370 )
14371 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014372 _res = except_block_var;
14373 if (_n == _children_capacity) {
14374 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014375 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14376 if (!_new_children) {
14377 p->error_indicator = 1;
14378 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014379 return NULL;
14380 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014381 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014383 _children[_n++] = _res;
14384 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014386 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014387 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014388 if (_n == 0 || p->error_indicator) {
14389 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014390 return NULL;
14391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014392 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14393 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014394 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014395 p->error_indicator = 1;
14396 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014397 return NULL;
14398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014399 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14400 PyMem_Free(_children);
14401 _PyPegen_insert_memo(p, _start_mark, _loop1_47_type, _seq);
14402 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014403}
14404
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030014405// _tmp_48: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014406static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014407_tmp_48_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014408{
14409 if (p->error_indicator) {
14410 return NULL;
14411 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014412 void * _res = NULL;
14413 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030014414 { // 'as' NAME
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014415 if (p->error_indicator) {
14416 return NULL;
14417 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014418 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014419 expr_ty z;
14420 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014421 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014422 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030014423 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014424 )
14425 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014426 _res = z;
14427 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014428 p->error_indicator = 1;
14429 return NULL;
14430 }
14431 goto done;
14432 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014433 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014435 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014436 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014437 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014438}
14439
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014440// _tmp_49: 'from' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014441static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014442_tmp_49_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014443{
14444 if (p->error_indicator) {
14445 return NULL;
14446 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014447 void * _res = NULL;
14448 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014449 { // 'from' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014450 if (p->error_indicator) {
14451 return NULL;
14452 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014453 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014454 expr_ty z;
14455 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014456 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014457 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014458 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014459 )
14460 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014461 _res = z;
14462 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014463 p->error_indicator = 1;
14464 return NULL;
14465 }
14466 goto done;
14467 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014468 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014469 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014470 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014471 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014472 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014473}
14474
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014475// _tmp_50: '->' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014476static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014477_tmp_50_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014478{
14479 if (p->error_indicator) {
14480 return NULL;
14481 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014482 void * _res = NULL;
14483 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014484 { // '->' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014485 if (p->error_indicator) {
14486 return NULL;
14487 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014488 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070014489 expr_ty z;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014490 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014491 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014492 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014493 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014494 )
14495 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014496 _res = z;
14497 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014498 p->error_indicator = 1;
14499 return NULL;
14500 }
14501 goto done;
14502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014503 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014504 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014505 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014506 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014507 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014508}
14509
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014510// _tmp_51: '->' expression
Guido van Rossumc001c092020-04-30 12:12:19 -070014511static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014512_tmp_51_rule(Parser *p)
14513{
14514 if (p->error_indicator) {
14515 return NULL;
14516 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014517 void * _res = NULL;
14518 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014519 { // '->' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014520 if (p->error_indicator) {
14521 return NULL;
14522 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014523 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014524 expr_ty z;
14525 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014526 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014527 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014528 (z = expression_rule(p)) // expression
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014529 )
14530 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014531 _res = z;
14532 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014533 p->error_indicator = 1;
14534 return NULL;
14535 }
14536 goto done;
14537 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014538 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014539 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014540 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014541 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014542 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014543}
14544
14545// _tmp_52: NEWLINE INDENT
14546static void *
14547_tmp_52_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070014548{
14549 if (p->error_indicator) {
14550 return NULL;
14551 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014552 void * _res = NULL;
14553 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014554 { // NEWLINE INDENT
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014555 if (p->error_indicator) {
14556 return NULL;
14557 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010014558 Token * indent_var;
14559 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070014560 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014561 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070014562 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014563 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070014564 )
14565 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014566 _res = _PyPegen_dummy_name(p, newline_var, indent_var);
Guido van Rossumc001c092020-04-30 12:12:19 -070014567 goto done;
14568 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014569 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014571 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070014572 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014573 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070014574}
14575
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014576// _loop0_53: param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014577static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014578_loop0_53_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014579{
14580 if (p->error_indicator) {
14581 return NULL;
14582 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014583 void *_res = NULL;
14584 int _mark = p->mark;
14585 int _start_mark = p->mark;
14586 void **_children = PyMem_Malloc(sizeof(void *));
14587 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014588 p->error_indicator = 1;
14589 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014590 return NULL;
14591 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014592 ssize_t _children_capacity = 1;
14593 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014594 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014595 if (p->error_indicator) {
14596 return NULL;
14597 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014598 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014599 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014600 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014601 )
14602 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014603 _res = param_no_default_var;
14604 if (_n == _children_capacity) {
14605 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014606 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14607 if (!_new_children) {
14608 p->error_indicator = 1;
14609 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014610 return NULL;
14611 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014612 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014613 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014614 _children[_n++] = _res;
14615 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014616 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014617 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014618 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014619 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14620 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014621 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014622 p->error_indicator = 1;
14623 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014624 return NULL;
14625 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014626 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14627 PyMem_Free(_children);
14628 _PyPegen_insert_memo(p, _start_mark, _loop0_53_type, _seq);
14629 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014630}
14631
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014632// _loop0_54: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014633static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014634_loop0_54_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014635{
14636 if (p->error_indicator) {
14637 return NULL;
14638 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014639 void *_res = NULL;
14640 int _mark = p->mark;
14641 int _start_mark = p->mark;
14642 void **_children = PyMem_Malloc(sizeof(void *));
14643 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014644 p->error_indicator = 1;
14645 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014646 return NULL;
14647 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014648 ssize_t _children_capacity = 1;
14649 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014650 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014651 if (p->error_indicator) {
14652 return NULL;
14653 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014654 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014655 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014656 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014657 )
14658 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014659 _res = param_with_default_var;
14660 if (_n == _children_capacity) {
14661 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014662 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14663 if (!_new_children) {
14664 p->error_indicator = 1;
14665 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014666 return NULL;
14667 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014668 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070014669 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014670 _children[_n++] = _res;
14671 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014672 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014673 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014674 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014675 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14676 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014677 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014678 p->error_indicator = 1;
14679 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014680 return NULL;
14681 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014682 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14683 PyMem_Free(_children);
14684 _PyPegen_insert_memo(p, _start_mark, _loop0_54_type, _seq);
14685 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070014686}
14687
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014688// _loop0_55: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014689static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014690_loop0_55_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070014691{
14692 if (p->error_indicator) {
14693 return NULL;
14694 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014695 void *_res = NULL;
14696 int _mark = p->mark;
14697 int _start_mark = p->mark;
14698 void **_children = PyMem_Malloc(sizeof(void *));
14699 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014700 p->error_indicator = 1;
14701 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014702 return NULL;
14703 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014704 ssize_t _children_capacity = 1;
14705 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014706 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014707 if (p->error_indicator) {
14708 return NULL;
14709 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014710 NameDefaultPair* param_with_default_var;
14711 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014712 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014713 )
14714 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014715 _res = param_with_default_var;
14716 if (_n == _children_capacity) {
14717 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014718 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14719 if (!_new_children) {
14720 p->error_indicator = 1;
14721 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014722 return NULL;
14723 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014724 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070014725 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014726 _children[_n++] = _res;
14727 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014728 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014729 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014731 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14732 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014733 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014734 p->error_indicator = 1;
14735 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014736 return NULL;
14737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014738 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14739 PyMem_Free(_children);
14740 _PyPegen_insert_memo(p, _start_mark, _loop0_55_type, _seq);
14741 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070014742}
14743
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014744// _loop1_56: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014745static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014746_loop1_56_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070014747{
14748 if (p->error_indicator) {
14749 return NULL;
14750 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014751 void *_res = NULL;
14752 int _mark = p->mark;
14753 int _start_mark = p->mark;
14754 void **_children = PyMem_Malloc(sizeof(void *));
14755 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014756 p->error_indicator = 1;
14757 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014758 return NULL;
14759 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014760 ssize_t _children_capacity = 1;
14761 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014762 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014763 if (p->error_indicator) {
14764 return NULL;
14765 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014766 arg_ty param_no_default_var;
14767 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014768 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014769 )
14770 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014771 _res = param_no_default_var;
14772 if (_n == _children_capacity) {
14773 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014774 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14775 if (!_new_children) {
14776 p->error_indicator = 1;
14777 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014778 return NULL;
14779 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014780 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014781 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014782 _children[_n++] = _res;
14783 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014784 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014785 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014786 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014787 if (_n == 0 || p->error_indicator) {
14788 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014789 return NULL;
14790 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014791 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14792 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014793 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014794 p->error_indicator = 1;
14795 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014796 return NULL;
14797 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014798 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14799 PyMem_Free(_children);
14800 _PyPegen_insert_memo(p, _start_mark, _loop1_56_type, _seq);
14801 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014802}
14803
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014804// _loop0_57: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014805static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014806_loop0_57_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014807{
14808 if (p->error_indicator) {
14809 return NULL;
14810 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014811 void *_res = NULL;
14812 int _mark = p->mark;
14813 int _start_mark = p->mark;
14814 void **_children = PyMem_Malloc(sizeof(void *));
14815 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014816 p->error_indicator = 1;
14817 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014818 return NULL;
14819 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014820 ssize_t _children_capacity = 1;
14821 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014822 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014823 if (p->error_indicator) {
14824 return NULL;
14825 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014826 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014827 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014828 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014829 )
14830 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014831 _res = param_with_default_var;
14832 if (_n == _children_capacity) {
14833 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014834 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14835 if (!_new_children) {
14836 p->error_indicator = 1;
14837 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014838 return NULL;
14839 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014840 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014841 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014842 _children[_n++] = _res;
14843 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014844 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014845 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014846 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014847 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14848 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014849 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014850 p->error_indicator = 1;
14851 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014852 return NULL;
14853 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014854 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14855 PyMem_Free(_children);
14856 _PyPegen_insert_memo(p, _start_mark, _loop0_57_type, _seq);
14857 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014858}
14859
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014860// _loop1_58: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014861static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014862_loop1_58_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014863{
14864 if (p->error_indicator) {
14865 return NULL;
14866 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014867 void *_res = NULL;
14868 int _mark = p->mark;
14869 int _start_mark = p->mark;
14870 void **_children = PyMem_Malloc(sizeof(void *));
14871 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014872 p->error_indicator = 1;
14873 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014874 return NULL;
14875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014876 ssize_t _children_capacity = 1;
14877 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070014878 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014879 if (p->error_indicator) {
14880 return NULL;
14881 }
Guido van Rossumc001c092020-04-30 12:12:19 -070014882 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014883 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014884 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014885 )
14886 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014887 _res = param_with_default_var;
14888 if (_n == _children_capacity) {
14889 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014890 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14891 if (!_new_children) {
14892 p->error_indicator = 1;
14893 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014894 return NULL;
14895 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014896 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014897 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014898 _children[_n++] = _res;
14899 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014900 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014901 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014902 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014903 if (_n == 0 || p->error_indicator) {
14904 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070014905 return NULL;
14906 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014907 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14908 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014909 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014910 p->error_indicator = 1;
14911 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014912 return NULL;
14913 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014914 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14915 PyMem_Free(_children);
14916 _PyPegen_insert_memo(p, _start_mark, _loop1_58_type, _seq);
14917 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070014918}
14919
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014920// _loop1_59: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014921static asdl_seq *
14922_loop1_59_rule(Parser *p)
14923{
14924 if (p->error_indicator) {
14925 return NULL;
14926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014927 void *_res = NULL;
14928 int _mark = p->mark;
14929 int _start_mark = p->mark;
14930 void **_children = PyMem_Malloc(sizeof(void *));
14931 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014932 p->error_indicator = 1;
14933 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014934 return NULL;
14935 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014936 ssize_t _children_capacity = 1;
14937 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014938 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014939 if (p->error_indicator) {
14940 return NULL;
14941 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014942 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070014943 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014944 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014945 )
14946 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014947 _res = param_no_default_var;
14948 if (_n == _children_capacity) {
14949 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014950 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14951 if (!_new_children) {
14952 p->error_indicator = 1;
14953 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014954 return NULL;
14955 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014956 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070014957 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014958 _children[_n++] = _res;
14959 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014960 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014961 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070014962 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014963 if (_n == 0 || p->error_indicator) {
14964 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070014965 return NULL;
14966 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014967 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14968 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014969 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014970 p->error_indicator = 1;
14971 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014972 return NULL;
14973 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014974 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14975 PyMem_Free(_children);
14976 _PyPegen_insert_memo(p, _start_mark, _loop1_59_type, _seq);
14977 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070014978}
14979
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014980// _loop1_60: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070014981static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014982_loop1_60_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070014983{
14984 if (p->error_indicator) {
14985 return NULL;
14986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014987 void *_res = NULL;
14988 int _mark = p->mark;
14989 int _start_mark = p->mark;
14990 void **_children = PyMem_Malloc(sizeof(void *));
14991 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030014992 p->error_indicator = 1;
14993 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070014994 return NULL;
14995 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014996 ssize_t _children_capacity = 1;
14997 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014998 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030014999 if (p->error_indicator) {
15000 return NULL;
15001 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015002 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070015003 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015004 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015005 )
15006 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015007 _res = param_no_default_var;
15008 if (_n == _children_capacity) {
15009 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015010 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15011 if (!_new_children) {
15012 p->error_indicator = 1;
15013 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015014 return NULL;
15015 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015016 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070015017 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015018 _children[_n++] = _res;
15019 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015021 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015022 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015023 if (_n == 0 || p->error_indicator) {
15024 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070015025 return NULL;
15026 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015027 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15028 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015029 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015030 p->error_indicator = 1;
15031 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015032 return NULL;
15033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015034 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15035 PyMem_Free(_children);
15036 _PyPegen_insert_memo(p, _start_mark, _loop1_60_type, _seq);
15037 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015038}
15039
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015040// _loop0_61: param_no_default
15041static asdl_seq *
15042_loop0_61_rule(Parser *p)
15043{
15044 if (p->error_indicator) {
15045 return NULL;
15046 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015047 void *_res = NULL;
15048 int _mark = p->mark;
15049 int _start_mark = p->mark;
15050 void **_children = PyMem_Malloc(sizeof(void *));
15051 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015052 p->error_indicator = 1;
15053 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015054 return NULL;
15055 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015056 ssize_t _children_capacity = 1;
15057 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015058 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015059 if (p->error_indicator) {
15060 return NULL;
15061 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015062 arg_ty param_no_default_var;
15063 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015064 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015065 )
15066 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015067 _res = param_no_default_var;
15068 if (_n == _children_capacity) {
15069 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015070 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15071 if (!_new_children) {
15072 p->error_indicator = 1;
15073 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015074 return NULL;
15075 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015076 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015077 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015078 _children[_n++] = _res;
15079 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015081 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015083 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15084 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015085 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015086 p->error_indicator = 1;
15087 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015088 return NULL;
15089 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015090 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15091 PyMem_Free(_children);
15092 _PyPegen_insert_memo(p, _start_mark, _loop0_61_type, _seq);
15093 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015094}
15095
15096// _loop1_62: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015097static asdl_seq *
15098_loop1_62_rule(Parser *p)
15099{
15100 if (p->error_indicator) {
15101 return NULL;
15102 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015103 void *_res = NULL;
15104 int _mark = p->mark;
15105 int _start_mark = p->mark;
15106 void **_children = PyMem_Malloc(sizeof(void *));
15107 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015108 p->error_indicator = 1;
15109 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015110 return NULL;
15111 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015112 ssize_t _children_capacity = 1;
15113 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015114 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015115 if (p->error_indicator) {
15116 return NULL;
15117 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015118 NameDefaultPair* param_with_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070015119 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015120 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070015121 )
15122 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015123 _res = param_with_default_var;
15124 if (_n == _children_capacity) {
15125 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015126 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15127 if (!_new_children) {
15128 p->error_indicator = 1;
15129 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015130 return NULL;
15131 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015132 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070015133 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015134 _children[_n++] = _res;
15135 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015136 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015137 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015138 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015139 if (_n == 0 || p->error_indicator) {
15140 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070015141 return NULL;
15142 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015143 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15144 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015145 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015146 p->error_indicator = 1;
15147 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070015148 return NULL;
15149 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015150 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15151 PyMem_Free(_children);
15152 _PyPegen_insert_memo(p, _start_mark, _loop1_62_type, _seq);
15153 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070015154}
15155
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015156// _loop0_63: param_no_default
15157static asdl_seq *
15158_loop0_63_rule(Parser *p)
15159{
15160 if (p->error_indicator) {
15161 return NULL;
15162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015163 void *_res = NULL;
15164 int _mark = p->mark;
15165 int _start_mark = p->mark;
15166 void **_children = PyMem_Malloc(sizeof(void *));
15167 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015168 p->error_indicator = 1;
15169 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015170 return NULL;
15171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015172 ssize_t _children_capacity = 1;
15173 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015174 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015175 if (p->error_indicator) {
15176 return NULL;
15177 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015178 arg_ty param_no_default_var;
15179 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015180 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015181 )
15182 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015183 _res = param_no_default_var;
15184 if (_n == _children_capacity) {
15185 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015186 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15187 if (!_new_children) {
15188 p->error_indicator = 1;
15189 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015190 return NULL;
15191 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015192 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015193 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015194 _children[_n++] = _res;
15195 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015196 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015197 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015199 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15200 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015201 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015202 p->error_indicator = 1;
15203 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015204 return NULL;
15205 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015206 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15207 PyMem_Free(_children);
15208 _PyPegen_insert_memo(p, _start_mark, _loop0_63_type, _seq);
15209 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015210}
15211
15212// _loop1_64: param_with_default
15213static asdl_seq *
15214_loop1_64_rule(Parser *p)
15215{
15216 if (p->error_indicator) {
15217 return NULL;
15218 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015219 void *_res = NULL;
15220 int _mark = p->mark;
15221 int _start_mark = p->mark;
15222 void **_children = PyMem_Malloc(sizeof(void *));
15223 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015224 p->error_indicator = 1;
15225 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015226 return NULL;
15227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015228 ssize_t _children_capacity = 1;
15229 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015230 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015231 if (p->error_indicator) {
15232 return NULL;
15233 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015234 NameDefaultPair* param_with_default_var;
15235 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015236 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015237 )
15238 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015239 _res = param_with_default_var;
15240 if (_n == _children_capacity) {
15241 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015242 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15243 if (!_new_children) {
15244 p->error_indicator = 1;
15245 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015246 return NULL;
15247 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015248 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015249 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015250 _children[_n++] = _res;
15251 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015253 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015254 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015255 if (_n == 0 || p->error_indicator) {
15256 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015257 return NULL;
15258 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015259 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15260 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015261 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015262 p->error_indicator = 1;
15263 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015264 return NULL;
15265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015266 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15267 PyMem_Free(_children);
15268 _PyPegen_insert_memo(p, _start_mark, _loop1_64_type, _seq);
15269 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015270}
15271
15272// _loop0_65: param_maybe_default
15273static asdl_seq *
15274_loop0_65_rule(Parser *p)
15275{
15276 if (p->error_indicator) {
15277 return NULL;
15278 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015279 void *_res = NULL;
15280 int _mark = p->mark;
15281 int _start_mark = p->mark;
15282 void **_children = PyMem_Malloc(sizeof(void *));
15283 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015284 p->error_indicator = 1;
15285 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015286 return NULL;
15287 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015288 ssize_t _children_capacity = 1;
15289 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015290 { // param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015291 if (p->error_indicator) {
15292 return NULL;
15293 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015294 NameDefaultPair* param_maybe_default_var;
15295 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015296 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015297 )
15298 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015299 _res = param_maybe_default_var;
15300 if (_n == _children_capacity) {
15301 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015302 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15303 if (!_new_children) {
15304 p->error_indicator = 1;
15305 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015306 return NULL;
15307 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015308 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015309 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015310 _children[_n++] = _res;
15311 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015312 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015313 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015314 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015315 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15316 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015317 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015318 p->error_indicator = 1;
15319 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015320 return NULL;
15321 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015322 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15323 PyMem_Free(_children);
15324 _PyPegen_insert_memo(p, _start_mark, _loop0_65_type, _seq);
15325 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015326}
15327
15328// _loop1_66: param_maybe_default
15329static asdl_seq *
15330_loop1_66_rule(Parser *p)
15331{
15332 if (p->error_indicator) {
15333 return NULL;
15334 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015335 void *_res = NULL;
15336 int _mark = p->mark;
15337 int _start_mark = p->mark;
15338 void **_children = PyMem_Malloc(sizeof(void *));
15339 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015340 p->error_indicator = 1;
15341 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015342 return NULL;
15343 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015344 ssize_t _children_capacity = 1;
15345 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015346 { // param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015347 if (p->error_indicator) {
15348 return NULL;
15349 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015350 NameDefaultPair* param_maybe_default_var;
15351 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015352 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015353 )
15354 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015355 _res = param_maybe_default_var;
15356 if (_n == _children_capacity) {
15357 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015358 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15359 if (!_new_children) {
15360 p->error_indicator = 1;
15361 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015362 return NULL;
15363 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015364 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015366 _children[_n++] = _res;
15367 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015368 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015369 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015370 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015371 if (_n == 0 || p->error_indicator) {
15372 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015373 return NULL;
15374 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015375 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15376 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015377 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015378 p->error_indicator = 1;
15379 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015380 return NULL;
15381 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015382 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15383 PyMem_Free(_children);
15384 _PyPegen_insert_memo(p, _start_mark, _loop1_66_type, _seq);
15385 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015386}
15387
15388// _loop1_67: ('@' named_expression NEWLINE)
15389static asdl_seq *
15390_loop1_67_rule(Parser *p)
15391{
15392 if (p->error_indicator) {
15393 return NULL;
15394 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015395 void *_res = NULL;
15396 int _mark = p->mark;
15397 int _start_mark = p->mark;
15398 void **_children = PyMem_Malloc(sizeof(void *));
15399 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015400 p->error_indicator = 1;
15401 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015402 return NULL;
15403 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015404 ssize_t _children_capacity = 1;
15405 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015406 { // ('@' named_expression NEWLINE)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015407 if (p->error_indicator) {
15408 return NULL;
15409 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015410 void *_tmp_138_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015411 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015412 (_tmp_138_var = _tmp_138_rule(p)) // '@' named_expression NEWLINE
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015413 )
15414 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015415 _res = _tmp_138_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015416 if (_n == _children_capacity) {
15417 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015418 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15419 if (!_new_children) {
15420 p->error_indicator = 1;
15421 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015422 return NULL;
15423 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015424 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015426 _children[_n++] = _res;
15427 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015428 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015429 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015430 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015431 if (_n == 0 || p->error_indicator) {
15432 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015433 return NULL;
15434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015435 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15436 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015437 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015438 p->error_indicator = 1;
15439 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015440 return NULL;
15441 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015442 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15443 PyMem_Free(_children);
15444 _PyPegen_insert_memo(p, _start_mark, _loop1_67_type, _seq);
15445 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015446}
15447
15448// _tmp_68: '(' arguments? ')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015449static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015450_tmp_68_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015451{
15452 if (p->error_indicator) {
15453 return NULL;
15454 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015455 void * _res = NULL;
15456 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015457 { // '(' arguments? ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015458 if (p->error_indicator) {
15459 return NULL;
15460 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015461 Token * _literal;
15462 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015463 void *z;
15464 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015465 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015466 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015467 (z = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015468 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015469 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015470 )
15471 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015472 _res = z;
15473 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015474 p->error_indicator = 1;
15475 return NULL;
15476 }
15477 goto done;
15478 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015479 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015481 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015482 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015483 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015484}
15485
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015486// _loop0_70: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015487static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015488_loop0_70_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015489{
15490 if (p->error_indicator) {
15491 return NULL;
15492 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015493 void *_res = NULL;
15494 int _mark = p->mark;
15495 int _start_mark = p->mark;
15496 void **_children = PyMem_Malloc(sizeof(void *));
15497 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015498 p->error_indicator = 1;
15499 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015500 return NULL;
15501 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015502 ssize_t _children_capacity = 1;
15503 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015504 { // ',' star_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015505 if (p->error_indicator) {
15506 return NULL;
15507 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015508 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015509 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015510 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015511 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015512 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015513 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015514 )
15515 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015516 _res = elem;
15517 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015518 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015519 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015520 return NULL;
15521 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015522 if (_n == _children_capacity) {
15523 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015524 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15525 if (!_new_children) {
15526 p->error_indicator = 1;
15527 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015528 return NULL;
15529 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015530 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015532 _children[_n++] = _res;
15533 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015534 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015535 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015536 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015537 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15538 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015539 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015540 p->error_indicator = 1;
15541 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015542 return NULL;
15543 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015544 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15545 PyMem_Free(_children);
15546 _PyPegen_insert_memo(p, _start_mark, _loop0_70_type, _seq);
15547 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015548}
15549
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015550// _gather_69: star_expression _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015551static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015552_gather_69_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015553{
15554 if (p->error_indicator) {
15555 return NULL;
15556 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015557 asdl_seq * _res = NULL;
15558 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015559 { // star_expression _loop0_70
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015560 if (p->error_indicator) {
15561 return NULL;
15562 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015563 expr_ty elem;
15564 asdl_seq * seq;
15565 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015566 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015567 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015568 (seq = _loop0_70_rule(p)) // _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015569 )
15570 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015571 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015572 goto done;
15573 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015574 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015575 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015576 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015577 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015578 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015579}
15580
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015581// _loop1_71: (',' star_expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015582static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015583_loop1_71_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015584{
15585 if (p->error_indicator) {
15586 return NULL;
15587 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015588 void *_res = NULL;
15589 int _mark = p->mark;
15590 int _start_mark = p->mark;
15591 void **_children = PyMem_Malloc(sizeof(void *));
15592 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015593 p->error_indicator = 1;
15594 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015595 return NULL;
15596 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015597 ssize_t _children_capacity = 1;
15598 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015599 { // (',' star_expression)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015600 if (p->error_indicator) {
15601 return NULL;
15602 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015603 void *_tmp_139_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015604 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015605 (_tmp_139_var = _tmp_139_rule(p)) // ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015606 )
15607 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015608 _res = _tmp_139_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015609 if (_n == _children_capacity) {
15610 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015611 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15612 if (!_new_children) {
15613 p->error_indicator = 1;
15614 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015615 return NULL;
15616 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015617 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015618 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015619 _children[_n++] = _res;
15620 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015621 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015622 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015623 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015624 if (_n == 0 || p->error_indicator) {
15625 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015626 return NULL;
15627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015628 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15629 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015630 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015631 p->error_indicator = 1;
15632 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015633 return NULL;
15634 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015635 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15636 PyMem_Free(_children);
15637 _PyPegen_insert_memo(p, _start_mark, _loop1_71_type, _seq);
15638 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015639}
15640
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015641// _loop0_73: ',' star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015642static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015643_loop0_73_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015644{
15645 if (p->error_indicator) {
15646 return NULL;
15647 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015648 void *_res = NULL;
15649 int _mark = p->mark;
15650 int _start_mark = p->mark;
15651 void **_children = PyMem_Malloc(sizeof(void *));
15652 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015653 p->error_indicator = 1;
15654 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015655 return NULL;
15656 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015657 ssize_t _children_capacity = 1;
15658 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015659 { // ',' star_named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015660 if (p->error_indicator) {
15661 return NULL;
15662 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015663 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015664 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015665 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015666 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015667 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015668 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015669 )
15670 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015671 _res = elem;
15672 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015673 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015674 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015675 return NULL;
15676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015677 if (_n == _children_capacity) {
15678 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015679 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15680 if (!_new_children) {
15681 p->error_indicator = 1;
15682 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015683 return NULL;
15684 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015685 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015686 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015687 _children[_n++] = _res;
15688 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015689 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015690 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015692 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15693 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015694 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015695 p->error_indicator = 1;
15696 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015697 return NULL;
15698 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015699 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15700 PyMem_Free(_children);
15701 _PyPegen_insert_memo(p, _start_mark, _loop0_73_type, _seq);
15702 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015703}
15704
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015705// _gather_72: star_named_expression _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015706static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015707_gather_72_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015708{
15709 if (p->error_indicator) {
15710 return NULL;
15711 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015712 asdl_seq * _res = NULL;
15713 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015714 { // star_named_expression _loop0_73
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015715 if (p->error_indicator) {
15716 return NULL;
15717 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015718 expr_ty elem;
15719 asdl_seq * seq;
15720 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015721 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015722 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015723 (seq = _loop0_73_rule(p)) // _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015724 )
15725 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015726 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015727 goto done;
15728 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015729 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015731 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015732 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015733 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015734}
15735
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015736// _loop1_74: (',' expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015737static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015738_loop1_74_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015739{
15740 if (p->error_indicator) {
15741 return NULL;
15742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015743 void *_res = NULL;
15744 int _mark = p->mark;
15745 int _start_mark = p->mark;
15746 void **_children = PyMem_Malloc(sizeof(void *));
15747 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015748 p->error_indicator = 1;
15749 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015750 return NULL;
15751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015752 ssize_t _children_capacity = 1;
15753 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015754 { // (',' expression)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015755 if (p->error_indicator) {
15756 return NULL;
15757 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015758 void *_tmp_140_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015759 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015760 (_tmp_140_var = _tmp_140_rule(p)) // ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015761 )
15762 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015763 _res = _tmp_140_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015764 if (_n == _children_capacity) {
15765 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015766 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15767 if (!_new_children) {
15768 p->error_indicator = 1;
15769 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015770 return NULL;
15771 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015772 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015774 _children[_n++] = _res;
15775 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015776 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015777 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015779 if (_n == 0 || p->error_indicator) {
15780 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015781 return NULL;
15782 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015783 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15784 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015785 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015786 p->error_indicator = 1;
15787 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015788 return NULL;
15789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015790 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15791 PyMem_Free(_children);
15792 _PyPegen_insert_memo(p, _start_mark, _loop1_74_type, _seq);
15793 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015794}
15795
Guido van Rossum3941d972020-05-01 09:42:03 -070015796// _loop0_75: lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015797static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015798_loop0_75_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015799{
15800 if (p->error_indicator) {
15801 return NULL;
15802 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015803 void *_res = NULL;
15804 int _mark = p->mark;
15805 int _start_mark = p->mark;
15806 void **_children = PyMem_Malloc(sizeof(void *));
15807 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015808 p->error_indicator = 1;
15809 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015810 return NULL;
15811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015812 ssize_t _children_capacity = 1;
15813 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070015814 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015815 if (p->error_indicator) {
15816 return NULL;
15817 }
Guido van Rossum3941d972020-05-01 09:42:03 -070015818 arg_ty lambda_param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015819 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015820 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015821 )
15822 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015823 _res = lambda_param_no_default_var;
15824 if (_n == _children_capacity) {
15825 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015826 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15827 if (!_new_children) {
15828 p->error_indicator = 1;
15829 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015830 return NULL;
15831 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015832 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015834 _children[_n++] = _res;
15835 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015837 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015838 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015839 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15840 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015841 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015842 p->error_indicator = 1;
15843 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015844 return NULL;
15845 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015846 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15847 PyMem_Free(_children);
15848 _PyPegen_insert_memo(p, _start_mark, _loop0_75_type, _seq);
15849 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015850}
15851
Guido van Rossum3941d972020-05-01 09:42:03 -070015852// _loop0_76: lambda_param_with_default
15853static asdl_seq *
15854_loop0_76_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015855{
15856 if (p->error_indicator) {
15857 return NULL;
15858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015859 void *_res = NULL;
15860 int _mark = p->mark;
15861 int _start_mark = p->mark;
15862 void **_children = PyMem_Malloc(sizeof(void *));
15863 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015864 p->error_indicator = 1;
15865 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070015866 return NULL;
15867 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015868 ssize_t _children_capacity = 1;
15869 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070015870 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015871 if (p->error_indicator) {
15872 return NULL;
15873 }
Guido van Rossum3941d972020-05-01 09:42:03 -070015874 NameDefaultPair* lambda_param_with_default_var;
15875 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015876 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015877 )
15878 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015879 _res = lambda_param_with_default_var;
15880 if (_n == _children_capacity) {
15881 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015882 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15883 if (!_new_children) {
15884 p->error_indicator = 1;
15885 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070015886 return NULL;
15887 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015888 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015889 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015890 _children[_n++] = _res;
15891 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015892 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015893 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015894 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015895 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15896 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015897 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015898 p->error_indicator = 1;
15899 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070015900 return NULL;
15901 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015902 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15903 PyMem_Free(_children);
15904 _PyPegen_insert_memo(p, _start_mark, _loop0_76_type, _seq);
15905 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015906}
15907
Guido van Rossum3941d972020-05-01 09:42:03 -070015908// _loop0_77: lambda_param_with_default
15909static asdl_seq *
15910_loop0_77_rule(Parser *p)
15911{
15912 if (p->error_indicator) {
15913 return NULL;
15914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015915 void *_res = NULL;
15916 int _mark = p->mark;
15917 int _start_mark = p->mark;
15918 void **_children = PyMem_Malloc(sizeof(void *));
15919 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015920 p->error_indicator = 1;
15921 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070015922 return NULL;
15923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015924 ssize_t _children_capacity = 1;
15925 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070015926 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015927 if (p->error_indicator) {
15928 return NULL;
15929 }
Guido van Rossum3941d972020-05-01 09:42:03 -070015930 NameDefaultPair* lambda_param_with_default_var;
15931 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015932 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070015933 )
15934 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015935 _res = lambda_param_with_default_var;
15936 if (_n == _children_capacity) {
15937 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015938 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15939 if (!_new_children) {
15940 p->error_indicator = 1;
15941 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070015942 return NULL;
15943 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015944 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070015945 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015946 _children[_n++] = _res;
15947 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015948 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015949 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015951 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15952 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015953 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015954 p->error_indicator = 1;
15955 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070015956 return NULL;
15957 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015958 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15959 PyMem_Free(_children);
15960 _PyPegen_insert_memo(p, _start_mark, _loop0_77_type, _seq);
15961 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070015962}
15963
15964// _loop1_78: lambda_param_no_default
15965static asdl_seq *
15966_loop1_78_rule(Parser *p)
15967{
15968 if (p->error_indicator) {
15969 return NULL;
15970 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015971 void *_res = NULL;
15972 int _mark = p->mark;
15973 int _start_mark = p->mark;
15974 void **_children = PyMem_Malloc(sizeof(void *));
15975 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015976 p->error_indicator = 1;
15977 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070015978 return NULL;
15979 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015980 ssize_t _children_capacity = 1;
15981 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070015982 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030015983 if (p->error_indicator) {
15984 return NULL;
15985 }
Guido van Rossum3941d972020-05-01 09:42:03 -070015986 arg_ty lambda_param_no_default_var;
15987 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015988 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070015989 )
15990 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015991 _res = lambda_param_no_default_var;
15992 if (_n == _children_capacity) {
15993 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030015994 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15995 if (!_new_children) {
15996 p->error_indicator = 1;
15997 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070015998 return NULL;
15999 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016000 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016001 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016002 _children[_n++] = _res;
16003 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016005 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016006 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016007 if (_n == 0 || p->error_indicator) {
16008 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016009 return NULL;
16010 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016011 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16012 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016013 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016014 p->error_indicator = 1;
16015 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016016 return NULL;
16017 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016018 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16019 PyMem_Free(_children);
16020 _PyPegen_insert_memo(p, _start_mark, _loop1_78_type, _seq);
16021 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016022}
16023
16024// _loop0_79: lambda_param_with_default
16025static asdl_seq *
16026_loop0_79_rule(Parser *p)
16027{
16028 if (p->error_indicator) {
16029 return NULL;
16030 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016031 void *_res = NULL;
16032 int _mark = p->mark;
16033 int _start_mark = p->mark;
16034 void **_children = PyMem_Malloc(sizeof(void *));
16035 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016036 p->error_indicator = 1;
16037 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016038 return NULL;
16039 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016040 ssize_t _children_capacity = 1;
16041 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016042 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016043 if (p->error_indicator) {
16044 return NULL;
16045 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016046 NameDefaultPair* lambda_param_with_default_var;
16047 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016048 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016049 )
16050 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016051 _res = lambda_param_with_default_var;
16052 if (_n == _children_capacity) {
16053 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016054 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16055 if (!_new_children) {
16056 p->error_indicator = 1;
16057 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016058 return NULL;
16059 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016060 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016062 _children[_n++] = _res;
16063 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016064 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016065 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016066 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016067 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16068 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016069 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016070 p->error_indicator = 1;
16071 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016072 return NULL;
16073 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016074 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16075 PyMem_Free(_children);
16076 _PyPegen_insert_memo(p, _start_mark, _loop0_79_type, _seq);
16077 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016078}
16079
16080// _loop1_80: lambda_param_with_default
16081static asdl_seq *
16082_loop1_80_rule(Parser *p)
16083{
16084 if (p->error_indicator) {
16085 return NULL;
16086 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016087 void *_res = NULL;
16088 int _mark = p->mark;
16089 int _start_mark = p->mark;
16090 void **_children = PyMem_Malloc(sizeof(void *));
16091 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016092 p->error_indicator = 1;
16093 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016094 return NULL;
16095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016096 ssize_t _children_capacity = 1;
16097 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016098 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016099 if (p->error_indicator) {
16100 return NULL;
16101 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016102 NameDefaultPair* lambda_param_with_default_var;
16103 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016104 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016105 )
16106 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016107 _res = lambda_param_with_default_var;
16108 if (_n == _children_capacity) {
16109 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016110 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16111 if (!_new_children) {
16112 p->error_indicator = 1;
16113 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016114 return NULL;
16115 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016116 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016117 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016118 _children[_n++] = _res;
16119 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016121 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016122 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016123 if (_n == 0 || p->error_indicator) {
16124 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016125 return NULL;
16126 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016127 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16128 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016129 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016130 p->error_indicator = 1;
16131 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016132 return NULL;
16133 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016134 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16135 PyMem_Free(_children);
16136 _PyPegen_insert_memo(p, _start_mark, _loop1_80_type, _seq);
16137 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016138}
16139
16140// _loop1_81: lambda_param_no_default
16141static asdl_seq *
16142_loop1_81_rule(Parser *p)
16143{
16144 if (p->error_indicator) {
16145 return NULL;
16146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016147 void *_res = NULL;
16148 int _mark = p->mark;
16149 int _start_mark = p->mark;
16150 void **_children = PyMem_Malloc(sizeof(void *));
16151 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016152 p->error_indicator = 1;
16153 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016154 return NULL;
16155 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016156 ssize_t _children_capacity = 1;
16157 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016158 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016159 if (p->error_indicator) {
16160 return NULL;
16161 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016162 arg_ty lambda_param_no_default_var;
16163 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016164 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016165 )
16166 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016167 _res = lambda_param_no_default_var;
16168 if (_n == _children_capacity) {
16169 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016170 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16171 if (!_new_children) {
16172 p->error_indicator = 1;
16173 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016174 return NULL;
16175 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016176 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016178 _children[_n++] = _res;
16179 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016180 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016181 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016182 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016183 if (_n == 0 || p->error_indicator) {
16184 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016185 return NULL;
16186 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016187 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16188 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016189 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016190 p->error_indicator = 1;
16191 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016192 return NULL;
16193 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016194 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16195 PyMem_Free(_children);
16196 _PyPegen_insert_memo(p, _start_mark, _loop1_81_type, _seq);
16197 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016198}
16199
16200// _loop1_82: lambda_param_no_default
16201static asdl_seq *
16202_loop1_82_rule(Parser *p)
16203{
16204 if (p->error_indicator) {
16205 return NULL;
16206 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016207 void *_res = NULL;
16208 int _mark = p->mark;
16209 int _start_mark = p->mark;
16210 void **_children = PyMem_Malloc(sizeof(void *));
16211 if (!_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 ssize_t _children_capacity = 1;
16217 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016218 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016219 if (p->error_indicator) {
16220 return NULL;
16221 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016222 arg_ty lambda_param_no_default_var;
16223 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016224 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016225 )
16226 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016227 _res = lambda_param_no_default_var;
16228 if (_n == _children_capacity) {
16229 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016230 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16231 if (!_new_children) {
16232 p->error_indicator = 1;
16233 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016234 return NULL;
16235 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016236 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016237 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016238 _children[_n++] = _res;
16239 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016240 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016241 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016242 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016243 if (_n == 0 || p->error_indicator) {
16244 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016245 return NULL;
16246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016247 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16248 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016249 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016250 p->error_indicator = 1;
16251 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016252 return NULL;
16253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016254 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16255 PyMem_Free(_children);
16256 _PyPegen_insert_memo(p, _start_mark, _loop1_82_type, _seq);
16257 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016258}
16259
16260// _loop0_83: lambda_param_no_default
16261static asdl_seq *
16262_loop0_83_rule(Parser *p)
16263{
16264 if (p->error_indicator) {
16265 return NULL;
16266 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016267 void *_res = NULL;
16268 int _mark = p->mark;
16269 int _start_mark = p->mark;
16270 void **_children = PyMem_Malloc(sizeof(void *));
16271 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016272 p->error_indicator = 1;
16273 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016274 return NULL;
16275 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016276 ssize_t _children_capacity = 1;
16277 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016278 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016279 if (p->error_indicator) {
16280 return NULL;
16281 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016282 arg_ty lambda_param_no_default_var;
16283 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016284 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016285 )
16286 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016287 _res = lambda_param_no_default_var;
16288 if (_n == _children_capacity) {
16289 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016290 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16291 if (!_new_children) {
16292 p->error_indicator = 1;
16293 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016294 return NULL;
16295 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016296 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016297 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016298 _children[_n++] = _res;
16299 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016301 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016302 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016303 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16304 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016305 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016306 p->error_indicator = 1;
16307 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016308 return NULL;
16309 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016310 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16311 PyMem_Free(_children);
16312 _PyPegen_insert_memo(p, _start_mark, _loop0_83_type, _seq);
16313 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016314}
16315
16316// _loop1_84: lambda_param_with_default
16317static asdl_seq *
16318_loop1_84_rule(Parser *p)
16319{
16320 if (p->error_indicator) {
16321 return NULL;
16322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016323 void *_res = NULL;
16324 int _mark = p->mark;
16325 int _start_mark = p->mark;
16326 void **_children = PyMem_Malloc(sizeof(void *));
16327 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016328 p->error_indicator = 1;
16329 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016330 return NULL;
16331 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016332 ssize_t _children_capacity = 1;
16333 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016334 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016335 if (p->error_indicator) {
16336 return NULL;
16337 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016338 NameDefaultPair* lambda_param_with_default_var;
16339 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016340 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016341 )
16342 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016343 _res = lambda_param_with_default_var;
16344 if (_n == _children_capacity) {
16345 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016346 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16347 if (!_new_children) {
16348 p->error_indicator = 1;
16349 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016350 return NULL;
16351 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016352 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016353 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016354 _children[_n++] = _res;
16355 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016356 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016357 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016358 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016359 if (_n == 0 || p->error_indicator) {
16360 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016361 return NULL;
16362 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016363 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16364 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016365 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016366 p->error_indicator = 1;
16367 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016368 return NULL;
16369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016370 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16371 PyMem_Free(_children);
16372 _PyPegen_insert_memo(p, _start_mark, _loop1_84_type, _seq);
16373 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016374}
16375
16376// _loop0_85: lambda_param_no_default
16377static asdl_seq *
16378_loop0_85_rule(Parser *p)
16379{
16380 if (p->error_indicator) {
16381 return NULL;
16382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016383 void *_res = NULL;
16384 int _mark = p->mark;
16385 int _start_mark = p->mark;
16386 void **_children = PyMem_Malloc(sizeof(void *));
16387 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016388 p->error_indicator = 1;
16389 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016390 return NULL;
16391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016392 ssize_t _children_capacity = 1;
16393 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016394 { // lambda_param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016395 if (p->error_indicator) {
16396 return NULL;
16397 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016398 arg_ty lambda_param_no_default_var;
16399 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016400 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070016401 )
16402 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016403 _res = lambda_param_no_default_var;
16404 if (_n == _children_capacity) {
16405 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016406 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16407 if (!_new_children) {
16408 p->error_indicator = 1;
16409 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016410 return NULL;
16411 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016412 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070016413 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016414 _children[_n++] = _res;
16415 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016416 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016417 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016418 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016419 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16420 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016421 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016422 p->error_indicator = 1;
16423 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070016424 return NULL;
16425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016426 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16427 PyMem_Free(_children);
16428 _PyPegen_insert_memo(p, _start_mark, _loop0_85_type, _seq);
16429 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016430}
16431
16432// _loop1_86: lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016433static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016434_loop1_86_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016435{
16436 if (p->error_indicator) {
16437 return NULL;
16438 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016439 void *_res = NULL;
16440 int _mark = p->mark;
16441 int _start_mark = p->mark;
16442 void **_children = PyMem_Malloc(sizeof(void *));
16443 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016444 p->error_indicator = 1;
16445 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016446 return NULL;
16447 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016448 ssize_t _children_capacity = 1;
16449 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016450 { // lambda_param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016451 if (p->error_indicator) {
16452 return NULL;
16453 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016454 NameDefaultPair* lambda_param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016455 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016456 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016457 )
16458 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016459 _res = lambda_param_with_default_var;
16460 if (_n == _children_capacity) {
16461 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016462 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16463 if (!_new_children) {
16464 p->error_indicator = 1;
16465 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016466 return NULL;
16467 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016468 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016469 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016470 _children[_n++] = _res;
16471 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016473 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016475 if (_n == 0 || p->error_indicator) {
16476 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016477 return NULL;
16478 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016479 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16480 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016481 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016482 p->error_indicator = 1;
16483 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016484 return NULL;
16485 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016486 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16487 PyMem_Free(_children);
16488 _PyPegen_insert_memo(p, _start_mark, _loop1_86_type, _seq);
16489 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016490}
16491
Guido van Rossum3941d972020-05-01 09:42:03 -070016492// _loop0_87: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016493static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016494_loop0_87_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016495{
16496 if (p->error_indicator) {
16497 return NULL;
16498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016499 void *_res = NULL;
16500 int _mark = p->mark;
16501 int _start_mark = p->mark;
16502 void **_children = PyMem_Malloc(sizeof(void *));
16503 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016504 p->error_indicator = 1;
16505 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016506 return NULL;
16507 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016508 ssize_t _children_capacity = 1;
16509 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016510 { // lambda_param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016511 if (p->error_indicator) {
16512 return NULL;
16513 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016514 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016515 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016516 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016517 )
16518 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016519 _res = lambda_param_maybe_default_var;
16520 if (_n == _children_capacity) {
16521 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016522 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16523 if (!_new_children) {
16524 p->error_indicator = 1;
16525 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016526 return NULL;
16527 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016528 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016529 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016530 _children[_n++] = _res;
16531 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016532 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016533 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016534 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016535 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16536 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016537 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016538 p->error_indicator = 1;
16539 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016540 return NULL;
16541 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016542 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16543 PyMem_Free(_children);
16544 _PyPegen_insert_memo(p, _start_mark, _loop0_87_type, _seq);
16545 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016546}
16547
Guido van Rossum3941d972020-05-01 09:42:03 -070016548// _loop1_88: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016549static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016550_loop1_88_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016551{
16552 if (p->error_indicator) {
16553 return NULL;
16554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016555 void *_res = NULL;
16556 int _mark = p->mark;
16557 int _start_mark = p->mark;
16558 void **_children = PyMem_Malloc(sizeof(void *));
16559 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016560 p->error_indicator = 1;
16561 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016562 return NULL;
16563 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016564 ssize_t _children_capacity = 1;
16565 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070016566 { // lambda_param_maybe_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016567 if (p->error_indicator) {
16568 return NULL;
16569 }
Guido van Rossum3941d972020-05-01 09:42:03 -070016570 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016571 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016572 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016573 )
16574 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016575 _res = lambda_param_maybe_default_var;
16576 if (_n == _children_capacity) {
16577 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016578 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16579 if (!_new_children) {
16580 p->error_indicator = 1;
16581 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016582 return NULL;
16583 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016584 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016586 _children[_n++] = _res;
16587 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016588 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016589 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016591 if (_n == 0 || p->error_indicator) {
16592 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016593 return NULL;
16594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016595 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16596 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016597 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016598 p->error_indicator = 1;
16599 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016600 return NULL;
16601 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016602 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16603 PyMem_Free(_children);
16604 _PyPegen_insert_memo(p, _start_mark, _loop1_88_type, _seq);
16605 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016606}
16607
Guido van Rossum3941d972020-05-01 09:42:03 -070016608// _loop1_89: ('or' conjunction)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016609static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016610_loop1_89_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016611{
16612 if (p->error_indicator) {
16613 return NULL;
16614 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016615 void *_res = NULL;
16616 int _mark = p->mark;
16617 int _start_mark = p->mark;
16618 void **_children = PyMem_Malloc(sizeof(void *));
16619 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016620 p->error_indicator = 1;
16621 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016622 return NULL;
16623 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016624 ssize_t _children_capacity = 1;
16625 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016626 { // ('or' conjunction)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016627 if (p->error_indicator) {
16628 return NULL;
16629 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016630 void *_tmp_141_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016631 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016632 (_tmp_141_var = _tmp_141_rule(p)) // 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016633 )
16634 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016635 _res = _tmp_141_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016636 if (_n == _children_capacity) {
16637 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016638 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16639 if (!_new_children) {
16640 p->error_indicator = 1;
16641 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016642 return NULL;
16643 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016644 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016645 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016646 _children[_n++] = _res;
16647 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016648 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016649 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016650 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016651 if (_n == 0 || p->error_indicator) {
16652 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016653 return NULL;
16654 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016655 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16656 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016657 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016658 p->error_indicator = 1;
16659 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016660 return NULL;
16661 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016662 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16663 PyMem_Free(_children);
16664 _PyPegen_insert_memo(p, _start_mark, _loop1_89_type, _seq);
16665 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016666}
16667
Guido van Rossum3941d972020-05-01 09:42:03 -070016668// _loop1_90: ('and' inversion)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016669static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016670_loop1_90_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016671{
16672 if (p->error_indicator) {
16673 return NULL;
16674 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016675 void *_res = NULL;
16676 int _mark = p->mark;
16677 int _start_mark = p->mark;
16678 void **_children = PyMem_Malloc(sizeof(void *));
16679 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016680 p->error_indicator = 1;
16681 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016682 return NULL;
16683 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016684 ssize_t _children_capacity = 1;
16685 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016686 { // ('and' inversion)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016687 if (p->error_indicator) {
16688 return NULL;
16689 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016690 void *_tmp_142_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016691 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016692 (_tmp_142_var = _tmp_142_rule(p)) // 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016693 )
16694 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016695 _res = _tmp_142_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016696 if (_n == _children_capacity) {
16697 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016698 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16699 if (!_new_children) {
16700 p->error_indicator = 1;
16701 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016702 return NULL;
16703 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016704 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016706 _children[_n++] = _res;
16707 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016709 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016710 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016711 if (_n == 0 || p->error_indicator) {
16712 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016713 return NULL;
16714 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016715 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16716 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016717 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016718 p->error_indicator = 1;
16719 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016720 return NULL;
16721 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016722 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16723 PyMem_Free(_children);
16724 _PyPegen_insert_memo(p, _start_mark, _loop1_90_type, _seq);
16725 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016726}
16727
Guido van Rossum3941d972020-05-01 09:42:03 -070016728// _loop1_91: compare_op_bitwise_or_pair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016729static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016730_loop1_91_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016731{
16732 if (p->error_indicator) {
16733 return NULL;
16734 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016735 void *_res = NULL;
16736 int _mark = p->mark;
16737 int _start_mark = p->mark;
16738 void **_children = PyMem_Malloc(sizeof(void *));
16739 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016740 p->error_indicator = 1;
16741 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016742 return NULL;
16743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016744 ssize_t _children_capacity = 1;
16745 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016746 { // compare_op_bitwise_or_pair
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016747 if (p->error_indicator) {
16748 return NULL;
16749 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016750 CmpopExprPair* compare_op_bitwise_or_pair_var;
16751 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016752 (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 +010016753 )
16754 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016755 _res = compare_op_bitwise_or_pair_var;
16756 if (_n == _children_capacity) {
16757 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016758 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16759 if (!_new_children) {
16760 p->error_indicator = 1;
16761 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016762 return NULL;
16763 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016764 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016765 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016766 _children[_n++] = _res;
16767 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016768 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016769 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016770 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016771 if (_n == 0 || p->error_indicator) {
16772 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016773 return NULL;
16774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016775 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16776 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016777 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016778 p->error_indicator = 1;
16779 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016780 return NULL;
16781 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016782 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16783 PyMem_Free(_children);
16784 _PyPegen_insert_memo(p, _start_mark, _loop1_91_type, _seq);
16785 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016786}
16787
Guido van Rossum3941d972020-05-01 09:42:03 -070016788// _tmp_92: '!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010016789static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016790_tmp_92_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010016791{
16792 if (p->error_indicator) {
16793 return NULL;
16794 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016795 void * _res = NULL;
16796 int _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016797 { // '!='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016798 if (p->error_indicator) {
16799 return NULL;
16800 }
Pablo Galindob796b3f2020-05-01 12:32:26 +010016801 Token * tok;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016802 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016803 (tok = _PyPegen_expect_token(p, 28)) // token='!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010016804 )
16805 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016806 _res = _PyPegen_check_barry_as_flufl ( p ) ? NULL : tok;
16807 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindo2b74c832020-04-27 18:02:07 +010016808 p->error_indicator = 1;
16809 return NULL;
16810 }
16811 goto done;
16812 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016813 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016814 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016815 _res = NULL;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016816 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016817 return _res;
Pablo Galindo2b74c832020-04-27 18:02:07 +010016818}
16819
Guido van Rossum3941d972020-05-01 09:42:03 -070016820// _loop0_94: ',' slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016821static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016822_loop0_94_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016823{
16824 if (p->error_indicator) {
16825 return NULL;
16826 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016827 void *_res = NULL;
16828 int _mark = p->mark;
16829 int _start_mark = p->mark;
16830 void **_children = PyMem_Malloc(sizeof(void *));
16831 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016832 p->error_indicator = 1;
16833 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016834 return NULL;
16835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016836 ssize_t _children_capacity = 1;
16837 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016838 { // ',' slice
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016839 if (p->error_indicator) {
16840 return NULL;
16841 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016842 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016843 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016844 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016845 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016846 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016847 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016848 )
16849 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016850 _res = elem;
16851 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016852 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016853 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016854 return NULL;
16855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016856 if (_n == _children_capacity) {
16857 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016858 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16859 if (!_new_children) {
16860 p->error_indicator = 1;
16861 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016862 return NULL;
16863 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016864 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016865 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016866 _children[_n++] = _res;
16867 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016868 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016869 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016870 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016871 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16872 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016873 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030016874 p->error_indicator = 1;
16875 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016876 return NULL;
16877 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016878 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16879 PyMem_Free(_children);
16880 _PyPegen_insert_memo(p, _start_mark, _loop0_94_type, _seq);
16881 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016882}
16883
Guido van Rossum3941d972020-05-01 09:42:03 -070016884// _gather_93: slice _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016885static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016886_gather_93_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016887{
16888 if (p->error_indicator) {
16889 return NULL;
16890 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016891 asdl_seq * _res = NULL;
16892 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016893 { // slice _loop0_94
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016894 if (p->error_indicator) {
16895 return NULL;
16896 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016897 expr_ty elem;
16898 asdl_seq * seq;
16899 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016900 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016901 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016902 (seq = _loop0_94_rule(p)) // _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016903 )
16904 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016905 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016906 goto done;
16907 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016908 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016909 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016910 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016911 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016912 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016913}
16914
Guido van Rossum3941d972020-05-01 09:42:03 -070016915// _tmp_95: ':' expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016916static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016917_tmp_95_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016918{
16919 if (p->error_indicator) {
16920 return NULL;
16921 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016922 void * _res = NULL;
16923 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016924 { // ':' expression?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016925 if (p->error_indicator) {
16926 return NULL;
16927 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016928 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016929 void *d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016930 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016931 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016932 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016933 (d = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016934 )
16935 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016936 _res = d;
16937 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016938 p->error_indicator = 1;
16939 return NULL;
16940 }
16941 goto done;
16942 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016943 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016944 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016945 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016946 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016947 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016948}
16949
Guido van Rossum3941d972020-05-01 09:42:03 -070016950// _tmp_96: tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016951static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016952_tmp_96_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016953{
16954 if (p->error_indicator) {
16955 return NULL;
16956 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016957 void * _res = NULL;
16958 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016959 { // tuple
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016960 if (p->error_indicator) {
16961 return NULL;
16962 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016963 expr_ty tuple_var;
16964 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016965 (tuple_var = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016966 )
16967 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016968 _res = tuple_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016969 goto done;
16970 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016971 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016972 }
16973 { // group
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016974 if (p->error_indicator) {
16975 return NULL;
16976 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016977 expr_ty group_var;
16978 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016979 (group_var = group_rule(p)) // group
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016980 )
16981 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016982 _res = group_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016983 goto done;
16984 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016985 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016986 }
16987 { // genexp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030016988 if (p->error_indicator) {
16989 return NULL;
16990 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016991 expr_ty genexp_var;
16992 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016993 (genexp_var = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016994 )
16995 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016996 _res = genexp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016997 goto done;
16998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016999 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017001 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017002 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017003 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017004}
17005
Guido van Rossum3941d972020-05-01 09:42:03 -070017006// _tmp_97: list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017007static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017008_tmp_97_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017009{
17010 if (p->error_indicator) {
17011 return NULL;
17012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017013 void * _res = NULL;
17014 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017015 { // list
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017016 if (p->error_indicator) {
17017 return NULL;
17018 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017019 expr_ty list_var;
17020 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017021 (list_var = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017022 )
17023 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017024 _res = list_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017025 goto done;
17026 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017027 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017028 }
17029 { // listcomp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017030 if (p->error_indicator) {
17031 return NULL;
17032 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017033 expr_ty listcomp_var;
17034 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017035 (listcomp_var = listcomp_rule(p)) // listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017036 )
17037 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017038 _res = listcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017039 goto done;
17040 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017041 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017042 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017043 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017044 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017045 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017046}
17047
Guido van Rossum3941d972020-05-01 09:42:03 -070017048// _tmp_98: dict | set | dictcomp | setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017049static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017050_tmp_98_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017051{
17052 if (p->error_indicator) {
17053 return NULL;
17054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017055 void * _res = NULL;
17056 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017057 { // dict
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017058 if (p->error_indicator) {
17059 return NULL;
17060 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017061 expr_ty dict_var;
17062 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017063 (dict_var = dict_rule(p)) // dict
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017064 )
17065 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017066 _res = dict_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017067 goto done;
17068 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017069 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017070 }
17071 { // set
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017072 if (p->error_indicator) {
17073 return NULL;
17074 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017075 expr_ty set_var;
17076 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017077 (set_var = set_rule(p)) // set
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017078 )
17079 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017080 _res = set_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017081 goto done;
17082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017083 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017084 }
17085 { // dictcomp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017086 if (p->error_indicator) {
17087 return NULL;
17088 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017089 expr_ty dictcomp_var;
17090 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017091 (dictcomp_var = dictcomp_rule(p)) // dictcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017092 )
17093 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017094 _res = dictcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017095 goto done;
17096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017097 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017098 }
17099 { // setcomp
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017100 if (p->error_indicator) {
17101 return NULL;
17102 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017103 expr_ty setcomp_var;
17104 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017105 (setcomp_var = setcomp_rule(p)) // setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017106 )
17107 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017108 _res = setcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017109 goto done;
17110 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017111 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017112 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017113 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017114 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017115 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017116}
17117
Guido van Rossum3941d972020-05-01 09:42:03 -070017118// _loop1_99: STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017119static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017120_loop1_99_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017121{
17122 if (p->error_indicator) {
17123 return NULL;
17124 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017125 void *_res = NULL;
17126 int _mark = p->mark;
17127 int _start_mark = p->mark;
17128 void **_children = PyMem_Malloc(sizeof(void *));
17129 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017130 p->error_indicator = 1;
17131 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017132 return NULL;
17133 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017134 ssize_t _children_capacity = 1;
17135 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017136 { // STRING
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017137 if (p->error_indicator) {
17138 return NULL;
17139 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017140 expr_ty string_var;
17141 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010017142 (string_var = _PyPegen_string_token(p)) // STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017143 )
17144 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017145 _res = string_var;
17146 if (_n == _children_capacity) {
17147 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017148 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17149 if (!_new_children) {
17150 p->error_indicator = 1;
17151 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017152 return NULL;
17153 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017154 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017155 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017156 _children[_n++] = _res;
17157 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017158 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017159 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017160 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017161 if (_n == 0 || p->error_indicator) {
17162 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017163 return NULL;
17164 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017165 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17166 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017167 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017168 p->error_indicator = 1;
17169 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017170 return NULL;
17171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017172 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17173 PyMem_Free(_children);
17174 _PyPegen_insert_memo(p, _start_mark, _loop1_99_type, _seq);
17175 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017176}
17177
Guido van Rossum3941d972020-05-01 09:42:03 -070017178// _tmp_100: star_named_expression ',' star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017179static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017180_tmp_100_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017181{
17182 if (p->error_indicator) {
17183 return NULL;
17184 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017185 void * _res = NULL;
17186 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017187 { // star_named_expression ',' star_named_expressions?
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017188 if (p->error_indicator) {
17189 return NULL;
17190 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017191 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017192 expr_ty y;
17193 void *z;
17194 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017195 (y = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017196 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017197 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017198 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017199 (z = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017200 )
17201 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017202 _res = _PyPegen_seq_insert_in_front ( p , y , z );
17203 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017204 p->error_indicator = 1;
17205 return NULL;
17206 }
17207 goto done;
17208 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017209 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017210 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017211 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017212 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017213 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017214}
17215
Guido van Rossum3941d972020-05-01 09:42:03 -070017216// _tmp_101: yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017217static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017218_tmp_101_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017219{
17220 if (p->error_indicator) {
17221 return NULL;
17222 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017223 void * _res = NULL;
17224 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017225 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017226 if (p->error_indicator) {
17227 return NULL;
17228 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017229 expr_ty yield_expr_var;
17230 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017231 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017232 )
17233 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017234 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017235 goto done;
17236 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017237 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017238 }
17239 { // named_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017240 if (p->error_indicator) {
17241 return NULL;
17242 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017243 expr_ty named_expression_var;
17244 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017245 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017246 )
17247 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017248 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017249 goto done;
17250 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017251 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017253 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017254 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017255 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017256}
17257
Guido van Rossum3941d972020-05-01 09:42:03 -070017258// _loop0_103: ',' kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017259static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017260_loop0_103_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017261{
17262 if (p->error_indicator) {
17263 return NULL;
17264 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017265 void *_res = NULL;
17266 int _mark = p->mark;
17267 int _start_mark = p->mark;
17268 void **_children = PyMem_Malloc(sizeof(void *));
17269 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017270 p->error_indicator = 1;
17271 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017272 return NULL;
17273 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017274 ssize_t _children_capacity = 1;
17275 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017276 { // ',' kvpair
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017277 if (p->error_indicator) {
17278 return NULL;
17279 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017280 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017281 KeyValuePair* elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017282 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017283 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017284 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017285 (elem = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017286 )
17287 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017288 _res = elem;
17289 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017290 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017291 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017292 return NULL;
17293 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017294 if (_n == _children_capacity) {
17295 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017296 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17297 if (!_new_children) {
17298 p->error_indicator = 1;
17299 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017300 return NULL;
17301 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017302 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017303 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017304 _children[_n++] = _res;
17305 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017306 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017307 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017308 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017309 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17310 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017311 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017312 p->error_indicator = 1;
17313 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017314 return NULL;
17315 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017316 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17317 PyMem_Free(_children);
17318 _PyPegen_insert_memo(p, _start_mark, _loop0_103_type, _seq);
17319 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017320}
17321
Guido van Rossum3941d972020-05-01 09:42:03 -070017322// _gather_102: kvpair _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017323static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017324_gather_102_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017325{
17326 if (p->error_indicator) {
17327 return NULL;
17328 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017329 asdl_seq * _res = NULL;
17330 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017331 { // kvpair _loop0_103
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017332 if (p->error_indicator) {
17333 return NULL;
17334 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017335 KeyValuePair* elem;
17336 asdl_seq * seq;
17337 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017338 (elem = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017339 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017340 (seq = _loop0_103_rule(p)) // _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017341 )
17342 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017343 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017344 goto done;
17345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017346 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017347 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017348 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017349 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017350 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017351}
17352
Guido van Rossum3941d972020-05-01 09:42:03 -070017353// _loop1_104: for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017354static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017355_loop1_104_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017356{
17357 if (p->error_indicator) {
17358 return NULL;
17359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017360 void *_res = NULL;
17361 int _mark = p->mark;
17362 int _start_mark = p->mark;
17363 void **_children = PyMem_Malloc(sizeof(void *));
17364 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017365 p->error_indicator = 1;
17366 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017367 return NULL;
17368 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017369 ssize_t _children_capacity = 1;
17370 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017371 { // for_if_clause
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017372 if (p->error_indicator) {
17373 return NULL;
17374 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017375 comprehension_ty for_if_clause_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017376 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010017377 (for_if_clause_var = for_if_clause_rule(p)) // for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017378 )
17379 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017380 _res = for_if_clause_var;
17381 if (_n == _children_capacity) {
17382 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017383 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17384 if (!_new_children) {
17385 p->error_indicator = 1;
17386 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017387 return NULL;
17388 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017389 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017391 _children[_n++] = _res;
17392 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017394 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017395 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017396 if (_n == 0 || p->error_indicator) {
17397 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017398 return NULL;
17399 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017400 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17401 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017402 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017403 p->error_indicator = 1;
17404 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017405 return NULL;
17406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017407 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17408 PyMem_Free(_children);
17409 _PyPegen_insert_memo(p, _start_mark, _loop1_104_type, _seq);
17410 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017411}
17412
Guido van Rossum3941d972020-05-01 09:42:03 -070017413// _loop0_105: ('if' disjunction)
Pablo Galindo2b74c832020-04-27 18:02:07 +010017414static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017415_loop0_105_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010017416{
17417 if (p->error_indicator) {
17418 return NULL;
17419 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017420 void *_res = NULL;
17421 int _mark = p->mark;
17422 int _start_mark = p->mark;
17423 void **_children = PyMem_Malloc(sizeof(void *));
17424 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017425 p->error_indicator = 1;
17426 PyErr_NoMemory();
Pablo Galindo2b74c832020-04-27 18:02:07 +010017427 return NULL;
17428 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017429 ssize_t _children_capacity = 1;
17430 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017431 { // ('if' disjunction)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017432 if (p->error_indicator) {
17433 return NULL;
17434 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017435 void *_tmp_143_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017436 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017437 (_tmp_143_var = _tmp_143_rule(p)) // 'if' disjunction
Pablo Galindo2b74c832020-04-27 18:02:07 +010017438 )
17439 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017440 _res = _tmp_143_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017441 if (_n == _children_capacity) {
17442 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017443 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17444 if (!_new_children) {
17445 p->error_indicator = 1;
17446 PyErr_NoMemory();
Pablo Galindo2b74c832020-04-27 18:02:07 +010017447 return NULL;
17448 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017449 _children = _new_children;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017450 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017451 _children[_n++] = _res;
17452 _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017453 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017454 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017455 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017456 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17457 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017458 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017459 p->error_indicator = 1;
17460 PyErr_NoMemory();
Pablo Galindo2b74c832020-04-27 18:02:07 +010017461 return NULL;
17462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017463 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17464 PyMem_Free(_children);
17465 _PyPegen_insert_memo(p, _start_mark, _loop0_105_type, _seq);
17466 return _seq;
Pablo Galindo2b74c832020-04-27 18:02:07 +010017467}
17468
Guido van Rossum3941d972020-05-01 09:42:03 -070017469// _loop0_106: ('if' disjunction)
Guido van Rossumc001c092020-04-30 12:12:19 -070017470static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017471_loop0_106_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070017472{
17473 if (p->error_indicator) {
17474 return NULL;
17475 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017476 void *_res = NULL;
17477 int _mark = p->mark;
17478 int _start_mark = p->mark;
17479 void **_children = PyMem_Malloc(sizeof(void *));
17480 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017481 p->error_indicator = 1;
17482 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017483 return NULL;
17484 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017485 ssize_t _children_capacity = 1;
17486 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017487 { // ('if' disjunction)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017488 if (p->error_indicator) {
17489 return NULL;
17490 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017491 void *_tmp_144_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017492 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017493 (_tmp_144_var = _tmp_144_rule(p)) // 'if' disjunction
Guido van Rossumc001c092020-04-30 12:12:19 -070017494 )
17495 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017496 _res = _tmp_144_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017497 if (_n == _children_capacity) {
17498 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017499 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17500 if (!_new_children) {
17501 p->error_indicator = 1;
17502 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017503 return NULL;
17504 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017505 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017507 _children[_n++] = _res;
17508 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017510 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017512 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17513 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017514 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017515 p->error_indicator = 1;
17516 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017517 return NULL;
17518 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017519 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17520 PyMem_Free(_children);
17521 _PyPegen_insert_memo(p, _start_mark, _loop0_106_type, _seq);
17522 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017523}
17524
Guido van Rossum3941d972020-05-01 09:42:03 -070017525// _tmp_107: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017526static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017527_tmp_107_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017528{
17529 if (p->error_indicator) {
17530 return NULL;
17531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017532 void * _res = NULL;
17533 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017534 { // ',' args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017535 if (p->error_indicator) {
17536 return NULL;
17537 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017538 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017539 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017540 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017541 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017542 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017543 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017544 )
17545 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017546 _res = c;
17547 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017548 p->error_indicator = 1;
17549 return NULL;
17550 }
Guido van Rossumc001c092020-04-30 12:12:19 -070017551 goto done;
17552 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017553 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017555 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070017556 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017557 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070017558}
17559
Guido van Rossum3941d972020-05-01 09:42:03 -070017560// _tmp_108: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017561static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070017562_tmp_108_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017563{
17564 if (p->error_indicator) {
17565 return NULL;
17566 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017567 void * _res = NULL;
17568 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017569 { // ',' args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017570 if (p->error_indicator) {
17571 return NULL;
17572 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017573 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017574 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017575 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017576 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017577 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017578 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017579 )
17580 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017581 _res = c;
17582 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017583 p->error_indicator = 1;
17584 return NULL;
17585 }
17586 goto done;
17587 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017588 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017590 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017591 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017592 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017593}
17594
Guido van Rossum3941d972020-05-01 09:42:03 -070017595// _loop0_110: ',' kwarg_or_starred
17596static asdl_seq *
17597_loop0_110_rule(Parser *p)
17598{
17599 if (p->error_indicator) {
17600 return NULL;
17601 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017602 void *_res = NULL;
17603 int _mark = p->mark;
17604 int _start_mark = p->mark;
17605 void **_children = PyMem_Malloc(sizeof(void *));
17606 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017607 p->error_indicator = 1;
17608 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017609 return NULL;
17610 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017611 ssize_t _children_capacity = 1;
17612 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070017613 { // ',' kwarg_or_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017614 if (p->error_indicator) {
17615 return NULL;
17616 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017617 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070017618 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070017619 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017620 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070017621 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017622 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070017623 )
17624 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017625 _res = elem;
17626 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070017627 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017628 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070017629 return NULL;
17630 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017631 if (_n == _children_capacity) {
17632 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017633 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17634 if (!_new_children) {
17635 p->error_indicator = 1;
17636 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017637 return NULL;
17638 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017639 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070017640 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017641 _children[_n++] = _res;
17642 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017643 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017644 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017645 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017646 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17647 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017648 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017649 p->error_indicator = 1;
17650 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017651 return NULL;
17652 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017653 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17654 PyMem_Free(_children);
17655 _PyPegen_insert_memo(p, _start_mark, _loop0_110_type, _seq);
17656 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070017657}
17658
17659// _gather_109: kwarg_or_starred _loop0_110
17660static asdl_seq *
17661_gather_109_rule(Parser *p)
17662{
17663 if (p->error_indicator) {
17664 return NULL;
17665 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017666 asdl_seq * _res = NULL;
17667 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017668 { // kwarg_or_starred _loop0_110
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017669 if (p->error_indicator) {
17670 return NULL;
17671 }
Guido van Rossum3941d972020-05-01 09:42:03 -070017672 KeywordOrStarred* elem;
17673 asdl_seq * seq;
17674 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017675 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070017676 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017677 (seq = _loop0_110_rule(p)) // _loop0_110
Guido van Rossum3941d972020-05-01 09:42:03 -070017678 )
17679 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017680 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070017681 goto done;
17682 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017683 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017684 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017685 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070017686 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017687 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070017688}
17689
17690// _loop0_112: ',' kwarg_or_double_starred
17691static asdl_seq *
17692_loop0_112_rule(Parser *p)
17693{
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;
17699 int _start_mark = p->mark;
17700 void **_children = PyMem_Malloc(sizeof(void *));
17701 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017702 p->error_indicator = 1;
17703 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017704 return NULL;
17705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017706 ssize_t _children_capacity = 1;
17707 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070017708 { // ',' kwarg_or_double_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017709 if (p->error_indicator) {
17710 return NULL;
17711 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017712 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070017713 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070017714 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017715 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070017716 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017717 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070017718 )
17719 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017720 _res = elem;
17721 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070017722 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017723 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070017724 return NULL;
17725 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017726 if (_n == _children_capacity) {
17727 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017728 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17729 if (!_new_children) {
17730 p->error_indicator = 1;
17731 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017732 return NULL;
17733 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017734 _children = _new_children;
Guido van Rossum3941d972020-05-01 09:42:03 -070017735 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017736 _children[_n++] = _res;
17737 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017738 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017739 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017741 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17742 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017743 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017744 p->error_indicator = 1;
17745 PyErr_NoMemory();
Guido van Rossum3941d972020-05-01 09:42:03 -070017746 return NULL;
17747 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017748 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17749 PyMem_Free(_children);
17750 _PyPegen_insert_memo(p, _start_mark, _loop0_112_type, _seq);
17751 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070017752}
17753
17754// _gather_111: kwarg_or_double_starred _loop0_112
17755static asdl_seq *
17756_gather_111_rule(Parser *p)
17757{
17758 if (p->error_indicator) {
17759 return NULL;
17760 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017761 asdl_seq * _res = NULL;
17762 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017763 { // kwarg_or_double_starred _loop0_112
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017764 if (p->error_indicator) {
17765 return NULL;
17766 }
Guido van Rossum3941d972020-05-01 09:42:03 -070017767 KeywordOrStarred* elem;
17768 asdl_seq * seq;
17769 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017770 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070017771 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017772 (seq = _loop0_112_rule(p)) // _loop0_112
Guido van Rossum3941d972020-05-01 09:42:03 -070017773 )
17774 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017775 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070017776 goto done;
17777 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017778 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070017779 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017780 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070017781 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017782 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070017783}
17784
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017785// _loop0_114: ',' kwarg_or_starred
Pablo Galindo2b74c832020-04-27 18:02:07 +010017786static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017787_loop0_114_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017788{
17789 if (p->error_indicator) {
17790 return NULL;
17791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017792 void *_res = NULL;
17793 int _mark = p->mark;
17794 int _start_mark = p->mark;
17795 void **_children = PyMem_Malloc(sizeof(void *));
17796 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017797 p->error_indicator = 1;
17798 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017799 return NULL;
17800 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017801 ssize_t _children_capacity = 1;
17802 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070017803 { // ',' kwarg_or_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017804 if (p->error_indicator) {
17805 return NULL;
17806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017807 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070017808 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070017809 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017810 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070017811 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017812 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070017813 )
17814 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017815 _res = elem;
17816 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070017817 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017818 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070017819 return NULL;
17820 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017821 if (_n == _children_capacity) {
17822 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017823 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17824 if (!_new_children) {
17825 p->error_indicator = 1;
17826 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070017827 return NULL;
17828 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017829 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070017830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017831 _children[_n++] = _res;
17832 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017834 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017836 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17837 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017838 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017839 p->error_indicator = 1;
17840 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070017841 return NULL;
17842 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017843 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17844 PyMem_Free(_children);
17845 _PyPegen_insert_memo(p, _start_mark, _loop0_114_type, _seq);
17846 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070017847}
17848
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017849// _gather_113: kwarg_or_starred _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070017850static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017851_gather_113_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070017852{
17853 if (p->error_indicator) {
17854 return NULL;
17855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017856 asdl_seq * _res = NULL;
17857 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017858 { // kwarg_or_starred _loop0_114
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017859 if (p->error_indicator) {
17860 return NULL;
17861 }
Guido van Rossumc001c092020-04-30 12:12:19 -070017862 KeywordOrStarred* elem;
17863 asdl_seq * seq;
17864 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017865 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070017866 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017867 (seq = _loop0_114_rule(p)) // _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070017868 )
17869 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017870 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070017871 goto done;
17872 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017873 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017875 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070017876 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017877 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070017878}
17879
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017880// _loop0_116: ',' kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070017881static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017882_loop0_116_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070017883{
17884 if (p->error_indicator) {
17885 return NULL;
17886 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017887 void *_res = NULL;
17888 int _mark = p->mark;
17889 int _start_mark = p->mark;
17890 void **_children = PyMem_Malloc(sizeof(void *));
17891 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017892 p->error_indicator = 1;
17893 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070017894 return NULL;
17895 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017896 ssize_t _children_capacity = 1;
17897 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070017898 { // ',' kwarg_or_double_starred
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017899 if (p->error_indicator) {
17900 return NULL;
17901 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017902 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070017903 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070017904 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017905 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070017906 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017907 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070017908 )
17909 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017910 _res = elem;
17911 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070017912 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017913 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070017914 return NULL;
17915 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017916 if (_n == _children_capacity) {
17917 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017918 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17919 if (!_new_children) {
17920 p->error_indicator = 1;
17921 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070017922 return NULL;
17923 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017924 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070017925 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017926 _children[_n++] = _res;
17927 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017929 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017930 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017931 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17932 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017933 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017934 p->error_indicator = 1;
17935 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070017936 return NULL;
17937 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017938 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17939 PyMem_Free(_children);
17940 _PyPegen_insert_memo(p, _start_mark, _loop0_116_type, _seq);
17941 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070017942}
17943
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017944// _gather_115: kwarg_or_double_starred _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070017945static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017946_gather_115_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070017947{
17948 if (p->error_indicator) {
17949 return NULL;
17950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017951 asdl_seq * _res = NULL;
17952 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017953 { // kwarg_or_double_starred _loop0_116
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017954 if (p->error_indicator) {
17955 return NULL;
17956 }
Guido van Rossumc001c092020-04-30 12:12:19 -070017957 KeywordOrStarred* elem;
17958 asdl_seq * seq;
17959 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010017960 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070017961 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017962 (seq = _loop0_116_rule(p)) // _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070017963 )
17964 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017965 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070017966 goto done;
17967 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017968 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017969 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017970 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070017971 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017972 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070017973}
17974
Guido van Rossum3941d972020-05-01 09:42:03 -070017975// _loop0_117: (',' star_target)
Guido van Rossumc001c092020-04-30 12:12:19 -070017976static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070017977_loop0_117_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017978{
17979 if (p->error_indicator) {
17980 return NULL;
17981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017982 void *_res = NULL;
17983 int _mark = p->mark;
17984 int _start_mark = p->mark;
17985 void **_children = PyMem_Malloc(sizeof(void *));
17986 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030017987 p->error_indicator = 1;
17988 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017989 return NULL;
17990 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017991 ssize_t _children_capacity = 1;
17992 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017993 { // (',' star_target)
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030017994 if (p->error_indicator) {
17995 return NULL;
17996 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017997 void *_tmp_145_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030017998 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017999 (_tmp_145_var = _tmp_145_rule(p)) // ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018000 )
18001 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018002 _res = _tmp_145_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018003 if (_n == _children_capacity) {
18004 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018005 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18006 if (!_new_children) {
18007 p->error_indicator = 1;
18008 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018009 return NULL;
18010 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018011 _children = _new_children;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018013 _children[_n++] = _res;
18014 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018015 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018016 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018017 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018018 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18019 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018020 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018021 p->error_indicator = 1;
18022 PyErr_NoMemory();
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018023 return NULL;
18024 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018025 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18026 PyMem_Free(_children);
18027 _PyPegen_insert_memo(p, _start_mark, _loop0_117_type, _seq);
18028 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018029}
18030
Guido van Rossum3941d972020-05-01 09:42:03 -070018031// _loop0_119: ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030018032static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018033_loop0_119_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070018034{
18035 if (p->error_indicator) {
18036 return NULL;
18037 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018038 void *_res = NULL;
18039 int _mark = p->mark;
18040 int _start_mark = p->mark;
18041 void **_children = PyMem_Malloc(sizeof(void *));
18042 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018043 p->error_indicator = 1;
18044 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018045 return NULL;
18046 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018047 ssize_t _children_capacity = 1;
18048 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018049 { // ',' star_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018050 if (p->error_indicator) {
18051 return NULL;
18052 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018053 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018054 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018055 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018056 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018057 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018058 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018059 )
18060 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018061 _res = elem;
18062 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018063 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018064 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018065 return NULL;
18066 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018067 if (_n == _children_capacity) {
18068 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018069 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18070 if (!_new_children) {
18071 p->error_indicator = 1;
18072 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018073 return NULL;
18074 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018075 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018076 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018077 _children[_n++] = _res;
18078 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018079 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018080 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018081 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018082 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18083 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018084 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018085 p->error_indicator = 1;
18086 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018087 return NULL;
18088 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018089 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18090 PyMem_Free(_children);
18091 _PyPegen_insert_memo(p, _start_mark, _loop0_119_type, _seq);
18092 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018093}
18094
Guido van Rossum3941d972020-05-01 09:42:03 -070018095// _gather_118: star_target _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018096static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018097_gather_118_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018098{
18099 if (p->error_indicator) {
18100 return NULL;
18101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018102 asdl_seq * _res = NULL;
18103 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070018104 { // star_target _loop0_119
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018105 if (p->error_indicator) {
18106 return NULL;
18107 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018108 expr_ty elem;
18109 asdl_seq * seq;
18110 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018111 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018112 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018113 (seq = _loop0_119_rule(p)) // _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018114 )
18115 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018116 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018117 goto done;
18118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018119 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018121 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018122 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018123 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018124}
18125
Guido van Rossum3941d972020-05-01 09:42:03 -070018126// _tmp_120: !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018127static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070018128_tmp_120_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018129{
18130 if (p->error_indicator) {
18131 return NULL;
18132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018133 void * _res = NULL;
18134 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018135 { // !'*' star_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018136 if (p->error_indicator) {
18137 return NULL;
18138 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018139 expr_ty star_target_var;
18140 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018141 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018142 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018143 (star_target_var = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018144 )
18145 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018146 _res = star_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018147 goto done;
18148 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018149 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018151 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018152 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018153 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018154}
18155
Guido van Rossum3941d972020-05-01 09:42:03 -070018156// _loop0_122: ',' del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018157static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018158_loop0_122_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018159{
18160 if (p->error_indicator) {
18161 return NULL;
18162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018163 void *_res = NULL;
18164 int _mark = p->mark;
18165 int _start_mark = p->mark;
18166 void **_children = PyMem_Malloc(sizeof(void *));
18167 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018168 p->error_indicator = 1;
18169 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018170 return NULL;
18171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018172 ssize_t _children_capacity = 1;
18173 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018174 { // ',' del_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018175 if (p->error_indicator) {
18176 return NULL;
18177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018178 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018179 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018180 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018181 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018182 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018183 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018184 )
18185 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018186 _res = elem;
18187 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018188 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018189 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018190 return NULL;
18191 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018192 if (_n == _children_capacity) {
18193 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018194 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18195 if (!_new_children) {
18196 p->error_indicator = 1;
18197 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018198 return NULL;
18199 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018200 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018201 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018202 _children[_n++] = _res;
18203 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018204 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018205 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018206 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018207 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18208 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018209 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018210 p->error_indicator = 1;
18211 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018212 return NULL;
18213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018214 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18215 PyMem_Free(_children);
18216 _PyPegen_insert_memo(p, _start_mark, _loop0_122_type, _seq);
18217 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018218}
18219
Guido van Rossum3941d972020-05-01 09:42:03 -070018220// _gather_121: del_target _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018221static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018222_gather_121_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018223{
18224 if (p->error_indicator) {
18225 return NULL;
18226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018227 asdl_seq * _res = NULL;
18228 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070018229 { // del_target _loop0_122
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018230 if (p->error_indicator) {
18231 return NULL;
18232 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018233 expr_ty elem;
18234 asdl_seq * seq;
18235 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018236 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018237 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018238 (seq = _loop0_122_rule(p)) // _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018239 )
18240 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018241 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018242 goto done;
18243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018244 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018245 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018246 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018247 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018248 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018249}
18250
Guido van Rossum3941d972020-05-01 09:42:03 -070018251// _loop0_124: ',' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018252static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018253_loop0_124_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018254{
18255 if (p->error_indicator) {
18256 return NULL;
18257 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018258 void *_res = NULL;
18259 int _mark = p->mark;
18260 int _start_mark = p->mark;
18261 void **_children = PyMem_Malloc(sizeof(void *));
18262 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018263 p->error_indicator = 1;
18264 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018265 return NULL;
18266 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018267 ssize_t _children_capacity = 1;
18268 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018269 { // ',' target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018270 if (p->error_indicator) {
18271 return NULL;
18272 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018273 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018274 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018275 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018276 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018277 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018278 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018279 )
18280 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018281 _res = elem;
18282 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018283 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018284 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018285 return NULL;
18286 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018287 if (_n == _children_capacity) {
18288 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018289 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18290 if (!_new_children) {
18291 p->error_indicator = 1;
18292 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018293 return NULL;
18294 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018295 _children = _new_children;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018296 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018297 _children[_n++] = _res;
18298 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018299 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018300 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018301 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018302 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18303 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018304 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018305 p->error_indicator = 1;
18306 PyErr_NoMemory();
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018307 return NULL;
18308 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018309 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18310 PyMem_Free(_children);
18311 _PyPegen_insert_memo(p, _start_mark, _loop0_124_type, _seq);
18312 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018313}
18314
Guido van Rossum3941d972020-05-01 09:42:03 -070018315// _gather_123: target _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018316static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070018317_gather_123_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018318{
18319 if (p->error_indicator) {
18320 return NULL;
18321 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018322 asdl_seq * _res = NULL;
18323 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070018324 { // target _loop0_124
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018325 if (p->error_indicator) {
18326 return NULL;
18327 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018328 expr_ty elem;
18329 asdl_seq * seq;
18330 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018331 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018332 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018333 (seq = _loop0_124_rule(p)) // _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018334 )
18335 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018336 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018337 goto done;
18338 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018339 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018340 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018341 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018342 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018343 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018344}
18345
Guido van Rossum3941d972020-05-01 09:42:03 -070018346// _tmp_125: args | expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018347static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070018348_tmp_125_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018349{
18350 if (p->error_indicator) {
18351 return NULL;
18352 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018353 void * _res = NULL;
18354 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018355 { // args
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018356 if (p->error_indicator) {
18357 return NULL;
18358 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018359 expr_ty args_var;
18360 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018361 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018362 )
18363 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018364 _res = args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018365 goto done;
18366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018367 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018368 }
18369 { // expression for_if_clauses
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018370 if (p->error_indicator) {
18371 return NULL;
18372 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018373 expr_ty expression_var;
18374 asdl_seq* for_if_clauses_var;
18375 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018376 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018377 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018378 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018379 )
18380 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018381 _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018382 goto done;
18383 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018384 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018386 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018387 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018388 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018389}
18390
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018391// _loop0_126: star_named_expressions
18392static asdl_seq *
18393_loop0_126_rule(Parser *p)
18394{
18395 if (p->error_indicator) {
18396 return NULL;
18397 }
18398 void *_res = NULL;
18399 int _mark = p->mark;
18400 int _start_mark = p->mark;
18401 void **_children = PyMem_Malloc(sizeof(void *));
18402 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018403 p->error_indicator = 1;
18404 PyErr_NoMemory();
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018405 return NULL;
18406 }
18407 ssize_t _children_capacity = 1;
18408 ssize_t _n = 0;
18409 { // star_named_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018410 if (p->error_indicator) {
18411 return NULL;
18412 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018413 asdl_seq* star_named_expressions_var;
18414 while (
18415 (star_named_expressions_var = star_named_expressions_rule(p)) // star_named_expressions
18416 )
18417 {
18418 _res = star_named_expressions_var;
18419 if (_n == _children_capacity) {
18420 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018421 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18422 if (!_new_children) {
18423 p->error_indicator = 1;
18424 PyErr_NoMemory();
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018425 return NULL;
18426 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018427 _children = _new_children;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018428 }
18429 _children[_n++] = _res;
18430 _mark = p->mark;
18431 }
18432 p->mark = _mark;
18433 }
18434 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18435 if (!_seq) {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018436 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018437 p->error_indicator = 1;
18438 PyErr_NoMemory();
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018439 return NULL;
18440 }
18441 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18442 PyMem_Free(_children);
18443 _PyPegen_insert_memo(p, _start_mark, _loop0_126_type, _seq);
18444 return _seq;
18445}
18446
18447// _tmp_127: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018448static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018449_tmp_127_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018450{
18451 if (p->error_indicator) {
18452 return NULL;
18453 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018454 void * _res = NULL;
18455 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018456 { // '=' annotated_rhs
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018457 if (p->error_indicator) {
18458 return NULL;
18459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018460 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018461 expr_ty annotated_rhs_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018462 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018463 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018464 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018465 (annotated_rhs_var = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018466 )
18467 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018468 _res = _PyPegen_dummy_name(p, _literal, annotated_rhs_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018469 goto done;
18470 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018471 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018473 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018474 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018475 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018476}
18477
Pablo Galindo16ab0702020-05-15 02:04:52 +010018478// _tmp_128: yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018479static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018480_tmp_128_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018481{
18482 if (p->error_indicator) {
18483 return NULL;
18484 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018485 void * _res = NULL;
18486 int _mark = p->mark;
Pablo Galindo16ab0702020-05-15 02:04:52 +010018487 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018488 if (p->error_indicator) {
18489 return NULL;
18490 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010018491 expr_ty yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018492 if (
Pablo Galindo16ab0702020-05-15 02:04:52 +010018493 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018494 )
18495 {
Pablo Galindo16ab0702020-05-15 02:04:52 +010018496 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018497 goto done;
18498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018499 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018500 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010018501 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018502 if (p->error_indicator) {
18503 return NULL;
18504 }
Pablo Galindo16ab0702020-05-15 02:04:52 +010018505 expr_ty star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018506 if (
Pablo Galindo16ab0702020-05-15 02:04:52 +010018507 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018508 )
18509 {
Pablo Galindo16ab0702020-05-15 02:04:52 +010018510 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018511 goto done;
18512 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018513 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018514 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018515 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018516 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018517 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018518}
18519
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018520// _tmp_129: yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018521static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018522_tmp_129_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018523{
18524 if (p->error_indicator) {
18525 return NULL;
18526 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018527 void * _res = NULL;
18528 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018529 { // yield_expr
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018530 if (p->error_indicator) {
18531 return NULL;
18532 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018533 expr_ty yield_expr_var;
18534 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018535 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018536 )
18537 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018538 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018539 goto done;
18540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018541 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018542 }
18543 { // star_expressions
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018544 if (p->error_indicator) {
18545 return NULL;
18546 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018547 expr_ty star_expressions_var;
18548 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018549 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018550 )
18551 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018552 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018553 goto done;
18554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018555 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018556 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018557 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018558 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018559 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018560}
18561
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018562// _tmp_130: '[' | '(' | '{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018563static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018564_tmp_130_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018565{
18566 if (p->error_indicator) {
18567 return NULL;
18568 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018569 void * _res = NULL;
18570 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018571 { // '['
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018572 if (p->error_indicator) {
18573 return NULL;
18574 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018575 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018576 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018577 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018578 )
18579 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018580 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018581 goto done;
18582 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018583 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018584 }
18585 { // '('
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018586 if (p->error_indicator) {
18587 return NULL;
18588 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018589 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018590 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018591 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018592 )
18593 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018594 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018595 goto done;
18596 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018597 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018598 }
18599 { // '{'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018600 if (p->error_indicator) {
18601 return NULL;
18602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018603 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018604 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018605 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018606 )
18607 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018608 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018609 goto done;
18610 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018611 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018613 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018614 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018615 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018616}
18617
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018618// _loop0_131: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070018619static asdl_seq *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018620_loop0_131_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018621{
18622 if (p->error_indicator) {
18623 return NULL;
18624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018625 void *_res = NULL;
18626 int _mark = p->mark;
18627 int _start_mark = p->mark;
18628 void **_children = PyMem_Malloc(sizeof(void *));
18629 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018630 p->error_indicator = 1;
18631 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018632 return NULL;
18633 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018634 ssize_t _children_capacity = 1;
18635 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070018636 { // param_no_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018637 if (p->error_indicator) {
18638 return NULL;
18639 }
Guido van Rossumc001c092020-04-30 12:12:19 -070018640 arg_ty param_no_default_var;
18641 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010018642 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018643 )
18644 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018645 _res = param_no_default_var;
18646 if (_n == _children_capacity) {
18647 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018648 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
18649 if (!_new_children) {
18650 p->error_indicator = 1;
18651 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018652 return NULL;
18653 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018654 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070018655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018656 _children[_n++] = _res;
18657 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018658 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018659 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018660 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018661 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
18662 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018663 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030018664 p->error_indicator = 1;
18665 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070018666 return NULL;
18667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018668 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
18669 PyMem_Free(_children);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018670 _PyPegen_insert_memo(p, _start_mark, _loop0_131_type, _seq);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018671 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018672}
18673
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018674// _tmp_132: slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018675static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018676_tmp_132_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018677{
18678 if (p->error_indicator) {
18679 return NULL;
18680 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018681 void * _res = NULL;
18682 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018683 { // slash_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018684 if (p->error_indicator) {
18685 return NULL;
18686 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018687 SlashWithDefault* slash_with_default_var;
18688 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018689 (slash_with_default_var = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018690 )
18691 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018692 _res = slash_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018693 goto done;
18694 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018695 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018696 }
Guido van Rossumc001c092020-04-30 12:12:19 -070018697 { // param_with_default+
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018698 if (p->error_indicator) {
18699 return NULL;
18700 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018701 asdl_seq * _loop1_146_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018702 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018703 (_loop1_146_var = _loop1_146_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018704 )
18705 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018706 _res = _loop1_146_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018707 goto done;
18708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018709 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018710 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018711 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018712 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018713 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018714}
18715
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018716// _tmp_133: ')' | ',' (')' | '**')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018717static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018718_tmp_133_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018719{
18720 if (p->error_indicator) {
18721 return NULL;
18722 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018723 void * _res = NULL;
18724 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018725 { // ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018726 if (p->error_indicator) {
18727 return NULL;
18728 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018729 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018730 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018731 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018732 )
18733 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018734 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018735 goto done;
18736 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018737 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018738 }
18739 { // ',' (')' | '**')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018740 if (p->error_indicator) {
18741 return NULL;
18742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018743 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018744 void *_tmp_147_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018745 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018746 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018747 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018748 (_tmp_147_var = _tmp_147_rule(p)) // ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018749 )
18750 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018751 _res = _PyPegen_dummy_name(p, _literal, _tmp_147_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018752 goto done;
18753 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018754 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018755 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018756 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018757 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018758 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018759}
18760
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018761// _tmp_134: ':' | ',' (':' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018762static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018763_tmp_134_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018764{
18765 if (p->error_indicator) {
18766 return NULL;
18767 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018768 void * _res = NULL;
18769 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018770 { // ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018771 if (p->error_indicator) {
18772 return NULL;
18773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018774 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018775 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018776 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018777 )
18778 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018779 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018780 goto done;
18781 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018782 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018783 }
18784 { // ',' (':' | '**')
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018785 if (p->error_indicator) {
18786 return NULL;
18787 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018788 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018789 void *_tmp_148_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018790 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018791 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018792 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018793 (_tmp_148_var = _tmp_148_rule(p)) // ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018794 )
18795 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018796 _res = _PyPegen_dummy_name(p, _literal, _tmp_148_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018797 goto done;
18798 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018799 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018800 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018801 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018802 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018803 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018804}
18805
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018806// _tmp_135: star_targets '='
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018807static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018808_tmp_135_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018809{
18810 if (p->error_indicator) {
18811 return NULL;
18812 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018813 void * _res = NULL;
18814 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018815 { // star_targets '='
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018816 if (p->error_indicator) {
18817 return NULL;
18818 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018819 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018820 expr_ty z;
18821 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010018822 (z = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018823 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018824 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018825 )
18826 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018827 _res = z;
18828 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018829 p->error_indicator = 1;
18830 return NULL;
18831 }
18832 goto done;
18833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018834 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018836 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018837 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018838 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018839}
18840
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018841// _tmp_136: '.' | '...'
18842static void *
18843_tmp_136_rule(Parser *p)
18844{
18845 if (p->error_indicator) {
18846 return NULL;
18847 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018848 void * _res = NULL;
18849 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018850 { // '.'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018851 if (p->error_indicator) {
18852 return NULL;
18853 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018854 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018855 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018856 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018857 )
18858 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018859 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018860 goto done;
18861 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018862 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018863 }
18864 { // '...'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018865 if (p->error_indicator) {
18866 return NULL;
18867 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018868 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018869 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018870 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018871 )
18872 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018873 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018874 goto done;
18875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018876 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018877 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018878 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018879 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018880 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018881}
18882
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018883// _tmp_137: '.' | '...'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030018884static void *
18885_tmp_137_rule(Parser *p)
18886{
18887 if (p->error_indicator) {
18888 return NULL;
18889 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018890 void * _res = NULL;
18891 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018892 { // '.'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018893 if (p->error_indicator) {
18894 return NULL;
18895 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018896 Token * _literal;
18897 if (
18898 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
18899 )
18900 {
18901 _res = _literal;
18902 goto done;
18903 }
18904 p->mark = _mark;
18905 }
18906 { // '...'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018907 if (p->error_indicator) {
18908 return NULL;
18909 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018910 Token * _literal;
18911 if (
18912 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
18913 )
18914 {
18915 _res = _literal;
18916 goto done;
18917 }
18918 p->mark = _mark;
18919 }
18920 _res = NULL;
18921 done:
18922 return _res;
18923}
18924
18925// _tmp_138: '@' named_expression NEWLINE
18926static void *
18927_tmp_138_rule(Parser *p)
18928{
18929 if (p->error_indicator) {
18930 return NULL;
18931 }
18932 void * _res = NULL;
18933 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018934 { // '@' named_expression NEWLINE
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018935 if (p->error_indicator) {
18936 return NULL;
18937 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018938 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018939 expr_ty f;
Pablo Galindob796b3f2020-05-01 12:32:26 +010018940 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018941 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018942 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018943 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018944 (f = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018945 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018946 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018947 )
18948 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018949 _res = f;
18950 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018951 p->error_indicator = 1;
18952 return NULL;
18953 }
18954 goto done;
18955 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018956 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018957 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018958 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018959 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018960 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018961}
18962
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018963// _tmp_139: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018964static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018965_tmp_139_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018966{
18967 if (p->error_indicator) {
18968 return NULL;
18969 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018970 void * _res = NULL;
18971 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018972 { // ',' star_expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030018973 if (p->error_indicator) {
18974 return NULL;
18975 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018976 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018977 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018978 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018979 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018980 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010018981 (c = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018982 )
18983 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018984 _res = c;
18985 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018986 p->error_indicator = 1;
18987 return NULL;
18988 }
18989 goto done;
18990 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018991 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018992 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018993 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018994 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010018995 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018996}
18997
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030018998// _tmp_140: ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010018999static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019000_tmp_140_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019001{
19002 if (p->error_indicator) {
19003 return NULL;
19004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019005 void * _res = NULL;
19006 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019007 { // ',' expression
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019008 if (p->error_indicator) {
19009 return NULL;
19010 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019011 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019012 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019013 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019014 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019015 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019016 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019017 )
19018 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019019 _res = c;
19020 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019021 p->error_indicator = 1;
19022 return NULL;
19023 }
19024 goto done;
19025 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019026 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019027 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019028 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019029 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019030 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019031}
19032
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019033// _tmp_141: 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019034static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019035_tmp_141_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019036{
19037 if (p->error_indicator) {
19038 return NULL;
19039 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019040 void * _res = NULL;
19041 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019042 { // 'or' conjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019043 if (p->error_indicator) {
19044 return NULL;
19045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019046 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019047 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019048 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019049 (_keyword = _PyPegen_expect_token(p, 532)) // token='or'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019050 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019051 (c = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019052 )
19053 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019054 _res = c;
19055 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019056 p->error_indicator = 1;
19057 return NULL;
19058 }
19059 goto done;
19060 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019061 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019062 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019063 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019064 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019065 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019066}
19067
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019068// _tmp_142: 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019069static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019070_tmp_142_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019071{
19072 if (p->error_indicator) {
19073 return NULL;
19074 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019075 void * _res = NULL;
19076 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019077 { // 'and' inversion
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019078 if (p->error_indicator) {
19079 return NULL;
19080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019081 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019082 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019083 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019084 (_keyword = _PyPegen_expect_token(p, 533)) // token='and'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019085 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019086 (c = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019087 )
19088 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019089 _res = c;
19090 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019091 p->error_indicator = 1;
19092 return NULL;
19093 }
19094 goto done;
19095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019096 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019097 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019098 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019099 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019100 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019101}
19102
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019103// _tmp_143: 'if' disjunction
19104static void *
19105_tmp_143_rule(Parser *p)
19106{
19107 if (p->error_indicator) {
19108 return NULL;
19109 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019110 void * _res = NULL;
19111 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019112 { // 'if' disjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019113 if (p->error_indicator) {
19114 return NULL;
19115 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019116 Token * _keyword;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019117 expr_ty z;
19118 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019119 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019120 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019121 (z = disjunction_rule(p)) // disjunction
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019122 )
19123 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019124 _res = z;
19125 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019126 p->error_indicator = 1;
19127 return NULL;
19128 }
19129 goto done;
19130 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019131 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019133 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019134 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019135 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019136}
19137
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019138// _tmp_144: 'if' disjunction
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019139static void *
19140_tmp_144_rule(Parser *p)
19141{
19142 if (p->error_indicator) {
19143 return NULL;
19144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019145 void * _res = NULL;
19146 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019147 { // 'if' disjunction
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019148 if (p->error_indicator) {
19149 return NULL;
19150 }
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019151 Token * _keyword;
19152 expr_ty z;
19153 if (
19154 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
19155 &&
19156 (z = disjunction_rule(p)) // disjunction
19157 )
19158 {
19159 _res = z;
19160 if (_res == NULL && PyErr_Occurred()) {
19161 p->error_indicator = 1;
19162 return NULL;
19163 }
19164 goto done;
19165 }
19166 p->mark = _mark;
19167 }
19168 _res = NULL;
19169 done:
19170 return _res;
19171}
19172
19173// _tmp_145: ',' star_target
19174static void *
19175_tmp_145_rule(Parser *p)
19176{
19177 if (p->error_indicator) {
19178 return NULL;
19179 }
19180 void * _res = NULL;
19181 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019182 { // ',' star_target
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019183 if (p->error_indicator) {
19184 return NULL;
19185 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019186 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019187 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019188 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019189 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019190 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010019191 (c = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019192 )
19193 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019194 _res = c;
19195 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019196 p->error_indicator = 1;
19197 return NULL;
19198 }
19199 goto done;
19200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019201 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019202 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019203 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019204 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019205 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019206}
19207
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019208// _loop1_146: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019209static asdl_seq *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019210_loop1_146_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070019211{
19212 if (p->error_indicator) {
19213 return NULL;
19214 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019215 void *_res = NULL;
19216 int _mark = p->mark;
19217 int _start_mark = p->mark;
19218 void **_children = PyMem_Malloc(sizeof(void *));
19219 if (!_children) {
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019220 p->error_indicator = 1;
19221 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070019222 return NULL;
19223 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019224 ssize_t _children_capacity = 1;
19225 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070019226 { // param_with_default
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019227 if (p->error_indicator) {
19228 return NULL;
19229 }
Guido van Rossumc001c092020-04-30 12:12:19 -070019230 NameDefaultPair* param_with_default_var;
19231 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010019232 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070019233 )
19234 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019235 _res = param_with_default_var;
19236 if (_n == _children_capacity) {
19237 _children_capacity *= 2;
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019238 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
19239 if (!_new_children) {
19240 p->error_indicator = 1;
19241 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070019242 return NULL;
19243 }
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019244 _children = _new_children;
Guido van Rossumc001c092020-04-30 12:12:19 -070019245 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019246 _children[_n++] = _res;
19247 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070019248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019249 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070019250 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019251 if (_n == 0 || p->error_indicator) {
19252 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070019253 return NULL;
19254 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019255 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
19256 if (!_seq) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019257 PyMem_Free(_children);
Lysandros Nikolaou2c8cd062020-05-17 06:19:23 +030019258 p->error_indicator = 1;
19259 PyErr_NoMemory();
Guido van Rossumc001c092020-04-30 12:12:19 -070019260 return NULL;
19261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019262 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
19263 PyMem_Free(_children);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019264 _PyPegen_insert_memo(p, _start_mark, _loop1_146_type, _seq);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019265 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070019266}
19267
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019268// _tmp_147: ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019269static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019270_tmp_147_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019271{
19272 if (p->error_indicator) {
19273 return NULL;
19274 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019275 void * _res = NULL;
19276 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019277 { // ')'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019278 if (p->error_indicator) {
19279 return NULL;
19280 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019281 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019282 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019283 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019284 )
19285 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019286 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019287 goto done;
19288 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019289 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019290 }
19291 { // '**'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019292 if (p->error_indicator) {
19293 return NULL;
19294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019295 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019296 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019297 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019298 )
19299 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019300 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019301 goto done;
19302 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019303 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019304 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019305 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019306 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019307 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019308}
19309
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019310// _tmp_148: ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019311static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030019312_tmp_148_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019313{
19314 if (p->error_indicator) {
19315 return NULL;
19316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019317 void * _res = NULL;
19318 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019319 { // ':'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019320 if (p->error_indicator) {
19321 return NULL;
19322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019323 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019324 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019325 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019326 )
19327 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019328 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019329 goto done;
19330 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019331 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019332 }
19333 { // '**'
Lysandros Nikolaou7b7a21b2020-05-18 20:32:03 +030019334 if (p->error_indicator) {
19335 return NULL;
19336 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019337 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019338 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019339 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019340 )
19341 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019342 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019343 goto done;
19344 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019345 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019347 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019348 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010019349 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030019350}
19351
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019352void *
19353_PyPegen_parse(Parser *p)
19354{
19355 // Initialize keywords
19356 p->keywords = reserved_keywords;
19357 p->n_keyword_lists = n_keyword_lists;
19358
19359 // Run parser
19360 void *result = NULL;
19361 if (p->start_rule == Py_file_input) {
19362 result = file_rule(p);
19363 } else if (p->start_rule == Py_single_input) {
19364 result = interactive_rule(p);
19365 } else if (p->start_rule == Py_eval_input) {
19366 result = eval_rule(p);
Guido van Rossumc001c092020-04-30 12:12:19 -070019367 } else if (p->start_rule == Py_func_type_input) {
19368 result = func_type_rule(p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010019369 } else if (p->start_rule == Py_fstring_input) {
19370 result = fstring_rule(p);
19371 }
19372
19373 return result;
19374}
19375
19376// The end