blob: 851d17226d162f6d557eae19e238876f718d2c91 [file] [log] [blame]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001// @generated by pegen.py from ./Grammar/python.gram
2#include "pegen.h"
3static const int n_keyword_lists = 15;
4static KeywordToken *reserved_keywords[] = {
5 NULL,
6 NULL,
7 (KeywordToken[]) {
8 {"if", 510},
9 {"in", 518},
10 {"is", 526},
11 {"as", 531},
12 {"or", 532},
13 {NULL, -1},
14 },
15 (KeywordToken[]) {
16 {"del", 503},
17 {"try", 511},
18 {"for", 517},
19 {"def", 522},
20 {"not", 525},
21 {"and", 533},
22 {NULL, -1},
23 },
24 (KeywordToken[]) {
25 {"pass", 502},
26 {"from", 514},
27 {"elif", 515},
28 {"else", 516},
29 {"with", 519},
30 {"True", 527},
31 {"None", 529},
32 {NULL, -1},
33 },
34 (KeywordToken[]) {
35 {"raise", 501},
36 {"yield", 504},
37 {"break", 506},
38 {"while", 512},
39 {"class", 523},
40 {"False", 528},
41 {NULL, -1},
42 },
43 (KeywordToken[]) {
44 {"return", 500},
45 {"assert", 505},
46 {"global", 508},
47 {"import", 513},
48 {"except", 520},
49 {"lambda", 524},
50 {NULL, -1},
51 },
52 (KeywordToken[]) {
53 {"finally", 521},
54 {NULL, -1},
55 },
56 (KeywordToken[]) {
57 {"continue", 507},
58 {"nonlocal", 509},
59 {NULL, -1},
60 },
61 NULL,
62 NULL,
63 NULL,
64 NULL,
65 NULL,
66 (KeywordToken[]) {
67 {"__new_parser__", 530},
68 {NULL, -1},
69 },
70};
71#define file_type 1000
72#define interactive_type 1001
73#define eval_type 1002
Guido van Rossumc001c092020-04-30 12:12:19 -070074#define func_type_type 1003
75#define fstring_type 1004
76#define type_expressions_type 1005
77#define statements_type 1006
78#define statement_type 1007
79#define statement_newline_type 1008
80#define simple_stmt_type 1009
81#define small_stmt_type 1010
82#define compound_stmt_type 1011
83#define assignment_type 1012
84#define augassign_type 1013
85#define global_stmt_type 1014
86#define nonlocal_stmt_type 1015
87#define yield_stmt_type 1016
88#define assert_stmt_type 1017
89#define del_stmt_type 1018
90#define import_stmt_type 1019
91#define import_name_type 1020
92#define import_from_type 1021
93#define import_from_targets_type 1022
94#define import_from_as_names_type 1023
95#define import_from_as_name_type 1024
96#define dotted_as_names_type 1025
97#define dotted_as_name_type 1026
98#define dotted_name_type 1027 // Left-recursive
99#define if_stmt_type 1028
100#define elif_stmt_type 1029
101#define else_block_type 1030
102#define while_stmt_type 1031
103#define for_stmt_type 1032
104#define with_stmt_type 1033
105#define with_item_type 1034
106#define try_stmt_type 1035
107#define except_block_type 1036
108#define finally_block_type 1037
109#define return_stmt_type 1038
110#define raise_stmt_type 1039
111#define function_def_type 1040
112#define function_def_raw_type 1041
113#define func_type_comment_type 1042
114#define params_type 1043
115#define parameters_type 1044
116#define slash_no_default_type 1045
117#define slash_with_default_type 1046
118#define star_etc_type 1047
119#define kwds_type 1048
120#define param_no_default_type 1049
121#define param_with_default_type 1050
122#define param_maybe_default_type 1051
123#define param_type 1052
124#define annotation_type 1053
125#define default_type 1054
126#define decorators_type 1055
127#define class_def_type 1056
128#define class_def_raw_type 1057
129#define block_type 1058
130#define expressions_list_type 1059
131#define star_expressions_type 1060
132#define star_expression_type 1061
133#define star_named_expressions_type 1062
134#define star_named_expression_type 1063
135#define named_expression_type 1064
136#define annotated_rhs_type 1065
137#define expressions_type 1066
138#define expression_type 1067
139#define lambdef_type 1068
140#define lambda_parameters_type 1069
Guido van Rossum3941d972020-05-01 09:42:03 -0700141#define lambda_slash_no_default_type 1070
Guido van Rossumc001c092020-04-30 12:12:19 -0700142#define lambda_slash_with_default_type 1071
143#define lambda_star_etc_type 1072
Guido van Rossum3941d972020-05-01 09:42:03 -0700144#define lambda_kwds_type 1073
145#define lambda_param_no_default_type 1074
146#define lambda_param_with_default_type 1075
147#define lambda_param_maybe_default_type 1076
148#define lambda_param_type 1077
149#define disjunction_type 1078
150#define conjunction_type 1079
151#define inversion_type 1080
152#define comparison_type 1081
153#define compare_op_bitwise_or_pair_type 1082
154#define eq_bitwise_or_type 1083
155#define noteq_bitwise_or_type 1084
156#define lte_bitwise_or_type 1085
157#define lt_bitwise_or_type 1086
158#define gte_bitwise_or_type 1087
159#define gt_bitwise_or_type 1088
160#define notin_bitwise_or_type 1089
161#define in_bitwise_or_type 1090
162#define isnot_bitwise_or_type 1091
163#define is_bitwise_or_type 1092
164#define bitwise_or_type 1093 // Left-recursive
165#define bitwise_xor_type 1094 // Left-recursive
166#define bitwise_and_type 1095 // Left-recursive
167#define shift_expr_type 1096 // Left-recursive
168#define sum_type 1097 // Left-recursive
169#define term_type 1098 // Left-recursive
170#define factor_type 1099
171#define power_type 1100
172#define await_primary_type 1101
173#define primary_type 1102 // Left-recursive
174#define slices_type 1103
175#define slice_type 1104
176#define atom_type 1105
177#define strings_type 1106
178#define list_type 1107
179#define listcomp_type 1108
180#define tuple_type 1109
181#define group_type 1110
182#define genexp_type 1111
183#define set_type 1112
184#define setcomp_type 1113
185#define dict_type 1114
186#define dictcomp_type 1115
187#define kvpairs_type 1116
188#define kvpair_type 1117
189#define for_if_clauses_type 1118
190#define for_if_clause_type 1119
191#define yield_expr_type 1120
192#define arguments_type 1121
193#define args_type 1122
194#define kwargs_type 1123
195#define starred_expression_type 1124
196#define kwarg_or_starred_type 1125
197#define kwarg_or_double_starred_type 1126
198#define star_targets_type 1127
199#define star_targets_seq_type 1128
200#define star_target_type 1129
201#define star_atom_type 1130
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +0300202#define single_target_type 1131
203#define single_subscript_attribute_target_type 1132
Guido van Rossum3941d972020-05-01 09:42:03 -0700204#define del_targets_type 1133
205#define del_target_type 1134
206#define del_t_atom_type 1135
Shantanu27c0d9b2020-05-11 14:53:58 -0700207#define del_target_end_type 1136
208#define targets_type 1137
209#define target_type 1138
210#define t_primary_type 1139 // Left-recursive
211#define t_lookahead_type 1140
212#define t_atom_type 1141
213#define incorrect_arguments_type 1142
214#define invalid_kwarg_type 1143
215#define invalid_named_expression_type 1144
216#define invalid_assignment_type 1145
217#define invalid_block_type 1146
218#define invalid_comprehension_type 1147
219#define invalid_parameters_type 1148
220#define invalid_star_etc_type 1149
221#define invalid_lambda_star_etc_type 1150
222#define invalid_double_type_comments_type 1151
223#define invalid_del_target_type 1152
224#define _loop0_1_type 1153
225#define _loop0_2_type 1154
226#define _loop0_4_type 1155
227#define _gather_3_type 1156
228#define _loop0_6_type 1157
229#define _gather_5_type 1158
230#define _loop0_8_type 1159
231#define _gather_7_type 1160
232#define _loop0_10_type 1161
233#define _gather_9_type 1162
234#define _loop1_11_type 1163
235#define _loop0_13_type 1164
236#define _gather_12_type 1165
237#define _tmp_14_type 1166
238#define _tmp_15_type 1167
239#define _tmp_16_type 1168
240#define _tmp_17_type 1169
241#define _tmp_18_type 1170
242#define _tmp_19_type 1171
243#define _tmp_20_type 1172
244#define _tmp_21_type 1173
245#define _loop1_22_type 1174
246#define _tmp_23_type 1175
247#define _tmp_24_type 1176
248#define _loop0_26_type 1177
249#define _gather_25_type 1178
250#define _loop0_28_type 1179
251#define _gather_27_type 1180
252#define _tmp_29_type 1181
253#define _loop0_30_type 1182
254#define _loop1_31_type 1183
255#define _loop0_33_type 1184
256#define _gather_32_type 1185
257#define _tmp_34_type 1186
258#define _loop0_36_type 1187
259#define _gather_35_type 1188
260#define _tmp_37_type 1189
261#define _loop0_39_type 1190
262#define _gather_38_type 1191
263#define _loop0_41_type 1192
264#define _gather_40_type 1193
265#define _loop0_43_type 1194
266#define _gather_42_type 1195
267#define _loop0_45_type 1196
268#define _gather_44_type 1197
269#define _tmp_46_type 1198
270#define _loop1_47_type 1199
271#define _tmp_48_type 1200
272#define _tmp_49_type 1201
273#define _tmp_50_type 1202
274#define _tmp_51_type 1203
275#define _tmp_52_type 1204
276#define _loop0_53_type 1205
277#define _loop0_54_type 1206
278#define _loop0_55_type 1207
279#define _loop1_56_type 1208
280#define _loop0_57_type 1209
281#define _loop1_58_type 1210
282#define _loop1_59_type 1211
283#define _loop1_60_type 1212
284#define _loop0_61_type 1213
285#define _loop1_62_type 1214
286#define _loop0_63_type 1215
287#define _loop1_64_type 1216
288#define _loop0_65_type 1217
289#define _loop1_66_type 1218
290#define _loop1_67_type 1219
291#define _tmp_68_type 1220
292#define _loop0_70_type 1221
293#define _gather_69_type 1222
294#define _loop1_71_type 1223
295#define _loop0_73_type 1224
296#define _gather_72_type 1225
297#define _loop1_74_type 1226
298#define _loop0_75_type 1227
299#define _loop0_76_type 1228
300#define _loop0_77_type 1229
301#define _loop1_78_type 1230
302#define _loop0_79_type 1231
303#define _loop1_80_type 1232
304#define _loop1_81_type 1233
305#define _loop1_82_type 1234
306#define _loop0_83_type 1235
307#define _loop1_84_type 1236
308#define _loop0_85_type 1237
309#define _loop1_86_type 1238
310#define _loop0_87_type 1239
311#define _loop1_88_type 1240
312#define _loop1_89_type 1241
313#define _loop1_90_type 1242
314#define _loop1_91_type 1243
315#define _tmp_92_type 1244
316#define _loop0_94_type 1245
317#define _gather_93_type 1246
318#define _tmp_95_type 1247
319#define _tmp_96_type 1248
320#define _tmp_97_type 1249
321#define _tmp_98_type 1250
322#define _loop1_99_type 1251
323#define _tmp_100_type 1252
324#define _tmp_101_type 1253
325#define _loop0_103_type 1254
326#define _gather_102_type 1255
327#define _loop1_104_type 1256
328#define _loop0_105_type 1257
329#define _loop0_106_type 1258
330#define _tmp_107_type 1259
331#define _tmp_108_type 1260
332#define _loop0_110_type 1261
333#define _gather_109_type 1262
334#define _loop0_112_type 1263
335#define _gather_111_type 1264
336#define _loop0_114_type 1265
337#define _gather_113_type 1266
338#define _loop0_116_type 1267
339#define _gather_115_type 1268
340#define _loop0_117_type 1269
341#define _loop0_119_type 1270
342#define _gather_118_type 1271
343#define _tmp_120_type 1272
344#define _loop0_122_type 1273
345#define _gather_121_type 1274
346#define _loop0_124_type 1275
347#define _gather_123_type 1276
348#define _tmp_125_type 1277
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300349#define _loop0_126_type 1278
Shantanu27c0d9b2020-05-11 14:53:58 -0700350#define _tmp_127_type 1279
351#define _tmp_128_type 1280
352#define _tmp_129_type 1281
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300353#define _tmp_130_type 1282
354#define _loop0_131_type 1283
Shantanu27c0d9b2020-05-11 14:53:58 -0700355#define _tmp_132_type 1284
356#define _tmp_133_type 1285
357#define _tmp_134_type 1286
358#define _tmp_135_type 1287
359#define _tmp_136_type 1288
360#define _tmp_137_type 1289
361#define _tmp_138_type 1290
362#define _tmp_139_type 1291
363#define _tmp_140_type 1292
364#define _tmp_141_type 1293
365#define _tmp_142_type 1294
366#define _tmp_143_type 1295
367#define _tmp_144_type 1296
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300368#define _tmp_145_type 1297
369#define _loop1_146_type 1298
Shantanu27c0d9b2020-05-11 14:53:58 -0700370#define _tmp_147_type 1299
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300371#define _tmp_148_type 1300
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100372
373static mod_ty file_rule(Parser *p);
374static mod_ty interactive_rule(Parser *p);
375static mod_ty eval_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700376static mod_ty func_type_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100377static expr_ty fstring_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700378static asdl_seq* type_expressions_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100379static asdl_seq* statements_rule(Parser *p);
380static asdl_seq* statement_rule(Parser *p);
381static asdl_seq* statement_newline_rule(Parser *p);
382static asdl_seq* simple_stmt_rule(Parser *p);
383static stmt_ty small_stmt_rule(Parser *p);
384static stmt_ty compound_stmt_rule(Parser *p);
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +0300385static stmt_ty assignment_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100386static AugOperator* augassign_rule(Parser *p);
387static stmt_ty global_stmt_rule(Parser *p);
388static stmt_ty nonlocal_stmt_rule(Parser *p);
389static stmt_ty yield_stmt_rule(Parser *p);
390static stmt_ty assert_stmt_rule(Parser *p);
391static stmt_ty del_stmt_rule(Parser *p);
392static stmt_ty import_stmt_rule(Parser *p);
393static stmt_ty import_name_rule(Parser *p);
394static stmt_ty import_from_rule(Parser *p);
395static asdl_seq* import_from_targets_rule(Parser *p);
396static asdl_seq* import_from_as_names_rule(Parser *p);
397static alias_ty import_from_as_name_rule(Parser *p);
398static asdl_seq* dotted_as_names_rule(Parser *p);
399static alias_ty dotted_as_name_rule(Parser *p);
400static expr_ty dotted_name_rule(Parser *p);
401static stmt_ty if_stmt_rule(Parser *p);
402static stmt_ty elif_stmt_rule(Parser *p);
403static asdl_seq* else_block_rule(Parser *p);
404static stmt_ty while_stmt_rule(Parser *p);
405static stmt_ty for_stmt_rule(Parser *p);
406static stmt_ty with_stmt_rule(Parser *p);
407static withitem_ty with_item_rule(Parser *p);
408static stmt_ty try_stmt_rule(Parser *p);
409static excepthandler_ty except_block_rule(Parser *p);
410static asdl_seq* finally_block_rule(Parser *p);
411static stmt_ty return_stmt_rule(Parser *p);
412static stmt_ty raise_stmt_rule(Parser *p);
413static stmt_ty function_def_rule(Parser *p);
414static stmt_ty function_def_raw_rule(Parser *p);
Pablo Galindod9552412020-05-01 16:32:09 +0100415static Token* func_type_comment_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100416static arguments_ty params_rule(Parser *p);
417static arguments_ty parameters_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700418static asdl_seq* slash_no_default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100419static SlashWithDefault* slash_with_default_rule(Parser *p);
420static StarEtc* star_etc_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100421static arg_ty kwds_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700422static arg_ty param_no_default_rule(Parser *p);
423static NameDefaultPair* param_with_default_rule(Parser *p);
424static NameDefaultPair* param_maybe_default_rule(Parser *p);
425static arg_ty param_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100426static expr_ty annotation_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700427static expr_ty default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100428static asdl_seq* decorators_rule(Parser *p);
429static stmt_ty class_def_rule(Parser *p);
430static stmt_ty class_def_raw_rule(Parser *p);
431static asdl_seq* block_rule(Parser *p);
432static asdl_seq* expressions_list_rule(Parser *p);
433static expr_ty star_expressions_rule(Parser *p);
434static expr_ty star_expression_rule(Parser *p);
435static asdl_seq* star_named_expressions_rule(Parser *p);
436static expr_ty star_named_expression_rule(Parser *p);
437static expr_ty named_expression_rule(Parser *p);
438static expr_ty annotated_rhs_rule(Parser *p);
439static expr_ty expressions_rule(Parser *p);
440static expr_ty expression_rule(Parser *p);
441static expr_ty lambdef_rule(Parser *p);
442static arguments_ty lambda_parameters_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700443static asdl_seq* lambda_slash_no_default_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100444static SlashWithDefault* lambda_slash_with_default_rule(Parser *p);
445static StarEtc* lambda_star_etc_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100446static arg_ty lambda_kwds_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700447static arg_ty lambda_param_no_default_rule(Parser *p);
448static NameDefaultPair* lambda_param_with_default_rule(Parser *p);
449static NameDefaultPair* lambda_param_maybe_default_rule(Parser *p);
450static arg_ty lambda_param_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100451static expr_ty disjunction_rule(Parser *p);
452static expr_ty conjunction_rule(Parser *p);
453static expr_ty inversion_rule(Parser *p);
454static expr_ty comparison_rule(Parser *p);
455static CmpopExprPair* compare_op_bitwise_or_pair_rule(Parser *p);
456static CmpopExprPair* eq_bitwise_or_rule(Parser *p);
457static CmpopExprPair* noteq_bitwise_or_rule(Parser *p);
458static CmpopExprPair* lte_bitwise_or_rule(Parser *p);
459static CmpopExprPair* lt_bitwise_or_rule(Parser *p);
460static CmpopExprPair* gte_bitwise_or_rule(Parser *p);
461static CmpopExprPair* gt_bitwise_or_rule(Parser *p);
462static CmpopExprPair* notin_bitwise_or_rule(Parser *p);
463static CmpopExprPair* in_bitwise_or_rule(Parser *p);
464static CmpopExprPair* isnot_bitwise_or_rule(Parser *p);
465static CmpopExprPair* is_bitwise_or_rule(Parser *p);
466static expr_ty bitwise_or_rule(Parser *p);
467static expr_ty bitwise_xor_rule(Parser *p);
468static expr_ty bitwise_and_rule(Parser *p);
469static expr_ty shift_expr_rule(Parser *p);
470static expr_ty sum_rule(Parser *p);
471static expr_ty term_rule(Parser *p);
472static expr_ty factor_rule(Parser *p);
473static expr_ty power_rule(Parser *p);
474static expr_ty await_primary_rule(Parser *p);
475static expr_ty primary_rule(Parser *p);
476static expr_ty slices_rule(Parser *p);
477static expr_ty slice_rule(Parser *p);
478static expr_ty atom_rule(Parser *p);
479static expr_ty strings_rule(Parser *p);
480static expr_ty list_rule(Parser *p);
481static expr_ty listcomp_rule(Parser *p);
482static expr_ty tuple_rule(Parser *p);
483static expr_ty group_rule(Parser *p);
484static expr_ty genexp_rule(Parser *p);
485static expr_ty set_rule(Parser *p);
486static expr_ty setcomp_rule(Parser *p);
487static expr_ty dict_rule(Parser *p);
488static expr_ty dictcomp_rule(Parser *p);
489static asdl_seq* kvpairs_rule(Parser *p);
490static KeyValuePair* kvpair_rule(Parser *p);
491static asdl_seq* for_if_clauses_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300492static comprehension_ty for_if_clause_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100493static expr_ty yield_expr_rule(Parser *p);
494static expr_ty arguments_rule(Parser *p);
495static expr_ty args_rule(Parser *p);
496static asdl_seq* kwargs_rule(Parser *p);
497static expr_ty starred_expression_rule(Parser *p);
498static KeywordOrStarred* kwarg_or_starred_rule(Parser *p);
499static KeywordOrStarred* kwarg_or_double_starred_rule(Parser *p);
500static expr_ty star_targets_rule(Parser *p);
501static asdl_seq* star_targets_seq_rule(Parser *p);
502static expr_ty star_target_rule(Parser *p);
503static expr_ty star_atom_rule(Parser *p);
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +0300504static expr_ty single_target_rule(Parser *p);
505static expr_ty single_subscript_attribute_target_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100506static asdl_seq* del_targets_rule(Parser *p);
507static expr_ty del_target_rule(Parser *p);
508static expr_ty del_t_atom_rule(Parser *p);
Shantanu27c0d9b2020-05-11 14:53:58 -0700509static void *del_target_end_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100510static asdl_seq* targets_rule(Parser *p);
511static expr_ty target_rule(Parser *p);
512static expr_ty t_primary_rule(Parser *p);
513static void *t_lookahead_rule(Parser *p);
514static expr_ty t_atom_rule(Parser *p);
515static void *incorrect_arguments_rule(Parser *p);
Lysandros Nikolaou4638c642020-05-07 13:44:06 +0300516static void *invalid_kwarg_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100517static void *invalid_named_expression_rule(Parser *p);
518static void *invalid_assignment_rule(Parser *p);
519static void *invalid_block_rule(Parser *p);
520static void *invalid_comprehension_rule(Parser *p);
521static void *invalid_parameters_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300522static void *invalid_star_etc_rule(Parser *p);
523static void *invalid_lambda_star_etc_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700524static void *invalid_double_type_comments_rule(Parser *p);
Shantanu27c0d9b2020-05-11 14:53:58 -0700525static void *invalid_del_target_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100526static asdl_seq *_loop0_1_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700527static asdl_seq *_loop0_2_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100528static asdl_seq *_loop0_4_rule(Parser *p);
529static asdl_seq *_gather_3_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700530static asdl_seq *_loop0_6_rule(Parser *p);
531static asdl_seq *_gather_5_rule(Parser *p);
532static asdl_seq *_loop0_8_rule(Parser *p);
533static asdl_seq *_gather_7_rule(Parser *p);
534static asdl_seq *_loop0_10_rule(Parser *p);
535static asdl_seq *_gather_9_rule(Parser *p);
536static asdl_seq *_loop1_11_rule(Parser *p);
537static asdl_seq *_loop0_13_rule(Parser *p);
538static asdl_seq *_gather_12_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100539static void *_tmp_14_rule(Parser *p);
540static void *_tmp_15_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700541static void *_tmp_16_rule(Parser *p);
542static void *_tmp_17_rule(Parser *p);
543static void *_tmp_18_rule(Parser *p);
544static void *_tmp_19_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100545static void *_tmp_20_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700546static void *_tmp_21_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100547static asdl_seq *_loop1_22_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700548static void *_tmp_23_rule(Parser *p);
549static void *_tmp_24_rule(Parser *p);
550static asdl_seq *_loop0_26_rule(Parser *p);
551static asdl_seq *_gather_25_rule(Parser *p);
552static asdl_seq *_loop0_28_rule(Parser *p);
553static asdl_seq *_gather_27_rule(Parser *p);
554static void *_tmp_29_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100555static asdl_seq *_loop0_30_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700556static asdl_seq *_loop1_31_rule(Parser *p);
557static asdl_seq *_loop0_33_rule(Parser *p);
558static asdl_seq *_gather_32_rule(Parser *p);
559static void *_tmp_34_rule(Parser *p);
560static asdl_seq *_loop0_36_rule(Parser *p);
561static asdl_seq *_gather_35_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100562static void *_tmp_37_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700563static asdl_seq *_loop0_39_rule(Parser *p);
564static asdl_seq *_gather_38_rule(Parser *p);
565static asdl_seq *_loop0_41_rule(Parser *p);
566static asdl_seq *_gather_40_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300567static asdl_seq *_loop0_43_rule(Parser *p);
568static asdl_seq *_gather_42_rule(Parser *p);
569static asdl_seq *_loop0_45_rule(Parser *p);
570static asdl_seq *_gather_44_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100571static void *_tmp_46_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300572static asdl_seq *_loop1_47_rule(Parser *p);
573static void *_tmp_48_rule(Parser *p);
574static void *_tmp_49_rule(Parser *p);
575static void *_tmp_50_rule(Parser *p);
576static void *_tmp_51_rule(Parser *p);
577static void *_tmp_52_rule(Parser *p);
578static asdl_seq *_loop0_53_rule(Parser *p);
579static asdl_seq *_loop0_54_rule(Parser *p);
580static asdl_seq *_loop0_55_rule(Parser *p);
581static asdl_seq *_loop1_56_rule(Parser *p);
582static asdl_seq *_loop0_57_rule(Parser *p);
583static asdl_seq *_loop1_58_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700584static asdl_seq *_loop1_59_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300585static asdl_seq *_loop1_60_rule(Parser *p);
586static asdl_seq *_loop0_61_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700587static asdl_seq *_loop1_62_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300588static asdl_seq *_loop0_63_rule(Parser *p);
589static asdl_seq *_loop1_64_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700590static asdl_seq *_loop0_65_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700591static asdl_seq *_loop1_66_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300592static asdl_seq *_loop1_67_rule(Parser *p);
593static void *_tmp_68_rule(Parser *p);
594static asdl_seq *_loop0_70_rule(Parser *p);
595static asdl_seq *_gather_69_rule(Parser *p);
596static asdl_seq *_loop1_71_rule(Parser *p);
597static asdl_seq *_loop0_73_rule(Parser *p);
598static asdl_seq *_gather_72_rule(Parser *p);
599static asdl_seq *_loop1_74_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700600static asdl_seq *_loop0_75_rule(Parser *p);
601static asdl_seq *_loop0_76_rule(Parser *p);
602static asdl_seq *_loop0_77_rule(Parser *p);
603static asdl_seq *_loop1_78_rule(Parser *p);
604static asdl_seq *_loop0_79_rule(Parser *p);
605static asdl_seq *_loop1_80_rule(Parser *p);
606static asdl_seq *_loop1_81_rule(Parser *p);
607static asdl_seq *_loop1_82_rule(Parser *p);
608static asdl_seq *_loop0_83_rule(Parser *p);
609static asdl_seq *_loop1_84_rule(Parser *p);
610static asdl_seq *_loop0_85_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300611static asdl_seq *_loop1_86_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700612static asdl_seq *_loop0_87_rule(Parser *p);
613static asdl_seq *_loop1_88_rule(Parser *p);
614static asdl_seq *_loop1_89_rule(Parser *p);
615static asdl_seq *_loop1_90_rule(Parser *p);
616static asdl_seq *_loop1_91_rule(Parser *p);
617static void *_tmp_92_rule(Parser *p);
618static asdl_seq *_loop0_94_rule(Parser *p);
619static asdl_seq *_gather_93_rule(Parser *p);
620static void *_tmp_95_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700621static void *_tmp_96_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700622static void *_tmp_97_rule(Parser *p);
623static void *_tmp_98_rule(Parser *p);
624static asdl_seq *_loop1_99_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100625static void *_tmp_100_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300626static void *_tmp_101_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700627static asdl_seq *_loop0_103_rule(Parser *p);
628static asdl_seq *_gather_102_rule(Parser *p);
629static asdl_seq *_loop1_104_rule(Parser *p);
630static asdl_seq *_loop0_105_rule(Parser *p);
631static asdl_seq *_loop0_106_rule(Parser *p);
632static void *_tmp_107_rule(Parser *p);
633static void *_tmp_108_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300634static asdl_seq *_loop0_110_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700635static asdl_seq *_gather_109_rule(Parser *p);
636static asdl_seq *_loop0_112_rule(Parser *p);
637static asdl_seq *_gather_111_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100638static asdl_seq *_loop0_114_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300639static asdl_seq *_gather_113_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100640static asdl_seq *_loop0_116_rule(Parser *p);
641static asdl_seq *_gather_115_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700642static asdl_seq *_loop0_117_rule(Parser *p);
643static asdl_seq *_loop0_119_rule(Parser *p);
644static asdl_seq *_gather_118_rule(Parser *p);
645static void *_tmp_120_rule(Parser *p);
646static asdl_seq *_loop0_122_rule(Parser *p);
647static asdl_seq *_gather_121_rule(Parser *p);
648static asdl_seq *_loop0_124_rule(Parser *p);
649static asdl_seq *_gather_123_rule(Parser *p);
650static void *_tmp_125_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300651static asdl_seq *_loop0_126_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700652static void *_tmp_127_rule(Parser *p);
653static void *_tmp_128_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100654static void *_tmp_129_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300655static void *_tmp_130_rule(Parser *p);
656static asdl_seq *_loop0_131_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100657static void *_tmp_132_rule(Parser *p);
658static void *_tmp_133_rule(Parser *p);
Guido van Rossum3941d972020-05-01 09:42:03 -0700659static void *_tmp_134_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100660static void *_tmp_135_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700661static void *_tmp_136_rule(Parser *p);
Pablo Galindo2b74c832020-04-27 18:02:07 +0100662static void *_tmp_137_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700663static void *_tmp_138_rule(Parser *p);
664static void *_tmp_139_rule(Parser *p);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +0300665static void *_tmp_140_rule(Parser *p);
666static void *_tmp_141_rule(Parser *p);
Guido van Rossumc001c092020-04-30 12:12:19 -0700667static void *_tmp_142_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300668static void *_tmp_143_rule(Parser *p);
669static void *_tmp_144_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300670static void *_tmp_145_rule(Parser *p);
671static asdl_seq *_loop1_146_rule(Parser *p);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +0300672static void *_tmp_147_rule(Parser *p);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +0300673static void *_tmp_148_rule(Parser *p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100674
675
676// file: statements? $
677static mod_ty
678file_rule(Parser *p)
679{
680 if (p->error_indicator) {
681 return NULL;
682 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100683 mod_ty _res = NULL;
684 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100685 { // statements? $
686 void *a;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100687 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100688 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100689 (a = statements_rule(p), 1) // statements?
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100690 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100691 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100692 )
693 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100694 _res = _PyPegen_make_module ( p , a );
695 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100696 p->error_indicator = 1;
697 return NULL;
698 }
699 goto done;
700 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100701 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100703 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100704 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100705 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100706}
707
708// interactive: statement_newline
709static mod_ty
710interactive_rule(Parser *p)
711{
712 if (p->error_indicator) {
713 return NULL;
714 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100715 mod_ty _res = NULL;
716 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100717 { // statement_newline
718 asdl_seq* a;
719 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100720 (a = statement_newline_rule(p)) // statement_newline
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100721 )
722 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100723 _res = Interactive ( a , p -> arena );
724 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100725 p->error_indicator = 1;
726 return NULL;
727 }
728 goto done;
729 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100730 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100731 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100732 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100733 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100734 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100735}
736
737// eval: expressions NEWLINE* $
738static mod_ty
739eval_rule(Parser *p)
740{
741 if (p->error_indicator) {
742 return NULL;
743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100744 mod_ty _res = NULL;
745 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100746 { // expressions NEWLINE* $
747 asdl_seq * _loop0_1_var;
748 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100749 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100750 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100751 (a = expressions_rule(p)) // expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100752 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100753 (_loop0_1_var = _loop0_1_rule(p)) // NEWLINE*
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100754 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100755 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100756 )
757 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100758 _res = Expression ( a , p -> arena );
759 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100760 p->error_indicator = 1;
761 return NULL;
762 }
763 goto done;
764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100765 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100766 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100767 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100768 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100769 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100770}
771
Guido van Rossumc001c092020-04-30 12:12:19 -0700772// func_type: '(' type_expressions? ')' '->' expression NEWLINE* $
773static mod_ty
774func_type_rule(Parser *p)
775{
776 if (p->error_indicator) {
777 return NULL;
778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100779 mod_ty _res = NULL;
780 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700781 { // '(' type_expressions? ')' '->' expression NEWLINE* $
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100782 Token * _literal;
783 Token * _literal_1;
784 Token * _literal_2;
Guido van Rossumc001c092020-04-30 12:12:19 -0700785 asdl_seq * _loop0_2_var;
786 void *a;
787 expr_ty b;
Pablo Galindob796b3f2020-05-01 12:32:26 +0100788 Token * endmarker_var;
Guido van Rossumc001c092020-04-30 12:12:19 -0700789 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100790 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Guido van Rossumc001c092020-04-30 12:12:19 -0700791 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100792 (a = type_expressions_rule(p), 1) // type_expressions?
Guido van Rossumc001c092020-04-30 12:12:19 -0700793 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100794 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -0700795 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100796 (_literal_2 = _PyPegen_expect_token(p, 51)) // token='->'
Guido van Rossumc001c092020-04-30 12:12:19 -0700797 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100798 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700799 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100800 (_loop0_2_var = _loop0_2_rule(p)) // NEWLINE*
Guido van Rossumc001c092020-04-30 12:12:19 -0700801 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100802 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Guido van Rossumc001c092020-04-30 12:12:19 -0700803 )
804 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100805 _res = FunctionType ( a , b , p -> arena );
806 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700807 p->error_indicator = 1;
808 return NULL;
809 }
810 goto done;
811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100812 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700813 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100814 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -0700815 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100816 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -0700817}
818
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100819// fstring: star_expressions
820static expr_ty
821fstring_rule(Parser *p)
822{
823 if (p->error_indicator) {
824 return NULL;
825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100826 expr_ty _res = NULL;
827 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100828 { // star_expressions
829 expr_ty star_expressions_var;
830 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100831 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100832 )
833 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100834 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100835 goto done;
836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100837 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100838 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100839 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100840 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100841 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +0100842}
843
Guido van Rossumc001c092020-04-30 12:12:19 -0700844// type_expressions:
845// | ','.expression+ ',' '*' expression ',' '**' expression
846// | ','.expression+ ',' '*' expression
847// | ','.expression+ ',' '**' expression
Shantanu603d3542020-05-03 22:08:14 -0700848// | '*' expression ',' '**' expression
849// | '*' expression
850// | '**' expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700851// | ','.expression+
852static asdl_seq*
853type_expressions_rule(Parser *p)
854{
855 if (p->error_indicator) {
856 return NULL;
857 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100858 asdl_seq* _res = NULL;
859 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700860 { // ','.expression+ ',' '*' expression ',' '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100861 Token * _literal;
862 Token * _literal_1;
863 Token * _literal_2;
864 Token * _literal_3;
Guido van Rossumc001c092020-04-30 12:12:19 -0700865 asdl_seq * a;
866 expr_ty b;
867 expr_ty c;
Guido van Rossumc001c092020-04-30 12:12:19 -0700868 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100869 (a = _gather_3_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700870 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100871 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700872 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100873 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Guido van Rossumc001c092020-04-30 12:12:19 -0700874 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100875 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700876 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100877 (_literal_2 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700878 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100879 (_literal_3 = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -0700880 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100881 (c = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700882 )
883 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100884 _res = _PyPegen_seq_append_to_end ( p , CHECK ( _PyPegen_seq_append_to_end ( p , a , b ) ) , c );
885 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700886 p->error_indicator = 1;
887 return NULL;
888 }
889 goto done;
890 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100891 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700892 }
893 { // ','.expression+ ',' '*' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100894 Token * _literal;
895 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -0700896 asdl_seq * a;
897 expr_ty b;
Guido van Rossumc001c092020-04-30 12:12:19 -0700898 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100899 (a = _gather_5_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700900 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100901 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700902 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100903 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Guido van Rossumc001c092020-04-30 12:12:19 -0700904 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100905 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700906 )
907 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100908 _res = _PyPegen_seq_append_to_end ( p , a , b );
909 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700910 p->error_indicator = 1;
911 return NULL;
912 }
913 goto done;
914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100915 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700916 }
917 { // ','.expression+ ',' '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100918 Token * _literal;
919 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -0700920 asdl_seq * a;
921 expr_ty b;
Guido van Rossumc001c092020-04-30 12:12:19 -0700922 if (
Pablo Galindo470aac42020-05-06 23:14:43 +0100923 (a = _gather_7_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -0700924 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100925 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -0700926 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100927 (_literal_1 = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -0700928 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100929 (b = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -0700930 )
931 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100932 _res = _PyPegen_seq_append_to_end ( p , a , b );
933 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -0700934 p->error_indicator = 1;
935 return NULL;
936 }
937 goto done;
938 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100939 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -0700940 }
Shantanu603d3542020-05-03 22:08:14 -0700941 { // '*' expression ',' '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100942 Token * _literal;
943 Token * _literal_1;
944 Token * _literal_2;
Shantanu603d3542020-05-03 22:08:14 -0700945 expr_ty a;
946 expr_ty b;
Shantanu603d3542020-05-03 22:08:14 -0700947 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100948 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Shantanu603d3542020-05-03 22:08:14 -0700949 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100950 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700951 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100952 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Shantanu603d3542020-05-03 22:08:14 -0700953 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100954 (_literal_2 = _PyPegen_expect_token(p, 35)) // token='**'
Shantanu603d3542020-05-03 22:08:14 -0700955 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100956 (b = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700957 )
958 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100959 _res = _PyPegen_seq_append_to_end ( p , CHECK ( _PyPegen_singleton_seq ( p , a ) ) , b );
960 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -0700961 p->error_indicator = 1;
962 return NULL;
963 }
964 goto done;
965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100966 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -0700967 }
968 { // '*' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100969 Token * _literal;
Shantanu603d3542020-05-03 22:08:14 -0700970 expr_ty a;
Shantanu603d3542020-05-03 22:08:14 -0700971 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100972 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Shantanu603d3542020-05-03 22:08:14 -0700973 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100974 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700975 )
976 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100977 _res = _PyPegen_singleton_seq ( p , a );
978 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -0700979 p->error_indicator = 1;
980 return NULL;
981 }
982 goto done;
983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100984 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -0700985 }
986 { // '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100987 Token * _literal;
Shantanu603d3542020-05-03 22:08:14 -0700988 expr_ty a;
Shantanu603d3542020-05-03 22:08:14 -0700989 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100990 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Shantanu603d3542020-05-03 22:08:14 -0700991 &&
Pablo Galindo470aac42020-05-06 23:14:43 +0100992 (a = expression_rule(p)) // expression
Shantanu603d3542020-05-03 22:08:14 -0700993 )
994 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +0100995 _res = _PyPegen_singleton_seq ( p , a );
996 if (_res == NULL && PyErr_Occurred()) {
Shantanu603d3542020-05-03 22:08:14 -0700997 p->error_indicator = 1;
998 return NULL;
999 }
1000 goto done;
1001 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001002 p->mark = _mark;
Shantanu603d3542020-05-03 22:08:14 -07001003 }
Guido van Rossumc001c092020-04-30 12:12:19 -07001004 { // ','.expression+
1005 asdl_seq * _gather_9_var;
1006 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001007 (_gather_9_var = _gather_9_rule(p)) // ','.expression+
Guido van Rossumc001c092020-04-30 12:12:19 -07001008 )
1009 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001010 _res = _gather_9_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07001011 goto done;
1012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001013 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07001014 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001015 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07001016 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001017 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07001018}
1019
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001020// statements: statement+
1021static asdl_seq*
1022statements_rule(Parser *p)
1023{
1024 if (p->error_indicator) {
1025 return NULL;
1026 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001027 asdl_seq* _res = NULL;
1028 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001029 { // statement+
1030 asdl_seq * a;
1031 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001032 (a = _loop1_11_rule(p)) // statement+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001033 )
1034 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001035 _res = _PyPegen_seq_flatten ( p , a );
1036 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001037 p->error_indicator = 1;
1038 return NULL;
1039 }
1040 goto done;
1041 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001042 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001043 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001044 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001045 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001046 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001047}
1048
1049// statement: compound_stmt | simple_stmt
1050static asdl_seq*
1051statement_rule(Parser *p)
1052{
1053 if (p->error_indicator) {
1054 return NULL;
1055 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001056 asdl_seq* _res = NULL;
1057 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001058 { // compound_stmt
1059 stmt_ty a;
1060 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001061 (a = compound_stmt_rule(p)) // compound_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001062 )
1063 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001064 _res = _PyPegen_singleton_seq ( p , a );
1065 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001066 p->error_indicator = 1;
1067 return NULL;
1068 }
1069 goto done;
1070 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001071 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001072 }
1073 { // simple_stmt
1074 asdl_seq* simple_stmt_var;
1075 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001076 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001077 )
1078 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001079 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001080 goto done;
1081 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001082 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001083 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001084 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001085 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001086 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001087}
1088
1089// statement_newline: compound_stmt NEWLINE | simple_stmt | NEWLINE | $
1090static asdl_seq*
1091statement_newline_rule(Parser *p)
1092{
1093 if (p->error_indicator) {
1094 return NULL;
1095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001096 asdl_seq* _res = NULL;
1097 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001098 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1099 p->error_indicator = 1;
1100 return NULL;
1101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001102 int _start_lineno = p->tokens[_mark]->lineno;
1103 UNUSED(_start_lineno); // Only used by EXTRA macro
1104 int _start_col_offset = p->tokens[_mark]->col_offset;
1105 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001106 { // compound_stmt NEWLINE
1107 stmt_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001108 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001109 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001110 (a = compound_stmt_rule(p)) // compound_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001111 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001112 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001113 )
1114 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001115 _res = _PyPegen_singleton_seq ( p , a );
1116 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001117 p->error_indicator = 1;
1118 return NULL;
1119 }
1120 goto done;
1121 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001122 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001123 }
1124 { // simple_stmt
1125 asdl_seq* simple_stmt_var;
1126 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001127 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001128 )
1129 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001130 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001131 goto done;
1132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001133 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001134 }
1135 { // NEWLINE
Pablo Galindob796b3f2020-05-01 12:32:26 +01001136 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001137 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001138 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001139 )
1140 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001141 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1142 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001143 return NULL;
1144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001145 int _end_lineno = _token->end_lineno;
1146 UNUSED(_end_lineno); // Only used by EXTRA macro
1147 int _end_col_offset = _token->end_col_offset;
1148 UNUSED(_end_col_offset); // Only used by EXTRA macro
1149 _res = _PyPegen_singleton_seq ( p , CHECK ( _Py_Pass ( EXTRA ) ) );
1150 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001151 p->error_indicator = 1;
1152 return NULL;
1153 }
1154 goto done;
1155 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001156 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001157 }
1158 { // $
Pablo Galindob796b3f2020-05-01 12:32:26 +01001159 Token * endmarker_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001160 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001161 (endmarker_var = _PyPegen_expect_token(p, ENDMARKER)) // token='ENDMARKER'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001162 )
1163 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001164 _res = _PyPegen_interactive_exit ( p );
1165 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001166 p->error_indicator = 1;
1167 return NULL;
1168 }
1169 goto done;
1170 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001171 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001172 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001173 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001174 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001175 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001176}
1177
1178// simple_stmt: small_stmt !';' NEWLINE | ';'.small_stmt+ ';'? NEWLINE
1179static asdl_seq*
1180simple_stmt_rule(Parser *p)
1181{
1182 if (p->error_indicator) {
1183 return NULL;
1184 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001185 asdl_seq* _res = NULL;
1186 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001187 { // small_stmt !';' NEWLINE
1188 stmt_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001189 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001190 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001191 (a = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001192 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001193 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 13) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001194 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001195 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001196 )
1197 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001198 _res = _PyPegen_singleton_seq ( p , a );
1199 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001200 p->error_indicator = 1;
1201 return NULL;
1202 }
1203 goto done;
1204 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001205 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001206 }
1207 { // ';'.small_stmt+ ';'? NEWLINE
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001208 void *_opt_var;
1209 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001210 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01001211 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001212 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001213 (a = _gather_12_rule(p)) // ';'.small_stmt+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001214 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001215 (_opt_var = _PyPegen_expect_token(p, 13), 1) // ';'?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001216 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001217 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001218 )
1219 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001220 _res = a;
1221 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001222 p->error_indicator = 1;
1223 return NULL;
1224 }
1225 goto done;
1226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001227 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001229 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001230 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001231 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001232}
1233
1234// small_stmt:
1235// | assignment
1236// | star_expressions
1237// | &'return' return_stmt
1238// | &('import' | 'from') import_stmt
1239// | &'raise' raise_stmt
1240// | 'pass'
1241// | &'del' del_stmt
1242// | &'yield' yield_stmt
1243// | &'assert' assert_stmt
1244// | 'break'
1245// | 'continue'
1246// | &'global' global_stmt
1247// | &'nonlocal' nonlocal_stmt
1248static stmt_ty
1249small_stmt_rule(Parser *p)
1250{
1251 if (p->error_indicator) {
1252 return NULL;
1253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001254 stmt_ty _res = NULL;
1255 if (_PyPegen_is_memoized(p, small_stmt_type, &_res))
1256 return _res;
1257 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001258 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1259 p->error_indicator = 1;
1260 return NULL;
1261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001262 int _start_lineno = p->tokens[_mark]->lineno;
1263 UNUSED(_start_lineno); // Only used by EXTRA macro
1264 int _start_col_offset = p->tokens[_mark]->col_offset;
1265 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001266 { // assignment
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +03001267 stmt_ty assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001268 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001269 (assignment_var = assignment_rule(p)) // assignment
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001270 )
1271 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001272 _res = assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001273 goto done;
1274 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001275 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001276 }
1277 { // star_expressions
1278 expr_ty e;
1279 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001280 (e = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001281 )
1282 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001283 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1284 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001285 return NULL;
1286 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001287 int _end_lineno = _token->end_lineno;
1288 UNUSED(_end_lineno); // Only used by EXTRA macro
1289 int _end_col_offset = _token->end_col_offset;
1290 UNUSED(_end_col_offset); // Only used by EXTRA macro
1291 _res = _Py_Expr ( e , EXTRA );
1292 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001293 p->error_indicator = 1;
1294 return NULL;
1295 }
1296 goto done;
1297 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001298 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001299 }
1300 { // &'return' return_stmt
1301 stmt_ty return_stmt_var;
1302 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001303 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 500) // token='return'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001304 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001305 (return_stmt_var = return_stmt_rule(p)) // return_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001306 )
1307 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001308 _res = return_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001309 goto done;
1310 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001311 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001312 }
1313 { // &('import' | 'from') import_stmt
1314 stmt_ty import_stmt_var;
1315 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001316 _PyPegen_lookahead(1, _tmp_14_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001317 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001318 (import_stmt_var = import_stmt_rule(p)) // import_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001319 )
1320 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001321 _res = import_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001322 goto done;
1323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001324 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001325 }
1326 { // &'raise' raise_stmt
1327 stmt_ty raise_stmt_var;
1328 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001329 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 501) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001330 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001331 (raise_stmt_var = raise_stmt_rule(p)) // raise_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001332 )
1333 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001334 _res = raise_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001335 goto done;
1336 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001337 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001338 }
1339 { // 'pass'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001340 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001341 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001342 (_keyword = _PyPegen_expect_token(p, 502)) // token='pass'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001343 )
1344 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001345 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1346 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001347 return NULL;
1348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001349 int _end_lineno = _token->end_lineno;
1350 UNUSED(_end_lineno); // Only used by EXTRA macro
1351 int _end_col_offset = _token->end_col_offset;
1352 UNUSED(_end_col_offset); // Only used by EXTRA macro
1353 _res = _Py_Pass ( EXTRA );
1354 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001355 p->error_indicator = 1;
1356 return NULL;
1357 }
1358 goto done;
1359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001360 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001361 }
1362 { // &'del' del_stmt
1363 stmt_ty del_stmt_var;
1364 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001365 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 503) // token='del'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001366 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001367 (del_stmt_var = del_stmt_rule(p)) // del_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001368 )
1369 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001370 _res = del_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001371 goto done;
1372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001373 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001374 }
1375 { // &'yield' yield_stmt
1376 stmt_ty yield_stmt_var;
1377 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001378 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 504) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001379 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001380 (yield_stmt_var = yield_stmt_rule(p)) // yield_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001381 )
1382 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001383 _res = yield_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001384 goto done;
1385 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001386 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001387 }
1388 { // &'assert' assert_stmt
1389 stmt_ty assert_stmt_var;
1390 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001391 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 505) // token='assert'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001392 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001393 (assert_stmt_var = assert_stmt_rule(p)) // assert_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001394 )
1395 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001396 _res = assert_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001397 goto done;
1398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001399 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001400 }
1401 { // 'break'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001402 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001403 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001404 (_keyword = _PyPegen_expect_token(p, 506)) // token='break'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001405 )
1406 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001407 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1408 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001409 return NULL;
1410 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001411 int _end_lineno = _token->end_lineno;
1412 UNUSED(_end_lineno); // Only used by EXTRA macro
1413 int _end_col_offset = _token->end_col_offset;
1414 UNUSED(_end_col_offset); // Only used by EXTRA macro
1415 _res = _Py_Break ( EXTRA );
1416 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001417 p->error_indicator = 1;
1418 return NULL;
1419 }
1420 goto done;
1421 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001422 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001423 }
1424 { // 'continue'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001425 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001426 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001427 (_keyword = _PyPegen_expect_token(p, 507)) // token='continue'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001428 )
1429 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001430 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1431 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001432 return NULL;
1433 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001434 int _end_lineno = _token->end_lineno;
1435 UNUSED(_end_lineno); // Only used by EXTRA macro
1436 int _end_col_offset = _token->end_col_offset;
1437 UNUSED(_end_col_offset); // Only used by EXTRA macro
1438 _res = _Py_Continue ( EXTRA );
1439 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001440 p->error_indicator = 1;
1441 return NULL;
1442 }
1443 goto done;
1444 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001445 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001446 }
1447 { // &'global' global_stmt
1448 stmt_ty global_stmt_var;
1449 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001450 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 508) // token='global'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001451 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001452 (global_stmt_var = global_stmt_rule(p)) // global_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001453 )
1454 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001455 _res = global_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001456 goto done;
1457 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001458 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001459 }
1460 { // &'nonlocal' nonlocal_stmt
1461 stmt_ty nonlocal_stmt_var;
1462 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001463 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 509) // token='nonlocal'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001464 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001465 (nonlocal_stmt_var = nonlocal_stmt_rule(p)) // nonlocal_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001466 )
1467 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001468 _res = nonlocal_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001469 goto done;
1470 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001471 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001473 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001474 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001475 _PyPegen_insert_memo(p, _mark, small_stmt_type, _res);
1476 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001477}
1478
1479// compound_stmt:
1480// | &('def' | '@' | ASYNC) function_def
1481// | &'if' if_stmt
1482// | &('class' | '@') class_def
1483// | &('with' | ASYNC) with_stmt
1484// | &('for' | ASYNC) for_stmt
1485// | &'try' try_stmt
1486// | &'while' while_stmt
1487static stmt_ty
1488compound_stmt_rule(Parser *p)
1489{
1490 if (p->error_indicator) {
1491 return NULL;
1492 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001493 stmt_ty _res = NULL;
1494 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001495 { // &('def' | '@' | ASYNC) function_def
1496 stmt_ty function_def_var;
1497 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001498 _PyPegen_lookahead(1, _tmp_15_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001499 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001500 (function_def_var = function_def_rule(p)) // function_def
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001501 )
1502 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001503 _res = function_def_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001504 goto done;
1505 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001506 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001507 }
1508 { // &'if' if_stmt
1509 stmt_ty if_stmt_var;
1510 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001511 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 510) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001512 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001513 (if_stmt_var = if_stmt_rule(p)) // if_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001514 )
1515 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001516 _res = if_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001517 goto done;
1518 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001519 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001520 }
1521 { // &('class' | '@') class_def
1522 stmt_ty class_def_var;
1523 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001524 _PyPegen_lookahead(1, _tmp_16_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001525 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001526 (class_def_var = class_def_rule(p)) // class_def
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001527 )
1528 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001529 _res = class_def_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001530 goto done;
1531 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001532 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001533 }
1534 { // &('with' | ASYNC) with_stmt
1535 stmt_ty with_stmt_var;
1536 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001537 _PyPegen_lookahead(1, _tmp_17_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001538 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001539 (with_stmt_var = with_stmt_rule(p)) // with_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001540 )
1541 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001542 _res = with_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001543 goto done;
1544 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001545 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001546 }
1547 { // &('for' | ASYNC) for_stmt
1548 stmt_ty for_stmt_var;
1549 if (
Guido van Rossumc001c092020-04-30 12:12:19 -07001550 _PyPegen_lookahead(1, _tmp_18_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001551 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001552 (for_stmt_var = for_stmt_rule(p)) // for_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001553 )
1554 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001555 _res = for_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001556 goto done;
1557 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001558 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001559 }
1560 { // &'try' try_stmt
1561 stmt_ty try_stmt_var;
1562 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001563 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 511) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001564 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001565 (try_stmt_var = try_stmt_rule(p)) // try_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001566 )
1567 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001568 _res = try_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001569 goto done;
1570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001571 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001572 }
1573 { // &'while' while_stmt
1574 stmt_ty while_stmt_var;
1575 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001576 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 512) // token='while'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001577 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001578 (while_stmt_var = while_stmt_rule(p)) // while_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001579 )
1580 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001581 _res = while_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001582 goto done;
1583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001584 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001586 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001587 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001588 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001589}
1590
1591// assignment:
1592// | NAME ':' expression ['=' annotated_rhs]
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001593// | ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
Guido van Rossumc001c092020-04-30 12:12:19 -07001594// | ((star_targets '='))+ (yield_expr | star_expressions) TYPE_COMMENT?
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001595// | single_target augassign (yield_expr | star_expressions)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001596// | invalid_assignment
Lysandros Nikolaou999ec9a2020-05-06 21:11:04 +03001597static stmt_ty
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001598assignment_rule(Parser *p)
1599{
1600 if (p->error_indicator) {
1601 return NULL;
1602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001603 stmt_ty _res = NULL;
1604 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001605 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1606 p->error_indicator = 1;
1607 return NULL;
1608 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001609 int _start_lineno = p->tokens[_mark]->lineno;
1610 UNUSED(_start_lineno); // Only used by EXTRA macro
1611 int _start_col_offset = p->tokens[_mark]->col_offset;
1612 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001613 { // NAME ':' expression ['=' annotated_rhs]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001614 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001615 expr_ty a;
1616 expr_ty b;
1617 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001618 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001619 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001620 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001621 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001622 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001623 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001624 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001625 (c = _tmp_19_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001626 )
1627 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001628 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1629 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001630 return NULL;
1631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001632 int _end_lineno = _token->end_lineno;
1633 UNUSED(_end_lineno); // Only used by EXTRA macro
1634 int _end_col_offset = _token->end_col_offset;
1635 UNUSED(_end_col_offset); // Only used by EXTRA macro
1636 _res = CHECK_VERSION ( 6 , "Variable annotation syntax is" , _Py_AnnAssign ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , b , c , 1 , EXTRA ) );
1637 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001638 p->error_indicator = 1;
1639 return NULL;
1640 }
1641 goto done;
1642 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001643 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001644 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001645 { // ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001646 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001647 void *a;
1648 expr_ty b;
1649 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001650 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001651 (a = _tmp_20_rule(p)) // '(' single_target ')' | single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001652 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001653 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001654 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001655 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001656 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001657 (c = _tmp_21_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001658 )
1659 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001660 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1661 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001662 return NULL;
1663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001664 int _end_lineno = _token->end_lineno;
1665 UNUSED(_end_lineno); // Only used by EXTRA macro
1666 int _end_col_offset = _token->end_col_offset;
1667 UNUSED(_end_col_offset); // Only used by EXTRA macro
1668 _res = CHECK_VERSION ( 6 , "Variable annotations syntax is" , _Py_AnnAssign ( a , b , c , 0 , EXTRA ) );
1669 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001670 p->error_indicator = 1;
1671 return NULL;
1672 }
1673 goto done;
1674 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001675 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001676 }
Guido van Rossumc001c092020-04-30 12:12:19 -07001677 { // ((star_targets '='))+ (yield_expr | star_expressions) TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001678 asdl_seq * a;
1679 void *b;
Guido van Rossumc001c092020-04-30 12:12:19 -07001680 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001681 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001682 (a = _loop1_22_rule(p)) // ((star_targets '='))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001683 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001684 (b = _tmp_23_rule(p)) // yield_expr | star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -07001685 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001686 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001687 )
1688 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001689 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1690 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001691 return NULL;
1692 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001693 int _end_lineno = _token->end_lineno;
1694 UNUSED(_end_lineno); // Only used by EXTRA macro
1695 int _end_col_offset = _token->end_col_offset;
1696 UNUSED(_end_col_offset); // Only used by EXTRA macro
1697 _res = _Py_Assign ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
1698 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001699 p->error_indicator = 1;
1700 return NULL;
1701 }
1702 goto done;
1703 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001704 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001705 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001706 { // single_target augassign (yield_expr | star_expressions)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001707 expr_ty a;
1708 AugOperator* b;
1709 void *c;
1710 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03001711 (a = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001712 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001713 (b = augassign_rule(p)) // augassign
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001714 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001715 (c = _tmp_24_rule(p)) // yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001716 )
1717 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001718 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1719 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001720 return NULL;
1721 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001722 int _end_lineno = _token->end_lineno;
1723 UNUSED(_end_lineno); // Only used by EXTRA macro
1724 int _end_col_offset = _token->end_col_offset;
1725 UNUSED(_end_col_offset); // Only used by EXTRA macro
1726 _res = _Py_AugAssign ( a , b -> kind , c , EXTRA );
1727 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001728 p->error_indicator = 1;
1729 return NULL;
1730 }
1731 goto done;
1732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001733 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001734 }
1735 { // invalid_assignment
1736 void *invalid_assignment_var;
1737 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01001738 (invalid_assignment_var = invalid_assignment_rule(p)) // invalid_assignment
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001739 )
1740 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001741 _res = invalid_assignment_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001742 goto done;
1743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001744 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001745 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001746 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001747 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001748 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001749}
1750
1751// augassign:
1752// | '+='
1753// | '-='
1754// | '*='
1755// | '@='
1756// | '/='
1757// | '%='
1758// | '&='
1759// | '|='
1760// | '^='
1761// | '<<='
1762// | '>>='
1763// | '**='
1764// | '//='
1765static AugOperator*
1766augassign_rule(Parser *p)
1767{
1768 if (p->error_indicator) {
1769 return NULL;
1770 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001771 AugOperator* _res = NULL;
1772 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001773 { // '+='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001774 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001775 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001776 (_literal = _PyPegen_expect_token(p, 36)) // token='+='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001777 )
1778 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001779 _res = _PyPegen_augoperator ( p , Add );
1780 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001781 p->error_indicator = 1;
1782 return NULL;
1783 }
1784 goto done;
1785 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001786 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001787 }
1788 { // '-='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001789 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001790 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001791 (_literal = _PyPegen_expect_token(p, 37)) // token='-='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001792 )
1793 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001794 _res = _PyPegen_augoperator ( p , Sub );
1795 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001796 p->error_indicator = 1;
1797 return NULL;
1798 }
1799 goto done;
1800 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001801 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001802 }
1803 { // '*='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001804 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001805 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001806 (_literal = _PyPegen_expect_token(p, 38)) // token='*='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001807 )
1808 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001809 _res = _PyPegen_augoperator ( p , Mult );
1810 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001811 p->error_indicator = 1;
1812 return NULL;
1813 }
1814 goto done;
1815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001816 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001817 }
1818 { // '@='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001819 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001820 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001821 (_literal = _PyPegen_expect_token(p, 50)) // token='@='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001822 )
1823 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001824 _res = CHECK_VERSION ( 5 , "The '@' operator is" , _PyPegen_augoperator ( p , MatMult ) );
1825 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001826 p->error_indicator = 1;
1827 return NULL;
1828 }
1829 goto done;
1830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001831 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001832 }
1833 { // '/='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001834 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001835 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001836 (_literal = _PyPegen_expect_token(p, 39)) // token='/='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001837 )
1838 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001839 _res = _PyPegen_augoperator ( p , Div );
1840 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001841 p->error_indicator = 1;
1842 return NULL;
1843 }
1844 goto done;
1845 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001846 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001847 }
1848 { // '%='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001849 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001850 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001851 (_literal = _PyPegen_expect_token(p, 40)) // token='%='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001852 )
1853 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001854 _res = _PyPegen_augoperator ( p , Mod );
1855 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001856 p->error_indicator = 1;
1857 return NULL;
1858 }
1859 goto done;
1860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001861 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001862 }
1863 { // '&='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001864 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001865 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001866 (_literal = _PyPegen_expect_token(p, 41)) // token='&='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001867 )
1868 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001869 _res = _PyPegen_augoperator ( p , BitAnd );
1870 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001871 p->error_indicator = 1;
1872 return NULL;
1873 }
1874 goto done;
1875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001876 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001877 }
1878 { // '|='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001879 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001880 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001881 (_literal = _PyPegen_expect_token(p, 42)) // token='|='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001882 )
1883 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001884 _res = _PyPegen_augoperator ( p , BitOr );
1885 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001886 p->error_indicator = 1;
1887 return NULL;
1888 }
1889 goto done;
1890 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001891 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001892 }
1893 { // '^='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001894 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001895 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001896 (_literal = _PyPegen_expect_token(p, 43)) // token='^='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001897 )
1898 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001899 _res = _PyPegen_augoperator ( p , BitXor );
1900 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001901 p->error_indicator = 1;
1902 return NULL;
1903 }
1904 goto done;
1905 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001906 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001907 }
1908 { // '<<='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001909 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001910 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001911 (_literal = _PyPegen_expect_token(p, 44)) // token='<<='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001912 )
1913 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001914 _res = _PyPegen_augoperator ( p , LShift );
1915 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001916 p->error_indicator = 1;
1917 return NULL;
1918 }
1919 goto done;
1920 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001921 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001922 }
1923 { // '>>='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001924 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001925 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001926 (_literal = _PyPegen_expect_token(p, 45)) // token='>>='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001927 )
1928 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001929 _res = _PyPegen_augoperator ( p , RShift );
1930 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001931 p->error_indicator = 1;
1932 return NULL;
1933 }
1934 goto done;
1935 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001936 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001937 }
1938 { // '**='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001939 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001940 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001941 (_literal = _PyPegen_expect_token(p, 46)) // token='**='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001942 )
1943 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001944 _res = _PyPegen_augoperator ( p , Pow );
1945 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001946 p->error_indicator = 1;
1947 return NULL;
1948 }
1949 goto done;
1950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001951 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001952 }
1953 { // '//='
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001954 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001955 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001956 (_literal = _PyPegen_expect_token(p, 48)) // token='//='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001957 )
1958 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001959 _res = _PyPegen_augoperator ( p , FloorDiv );
1960 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001961 p->error_indicator = 1;
1962 return NULL;
1963 }
1964 goto done;
1965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001966 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001967 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001968 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001969 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001970 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001971}
1972
1973// global_stmt: 'global' ','.NAME+
1974static stmt_ty
1975global_stmt_rule(Parser *p)
1976{
1977 if (p->error_indicator) {
1978 return NULL;
1979 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001980 stmt_ty _res = NULL;
1981 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001982 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1983 p->error_indicator = 1;
1984 return NULL;
1985 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001986 int _start_lineno = p->tokens[_mark]->lineno;
1987 UNUSED(_start_lineno); // Only used by EXTRA macro
1988 int _start_col_offset = p->tokens[_mark]->col_offset;
1989 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001990 { // 'global' ','.NAME+
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001991 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001992 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001993 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001994 (_keyword = _PyPegen_expect_token(p, 508)) // token='global'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001995 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01001996 (a = _gather_25_rule(p)) // ','.NAME+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01001997 )
1998 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01001999 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2000 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002001 return NULL;
2002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002003 int _end_lineno = _token->end_lineno;
2004 UNUSED(_end_lineno); // Only used by EXTRA macro
2005 int _end_col_offset = _token->end_col_offset;
2006 UNUSED(_end_col_offset); // Only used by EXTRA macro
2007 _res = _Py_Global ( CHECK ( _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2008 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002009 p->error_indicator = 1;
2010 return NULL;
2011 }
2012 goto done;
2013 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002014 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002015 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002016 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002017 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002018 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002019}
2020
2021// nonlocal_stmt: 'nonlocal' ','.NAME+
2022static stmt_ty
2023nonlocal_stmt_rule(Parser *p)
2024{
2025 if (p->error_indicator) {
2026 return NULL;
2027 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002028 stmt_ty _res = NULL;
2029 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002030 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2031 p->error_indicator = 1;
2032 return NULL;
2033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002034 int _start_lineno = p->tokens[_mark]->lineno;
2035 UNUSED(_start_lineno); // Only used by EXTRA macro
2036 int _start_col_offset = p->tokens[_mark]->col_offset;
2037 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002038 { // 'nonlocal' ','.NAME+
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002039 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002040 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002041 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002042 (_keyword = _PyPegen_expect_token(p, 509)) // token='nonlocal'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002043 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002044 (a = _gather_27_rule(p)) // ','.NAME+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002045 )
2046 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002047 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2048 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002049 return NULL;
2050 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002051 int _end_lineno = _token->end_lineno;
2052 UNUSED(_end_lineno); // Only used by EXTRA macro
2053 int _end_col_offset = _token->end_col_offset;
2054 UNUSED(_end_col_offset); // Only used by EXTRA macro
2055 _res = _Py_Nonlocal ( CHECK ( _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2056 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002057 p->error_indicator = 1;
2058 return NULL;
2059 }
2060 goto done;
2061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002062 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002063 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002064 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002065 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002066 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002067}
2068
2069// yield_stmt: yield_expr
2070static stmt_ty
2071yield_stmt_rule(Parser *p)
2072{
2073 if (p->error_indicator) {
2074 return NULL;
2075 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002076 stmt_ty _res = NULL;
2077 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002078 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2079 p->error_indicator = 1;
2080 return NULL;
2081 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002082 int _start_lineno = p->tokens[_mark]->lineno;
2083 UNUSED(_start_lineno); // Only used by EXTRA macro
2084 int _start_col_offset = p->tokens[_mark]->col_offset;
2085 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002086 { // yield_expr
2087 expr_ty y;
2088 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002089 (y = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002090 )
2091 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002092 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2093 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002094 return NULL;
2095 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002096 int _end_lineno = _token->end_lineno;
2097 UNUSED(_end_lineno); // Only used by EXTRA macro
2098 int _end_col_offset = _token->end_col_offset;
2099 UNUSED(_end_col_offset); // Only used by EXTRA macro
2100 _res = _Py_Expr ( y , EXTRA );
2101 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002102 p->error_indicator = 1;
2103 return NULL;
2104 }
2105 goto done;
2106 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002107 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002108 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002109 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002110 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002111 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002112}
2113
2114// assert_stmt: 'assert' expression [',' expression]
2115static stmt_ty
2116assert_stmt_rule(Parser *p)
2117{
2118 if (p->error_indicator) {
2119 return NULL;
2120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002121 stmt_ty _res = NULL;
2122 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002123 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2124 p->error_indicator = 1;
2125 return NULL;
2126 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002127 int _start_lineno = p->tokens[_mark]->lineno;
2128 UNUSED(_start_lineno); // Only used by EXTRA macro
2129 int _start_col_offset = p->tokens[_mark]->col_offset;
2130 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002131 { // 'assert' expression [',' expression]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002132 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002133 expr_ty a;
2134 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002135 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002136 (_keyword = _PyPegen_expect_token(p, 505)) // token='assert'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002137 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002138 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002139 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002140 (b = _tmp_29_rule(p), 1) // [',' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002141 )
2142 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002143 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2144 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002145 return NULL;
2146 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002147 int _end_lineno = _token->end_lineno;
2148 UNUSED(_end_lineno); // Only used by EXTRA macro
2149 int _end_col_offset = _token->end_col_offset;
2150 UNUSED(_end_col_offset); // Only used by EXTRA macro
2151 _res = _Py_Assert ( a , b , EXTRA );
2152 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002153 p->error_indicator = 1;
2154 return NULL;
2155 }
2156 goto done;
2157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002158 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002159 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002160 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002161 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002162 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002163}
2164
2165// del_stmt: 'del' del_targets
2166static stmt_ty
2167del_stmt_rule(Parser *p)
2168{
2169 if (p->error_indicator) {
2170 return NULL;
2171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002172 stmt_ty _res = NULL;
2173 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002174 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2175 p->error_indicator = 1;
2176 return NULL;
2177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002178 int _start_lineno = p->tokens[_mark]->lineno;
2179 UNUSED(_start_lineno); // Only used by EXTRA macro
2180 int _start_col_offset = p->tokens[_mark]->col_offset;
2181 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002182 { // 'del' del_targets
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002183 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002184 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002185 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002186 (_keyword = _PyPegen_expect_token(p, 503)) // token='del'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002187 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002188 (a = del_targets_rule(p)) // del_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002189 )
2190 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002191 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2192 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002193 return NULL;
2194 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002195 int _end_lineno = _token->end_lineno;
2196 UNUSED(_end_lineno); // Only used by EXTRA macro
2197 int _end_col_offset = _token->end_col_offset;
2198 UNUSED(_end_col_offset); // Only used by EXTRA macro
2199 _res = _Py_Delete ( a , EXTRA );
2200 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002201 p->error_indicator = 1;
2202 return NULL;
2203 }
2204 goto done;
2205 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002206 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002208 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002209 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002210 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002211}
2212
2213// import_stmt: import_name | import_from
2214static stmt_ty
2215import_stmt_rule(Parser *p)
2216{
2217 if (p->error_indicator) {
2218 return NULL;
2219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002220 stmt_ty _res = NULL;
2221 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002222 { // import_name
2223 stmt_ty import_name_var;
2224 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002225 (import_name_var = import_name_rule(p)) // import_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002226 )
2227 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002228 _res = import_name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002229 goto done;
2230 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002231 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002232 }
2233 { // import_from
2234 stmt_ty import_from_var;
2235 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002236 (import_from_var = import_from_rule(p)) // import_from
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002237 )
2238 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002239 _res = import_from_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002240 goto done;
2241 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002242 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002244 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002245 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002246 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002247}
2248
2249// import_name: 'import' dotted_as_names
2250static stmt_ty
2251import_name_rule(Parser *p)
2252{
2253 if (p->error_indicator) {
2254 return NULL;
2255 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002256 stmt_ty _res = NULL;
2257 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002258 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2259 p->error_indicator = 1;
2260 return NULL;
2261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002262 int _start_lineno = p->tokens[_mark]->lineno;
2263 UNUSED(_start_lineno); // Only used by EXTRA macro
2264 int _start_col_offset = p->tokens[_mark]->col_offset;
2265 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002266 { // 'import' dotted_as_names
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002267 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002268 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002269 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002270 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002271 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002272 (a = dotted_as_names_rule(p)) // dotted_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002273 )
2274 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002275 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2276 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002277 return NULL;
2278 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002279 int _end_lineno = _token->end_lineno;
2280 UNUSED(_end_lineno); // Only used by EXTRA macro
2281 int _end_col_offset = _token->end_col_offset;
2282 UNUSED(_end_col_offset); // Only used by EXTRA macro
2283 _res = _Py_Import ( a , EXTRA );
2284 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002285 p->error_indicator = 1;
2286 return NULL;
2287 }
2288 goto done;
2289 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002290 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002291 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002292 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002293 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002294 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002295}
2296
2297// import_from:
2298// | 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
2299// | 'from' (('.' | '...'))+ 'import' import_from_targets
2300static stmt_ty
2301import_from_rule(Parser *p)
2302{
2303 if (p->error_indicator) {
2304 return NULL;
2305 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002306 stmt_ty _res = NULL;
2307 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002308 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2309 p->error_indicator = 1;
2310 return NULL;
2311 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002312 int _start_lineno = p->tokens[_mark]->lineno;
2313 UNUSED(_start_lineno); // Only used by EXTRA macro
2314 int _start_col_offset = p->tokens[_mark]->col_offset;
2315 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002316 { // 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002317 Token * _keyword;
2318 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002319 asdl_seq * a;
2320 expr_ty b;
2321 asdl_seq* c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002322 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002323 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002324 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002325 (a = _loop0_30_rule(p)) // (('.' | '...'))*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002326 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002327 (b = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002328 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002329 (_keyword_1 = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002330 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002331 (c = import_from_targets_rule(p)) // import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002332 )
2333 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002334 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2335 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002336 return NULL;
2337 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002338 int _end_lineno = _token->end_lineno;
2339 UNUSED(_end_lineno); // Only used by EXTRA macro
2340 int _end_col_offset = _token->end_col_offset;
2341 UNUSED(_end_col_offset); // Only used by EXTRA macro
2342 _res = _Py_ImportFrom ( b -> v . Name . id , c , _PyPegen_seq_count_dots ( a ) , EXTRA );
2343 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002344 p->error_indicator = 1;
2345 return NULL;
2346 }
2347 goto done;
2348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002349 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002350 }
2351 { // 'from' (('.' | '...'))+ 'import' import_from_targets
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002352 Token * _keyword;
2353 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002354 asdl_seq * a;
2355 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002356 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002357 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002358 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002359 (a = _loop1_31_rule(p)) // (('.' | '...'))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002360 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002361 (_keyword_1 = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002362 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002363 (b = import_from_targets_rule(p)) // import_from_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002364 )
2365 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002366 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2367 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002368 return NULL;
2369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002370 int _end_lineno = _token->end_lineno;
2371 UNUSED(_end_lineno); // Only used by EXTRA macro
2372 int _end_col_offset = _token->end_col_offset;
2373 UNUSED(_end_col_offset); // Only used by EXTRA macro
2374 _res = _Py_ImportFrom ( NULL , b , _PyPegen_seq_count_dots ( a ) , EXTRA );
2375 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002376 p->error_indicator = 1;
2377 return NULL;
2378 }
2379 goto done;
2380 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002381 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002383 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002384 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002385 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002386}
2387
2388// import_from_targets: '(' import_from_as_names ','? ')' | import_from_as_names | '*'
2389static asdl_seq*
2390import_from_targets_rule(Parser *p)
2391{
2392 if (p->error_indicator) {
2393 return NULL;
2394 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002395 asdl_seq* _res = NULL;
2396 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002397 { // '(' import_from_as_names ','? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002398 Token * _literal;
2399 Token * _literal_1;
2400 void *_opt_var;
2401 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002402 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002403 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002404 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002405 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002406 (a = import_from_as_names_rule(p)) // import_from_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002407 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002408 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002409 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002410 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002411 )
2412 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002413 _res = a;
2414 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002415 p->error_indicator = 1;
2416 return NULL;
2417 }
2418 goto done;
2419 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002420 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002421 }
2422 { // import_from_as_names
2423 asdl_seq* import_from_as_names_var;
2424 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002425 (import_from_as_names_var = import_from_as_names_rule(p)) // import_from_as_names
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002426 )
2427 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002428 _res = import_from_as_names_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002429 goto done;
2430 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002431 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002432 }
2433 { // '*'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002434 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002435 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002436 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002437 )
2438 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002439 _res = _PyPegen_singleton_seq ( p , CHECK ( _PyPegen_alias_for_star ( p ) ) );
2440 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002441 p->error_indicator = 1;
2442 return NULL;
2443 }
2444 goto done;
2445 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002446 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002447 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002448 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002449 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002450 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002451}
2452
2453// import_from_as_names: ','.import_from_as_name+
2454static asdl_seq*
2455import_from_as_names_rule(Parser *p)
2456{
2457 if (p->error_indicator) {
2458 return NULL;
2459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002460 asdl_seq* _res = NULL;
2461 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002462 { // ','.import_from_as_name+
2463 asdl_seq * a;
2464 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002465 (a = _gather_32_rule(p)) // ','.import_from_as_name+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002466 )
2467 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002468 _res = a;
2469 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002470 p->error_indicator = 1;
2471 return NULL;
2472 }
2473 goto done;
2474 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002475 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002476 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002477 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002478 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002479 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002480}
2481
2482// import_from_as_name: NAME ['as' NAME]
2483static alias_ty
2484import_from_as_name_rule(Parser *p)
2485{
2486 if (p->error_indicator) {
2487 return NULL;
2488 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002489 alias_ty _res = NULL;
2490 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002491 { // NAME ['as' NAME]
2492 expr_ty a;
2493 void *b;
2494 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002495 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002496 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002497 (b = _tmp_34_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002498 )
2499 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002500 _res = _Py_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , p -> arena );
2501 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002502 p->error_indicator = 1;
2503 return NULL;
2504 }
2505 goto done;
2506 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002507 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002508 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002509 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002510 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002511 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002512}
2513
2514// dotted_as_names: ','.dotted_as_name+
2515static asdl_seq*
2516dotted_as_names_rule(Parser *p)
2517{
2518 if (p->error_indicator) {
2519 return NULL;
2520 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002521 asdl_seq* _res = NULL;
2522 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002523 { // ','.dotted_as_name+
2524 asdl_seq * a;
2525 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002526 (a = _gather_35_rule(p)) // ','.dotted_as_name+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002527 )
2528 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002529 _res = a;
2530 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002531 p->error_indicator = 1;
2532 return NULL;
2533 }
2534 goto done;
2535 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002536 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002537 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002538 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002539 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002540 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002541}
2542
2543// dotted_as_name: dotted_name ['as' NAME]
2544static alias_ty
2545dotted_as_name_rule(Parser *p)
2546{
2547 if (p->error_indicator) {
2548 return NULL;
2549 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002550 alias_ty _res = NULL;
2551 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002552 { // dotted_name ['as' NAME]
2553 expr_ty a;
2554 void *b;
2555 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002556 (a = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002557 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002558 (b = _tmp_37_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002559 )
2560 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002561 _res = _Py_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , p -> arena );
2562 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002563 p->error_indicator = 1;
2564 return NULL;
2565 }
2566 goto done;
2567 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002568 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002570 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002571 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002572 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002573}
2574
2575// Left-recursive
2576// dotted_name: dotted_name '.' NAME | NAME
2577static expr_ty dotted_name_raw(Parser *);
2578static expr_ty
2579dotted_name_rule(Parser *p)
2580{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002581 expr_ty _res = NULL;
2582 if (_PyPegen_is_memoized(p, dotted_name_type, &_res))
2583 return _res;
2584 int _mark = p->mark;
2585 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002586 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002587 int tmpvar_0 = _PyPegen_update_memo(p, _mark, dotted_name_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002588 if (tmpvar_0) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002589 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002591 p->mark = _mark;
2592 void *_raw = dotted_name_raw(p);
2593 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002594 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002595 _resmark = p->mark;
2596 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002597 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002598 p->mark = _resmark;
2599 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002600}
2601static expr_ty
2602dotted_name_raw(Parser *p)
2603{
2604 if (p->error_indicator) {
2605 return NULL;
2606 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002607 expr_ty _res = NULL;
2608 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002609 { // dotted_name '.' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002610 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002611 expr_ty a;
2612 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002613 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002614 (a = dotted_name_rule(p)) // dotted_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002615 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002616 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002617 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002618 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002619 )
2620 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002621 _res = _PyPegen_join_names_with_dot ( p , a , b );
2622 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002623 p->error_indicator = 1;
2624 return NULL;
2625 }
2626 goto done;
2627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002628 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002629 }
2630 { // NAME
2631 expr_ty name_var;
2632 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01002633 (name_var = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002634 )
2635 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002636 _res = name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002637 goto done;
2638 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002639 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002640 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002641 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002642 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002643 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002644}
2645
2646// if_stmt:
2647// | 'if' named_expression ':' block elif_stmt
2648// | 'if' named_expression ':' block else_block?
2649static stmt_ty
2650if_stmt_rule(Parser *p)
2651{
2652 if (p->error_indicator) {
2653 return NULL;
2654 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002655 stmt_ty _res = NULL;
2656 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002657 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2658 p->error_indicator = 1;
2659 return NULL;
2660 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002661 int _start_lineno = p->tokens[_mark]->lineno;
2662 UNUSED(_start_lineno); // Only used by EXTRA macro
2663 int _start_col_offset = p->tokens[_mark]->col_offset;
2664 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002665 { // 'if' named_expression ':' block elif_stmt
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002666 Token * _keyword;
2667 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002668 expr_ty a;
2669 asdl_seq* b;
2670 stmt_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002671 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002672 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002673 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002674 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002675 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002676 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002677 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002678 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002679 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002680 (c = elif_stmt_rule(p)) // elif_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002681 )
2682 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002683 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2684 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002685 return NULL;
2686 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002687 int _end_lineno = _token->end_lineno;
2688 UNUSED(_end_lineno); // Only used by EXTRA macro
2689 int _end_col_offset = _token->end_col_offset;
2690 UNUSED(_end_col_offset); // Only used by EXTRA macro
2691 _res = _Py_If ( a , b , CHECK ( _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
2692 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002693 p->error_indicator = 1;
2694 return NULL;
2695 }
2696 goto done;
2697 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002698 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002699 }
2700 { // 'if' named_expression ':' block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002701 Token * _keyword;
2702 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002703 expr_ty a;
2704 asdl_seq* b;
2705 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002706 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002707 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002708 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002709 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002710 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002711 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002712 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002713 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002714 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002715 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002716 )
2717 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002718 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2719 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002720 return NULL;
2721 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002722 int _end_lineno = _token->end_lineno;
2723 UNUSED(_end_lineno); // Only used by EXTRA macro
2724 int _end_col_offset = _token->end_col_offset;
2725 UNUSED(_end_col_offset); // Only used by EXTRA macro
2726 _res = _Py_If ( a , b , c , EXTRA );
2727 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002728 p->error_indicator = 1;
2729 return NULL;
2730 }
2731 goto done;
2732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002733 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002734 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002735 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002736 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002737 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002738}
2739
2740// elif_stmt:
2741// | 'elif' named_expression ':' block elif_stmt
2742// | 'elif' named_expression ':' block else_block?
2743static stmt_ty
2744elif_stmt_rule(Parser *p)
2745{
2746 if (p->error_indicator) {
2747 return NULL;
2748 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002749 stmt_ty _res = NULL;
2750 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002751 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2752 p->error_indicator = 1;
2753 return NULL;
2754 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002755 int _start_lineno = p->tokens[_mark]->lineno;
2756 UNUSED(_start_lineno); // Only used by EXTRA macro
2757 int _start_col_offset = p->tokens[_mark]->col_offset;
2758 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002759 { // 'elif' named_expression ':' block elif_stmt
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002760 Token * _keyword;
2761 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002762 expr_ty a;
2763 asdl_seq* b;
2764 stmt_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002765 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002766 (_keyword = _PyPegen_expect_token(p, 515)) // token='elif'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002767 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002768 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002769 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002770 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002771 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002772 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002773 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002774 (c = elif_stmt_rule(p)) // elif_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002775 )
2776 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002777 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2778 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002779 return NULL;
2780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002781 int _end_lineno = _token->end_lineno;
2782 UNUSED(_end_lineno); // Only used by EXTRA macro
2783 int _end_col_offset = _token->end_col_offset;
2784 UNUSED(_end_col_offset); // Only used by EXTRA macro
2785 _res = _Py_If ( a , b , CHECK ( _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
2786 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002787 p->error_indicator = 1;
2788 return NULL;
2789 }
2790 goto done;
2791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002792 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002793 }
2794 { // 'elif' named_expression ':' block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002795 Token * _keyword;
2796 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002797 expr_ty a;
2798 asdl_seq* b;
2799 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002800 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002801 (_keyword = _PyPegen_expect_token(p, 515)) // token='elif'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002802 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002803 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002804 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002805 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002806 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002807 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002808 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002809 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002810 )
2811 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002812 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2813 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002814 return NULL;
2815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002816 int _end_lineno = _token->end_lineno;
2817 UNUSED(_end_lineno); // Only used by EXTRA macro
2818 int _end_col_offset = _token->end_col_offset;
2819 UNUSED(_end_col_offset); // Only used by EXTRA macro
2820 _res = _Py_If ( a , b , c , EXTRA );
2821 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002822 p->error_indicator = 1;
2823 return NULL;
2824 }
2825 goto done;
2826 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002827 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002828 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002829 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002830 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002831 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002832}
2833
2834// else_block: 'else' ':' block
2835static asdl_seq*
2836else_block_rule(Parser *p)
2837{
2838 if (p->error_indicator) {
2839 return NULL;
2840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002841 asdl_seq* _res = NULL;
2842 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002843 { // 'else' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002844 Token * _keyword;
2845 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002846 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002847 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002848 (_keyword = _PyPegen_expect_token(p, 516)) // token='else'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002849 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002850 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002851 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002852 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002853 )
2854 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002855 _res = b;
2856 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002857 p->error_indicator = 1;
2858 return NULL;
2859 }
2860 goto done;
2861 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002862 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002863 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002864 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002865 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002866 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002867}
2868
2869// while_stmt: 'while' named_expression ':' block else_block?
2870static stmt_ty
2871while_stmt_rule(Parser *p)
2872{
2873 if (p->error_indicator) {
2874 return NULL;
2875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002876 stmt_ty _res = NULL;
2877 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002878 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2879 p->error_indicator = 1;
2880 return NULL;
2881 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002882 int _start_lineno = p->tokens[_mark]->lineno;
2883 UNUSED(_start_lineno); // Only used by EXTRA macro
2884 int _start_col_offset = p->tokens[_mark]->col_offset;
2885 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002886 { // 'while' named_expression ':' block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002887 Token * _keyword;
2888 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002889 expr_ty a;
2890 asdl_seq* b;
2891 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002892 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002893 (_keyword = _PyPegen_expect_token(p, 512)) // token='while'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002894 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002895 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002896 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002897 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002898 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002899 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002900 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002901 (c = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002902 )
2903 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002904 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2905 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002906 return NULL;
2907 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002908 int _end_lineno = _token->end_lineno;
2909 UNUSED(_end_lineno); // Only used by EXTRA macro
2910 int _end_col_offset = _token->end_col_offset;
2911 UNUSED(_end_col_offset); // Only used by EXTRA macro
2912 _res = _Py_While ( a , b , c , EXTRA );
2913 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002914 p->error_indicator = 1;
2915 return NULL;
2916 }
2917 goto done;
2918 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002919 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002920 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002921 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002922 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002923 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002924}
2925
Guido van Rossumc001c092020-04-30 12:12:19 -07002926// for_stmt:
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002927// | 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
2928// | ASYNC 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002929static stmt_ty
2930for_stmt_rule(Parser *p)
2931{
2932 if (p->error_indicator) {
2933 return NULL;
2934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002935 stmt_ty _res = NULL;
2936 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002937 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2938 p->error_indicator = 1;
2939 return NULL;
2940 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002941 int _start_lineno = p->tokens[_mark]->lineno;
2942 UNUSED(_start_lineno); // Only used by EXTRA macro
2943 int _start_col_offset = p->tokens[_mark]->col_offset;
2944 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002945 { // 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002946 Token * _keyword;
2947 Token * _keyword_1;
2948 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002949 asdl_seq* b;
2950 void *el;
2951 expr_ty ex;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002952 expr_ty t;
Guido van Rossumc001c092020-04-30 12:12:19 -07002953 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01002954 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002955 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002956 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002957 (t = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002958 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002959 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002960 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002961 (ex = star_expressions_rule(p)) // star_expressions
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002962 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002963 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002964 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002965 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002966 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002967 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002968 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01002969 (el = else_block_rule(p), 1) // else_block?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002970 )
2971 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002972 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2973 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002974 return NULL;
2975 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002976 int _end_lineno = _token->end_lineno;
2977 UNUSED(_end_lineno); // Only used by EXTRA macro
2978 int _end_col_offset = _token->end_col_offset;
2979 UNUSED(_end_col_offset); // Only used by EXTRA macro
2980 _res = _Py_For ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
2981 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002982 p->error_indicator = 1;
2983 return NULL;
2984 }
2985 goto done;
2986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002987 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002988 }
2989 { // ASYNC 'for' star_targets 'in' star_expressions ':' TYPE_COMMENT? block else_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01002990 Token * _keyword;
2991 Token * _keyword_1;
2992 Token * _literal;
Pablo Galindob796b3f2020-05-01 12:32:26 +01002993 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002994 asdl_seq* b;
2995 void *el;
2996 expr_ty ex;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03002997 expr_ty t;
2998 void *tc;
2999 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003000 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003001 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003002 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003003 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003004 (t = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003005 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003006 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003007 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003008 (ex = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003009 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003010 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003011 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003012 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07003013 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003014 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003015 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003016 (el = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003017 )
3018 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003019 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3020 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003021 return NULL;
3022 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003023 int _end_lineno = _token->end_lineno;
3024 UNUSED(_end_lineno); // Only used by EXTRA macro
3025 int _end_col_offset = _token->end_col_offset;
3026 UNUSED(_end_col_offset); // Only used by EXTRA macro
3027 _res = CHECK_VERSION ( 5 , "Async for loops are" , _Py_AsyncFor ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
3028 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003029 p->error_indicator = 1;
3030 return NULL;
3031 }
3032 goto done;
3033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003034 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003035 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003036 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003037 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003038 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003039}
3040
3041// with_stmt:
Pablo Galindo99db2a12020-05-06 22:54:34 +01003042// | 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003043// | 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindo99db2a12020-05-06 22:54:34 +01003044// | ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003045// | ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003046static stmt_ty
3047with_stmt_rule(Parser *p)
3048{
3049 if (p->error_indicator) {
3050 return NULL;
3051 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003052 stmt_ty _res = NULL;
3053 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003054 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3055 p->error_indicator = 1;
3056 return NULL;
3057 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003058 int _start_lineno = p->tokens[_mark]->lineno;
3059 UNUSED(_start_lineno); // Only used by EXTRA macro
3060 int _start_col_offset = p->tokens[_mark]->col_offset;
3061 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindo99db2a12020-05-06 22:54:34 +01003062 { // 'with' '(' ','.with_item+ ','? ')' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003063 Token * _keyword;
3064 Token * _literal;
3065 Token * _literal_1;
3066 Token * _literal_2;
3067 void *_opt_var;
3068 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003069 asdl_seq * a;
3070 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003071 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003072 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003073 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003074 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003075 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003076 (a = _gather_38_rule(p)) // ','.with_item+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003077 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003078 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindo99db2a12020-05-06 22:54:34 +01003079 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003080 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003081 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003082 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003083 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003084 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003085 )
3086 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003087 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3088 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003089 return NULL;
3090 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003091 int _end_lineno = _token->end_lineno;
3092 UNUSED(_end_lineno); // Only used by EXTRA macro
3093 int _end_col_offset = _token->end_col_offset;
3094 UNUSED(_end_col_offset); // Only used by EXTRA macro
3095 _res = _Py_With ( a , b , NULL , EXTRA );
3096 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003097 p->error_indicator = 1;
3098 return NULL;
3099 }
3100 goto done;
3101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003102 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003103 }
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003104 { // 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003105 Token * _keyword;
3106 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003107 asdl_seq * a;
3108 asdl_seq* b;
Guido van Rossumc001c092020-04-30 12:12:19 -07003109 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003110 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003111 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003112 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003113 (a = _gather_40_rule(p)) // ','.with_item+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003114 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003115 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003116 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003117 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07003118 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003119 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003120 )
3121 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003122 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3123 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003124 return NULL;
3125 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003126 int _end_lineno = _token->end_lineno;
3127 UNUSED(_end_lineno); // Only used by EXTRA macro
3128 int _end_col_offset = _token->end_col_offset;
3129 UNUSED(_end_col_offset); // Only used by EXTRA macro
3130 _res = _Py_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
3131 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003132 p->error_indicator = 1;
3133 return NULL;
3134 }
3135 goto done;
3136 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003137 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003138 }
Pablo Galindo99db2a12020-05-06 22:54:34 +01003139 { // ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003140 Token * _keyword;
3141 Token * _literal;
3142 Token * _literal_1;
3143 Token * _literal_2;
3144 void *_opt_var;
3145 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003146 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003147 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003148 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003149 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003150 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003151 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003152 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003153 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003154 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003155 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003156 (a = _gather_42_rule(p)) // ','.with_item+
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003157 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003158 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindo99db2a12020-05-06 22:54:34 +01003159 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003160 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003161 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003162 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003163 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003164 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003165 )
3166 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003167 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3168 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003169 return NULL;
3170 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003171 int _end_lineno = _token->end_lineno;
3172 UNUSED(_end_lineno); // Only used by EXTRA macro
3173 int _end_col_offset = _token->end_col_offset;
3174 UNUSED(_end_col_offset); // Only used by EXTRA macro
3175 _res = CHECK_VERSION ( 5 , "Async with statements are" , _Py_AsyncWith ( a , b , NULL , EXTRA ) );
3176 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003177 p->error_indicator = 1;
3178 return NULL;
3179 }
3180 goto done;
3181 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003182 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003183 }
3184 { // ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003185 Token * _keyword;
3186 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003187 asdl_seq * a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003188 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003189 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003190 void *tc;
3191 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003192 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003193 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003194 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003195 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003196 (a = _gather_44_rule(p)) // ','.with_item+
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003197 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003198 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003199 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003200 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003201 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003202 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003203 )
3204 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003205 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3206 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003207 return NULL;
3208 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003209 int _end_lineno = _token->end_lineno;
3210 UNUSED(_end_lineno); // Only used by EXTRA macro
3211 int _end_col_offset = _token->end_col_offset;
3212 UNUSED(_end_col_offset); // Only used by EXTRA macro
3213 _res = CHECK_VERSION ( 5 , "Async with statements are" , _Py_AsyncWith ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
3214 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003215 p->error_indicator = 1;
3216 return NULL;
3217 }
3218 goto done;
3219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003220 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003221 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003222 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003223 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003224 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003225}
3226
3227// with_item: expression ['as' target]
3228static withitem_ty
3229with_item_rule(Parser *p)
3230{
3231 if (p->error_indicator) {
3232 return NULL;
3233 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003234 withitem_ty _res = NULL;
3235 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003236 { // expression ['as' target]
3237 expr_ty e;
3238 void *o;
3239 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003240 (e = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003241 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003242 (o = _tmp_46_rule(p), 1) // ['as' target]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003243 )
3244 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003245 _res = _Py_withitem ( e , o , p -> arena );
3246 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003247 p->error_indicator = 1;
3248 return NULL;
3249 }
3250 goto done;
3251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003252 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003254 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003255 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003256 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003257}
3258
3259// try_stmt:
3260// | 'try' ':' block finally_block
3261// | 'try' ':' block except_block+ else_block? finally_block?
3262static stmt_ty
3263try_stmt_rule(Parser *p)
3264{
3265 if (p->error_indicator) {
3266 return NULL;
3267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003268 stmt_ty _res = NULL;
3269 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003270 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3271 p->error_indicator = 1;
3272 return NULL;
3273 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003274 int _start_lineno = p->tokens[_mark]->lineno;
3275 UNUSED(_start_lineno); // Only used by EXTRA macro
3276 int _start_col_offset = p->tokens[_mark]->col_offset;
3277 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003278 { // 'try' ':' block finally_block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003279 Token * _keyword;
3280 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003281 asdl_seq* b;
3282 asdl_seq* f;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003283 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003284 (_keyword = _PyPegen_expect_token(p, 511)) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003285 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003286 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003287 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003288 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003289 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003290 (f = finally_block_rule(p)) // finally_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003291 )
3292 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003293 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3294 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003295 return NULL;
3296 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003297 int _end_lineno = _token->end_lineno;
3298 UNUSED(_end_lineno); // Only used by EXTRA macro
3299 int _end_col_offset = _token->end_col_offset;
3300 UNUSED(_end_col_offset); // Only used by EXTRA macro
3301 _res = _Py_Try ( b , NULL , NULL , f , EXTRA );
3302 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003303 p->error_indicator = 1;
3304 return NULL;
3305 }
3306 goto done;
3307 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003308 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003309 }
3310 { // 'try' ':' block except_block+ else_block? finally_block?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003311 Token * _keyword;
3312 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003313 asdl_seq* b;
3314 void *el;
3315 asdl_seq * ex;
3316 void *f;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003317 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003318 (_keyword = _PyPegen_expect_token(p, 511)) // token='try'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003319 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003320 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003321 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003322 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003323 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003324 (ex = _loop1_47_rule(p)) // except_block+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003325 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003326 (el = else_block_rule(p), 1) // else_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003327 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003328 (f = finally_block_rule(p), 1) // finally_block?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003329 )
3330 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003331 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3332 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003333 return NULL;
3334 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003335 int _end_lineno = _token->end_lineno;
3336 UNUSED(_end_lineno); // Only used by EXTRA macro
3337 int _end_col_offset = _token->end_col_offset;
3338 UNUSED(_end_col_offset); // Only used by EXTRA macro
3339 _res = _Py_Try ( b , ex , el , f , EXTRA );
3340 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003341 p->error_indicator = 1;
3342 return NULL;
3343 }
3344 goto done;
3345 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003346 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003347 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003348 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003349 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003350 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003351}
3352
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03003353// except_block: 'except' expression ['as' NAME] ':' block | 'except' ':' block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003354static excepthandler_ty
3355except_block_rule(Parser *p)
3356{
3357 if (p->error_indicator) {
3358 return NULL;
3359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003360 excepthandler_ty _res = NULL;
3361 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003362 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3363 p->error_indicator = 1;
3364 return NULL;
3365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003366 int _start_lineno = p->tokens[_mark]->lineno;
3367 UNUSED(_start_lineno); // Only used by EXTRA macro
3368 int _start_col_offset = p->tokens[_mark]->col_offset;
3369 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03003370 { // 'except' expression ['as' NAME] ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003371 Token * _keyword;
3372 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003373 asdl_seq* b;
3374 expr_ty e;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003375 void *t;
3376 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003377 (_keyword = _PyPegen_expect_token(p, 520)) // token='except'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003378 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003379 (e = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003380 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03003381 (t = _tmp_48_rule(p), 1) // ['as' NAME]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003382 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003383 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003384 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003385 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003386 )
3387 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003388 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3389 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003390 return NULL;
3391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003392 int _end_lineno = _token->end_lineno;
3393 UNUSED(_end_lineno); // Only used by EXTRA macro
3394 int _end_col_offset = _token->end_col_offset;
3395 UNUSED(_end_col_offset); // Only used by EXTRA macro
3396 _res = _Py_ExceptHandler ( e , ( t ) ? ( ( expr_ty ) t ) -> v . Name . id : NULL , b , EXTRA );
3397 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003398 p->error_indicator = 1;
3399 return NULL;
3400 }
3401 goto done;
3402 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003403 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003404 }
3405 { // 'except' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003406 Token * _keyword;
3407 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003408 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003409 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003410 (_keyword = _PyPegen_expect_token(p, 520)) // token='except'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003411 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003412 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003413 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003414 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003415 )
3416 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003417 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3418 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003419 return NULL;
3420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003421 int _end_lineno = _token->end_lineno;
3422 UNUSED(_end_lineno); // Only used by EXTRA macro
3423 int _end_col_offset = _token->end_col_offset;
3424 UNUSED(_end_col_offset); // Only used by EXTRA macro
3425 _res = _Py_ExceptHandler ( NULL , NULL , b , EXTRA );
3426 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003427 p->error_indicator = 1;
3428 return NULL;
3429 }
3430 goto done;
3431 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003432 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003433 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003434 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003435 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003436 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003437}
3438
3439// finally_block: 'finally' ':' block
3440static asdl_seq*
3441finally_block_rule(Parser *p)
3442{
3443 if (p->error_indicator) {
3444 return NULL;
3445 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003446 asdl_seq* _res = NULL;
3447 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003448 { // 'finally' ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003449 Token * _keyword;
3450 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003451 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003452 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003453 (_keyword = _PyPegen_expect_token(p, 521)) // token='finally'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003454 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003455 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003456 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003457 (a = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003458 )
3459 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003460 _res = a;
3461 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003462 p->error_indicator = 1;
3463 return NULL;
3464 }
3465 goto done;
3466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003467 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003469 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003470 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003471 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003472}
3473
3474// return_stmt: 'return' star_expressions?
3475static stmt_ty
3476return_stmt_rule(Parser *p)
3477{
3478 if (p->error_indicator) {
3479 return NULL;
3480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003481 stmt_ty _res = NULL;
3482 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003483 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3484 p->error_indicator = 1;
3485 return NULL;
3486 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003487 int _start_lineno = p->tokens[_mark]->lineno;
3488 UNUSED(_start_lineno); // Only used by EXTRA macro
3489 int _start_col_offset = p->tokens[_mark]->col_offset;
3490 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003491 { // 'return' star_expressions?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003492 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003493 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003494 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003495 (_keyword = _PyPegen_expect_token(p, 500)) // token='return'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003496 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003497 (a = star_expressions_rule(p), 1) // star_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003498 )
3499 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003500 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3501 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003502 return NULL;
3503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003504 int _end_lineno = _token->end_lineno;
3505 UNUSED(_end_lineno); // Only used by EXTRA macro
3506 int _end_col_offset = _token->end_col_offset;
3507 UNUSED(_end_col_offset); // Only used by EXTRA macro
3508 _res = _Py_Return ( a , EXTRA );
3509 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003510 p->error_indicator = 1;
3511 return NULL;
3512 }
3513 goto done;
3514 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003515 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003516 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003517 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003518 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003519 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003520}
3521
3522// raise_stmt: 'raise' expression ['from' expression] | 'raise'
3523static stmt_ty
3524raise_stmt_rule(Parser *p)
3525{
3526 if (p->error_indicator) {
3527 return NULL;
3528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003529 stmt_ty _res = NULL;
3530 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003531 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3532 p->error_indicator = 1;
3533 return NULL;
3534 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003535 int _start_lineno = p->tokens[_mark]->lineno;
3536 UNUSED(_start_lineno); // Only used by EXTRA macro
3537 int _start_col_offset = p->tokens[_mark]->col_offset;
3538 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003539 { // 'raise' expression ['from' expression]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003540 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003541 expr_ty a;
3542 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003543 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003544 (_keyword = _PyPegen_expect_token(p, 501)) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003545 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003546 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003547 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003548 (b = _tmp_49_rule(p), 1) // ['from' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003549 )
3550 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003551 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3552 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003553 return NULL;
3554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003555 int _end_lineno = _token->end_lineno;
3556 UNUSED(_end_lineno); // Only used by EXTRA macro
3557 int _end_col_offset = _token->end_col_offset;
3558 UNUSED(_end_col_offset); // Only used by EXTRA macro
3559 _res = _Py_Raise ( a , b , EXTRA );
3560 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003561 p->error_indicator = 1;
3562 return NULL;
3563 }
3564 goto done;
3565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003566 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003567 }
3568 { // 'raise'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003569 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003570 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003571 (_keyword = _PyPegen_expect_token(p, 501)) // token='raise'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003572 )
3573 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003574 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3575 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003576 return NULL;
3577 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003578 int _end_lineno = _token->end_lineno;
3579 UNUSED(_end_lineno); // Only used by EXTRA macro
3580 int _end_col_offset = _token->end_col_offset;
3581 UNUSED(_end_col_offset); // Only used by EXTRA macro
3582 _res = _Py_Raise ( NULL , NULL , EXTRA );
3583 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003584 p->error_indicator = 1;
3585 return NULL;
3586 }
3587 goto done;
3588 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003589 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003591 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003592 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003593 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003594}
3595
3596// function_def: decorators function_def_raw | function_def_raw
3597static stmt_ty
3598function_def_rule(Parser *p)
3599{
3600 if (p->error_indicator) {
3601 return NULL;
3602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003603 stmt_ty _res = NULL;
3604 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003605 { // decorators function_def_raw
3606 asdl_seq* d;
3607 stmt_ty f;
3608 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003609 (d = decorators_rule(p)) // decorators
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003610 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003611 (f = function_def_raw_rule(p)) // function_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003612 )
3613 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003614 _res = _PyPegen_function_def_decorators ( p , d , f );
3615 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003616 p->error_indicator = 1;
3617 return NULL;
3618 }
3619 goto done;
3620 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003621 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003622 }
3623 { // function_def_raw
3624 stmt_ty function_def_raw_var;
3625 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003626 (function_def_raw_var = function_def_raw_rule(p)) // function_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003627 )
3628 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003629 _res = function_def_raw_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003630 goto done;
3631 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003632 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003633 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003634 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003635 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003636 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003637}
3638
Guido van Rossumc001c092020-04-30 12:12:19 -07003639// function_def_raw:
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003640// | 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
3641// | ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003642static stmt_ty
3643function_def_raw_rule(Parser *p)
3644{
3645 if (p->error_indicator) {
3646 return NULL;
3647 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003648 stmt_ty _res = NULL;
3649 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003650 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3651 p->error_indicator = 1;
3652 return NULL;
3653 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003654 int _start_lineno = p->tokens[_mark]->lineno;
3655 UNUSED(_start_lineno); // Only used by EXTRA macro
3656 int _start_col_offset = p->tokens[_mark]->col_offset;
3657 UNUSED(_start_col_offset); // Only used by EXTRA macro
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003658 { // 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003659 Token * _keyword;
3660 Token * _literal;
3661 Token * _literal_1;
3662 Token * _literal_2;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003663 void *a;
3664 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003665 expr_ty n;
3666 void *params;
Guido van Rossumc001c092020-04-30 12:12:19 -07003667 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003668 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003669 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003670 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003671 (n = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003672 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003673 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003674 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003675 (params = params_rule(p), 1) // params?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003676 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003677 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003678 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003679 (a = _tmp_50_rule(p), 1) // ['->' expression]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003680 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003681 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003682 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003683 (tc = func_type_comment_rule(p), 1) // func_type_comment?
Guido van Rossumc001c092020-04-30 12:12:19 -07003684 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003685 (b = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003686 )
3687 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003688 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3689 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003690 return NULL;
3691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003692 int _end_lineno = _token->end_lineno;
3693 UNUSED(_end_lineno); // Only used by EXTRA macro
3694 int _end_col_offset = _token->end_col_offset;
3695 UNUSED(_end_col_offset); // Only used by EXTRA macro
3696 _res = _Py_FunctionDef ( n -> v . Name . id , ( params ) ? params : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
3697 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003698 p->error_indicator = 1;
3699 return NULL;
3700 }
3701 goto done;
3702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003703 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003704 }
3705 { // ASYNC 'def' NAME '(' params? ')' ['->' expression] ':' func_type_comment? block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003706 Token * _keyword;
3707 Token * _literal;
3708 Token * _literal_1;
3709 Token * _literal_2;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003710 void *a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01003711 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003712 asdl_seq* b;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003713 expr_ty n;
3714 void *params;
3715 void *tc;
3716 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003717 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003718 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003719 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003720 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003721 (n = _PyPegen_name_token(p)) // NAME
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003722 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003723 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003724 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003725 (params = params_rule(p), 1) // params?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003726 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003727 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003728 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003729 (a = _tmp_51_rule(p), 1) // ['->' expression]
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003730 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003731 (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003732 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003733 (tc = func_type_comment_rule(p), 1) // func_type_comment?
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003734 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003735 (b = block_rule(p)) // block
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003736 )
3737 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003738 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3739 if (_token == NULL) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003740 return NULL;
3741 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003742 int _end_lineno = _token->end_lineno;
3743 UNUSED(_end_lineno); // Only used by EXTRA macro
3744 int _end_col_offset = _token->end_col_offset;
3745 UNUSED(_end_col_offset); // Only used by EXTRA macro
3746 _res = CHECK_VERSION ( 5 , "Async functions are" , _Py_AsyncFunctionDef ( n -> v . Name . id , ( params ) ? params : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
3747 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003748 p->error_indicator = 1;
3749 return NULL;
3750 }
3751 goto done;
3752 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003753 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003754 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003755 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003756 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003757 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003758}
3759
Guido van Rossumc001c092020-04-30 12:12:19 -07003760// func_type_comment:
3761// | NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
3762// | invalid_double_type_comments
3763// | TYPE_COMMENT
Pablo Galindod9552412020-05-01 16:32:09 +01003764static Token*
Guido van Rossumc001c092020-04-30 12:12:19 -07003765func_type_comment_rule(Parser *p)
3766{
3767 if (p->error_indicator) {
3768 return NULL;
3769 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003770 Token* _res = NULL;
3771 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003772 { // NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
Pablo Galindob796b3f2020-05-01 12:32:26 +01003773 Token * newline_var;
3774 Token * t;
Guido van Rossumc001c092020-04-30 12:12:19 -07003775 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003776 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -07003777 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003778 (t = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -07003779 &&
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03003780 _PyPegen_lookahead(1, _tmp_52_rule, p)
Guido van Rossumc001c092020-04-30 12:12:19 -07003781 )
3782 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003783 _res = t;
3784 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07003785 p->error_indicator = 1;
3786 return NULL;
3787 }
3788 goto done;
3789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003790 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003791 }
3792 { // invalid_double_type_comments
3793 void *invalid_double_type_comments_var;
3794 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003795 (invalid_double_type_comments_var = invalid_double_type_comments_rule(p)) // invalid_double_type_comments
Guido van Rossumc001c092020-04-30 12:12:19 -07003796 )
3797 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003798 _res = invalid_double_type_comments_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07003799 goto done;
3800 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003801 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003802 }
3803 { // TYPE_COMMENT
Pablo Galindob796b3f2020-05-01 12:32:26 +01003804 Token * type_comment_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07003805 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003806 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -07003807 )
3808 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003809 _res = type_comment_var;
Guido van Rossumc001c092020-04-30 12:12:19 -07003810 goto done;
3811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003812 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003813 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003814 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07003815 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003816 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07003817}
3818
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003819// params: invalid_parameters | parameters
3820static arguments_ty
3821params_rule(Parser *p)
3822{
3823 if (p->error_indicator) {
3824 return NULL;
3825 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003826 arguments_ty _res = NULL;
3827 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003828 { // invalid_parameters
3829 void *invalid_parameters_var;
3830 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003831 (invalid_parameters_var = invalid_parameters_rule(p)) // invalid_parameters
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003832 )
3833 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003834 _res = invalid_parameters_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003835 goto done;
3836 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003837 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003838 }
3839 { // parameters
3840 arguments_ty parameters_var;
3841 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003842 (parameters_var = parameters_rule(p)) // parameters
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003843 )
3844 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003845 _res = parameters_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003846 goto done;
3847 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003848 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003849 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003850 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003851 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003852 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003853}
3854
3855// parameters:
Guido van Rossumc001c092020-04-30 12:12:19 -07003856// | slash_no_default param_no_default* param_with_default* star_etc?
3857// | slash_with_default param_with_default* star_etc?
3858// | param_no_default+ param_with_default* star_etc?
3859// | param_with_default+ star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003860// | star_etc
3861static arguments_ty
3862parameters_rule(Parser *p)
3863{
3864 if (p->error_indicator) {
3865 return NULL;
3866 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003867 arguments_ty _res = NULL;
3868 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003869 { // slash_no_default param_no_default* param_with_default* star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003870 asdl_seq* a;
Guido van Rossumc001c092020-04-30 12:12:19 -07003871 asdl_seq * b;
3872 asdl_seq * c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003873 void *d;
3874 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003875 (a = slash_no_default_rule(p)) // slash_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003876 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003877 (b = _loop0_53_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003878 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003879 (c = _loop0_54_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003880 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003881 (d = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003882 )
3883 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003884 _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
3885 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003886 p->error_indicator = 1;
3887 return NULL;
3888 }
3889 goto done;
3890 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003891 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003892 }
Guido van Rossumc001c092020-04-30 12:12:19 -07003893 { // slash_with_default param_with_default* star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003894 SlashWithDefault* a;
Guido van Rossumc001c092020-04-30 12:12:19 -07003895 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003896 void *c;
3897 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003898 (a = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003899 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003900 (b = _loop0_55_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003901 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003902 (c = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003903 )
3904 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003905 _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
3906 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003907 p->error_indicator = 1;
3908 return NULL;
3909 }
3910 goto done;
3911 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003912 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003913 }
Guido van Rossumc001c092020-04-30 12:12:19 -07003914 { // param_no_default+ param_with_default* star_etc?
3915 asdl_seq * a;
3916 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003917 void *c;
3918 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003919 (a = _loop1_56_rule(p)) // param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003920 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003921 (b = _loop0_57_rule(p)) // param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003922 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003923 (c = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003924 )
3925 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003926 _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
3927 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003928 p->error_indicator = 1;
3929 return NULL;
3930 }
3931 goto done;
3932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003933 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003934 }
Guido van Rossumc001c092020-04-30 12:12:19 -07003935 { // param_with_default+ star_etc?
3936 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003937 void *b;
3938 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003939 (a = _loop1_58_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003940 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01003941 (b = star_etc_rule(p), 1) // star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003942 )
3943 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003944 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
3945 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003946 p->error_indicator = 1;
3947 return NULL;
3948 }
3949 goto done;
3950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003951 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003952 }
3953 { // star_etc
3954 StarEtc* a;
3955 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003956 (a = star_etc_rule(p)) // star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003957 )
3958 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003959 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
3960 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003961 p->error_indicator = 1;
3962 return NULL;
3963 }
3964 goto done;
3965 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003966 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003967 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003968 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003969 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003970 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003971}
3972
Guido van Rossumc001c092020-04-30 12:12:19 -07003973// slash_no_default: param_no_default+ '/' ',' | param_no_default+ '/' &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003974static asdl_seq*
Guido van Rossumc001c092020-04-30 12:12:19 -07003975slash_no_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003976{
3977 if (p->error_indicator) {
3978 return NULL;
3979 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003980 asdl_seq* _res = NULL;
3981 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07003982 { // param_no_default+ '/' ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003983 Token * _literal;
3984 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07003985 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003986 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01003987 (a = _loop1_59_rule(p)) // param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003988 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003989 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01003990 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003991 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07003992 )
3993 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01003994 _res = a;
3995 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07003996 p->error_indicator = 1;
3997 return NULL;
3998 }
3999 goto done;
4000 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004001 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004002 }
4003 { // param_no_default+ '/' &')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004004 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004005 asdl_seq * a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004006 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004007 (a = _loop1_60_rule(p)) // param_no_default+
Guido van Rossumc001c092020-04-30 12:12:19 -07004008 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004009 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossumc001c092020-04-30 12:12:19 -07004010 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004011 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004012 )
4013 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004014 _res = a;
4015 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004016 p->error_indicator = 1;
4017 return NULL;
4018 }
4019 goto done;
4020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004021 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004022 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004023 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004024 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004025 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004026}
4027
Guido van Rossumc001c092020-04-30 12:12:19 -07004028// slash_with_default:
4029// | param_no_default* param_with_default+ '/' ','
4030// | param_no_default* param_with_default+ '/' &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004031static SlashWithDefault*
4032slash_with_default_rule(Parser *p)
4033{
4034 if (p->error_indicator) {
4035 return NULL;
4036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004037 SlashWithDefault* _res = NULL;
4038 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004039 { // param_no_default* param_with_default+ '/' ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004040 Token * _literal;
4041 Token * _literal_1;
Guido van Rossumc001c092020-04-30 12:12:19 -07004042 asdl_seq * a;
4043 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004044 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004045 (a = _loop0_61_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004046 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004047 (b = _loop1_62_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004048 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004049 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004050 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004051 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004052 )
4053 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004054 _res = _PyPegen_slash_with_default ( p , a , b );
4055 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004056 p->error_indicator = 1;
4057 return NULL;
4058 }
4059 goto done;
4060 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004061 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004062 }
4063 { // param_no_default* param_with_default+ '/' &')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004064 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004065 asdl_seq * a;
4066 asdl_seq * b;
Guido van Rossumc001c092020-04-30 12:12:19 -07004067 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004068 (a = _loop0_63_rule(p)) // param_no_default*
Guido van Rossumc001c092020-04-30 12:12:19 -07004069 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004070 (b = _loop1_64_rule(p)) // param_with_default+
Guido van Rossumc001c092020-04-30 12:12:19 -07004071 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004072 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossumc001c092020-04-30 12:12:19 -07004073 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004074 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004075 )
4076 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004077 _res = _PyPegen_slash_with_default ( p , a , b );
4078 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004079 p->error_indicator = 1;
4080 return NULL;
4081 }
4082 goto done;
4083 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004084 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004085 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004086 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004087 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004088 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004089}
4090
4091// star_etc:
Guido van Rossumc001c092020-04-30 12:12:19 -07004092// | '*' param_no_default param_maybe_default* kwds?
4093// | '*' ',' param_maybe_default+ kwds?
4094// | kwds
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004095// | invalid_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004096static StarEtc*
4097star_etc_rule(Parser *p)
4098{
4099 if (p->error_indicator) {
4100 return NULL;
4101 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004102 StarEtc* _res = NULL;
4103 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004104 { // '*' param_no_default param_maybe_default* kwds?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004105 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004106 arg_ty a;
4107 asdl_seq * b;
4108 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004109 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004110 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004111 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004112 (a = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004113 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004114 (b = _loop0_65_rule(p)) // param_maybe_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004115 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004116 (c = kwds_rule(p), 1) // kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004117 )
4118 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004119 _res = _PyPegen_star_etc ( p , a , b , c );
4120 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004121 p->error_indicator = 1;
4122 return NULL;
4123 }
4124 goto done;
4125 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004126 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004127 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004128 { // '*' ',' param_maybe_default+ kwds?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004129 Token * _literal;
4130 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004131 asdl_seq * b;
4132 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004133 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004134 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004135 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004136 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004137 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004138 (b = _loop1_66_rule(p)) // param_maybe_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004139 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004140 (c = kwds_rule(p), 1) // kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004141 )
4142 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004143 _res = _PyPegen_star_etc ( p , NULL , b , c );
4144 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004145 p->error_indicator = 1;
4146 return NULL;
4147 }
4148 goto done;
4149 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004150 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004151 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004152 { // kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004153 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004154 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004155 (a = kwds_rule(p)) // kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004156 )
4157 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004158 _res = _PyPegen_star_etc ( p , NULL , NULL , a );
4159 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004160 p->error_indicator = 1;
4161 return NULL;
4162 }
4163 goto done;
4164 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004165 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004166 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004167 { // invalid_star_etc
4168 void *invalid_star_etc_var;
4169 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004170 (invalid_star_etc_var = invalid_star_etc_rule(p)) // invalid_star_etc
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004171 )
4172 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004173 _res = invalid_star_etc_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004174 goto done;
4175 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004176 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03004177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004178 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004179 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004180 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004181}
4182
Guido van Rossumc001c092020-04-30 12:12:19 -07004183// kwds: '**' param_no_default
4184static arg_ty
4185kwds_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004186{
4187 if (p->error_indicator) {
4188 return NULL;
4189 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004190 arg_ty _res = NULL;
4191 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004192 { // '**' param_no_default
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004193 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004194 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004195 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004196 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossumc001c092020-04-30 12:12:19 -07004197 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004198 (a = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -07004199 )
4200 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004201 _res = a;
4202 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004203 p->error_indicator = 1;
4204 return NULL;
4205 }
4206 goto done;
4207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004208 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004210 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -07004211 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004212 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -07004213}
4214
4215// param_no_default: param ',' TYPE_COMMENT? | param TYPE_COMMENT? &')'
4216static arg_ty
4217param_no_default_rule(Parser *p)
4218{
4219 if (p->error_indicator) {
4220 return NULL;
4221 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004222 arg_ty _res = NULL;
4223 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004224 { // param ',' TYPE_COMMENT?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004225 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004226 arg_ty a;
Guido van Rossumc001c092020-04-30 12:12:19 -07004227 void *tc;
4228 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004229 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004230 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004231 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004232 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004233 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004234 )
4235 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004236 _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
4237 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004238 p->error_indicator = 1;
4239 return NULL;
4240 }
4241 goto done;
4242 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004243 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004244 }
Guido van Rossumc001c092020-04-30 12:12:19 -07004245 { // param TYPE_COMMENT? &')'
4246 arg_ty a;
4247 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004248 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004249 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004250 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004251 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004252 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004253 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004254 )
4255 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004256 _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
4257 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004258 p->error_indicator = 1;
4259 return NULL;
4260 }
4261 goto done;
4262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004263 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004264 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004265 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004266 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004267 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004268}
4269
Guido van Rossumc001c092020-04-30 12:12:19 -07004270// param_with_default: param default ',' TYPE_COMMENT? | param default TYPE_COMMENT? &')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004271static NameDefaultPair*
Guido van Rossumc001c092020-04-30 12:12:19 -07004272param_with_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004273{
4274 if (p->error_indicator) {
4275 return NULL;
4276 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004277 NameDefaultPair* _res = NULL;
4278 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004279 { // param default ',' TYPE_COMMENT?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004280 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004281 arg_ty a;
4282 expr_ty c;
Guido van Rossumc001c092020-04-30 12:12:19 -07004283 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004284 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004285 (a = param_rule(p)) // param
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004286 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004287 (c = default_rule(p)) // default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004288 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004289 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004290 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004291 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004292 )
4293 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004294 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4295 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004296 p->error_indicator = 1;
4297 return NULL;
4298 }
4299 goto done;
4300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004301 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004302 }
4303 { // param default TYPE_COMMENT? &')'
4304 arg_ty a;
4305 expr_ty c;
4306 void *tc;
4307 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004308 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004309 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004310 (c = default_rule(p)) // default
Guido van Rossumc001c092020-04-30 12:12:19 -07004311 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004312 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004313 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004314 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -07004315 )
4316 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004317 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4318 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004319 p->error_indicator = 1;
4320 return NULL;
4321 }
4322 goto done;
4323 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004324 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004325 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004326 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004327 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004328 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004329}
4330
Guido van Rossumc001c092020-04-30 12:12:19 -07004331// param_maybe_default:
4332// | param default? ',' TYPE_COMMENT?
4333// | param default? TYPE_COMMENT? &')'
4334static NameDefaultPair*
4335param_maybe_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004336{
4337 if (p->error_indicator) {
4338 return NULL;
4339 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004340 NameDefaultPair* _res = NULL;
4341 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004342 { // param default? ',' TYPE_COMMENT?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004343 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004344 arg_ty a;
4345 void *c;
Guido van Rossumc001c092020-04-30 12:12:19 -07004346 void *tc;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004347 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004348 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004349 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004350 (c = default_rule(p), 1) // default?
Guido van Rossumc001c092020-04-30 12:12:19 -07004351 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004352 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -07004353 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004354 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004355 )
4356 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004357 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4358 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004359 p->error_indicator = 1;
4360 return NULL;
4361 }
4362 goto done;
4363 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004364 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004365 }
4366 { // param default? TYPE_COMMENT? &')'
4367 arg_ty a;
4368 void *c;
4369 void *tc;
4370 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004371 (a = param_rule(p)) // param
Guido van Rossumc001c092020-04-30 12:12:19 -07004372 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004373 (c = default_rule(p), 1) // default?
Guido van Rossumc001c092020-04-30 12:12:19 -07004374 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004375 (tc = _PyPegen_expect_token(p, TYPE_COMMENT), 1) // TYPE_COMMENT?
Guido van Rossumc001c092020-04-30 12:12:19 -07004376 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004377 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Guido van Rossumc001c092020-04-30 12:12:19 -07004378 )
4379 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004380 _res = _PyPegen_name_default_pair ( p , a , c , tc );
4381 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004382 p->error_indicator = 1;
4383 return NULL;
4384 }
4385 goto done;
4386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004387 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004388 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004389 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004390 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004391 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004392}
4393
Guido van Rossumc001c092020-04-30 12:12:19 -07004394// param: NAME annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004395static arg_ty
Guido van Rossumc001c092020-04-30 12:12:19 -07004396param_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004397{
4398 if (p->error_indicator) {
4399 return NULL;
4400 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004401 arg_ty _res = NULL;
4402 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004403 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4404 p->error_indicator = 1;
4405 return NULL;
4406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004407 int _start_lineno = p->tokens[_mark]->lineno;
4408 UNUSED(_start_lineno); // Only used by EXTRA macro
4409 int _start_col_offset = p->tokens[_mark]->col_offset;
4410 UNUSED(_start_col_offset); // Only used by EXTRA macro
Guido van Rossumc001c092020-04-30 12:12:19 -07004411 { // NAME annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004412 expr_ty a;
4413 void *b;
4414 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004415 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004416 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004417 (b = annotation_rule(p), 1) // annotation?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004418 )
4419 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004420 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4421 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004422 return NULL;
4423 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004424 int _end_lineno = _token->end_lineno;
4425 UNUSED(_end_lineno); // Only used by EXTRA macro
4426 int _end_col_offset = _token->end_col_offset;
4427 UNUSED(_end_col_offset); // Only used by EXTRA macro
4428 _res = _Py_arg ( a -> v . Name . id , b , NULL , EXTRA );
4429 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004430 p->error_indicator = 1;
4431 return NULL;
4432 }
4433 goto done;
4434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004435 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004436 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004437 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004438 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004439 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004440}
4441
Guido van Rossumc001c092020-04-30 12:12:19 -07004442// annotation: ':' expression
4443static expr_ty
4444annotation_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004445{
4446 if (p->error_indicator) {
4447 return NULL;
4448 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004449 expr_ty _res = NULL;
4450 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004451 { // ':' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004452 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004453 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004454 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004455 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004456 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004457 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004458 )
4459 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004460 _res = a;
4461 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004462 p->error_indicator = 1;
4463 return NULL;
4464 }
4465 goto done;
4466 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004467 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004469 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004470 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004471 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004472}
4473
Guido van Rossumc001c092020-04-30 12:12:19 -07004474// default: '=' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004475static expr_ty
Guido van Rossumc001c092020-04-30 12:12:19 -07004476default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004477{
4478 if (p->error_indicator) {
4479 return NULL;
4480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004481 expr_ty _res = NULL;
4482 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -07004483 { // '=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004484 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -07004485 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004486 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004487 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Guido van Rossumc001c092020-04-30 12:12:19 -07004488 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004489 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004490 )
4491 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004492 _res = a;
4493 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -07004494 p->error_indicator = 1;
4495 return NULL;
4496 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004497 goto done;
4498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004499 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004501 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004502 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004503 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004504}
4505
4506// decorators: (('@' named_expression NEWLINE))+
4507static asdl_seq*
4508decorators_rule(Parser *p)
4509{
4510 if (p->error_indicator) {
4511 return NULL;
4512 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004513 asdl_seq* _res = NULL;
4514 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004515 { // (('@' named_expression NEWLINE))+
4516 asdl_seq * a;
4517 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004518 (a = _loop1_67_rule(p)) // (('@' named_expression NEWLINE))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004519 )
4520 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004521 _res = a;
4522 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004523 p->error_indicator = 1;
4524 return NULL;
4525 }
4526 goto done;
4527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004528 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004529 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004530 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004531 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004532 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004533}
4534
4535// class_def: decorators class_def_raw | class_def_raw
4536static stmt_ty
4537class_def_rule(Parser *p)
4538{
4539 if (p->error_indicator) {
4540 return NULL;
4541 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004542 stmt_ty _res = NULL;
4543 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004544 { // decorators class_def_raw
4545 asdl_seq* a;
4546 stmt_ty b;
4547 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004548 (a = decorators_rule(p)) // decorators
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004549 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004550 (b = class_def_raw_rule(p)) // class_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004551 )
4552 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004553 _res = _PyPegen_class_def_decorators ( p , a , b );
4554 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004555 p->error_indicator = 1;
4556 return NULL;
4557 }
4558 goto done;
4559 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004560 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004561 }
4562 { // class_def_raw
4563 stmt_ty class_def_raw_var;
4564 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004565 (class_def_raw_var = class_def_raw_rule(p)) // class_def_raw
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004566 )
4567 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004568 _res = class_def_raw_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004569 goto done;
4570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004571 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004572 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004573 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004574 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004575 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004576}
4577
4578// class_def_raw: 'class' NAME ['(' arguments? ')'] ':' block
4579static stmt_ty
4580class_def_raw_rule(Parser *p)
4581{
4582 if (p->error_indicator) {
4583 return NULL;
4584 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004585 stmt_ty _res = NULL;
4586 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004587 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4588 p->error_indicator = 1;
4589 return NULL;
4590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004591 int _start_lineno = p->tokens[_mark]->lineno;
4592 UNUSED(_start_lineno); // Only used by EXTRA macro
4593 int _start_col_offset = p->tokens[_mark]->col_offset;
4594 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004595 { // 'class' NAME ['(' arguments? ')'] ':' block
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004596 Token * _keyword;
4597 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004598 expr_ty a;
4599 void *b;
4600 asdl_seq* c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004601 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004602 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004603 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004604 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004605 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004606 (b = _tmp_68_rule(p), 1) // ['(' arguments? ')']
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004607 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004608 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004609 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004610 (c = block_rule(p)) // block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004611 )
4612 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004613 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4614 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004615 return NULL;
4616 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004617 int _end_lineno = _token->end_lineno;
4618 UNUSED(_end_lineno); // Only used by EXTRA macro
4619 int _end_col_offset = _token->end_col_offset;
4620 UNUSED(_end_col_offset); // Only used by EXTRA macro
4621 _res = _Py_ClassDef ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , c , NULL , EXTRA );
4622 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004623 p->error_indicator = 1;
4624 return NULL;
4625 }
4626 goto done;
4627 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004628 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004629 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004630 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004631 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004632 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004633}
4634
4635// block: NEWLINE INDENT statements DEDENT | simple_stmt | invalid_block
4636static asdl_seq*
4637block_rule(Parser *p)
4638{
4639 if (p->error_indicator) {
4640 return NULL;
4641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004642 asdl_seq* _res = NULL;
4643 if (_PyPegen_is_memoized(p, block_type, &_res))
4644 return _res;
4645 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004646 { // NEWLINE INDENT statements DEDENT
4647 asdl_seq* a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01004648 Token * dedent_var;
4649 Token * indent_var;
4650 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004651 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004652 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004653 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004654 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004655 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004656 (a = statements_rule(p)) // statements
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004657 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004658 (dedent_var = _PyPegen_expect_token(p, DEDENT)) // token='DEDENT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004659 )
4660 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004661 _res = a;
4662 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004663 p->error_indicator = 1;
4664 return NULL;
4665 }
4666 goto done;
4667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004668 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004669 }
4670 { // simple_stmt
4671 asdl_seq* simple_stmt_var;
4672 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004673 (simple_stmt_var = simple_stmt_rule(p)) // simple_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004674 )
4675 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004676 _res = simple_stmt_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004677 goto done;
4678 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004679 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004680 }
4681 { // invalid_block
4682 void *invalid_block_var;
4683 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004684 (invalid_block_var = invalid_block_rule(p)) // invalid_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004685 )
4686 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004687 _res = invalid_block_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004688 goto done;
4689 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004690 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004691 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004692 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004693 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004694 _PyPegen_insert_memo(p, _mark, block_type, _res);
4695 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004696}
4697
4698// expressions_list: ','.star_expression+ ','?
4699static asdl_seq*
4700expressions_list_rule(Parser *p)
4701{
4702 if (p->error_indicator) {
4703 return NULL;
4704 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004705 asdl_seq* _res = NULL;
4706 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004707 { // ','.star_expression+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004708 void *_opt_var;
4709 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004710 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004711 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004712 (a = _gather_69_rule(p)) // ','.star_expression+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004713 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004714 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004715 )
4716 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004717 _res = a;
4718 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004719 p->error_indicator = 1;
4720 return NULL;
4721 }
4722 goto done;
4723 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004724 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004725 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004726 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004727 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004728 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004729}
4730
4731// star_expressions:
4732// | star_expression ((',' star_expression))+ ','?
4733// | star_expression ','
4734// | star_expression
4735static expr_ty
4736star_expressions_rule(Parser *p)
4737{
4738 if (p->error_indicator) {
4739 return NULL;
4740 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004741 expr_ty _res = NULL;
4742 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004743 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4744 p->error_indicator = 1;
4745 return NULL;
4746 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004747 int _start_lineno = p->tokens[_mark]->lineno;
4748 UNUSED(_start_lineno); // Only used by EXTRA macro
4749 int _start_col_offset = p->tokens[_mark]->col_offset;
4750 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004751 { // star_expression ((',' star_expression))+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004752 void *_opt_var;
4753 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004754 expr_ty a;
4755 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004756 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004757 (a = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004758 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004759 (b = _loop1_71_rule(p)) // ((',' star_expression))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004760 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004761 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004762 )
4763 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004764 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4765 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004766 return NULL;
4767 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004768 int _end_lineno = _token->end_lineno;
4769 UNUSED(_end_lineno); // Only used by EXTRA macro
4770 int _end_col_offset = _token->end_col_offset;
4771 UNUSED(_end_col_offset); // Only used by EXTRA macro
4772 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
4773 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004774 p->error_indicator = 1;
4775 return NULL;
4776 }
4777 goto done;
4778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004779 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004780 }
4781 { // star_expression ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004782 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004783 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004784 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004785 (a = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004786 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004787 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004788 )
4789 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004790 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4791 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004792 return NULL;
4793 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004794 int _end_lineno = _token->end_lineno;
4795 UNUSED(_end_lineno); // Only used by EXTRA macro
4796 int _end_col_offset = _token->end_col_offset;
4797 UNUSED(_end_col_offset); // Only used by EXTRA macro
4798 _res = _Py_Tuple ( CHECK ( _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
4799 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004800 p->error_indicator = 1;
4801 return NULL;
4802 }
4803 goto done;
4804 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004805 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004806 }
4807 { // star_expression
4808 expr_ty star_expression_var;
4809 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004810 (star_expression_var = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004811 )
4812 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004813 _res = star_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004814 goto done;
4815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004816 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004818 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004819 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004820 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004821}
4822
4823// star_expression: '*' bitwise_or | expression
4824static expr_ty
4825star_expression_rule(Parser *p)
4826{
4827 if (p->error_indicator) {
4828 return NULL;
4829 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004830 expr_ty _res = NULL;
4831 if (_PyPegen_is_memoized(p, star_expression_type, &_res))
4832 return _res;
4833 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004834 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4835 p->error_indicator = 1;
4836 return NULL;
4837 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004838 int _start_lineno = p->tokens[_mark]->lineno;
4839 UNUSED(_start_lineno); // Only used by EXTRA macro
4840 int _start_col_offset = p->tokens[_mark]->col_offset;
4841 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004842 { // '*' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004843 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004844 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004845 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004846 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004847 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004848 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004849 )
4850 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004851 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4852 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004853 return NULL;
4854 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004855 int _end_lineno = _token->end_lineno;
4856 UNUSED(_end_lineno); // Only used by EXTRA macro
4857 int _end_col_offset = _token->end_col_offset;
4858 UNUSED(_end_col_offset); // Only used by EXTRA macro
4859 _res = _Py_Starred ( a , Load , EXTRA );
4860 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004861 p->error_indicator = 1;
4862 return NULL;
4863 }
4864 goto done;
4865 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004866 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004867 }
4868 { // expression
4869 expr_ty expression_var;
4870 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004871 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004872 )
4873 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004874 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004875 goto done;
4876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004877 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004879 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004880 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004881 _PyPegen_insert_memo(p, _mark, star_expression_type, _res);
4882 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004883}
4884
4885// star_named_expressions: ','.star_named_expression+ ','?
4886static asdl_seq*
4887star_named_expressions_rule(Parser *p)
4888{
4889 if (p->error_indicator) {
4890 return NULL;
4891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004892 asdl_seq* _res = NULL;
4893 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004894 { // ','.star_named_expression+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004895 void *_opt_var;
4896 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004897 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004898 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004899 (a = _gather_72_rule(p)) // ','.star_named_expression+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004900 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004901 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004902 )
4903 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004904 _res = a;
4905 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004906 p->error_indicator = 1;
4907 return NULL;
4908 }
4909 goto done;
4910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004911 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004913 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004914 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004915 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004916}
4917
4918// star_named_expression: '*' bitwise_or | named_expression
4919static expr_ty
4920star_named_expression_rule(Parser *p)
4921{
4922 if (p->error_indicator) {
4923 return NULL;
4924 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004925 expr_ty _res = NULL;
4926 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004927 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4928 p->error_indicator = 1;
4929 return NULL;
4930 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004931 int _start_lineno = p->tokens[_mark]->lineno;
4932 UNUSED(_start_lineno); // Only used by EXTRA macro
4933 int _start_col_offset = p->tokens[_mark]->col_offset;
4934 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004935 { // '*' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004936 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004937 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004938 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004939 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004940 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01004941 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004942 )
4943 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004944 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4945 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004946 return NULL;
4947 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004948 int _end_lineno = _token->end_lineno;
4949 UNUSED(_end_lineno); // Only used by EXTRA macro
4950 int _end_col_offset = _token->end_col_offset;
4951 UNUSED(_end_col_offset); // Only used by EXTRA macro
4952 _res = _Py_Starred ( a , Load , EXTRA );
4953 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004954 p->error_indicator = 1;
4955 return NULL;
4956 }
4957 goto done;
4958 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004959 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004960 }
4961 { // named_expression
4962 expr_ty named_expression_var;
4963 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004964 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004965 )
4966 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004967 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004968 goto done;
4969 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004970 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004971 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004972 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004973 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004974 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004975}
4976
4977// named_expression: NAME ':=' expression | expression !':=' | invalid_named_expression
4978static expr_ty
4979named_expression_rule(Parser *p)
4980{
4981 if (p->error_indicator) {
4982 return NULL;
4983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004984 expr_ty _res = NULL;
4985 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004986 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4987 p->error_indicator = 1;
4988 return NULL;
4989 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004990 int _start_lineno = p->tokens[_mark]->lineno;
4991 UNUSED(_start_lineno); // Only used by EXTRA macro
4992 int _start_col_offset = p->tokens[_mark]->col_offset;
4993 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004994 { // NAME ':=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01004995 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004996 expr_ty a;
4997 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01004998 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01004999 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005000 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005001 (_literal = _PyPegen_expect_token(p, 53)) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005002 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005003 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005004 )
5005 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005006 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5007 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005008 return NULL;
5009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005010 int _end_lineno = _token->end_lineno;
5011 UNUSED(_end_lineno); // Only used by EXTRA macro
5012 int _end_col_offset = _token->end_col_offset;
5013 UNUSED(_end_col_offset); // Only used by EXTRA macro
5014 _res = _Py_NamedExpr ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , b , EXTRA );
5015 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005016 p->error_indicator = 1;
5017 return NULL;
5018 }
5019 goto done;
5020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005021 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005022 }
5023 { // expression !':='
5024 expr_ty expression_var;
5025 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005026 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005027 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005028 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005029 )
5030 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005031 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005032 goto done;
5033 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005034 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005035 }
5036 { // invalid_named_expression
5037 void *invalid_named_expression_var;
5038 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005039 (invalid_named_expression_var = invalid_named_expression_rule(p)) // invalid_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005040 )
5041 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005042 _res = invalid_named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005043 goto done;
5044 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005045 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005046 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005047 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005048 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005049 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005050}
5051
5052// annotated_rhs: yield_expr | star_expressions
5053static expr_ty
5054annotated_rhs_rule(Parser *p)
5055{
5056 if (p->error_indicator) {
5057 return NULL;
5058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005059 expr_ty _res = NULL;
5060 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005061 { // yield_expr
5062 expr_ty yield_expr_var;
5063 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005064 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005065 )
5066 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005067 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005068 goto done;
5069 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005070 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005071 }
5072 { // star_expressions
5073 expr_ty star_expressions_var;
5074 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005075 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005076 )
5077 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005078 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005079 goto done;
5080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005081 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005083 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005084 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005085 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005086}
5087
5088// expressions: expression ((',' expression))+ ','? | expression ',' | expression
5089static expr_ty
5090expressions_rule(Parser *p)
5091{
5092 if (p->error_indicator) {
5093 return NULL;
5094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005095 expr_ty _res = NULL;
5096 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005097 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5098 p->error_indicator = 1;
5099 return NULL;
5100 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005101 int _start_lineno = p->tokens[_mark]->lineno;
5102 UNUSED(_start_lineno); // Only used by EXTRA macro
5103 int _start_col_offset = p->tokens[_mark]->col_offset;
5104 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005105 { // expression ((',' expression))+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005106 void *_opt_var;
5107 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005108 expr_ty a;
5109 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005110 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005111 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005112 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005113 (b = _loop1_74_rule(p)) // ((',' expression))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005114 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005115 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005116 )
5117 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005118 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5119 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005120 return NULL;
5121 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005122 int _end_lineno = _token->end_lineno;
5123 UNUSED(_end_lineno); // Only used by EXTRA macro
5124 int _end_col_offset = _token->end_col_offset;
5125 UNUSED(_end_col_offset); // Only used by EXTRA macro
5126 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
5127 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005128 p->error_indicator = 1;
5129 return NULL;
5130 }
5131 goto done;
5132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005133 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005134 }
5135 { // expression ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005136 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005137 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005138 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005139 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005140 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005141 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005142 )
5143 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005144 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5145 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005146 return NULL;
5147 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005148 int _end_lineno = _token->end_lineno;
5149 UNUSED(_end_lineno); // Only used by EXTRA macro
5150 int _end_col_offset = _token->end_col_offset;
5151 UNUSED(_end_col_offset); // Only used by EXTRA macro
5152 _res = _Py_Tuple ( CHECK ( _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
5153 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005154 p->error_indicator = 1;
5155 return NULL;
5156 }
5157 goto done;
5158 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005159 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005160 }
5161 { // expression
5162 expr_ty expression_var;
5163 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005164 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005165 )
5166 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005167 _res = expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005168 goto done;
5169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005170 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005172 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005173 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005174 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005175}
5176
5177// expression: disjunction 'if' disjunction 'else' expression | disjunction | lambdef
5178static expr_ty
5179expression_rule(Parser *p)
5180{
5181 if (p->error_indicator) {
5182 return NULL;
5183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005184 expr_ty _res = NULL;
5185 if (_PyPegen_is_memoized(p, expression_type, &_res))
5186 return _res;
5187 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005188 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5189 p->error_indicator = 1;
5190 return NULL;
5191 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005192 int _start_lineno = p->tokens[_mark]->lineno;
5193 UNUSED(_start_lineno); // Only used by EXTRA macro
5194 int _start_col_offset = p->tokens[_mark]->col_offset;
5195 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005196 { // disjunction 'if' disjunction 'else' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005197 Token * _keyword;
5198 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005199 expr_ty a;
5200 expr_ty b;
5201 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005202 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005203 (a = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005204 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005205 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005206 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005207 (b = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005208 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005209 (_keyword_1 = _PyPegen_expect_token(p, 516)) // token='else'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005210 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005211 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005212 )
5213 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005214 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5215 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005216 return NULL;
5217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005218 int _end_lineno = _token->end_lineno;
5219 UNUSED(_end_lineno); // Only used by EXTRA macro
5220 int _end_col_offset = _token->end_col_offset;
5221 UNUSED(_end_col_offset); // Only used by EXTRA macro
5222 _res = _Py_IfExp ( b , a , c , EXTRA );
5223 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005224 p->error_indicator = 1;
5225 return NULL;
5226 }
5227 goto done;
5228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005229 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005230 }
5231 { // disjunction
5232 expr_ty disjunction_var;
5233 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005234 (disjunction_var = disjunction_rule(p)) // disjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005235 )
5236 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005237 _res = disjunction_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005238 goto done;
5239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005240 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005241 }
5242 { // lambdef
5243 expr_ty lambdef_var;
5244 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005245 (lambdef_var = lambdef_rule(p)) // lambdef
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005246 )
5247 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005248 _res = lambdef_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005249 goto done;
5250 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005251 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005253 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005254 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005255 _PyPegen_insert_memo(p, _mark, expression_type, _res);
5256 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005257}
5258
5259// lambdef: 'lambda' lambda_parameters? ':' expression
5260static expr_ty
5261lambdef_rule(Parser *p)
5262{
5263 if (p->error_indicator) {
5264 return NULL;
5265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005266 expr_ty _res = NULL;
5267 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005268 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5269 p->error_indicator = 1;
5270 return NULL;
5271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005272 int _start_lineno = p->tokens[_mark]->lineno;
5273 UNUSED(_start_lineno); // Only used by EXTRA macro
5274 int _start_col_offset = p->tokens[_mark]->col_offset;
5275 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005276 { // 'lambda' lambda_parameters? ':' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005277 Token * _keyword;
5278 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005279 void *a;
5280 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005281 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005282 (_keyword = _PyPegen_expect_token(p, 524)) // token='lambda'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005283 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005284 (a = lambda_parameters_rule(p), 1) // lambda_parameters?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005285 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005286 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005287 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005288 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005289 )
5290 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005291 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5292 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005293 return NULL;
5294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005295 int _end_lineno = _token->end_lineno;
5296 UNUSED(_end_lineno); // Only used by EXTRA macro
5297 int _end_col_offset = _token->end_col_offset;
5298 UNUSED(_end_col_offset); // Only used by EXTRA macro
5299 _res = _Py_Lambda ( ( a ) ? a : CHECK ( _PyPegen_empty_arguments ( p ) ) , b , EXTRA );
5300 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005301 p->error_indicator = 1;
5302 return NULL;
5303 }
5304 goto done;
5305 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005306 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005307 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005308 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005309 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005310 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005311}
5312
5313// lambda_parameters:
Guido van Rossum3941d972020-05-01 09:42:03 -07005314// | lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
5315// | lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
5316// | lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
5317// | lambda_param_with_default+ lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005318// | lambda_star_etc
5319static arguments_ty
5320lambda_parameters_rule(Parser *p)
5321{
5322 if (p->error_indicator) {
5323 return NULL;
5324 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005325 arguments_ty _res = NULL;
5326 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005327 { // lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005328 asdl_seq* a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005329 asdl_seq * b;
5330 asdl_seq * c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005331 void *d;
5332 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005333 (a = lambda_slash_no_default_rule(p)) // lambda_slash_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005334 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005335 (b = _loop0_75_rule(p)) // lambda_param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005336 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005337 (c = _loop0_76_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005338 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005339 (d = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005340 )
5341 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005342 _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
5343 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005344 p->error_indicator = 1;
5345 return NULL;
5346 }
5347 goto done;
5348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005349 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005350 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005351 { // lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005352 SlashWithDefault* a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005353 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005354 void *c;
5355 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005356 (a = lambda_slash_with_default_rule(p)) // lambda_slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005357 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005358 (b = _loop0_77_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005359 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005360 (c = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005361 )
5362 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005363 _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
5364 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005365 p->error_indicator = 1;
5366 return NULL;
5367 }
5368 goto done;
5369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005370 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005371 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005372 { // lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
5373 asdl_seq * a;
5374 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005375 void *c;
5376 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005377 (a = _loop1_78_rule(p)) // lambda_param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005378 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005379 (b = _loop0_79_rule(p)) // lambda_param_with_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005380 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005381 (c = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005382 )
5383 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005384 _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
5385 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005386 p->error_indicator = 1;
5387 return NULL;
5388 }
5389 goto done;
5390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005391 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005392 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005393 { // lambda_param_with_default+ lambda_star_etc?
5394 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005395 void *b;
5396 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005397 (a = _loop1_80_rule(p)) // lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005398 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005399 (b = lambda_star_etc_rule(p), 1) // lambda_star_etc?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005400 )
5401 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005402 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
5403 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005404 p->error_indicator = 1;
5405 return NULL;
5406 }
5407 goto done;
5408 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005409 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005410 }
5411 { // lambda_star_etc
5412 StarEtc* a;
5413 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005414 (a = lambda_star_etc_rule(p)) // lambda_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005415 )
5416 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005417 _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
5418 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005419 p->error_indicator = 1;
5420 return NULL;
5421 }
5422 goto done;
5423 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005424 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005426 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005427 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005428 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005429}
5430
Guido van Rossum3941d972020-05-01 09:42:03 -07005431// lambda_slash_no_default:
5432// | lambda_param_no_default+ '/' ','
5433// | lambda_param_no_default+ '/' &':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005434static asdl_seq*
Guido van Rossum3941d972020-05-01 09:42:03 -07005435lambda_slash_no_default_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005436{
5437 if (p->error_indicator) {
5438 return NULL;
5439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005440 asdl_seq* _res = NULL;
5441 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005442 { // lambda_param_no_default+ '/' ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005443 Token * _literal;
5444 Token * _literal_1;
Guido van Rossum3941d972020-05-01 09:42:03 -07005445 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005446 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005447 (a = _loop1_81_rule(p)) // lambda_param_no_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005448 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005449 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005450 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005451 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005452 )
5453 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005454 _res = a;
5455 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005456 p->error_indicator = 1;
5457 return NULL;
5458 }
5459 goto done;
5460 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005461 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005462 }
5463 { // lambda_param_no_default+ '/' &':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005464 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005465 asdl_seq * a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005466 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005467 (a = _loop1_82_rule(p)) // lambda_param_no_default+
Guido van Rossum3941d972020-05-01 09:42:03 -07005468 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005469 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossum3941d972020-05-01 09:42:03 -07005470 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005471 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005472 )
5473 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005474 _res = a;
5475 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005476 p->error_indicator = 1;
5477 return NULL;
5478 }
5479 goto done;
5480 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005481 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005482 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005483 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005484 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005485 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005486}
5487
Guido van Rossum3941d972020-05-01 09:42:03 -07005488// lambda_slash_with_default:
5489// | lambda_param_no_default* lambda_param_with_default+ '/' ','
5490// | lambda_param_no_default* lambda_param_with_default+ '/' &':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005491static SlashWithDefault*
5492lambda_slash_with_default_rule(Parser *p)
5493{
5494 if (p->error_indicator) {
5495 return NULL;
5496 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005497 SlashWithDefault* _res = NULL;
5498 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005499 { // lambda_param_no_default* lambda_param_with_default+ '/' ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005500 Token * _literal;
5501 Token * _literal_1;
Guido van Rossum3941d972020-05-01 09:42:03 -07005502 asdl_seq * a;
5503 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005504 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005505 (a = _loop0_83_rule(p)) // lambda_param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005506 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005507 (b = _loop1_84_rule(p)) // lambda_param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005508 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005509 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005510 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005511 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005512 )
5513 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005514 _res = _PyPegen_slash_with_default ( p , a , b );
5515 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005516 p->error_indicator = 1;
5517 return NULL;
5518 }
5519 goto done;
5520 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005521 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005522 }
5523 { // lambda_param_no_default* lambda_param_with_default+ '/' &':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005524 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005525 asdl_seq * a;
5526 asdl_seq * b;
Guido van Rossum3941d972020-05-01 09:42:03 -07005527 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005528 (a = _loop0_85_rule(p)) // lambda_param_no_default*
Guido van Rossum3941d972020-05-01 09:42:03 -07005529 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005530 (b = _loop1_86_rule(p)) // lambda_param_with_default+
Guido van Rossum3941d972020-05-01 09:42:03 -07005531 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005532 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Guido van Rossum3941d972020-05-01 09:42:03 -07005533 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005534 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005535 )
5536 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005537 _res = _PyPegen_slash_with_default ( p , a , b );
5538 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005539 p->error_indicator = 1;
5540 return NULL;
5541 }
5542 goto done;
5543 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005544 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005545 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005546 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005547 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005548 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005549}
5550
5551// lambda_star_etc:
Guido van Rossum3941d972020-05-01 09:42:03 -07005552// | '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
5553// | '*' ',' lambda_param_maybe_default+ lambda_kwds?
5554// | lambda_kwds
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005555// | invalid_lambda_star_etc
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005556static StarEtc*
5557lambda_star_etc_rule(Parser *p)
5558{
5559 if (p->error_indicator) {
5560 return NULL;
5561 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005562 StarEtc* _res = NULL;
5563 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005564 { // '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005565 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005566 arg_ty a;
5567 asdl_seq * b;
5568 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005569 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005570 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005571 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005572 (a = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005573 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005574 (b = _loop0_87_rule(p)) // lambda_param_maybe_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005575 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005576 (c = lambda_kwds_rule(p), 1) // lambda_kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005577 )
5578 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005579 _res = _PyPegen_star_etc ( p , a , b , c );
5580 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005581 p->error_indicator = 1;
5582 return NULL;
5583 }
5584 goto done;
5585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005586 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005587 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005588 { // '*' ',' lambda_param_maybe_default+ lambda_kwds?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005589 Token * _literal;
5590 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005591 asdl_seq * b;
5592 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005593 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005594 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005595 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005596 (_literal_1 = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005597 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005598 (b = _loop1_88_rule(p)) // lambda_param_maybe_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005599 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005600 (c = lambda_kwds_rule(p), 1) // lambda_kwds?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005601 )
5602 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005603 _res = _PyPegen_star_etc ( p , NULL , b , c );
5604 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005605 p->error_indicator = 1;
5606 return NULL;
5607 }
5608 goto done;
5609 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005610 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005611 }
Guido van Rossum3941d972020-05-01 09:42:03 -07005612 { // lambda_kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005613 arg_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005614 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005615 (a = lambda_kwds_rule(p)) // lambda_kwds
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005616 )
5617 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005618 _res = _PyPegen_star_etc ( p , NULL , NULL , a );
5619 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005620 p->error_indicator = 1;
5621 return NULL;
5622 }
5623 goto done;
5624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005625 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005626 }
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005627 { // invalid_lambda_star_etc
5628 void *invalid_lambda_star_etc_var;
5629 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005630 (invalid_lambda_star_etc_var = invalid_lambda_star_etc_rule(p)) // invalid_lambda_star_etc
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005631 )
5632 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005633 _res = invalid_lambda_star_etc_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005634 goto done;
5635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005636 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +03005637 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005638 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005639 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005640 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005641}
5642
Guido van Rossum3941d972020-05-01 09:42:03 -07005643// lambda_kwds: '**' lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005644static arg_ty
Guido van Rossum3941d972020-05-01 09:42:03 -07005645lambda_kwds_rule(Parser *p)
5646{
5647 if (p->error_indicator) {
5648 return NULL;
5649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005650 arg_ty _res = NULL;
5651 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005652 { // '**' lambda_param_no_default
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005653 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005654 arg_ty a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005655 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005656 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Guido van Rossum3941d972020-05-01 09:42:03 -07005657 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005658 (a = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -07005659 )
5660 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005661 _res = a;
5662 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005663 p->error_indicator = 1;
5664 return NULL;
5665 }
5666 goto done;
5667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005668 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005669 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005670 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07005671 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005672 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07005673}
5674
5675// lambda_param_no_default: lambda_param ',' | lambda_param &':'
5676static arg_ty
5677lambda_param_no_default_rule(Parser *p)
5678{
5679 if (p->error_indicator) {
5680 return NULL;
5681 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005682 arg_ty _res = NULL;
5683 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005684 { // lambda_param ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005685 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005686 arg_ty a;
Guido van Rossum3941d972020-05-01 09:42:03 -07005687 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005688 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005689 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005690 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005691 )
5692 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005693 _res = a;
5694 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005695 p->error_indicator = 1;
5696 return NULL;
5697 }
5698 goto done;
5699 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005700 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005701 }
5702 { // lambda_param &':'
5703 arg_ty a;
5704 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005705 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005706 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005707 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07005708 )
5709 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005710 _res = a;
5711 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005712 p->error_indicator = 1;
5713 return NULL;
5714 }
5715 goto done;
5716 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005717 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005718 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005719 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07005720 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005721 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07005722}
5723
5724// lambda_param_with_default: lambda_param default ',' | lambda_param default &':'
5725static NameDefaultPair*
5726lambda_param_with_default_rule(Parser *p)
5727{
5728 if (p->error_indicator) {
5729 return NULL;
5730 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005731 NameDefaultPair* _res = NULL;
5732 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005733 { // lambda_param default ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005734 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005735 arg_ty a;
5736 expr_ty c;
Guido van Rossum3941d972020-05-01 09:42:03 -07005737 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005738 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005739 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005740 (c = default_rule(p)) // default
Guido van Rossum3941d972020-05-01 09:42:03 -07005741 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005742 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005743 )
5744 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005745 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
5746 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005747 p->error_indicator = 1;
5748 return NULL;
5749 }
5750 goto done;
5751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005752 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005753 }
5754 { // lambda_param default &':'
5755 arg_ty a;
5756 expr_ty c;
5757 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005758 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005759 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005760 (c = default_rule(p)) // default
Guido van Rossum3941d972020-05-01 09:42:03 -07005761 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005762 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07005763 )
5764 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005765 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
5766 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005767 p->error_indicator = 1;
5768 return NULL;
5769 }
5770 goto done;
5771 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005772 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005774 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07005775 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005776 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07005777}
5778
5779// lambda_param_maybe_default: lambda_param default? ',' | lambda_param default? &':'
5780static NameDefaultPair*
5781lambda_param_maybe_default_rule(Parser *p)
5782{
5783 if (p->error_indicator) {
5784 return NULL;
5785 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005786 NameDefaultPair* _res = NULL;
5787 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005788 { // lambda_param default? ','
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005789 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -07005790 arg_ty a;
5791 void *c;
Guido van Rossum3941d972020-05-01 09:42:03 -07005792 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005793 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005794 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005795 (c = default_rule(p), 1) // default?
Guido van Rossum3941d972020-05-01 09:42:03 -07005796 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005797 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -07005798 )
5799 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005800 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
5801 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005802 p->error_indicator = 1;
5803 return NULL;
5804 }
5805 goto done;
5806 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005807 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005808 }
5809 { // lambda_param default? &':'
5810 arg_ty a;
5811 void *c;
5812 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005813 (a = lambda_param_rule(p)) // lambda_param
Guido van Rossum3941d972020-05-01 09:42:03 -07005814 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005815 (c = default_rule(p), 1) // default?
Guido van Rossum3941d972020-05-01 09:42:03 -07005816 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005817 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11) // token=':'
Guido van Rossum3941d972020-05-01 09:42:03 -07005818 )
5819 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005820 _res = _PyPegen_name_default_pair ( p , a , c , NULL );
5821 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -07005822 p->error_indicator = 1;
5823 return NULL;
5824 }
5825 goto done;
5826 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005827 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -07005828 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005829 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -07005830 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005831 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -07005832}
5833
5834// lambda_param: NAME
5835static arg_ty
5836lambda_param_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005837{
5838 if (p->error_indicator) {
5839 return NULL;
5840 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005841 arg_ty _res = NULL;
5842 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005843 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5844 p->error_indicator = 1;
5845 return NULL;
5846 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005847 int _start_lineno = p->tokens[_mark]->lineno;
5848 UNUSED(_start_lineno); // Only used by EXTRA macro
5849 int _start_col_offset = p->tokens[_mark]->col_offset;
5850 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005851 { // NAME
5852 expr_ty a;
5853 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005854 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005855 )
5856 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005857 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5858 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005859 return NULL;
5860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005861 int _end_lineno = _token->end_lineno;
5862 UNUSED(_end_lineno); // Only used by EXTRA macro
5863 int _end_col_offset = _token->end_col_offset;
5864 UNUSED(_end_col_offset); // Only used by EXTRA macro
5865 _res = _Py_arg ( a -> v . Name . id , NULL , NULL , EXTRA );
5866 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005867 p->error_indicator = 1;
5868 return NULL;
5869 }
5870 goto done;
5871 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005872 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005873 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005874 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005875 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005876 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005877}
5878
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005879// disjunction: conjunction (('or' conjunction))+ | conjunction
5880static expr_ty
5881disjunction_rule(Parser *p)
5882{
5883 if (p->error_indicator) {
5884 return NULL;
5885 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005886 expr_ty _res = NULL;
5887 if (_PyPegen_is_memoized(p, disjunction_type, &_res))
5888 return _res;
5889 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005890 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5891 p->error_indicator = 1;
5892 return NULL;
5893 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005894 int _start_lineno = p->tokens[_mark]->lineno;
5895 UNUSED(_start_lineno); // Only used by EXTRA macro
5896 int _start_col_offset = p->tokens[_mark]->col_offset;
5897 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005898 { // conjunction (('or' conjunction))+
5899 expr_ty a;
5900 asdl_seq * b;
5901 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005902 (a = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005903 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005904 (b = _loop1_89_rule(p)) // (('or' conjunction))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005905 )
5906 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005907 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5908 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005909 return NULL;
5910 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005911 int _end_lineno = _token->end_lineno;
5912 UNUSED(_end_lineno); // Only used by EXTRA macro
5913 int _end_col_offset = _token->end_col_offset;
5914 UNUSED(_end_col_offset); // Only used by EXTRA macro
5915 _res = _Py_BoolOp ( Or , CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
5916 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005917 p->error_indicator = 1;
5918 return NULL;
5919 }
5920 goto done;
5921 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005922 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005923 }
5924 { // conjunction
5925 expr_ty conjunction_var;
5926 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005927 (conjunction_var = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005928 )
5929 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005930 _res = conjunction_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005931 goto done;
5932 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005933 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005935 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005936 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005937 _PyPegen_insert_memo(p, _mark, disjunction_type, _res);
5938 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005939}
5940
5941// conjunction: inversion (('and' inversion))+ | inversion
5942static expr_ty
5943conjunction_rule(Parser *p)
5944{
5945 if (p->error_indicator) {
5946 return NULL;
5947 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005948 expr_ty _res = NULL;
5949 if (_PyPegen_is_memoized(p, conjunction_type, &_res))
5950 return _res;
5951 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005952 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5953 p->error_indicator = 1;
5954 return NULL;
5955 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005956 int _start_lineno = p->tokens[_mark]->lineno;
5957 UNUSED(_start_lineno); // Only used by EXTRA macro
5958 int _start_col_offset = p->tokens[_mark]->col_offset;
5959 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005960 { // inversion (('and' inversion))+
5961 expr_ty a;
5962 asdl_seq * b;
5963 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005964 (a = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005965 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01005966 (b = _loop1_90_rule(p)) // (('and' inversion))+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005967 )
5968 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005969 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5970 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005971 return NULL;
5972 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005973 int _end_lineno = _token->end_lineno;
5974 UNUSED(_end_lineno); // Only used by EXTRA macro
5975 int _end_col_offset = _token->end_col_offset;
5976 UNUSED(_end_col_offset); // Only used by EXTRA macro
5977 _res = _Py_BoolOp ( And , CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
5978 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005979 p->error_indicator = 1;
5980 return NULL;
5981 }
5982 goto done;
5983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005984 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005985 }
5986 { // inversion
5987 expr_ty inversion_var;
5988 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01005989 (inversion_var = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005990 )
5991 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005992 _res = inversion_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005993 goto done;
5994 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005995 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005996 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005997 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01005998 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01005999 _PyPegen_insert_memo(p, _mark, conjunction_type, _res);
6000 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006001}
6002
6003// inversion: 'not' inversion | comparison
6004static expr_ty
6005inversion_rule(Parser *p)
6006{
6007 if (p->error_indicator) {
6008 return NULL;
6009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006010 expr_ty _res = NULL;
6011 if (_PyPegen_is_memoized(p, inversion_type, &_res))
6012 return _res;
6013 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006014 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6015 p->error_indicator = 1;
6016 return NULL;
6017 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006018 int _start_lineno = p->tokens[_mark]->lineno;
6019 UNUSED(_start_lineno); // Only used by EXTRA macro
6020 int _start_col_offset = p->tokens[_mark]->col_offset;
6021 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006022 { // 'not' inversion
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006023 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006024 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006025 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006026 (_keyword = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006027 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006028 (a = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006029 )
6030 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006031 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6032 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006033 return NULL;
6034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006035 int _end_lineno = _token->end_lineno;
6036 UNUSED(_end_lineno); // Only used by EXTRA macro
6037 int _end_col_offset = _token->end_col_offset;
6038 UNUSED(_end_col_offset); // Only used by EXTRA macro
6039 _res = _Py_UnaryOp ( Not , a , EXTRA );
6040 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006041 p->error_indicator = 1;
6042 return NULL;
6043 }
6044 goto done;
6045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006046 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006047 }
6048 { // comparison
6049 expr_ty comparison_var;
6050 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006051 (comparison_var = comparison_rule(p)) // comparison
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006052 )
6053 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006054 _res = comparison_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006055 goto done;
6056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006057 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006059 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006060 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006061 _PyPegen_insert_memo(p, _mark, inversion_type, _res);
6062 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006063}
6064
6065// comparison: bitwise_or compare_op_bitwise_or_pair+ | bitwise_or
6066static expr_ty
6067comparison_rule(Parser *p)
6068{
6069 if (p->error_indicator) {
6070 return NULL;
6071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006072 expr_ty _res = NULL;
6073 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006074 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6075 p->error_indicator = 1;
6076 return NULL;
6077 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006078 int _start_lineno = p->tokens[_mark]->lineno;
6079 UNUSED(_start_lineno); // Only used by EXTRA macro
6080 int _start_col_offset = p->tokens[_mark]->col_offset;
6081 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006082 { // bitwise_or compare_op_bitwise_or_pair+
6083 expr_ty a;
6084 asdl_seq * b;
6085 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006086 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006087 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006088 (b = _loop1_91_rule(p)) // compare_op_bitwise_or_pair+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006089 )
6090 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006091 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6092 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006093 return NULL;
6094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006095 int _end_lineno = _token->end_lineno;
6096 UNUSED(_end_lineno); // Only used by EXTRA macro
6097 int _end_col_offset = _token->end_col_offset;
6098 UNUSED(_end_col_offset); // Only used by EXTRA macro
6099 _res = _Py_Compare ( a , CHECK ( _PyPegen_get_cmpops ( p , b ) ) , CHECK ( _PyPegen_get_exprs ( p , b ) ) , EXTRA );
6100 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006101 p->error_indicator = 1;
6102 return NULL;
6103 }
6104 goto done;
6105 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006106 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006107 }
6108 { // bitwise_or
6109 expr_ty bitwise_or_var;
6110 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006111 (bitwise_or_var = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006112 )
6113 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006114 _res = bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006115 goto done;
6116 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006117 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006118 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006119 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006120 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006121 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006122}
6123
6124// compare_op_bitwise_or_pair:
6125// | eq_bitwise_or
6126// | noteq_bitwise_or
6127// | lte_bitwise_or
6128// | lt_bitwise_or
6129// | gte_bitwise_or
6130// | gt_bitwise_or
6131// | notin_bitwise_or
6132// | in_bitwise_or
6133// | isnot_bitwise_or
6134// | is_bitwise_or
6135static CmpopExprPair*
6136compare_op_bitwise_or_pair_rule(Parser *p)
6137{
6138 if (p->error_indicator) {
6139 return NULL;
6140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006141 CmpopExprPair* _res = NULL;
6142 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006143 { // eq_bitwise_or
6144 CmpopExprPair* eq_bitwise_or_var;
6145 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006146 (eq_bitwise_or_var = eq_bitwise_or_rule(p)) // eq_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006147 )
6148 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006149 _res = eq_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006150 goto done;
6151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006152 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006153 }
6154 { // noteq_bitwise_or
6155 CmpopExprPair* noteq_bitwise_or_var;
6156 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006157 (noteq_bitwise_or_var = noteq_bitwise_or_rule(p)) // noteq_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006158 )
6159 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006160 _res = noteq_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006161 goto done;
6162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006163 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006164 }
6165 { // lte_bitwise_or
6166 CmpopExprPair* lte_bitwise_or_var;
6167 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006168 (lte_bitwise_or_var = lte_bitwise_or_rule(p)) // lte_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006169 )
6170 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006171 _res = lte_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006172 goto done;
6173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006174 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006175 }
6176 { // lt_bitwise_or
6177 CmpopExprPair* lt_bitwise_or_var;
6178 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006179 (lt_bitwise_or_var = lt_bitwise_or_rule(p)) // lt_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006180 )
6181 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006182 _res = lt_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006183 goto done;
6184 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006185 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006186 }
6187 { // gte_bitwise_or
6188 CmpopExprPair* gte_bitwise_or_var;
6189 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006190 (gte_bitwise_or_var = gte_bitwise_or_rule(p)) // gte_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006191 )
6192 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006193 _res = gte_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006194 goto done;
6195 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006196 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006197 }
6198 { // gt_bitwise_or
6199 CmpopExprPair* gt_bitwise_or_var;
6200 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006201 (gt_bitwise_or_var = gt_bitwise_or_rule(p)) // gt_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006202 )
6203 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006204 _res = gt_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006205 goto done;
6206 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006207 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006208 }
6209 { // notin_bitwise_or
6210 CmpopExprPair* notin_bitwise_or_var;
6211 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006212 (notin_bitwise_or_var = notin_bitwise_or_rule(p)) // notin_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006213 )
6214 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006215 _res = notin_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006216 goto done;
6217 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006218 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006219 }
6220 { // in_bitwise_or
6221 CmpopExprPair* in_bitwise_or_var;
6222 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006223 (in_bitwise_or_var = in_bitwise_or_rule(p)) // in_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006224 )
6225 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006226 _res = in_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006227 goto done;
6228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006229 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006230 }
6231 { // isnot_bitwise_or
6232 CmpopExprPair* isnot_bitwise_or_var;
6233 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006234 (isnot_bitwise_or_var = isnot_bitwise_or_rule(p)) // isnot_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006235 )
6236 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006237 _res = isnot_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006238 goto done;
6239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006240 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006241 }
6242 { // is_bitwise_or
6243 CmpopExprPair* is_bitwise_or_var;
6244 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006245 (is_bitwise_or_var = is_bitwise_or_rule(p)) // is_bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006246 )
6247 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006248 _res = is_bitwise_or_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006249 goto done;
6250 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006251 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006252 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006253 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006254 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006255 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006256}
6257
6258// eq_bitwise_or: '==' bitwise_or
6259static CmpopExprPair*
6260eq_bitwise_or_rule(Parser *p)
6261{
6262 if (p->error_indicator) {
6263 return NULL;
6264 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006265 CmpopExprPair* _res = NULL;
6266 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006267 { // '==' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006268 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006269 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006270 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006271 (_literal = _PyPegen_expect_token(p, 27)) // token='=='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006272 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006273 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006274 )
6275 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006276 _res = _PyPegen_cmpop_expr_pair ( p , Eq , a );
6277 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006278 p->error_indicator = 1;
6279 return NULL;
6280 }
6281 goto done;
6282 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006283 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006284 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006285 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006286 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006287 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006288}
6289
Pablo Galindo2b74c832020-04-27 18:02:07 +01006290// noteq_bitwise_or: ('!=') bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006291static CmpopExprPair*
6292noteq_bitwise_or_rule(Parser *p)
6293{
6294 if (p->error_indicator) {
6295 return NULL;
6296 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006297 CmpopExprPair* _res = NULL;
6298 int _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +01006299 { // ('!=') bitwise_or
Guido van Rossum3941d972020-05-01 09:42:03 -07006300 void *_tmp_92_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006301 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006302 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006303 (_tmp_92_var = _tmp_92_rule(p)) // '!='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006304 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006305 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006306 )
6307 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006308 _res = _PyPegen_cmpop_expr_pair ( p , NotEq , a );
6309 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006310 p->error_indicator = 1;
6311 return NULL;
6312 }
6313 goto done;
6314 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006315 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006317 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006318 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006319 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006320}
6321
6322// lte_bitwise_or: '<=' bitwise_or
6323static CmpopExprPair*
6324lte_bitwise_or_rule(Parser *p)
6325{
6326 if (p->error_indicator) {
6327 return NULL;
6328 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006329 CmpopExprPair* _res = NULL;
6330 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006331 { // '<=' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006332 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006333 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006334 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006335 (_literal = _PyPegen_expect_token(p, 29)) // token='<='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006336 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006337 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006338 )
6339 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006340 _res = _PyPegen_cmpop_expr_pair ( p , LtE , a );
6341 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006342 p->error_indicator = 1;
6343 return NULL;
6344 }
6345 goto done;
6346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006347 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006349 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006350 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006351 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006352}
6353
6354// lt_bitwise_or: '<' bitwise_or
6355static CmpopExprPair*
6356lt_bitwise_or_rule(Parser *p)
6357{
6358 if (p->error_indicator) {
6359 return NULL;
6360 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006361 CmpopExprPair* _res = NULL;
6362 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006363 { // '<' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006364 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006365 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006366 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006367 (_literal = _PyPegen_expect_token(p, 20)) // token='<'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006368 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006369 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006370 )
6371 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006372 _res = _PyPegen_cmpop_expr_pair ( p , Lt , a );
6373 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006374 p->error_indicator = 1;
6375 return NULL;
6376 }
6377 goto done;
6378 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006379 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006380 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006381 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006382 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006383 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006384}
6385
6386// gte_bitwise_or: '>=' bitwise_or
6387static CmpopExprPair*
6388gte_bitwise_or_rule(Parser *p)
6389{
6390 if (p->error_indicator) {
6391 return NULL;
6392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006393 CmpopExprPair* _res = NULL;
6394 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006395 { // '>=' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006396 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006397 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006398 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006399 (_literal = _PyPegen_expect_token(p, 30)) // token='>='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006400 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006401 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006402 )
6403 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006404 _res = _PyPegen_cmpop_expr_pair ( p , GtE , a );
6405 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006406 p->error_indicator = 1;
6407 return NULL;
6408 }
6409 goto done;
6410 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006411 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006413 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006414 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006415 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006416}
6417
6418// gt_bitwise_or: '>' bitwise_or
6419static CmpopExprPair*
6420gt_bitwise_or_rule(Parser *p)
6421{
6422 if (p->error_indicator) {
6423 return NULL;
6424 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006425 CmpopExprPair* _res = NULL;
6426 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006427 { // '>' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006428 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006429 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006430 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006431 (_literal = _PyPegen_expect_token(p, 21)) // token='>'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006432 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006433 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006434 )
6435 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006436 _res = _PyPegen_cmpop_expr_pair ( p , Gt , a );
6437 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006438 p->error_indicator = 1;
6439 return NULL;
6440 }
6441 goto done;
6442 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006443 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006444 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006445 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006446 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006447 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006448}
6449
6450// notin_bitwise_or: 'not' 'in' bitwise_or
6451static CmpopExprPair*
6452notin_bitwise_or_rule(Parser *p)
6453{
6454 if (p->error_indicator) {
6455 return NULL;
6456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006457 CmpopExprPair* _res = NULL;
6458 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006459 { // 'not' 'in' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006460 Token * _keyword;
6461 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006462 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006463 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006464 (_keyword = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006465 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006466 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006467 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006468 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006469 )
6470 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006471 _res = _PyPegen_cmpop_expr_pair ( p , NotIn , a );
6472 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006473 p->error_indicator = 1;
6474 return NULL;
6475 }
6476 goto done;
6477 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006478 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006480 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006481 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006482 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006483}
6484
6485// in_bitwise_or: 'in' bitwise_or
6486static CmpopExprPair*
6487in_bitwise_or_rule(Parser *p)
6488{
6489 if (p->error_indicator) {
6490 return NULL;
6491 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006492 CmpopExprPair* _res = NULL;
6493 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006494 { // 'in' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006495 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006496 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006497 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006498 (_keyword = _PyPegen_expect_token(p, 518)) // token='in'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006499 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006500 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006501 )
6502 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006503 _res = _PyPegen_cmpop_expr_pair ( p , In , a );
6504 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006505 p->error_indicator = 1;
6506 return NULL;
6507 }
6508 goto done;
6509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006510 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006512 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006513 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006514 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006515}
6516
6517// isnot_bitwise_or: 'is' 'not' bitwise_or
6518static CmpopExprPair*
6519isnot_bitwise_or_rule(Parser *p)
6520{
6521 if (p->error_indicator) {
6522 return NULL;
6523 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006524 CmpopExprPair* _res = NULL;
6525 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006526 { // 'is' 'not' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006527 Token * _keyword;
6528 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006529 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006530 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006531 (_keyword = _PyPegen_expect_token(p, 526)) // token='is'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006532 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006533 (_keyword_1 = _PyPegen_expect_token(p, 525)) // token='not'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006534 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006535 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006536 )
6537 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006538 _res = _PyPegen_cmpop_expr_pair ( p , IsNot , a );
6539 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006540 p->error_indicator = 1;
6541 return NULL;
6542 }
6543 goto done;
6544 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006545 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006547 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006548 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006549 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006550}
6551
6552// is_bitwise_or: 'is' bitwise_or
6553static CmpopExprPair*
6554is_bitwise_or_rule(Parser *p)
6555{
6556 if (p->error_indicator) {
6557 return NULL;
6558 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006559 CmpopExprPair* _res = NULL;
6560 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006561 { // 'is' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006562 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006563 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006564 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006565 (_keyword = _PyPegen_expect_token(p, 526)) // token='is'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006566 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006567 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006568 )
6569 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006570 _res = _PyPegen_cmpop_expr_pair ( p , Is , a );
6571 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006572 p->error_indicator = 1;
6573 return NULL;
6574 }
6575 goto done;
6576 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006577 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006578 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006579 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006580 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006581 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006582}
6583
6584// Left-recursive
6585// bitwise_or: bitwise_or '|' bitwise_xor | bitwise_xor
6586static expr_ty bitwise_or_raw(Parser *);
6587static expr_ty
6588bitwise_or_rule(Parser *p)
6589{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006590 expr_ty _res = NULL;
6591 if (_PyPegen_is_memoized(p, bitwise_or_type, &_res))
6592 return _res;
6593 int _mark = p->mark;
6594 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006595 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006596 int tmpvar_1 = _PyPegen_update_memo(p, _mark, bitwise_or_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006597 if (tmpvar_1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006598 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006599 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006600 p->mark = _mark;
6601 void *_raw = bitwise_or_raw(p);
6602 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006603 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006604 _resmark = p->mark;
6605 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006606 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006607 p->mark = _resmark;
6608 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006609}
6610static expr_ty
6611bitwise_or_raw(Parser *p)
6612{
6613 if (p->error_indicator) {
6614 return NULL;
6615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006616 expr_ty _res = NULL;
6617 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006618 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6619 p->error_indicator = 1;
6620 return NULL;
6621 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006622 int _start_lineno = p->tokens[_mark]->lineno;
6623 UNUSED(_start_lineno); // Only used by EXTRA macro
6624 int _start_col_offset = p->tokens[_mark]->col_offset;
6625 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006626 { // bitwise_or '|' bitwise_xor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006627 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006628 expr_ty a;
6629 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006630 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006631 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006632 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006633 (_literal = _PyPegen_expect_token(p, 18)) // token='|'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006634 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006635 (b = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006636 )
6637 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006638 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6639 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006640 return NULL;
6641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006642 int _end_lineno = _token->end_lineno;
6643 UNUSED(_end_lineno); // Only used by EXTRA macro
6644 int _end_col_offset = _token->end_col_offset;
6645 UNUSED(_end_col_offset); // Only used by EXTRA macro
6646 _res = _Py_BinOp ( a , BitOr , b , EXTRA );
6647 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006648 p->error_indicator = 1;
6649 return NULL;
6650 }
6651 goto done;
6652 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006653 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006654 }
6655 { // bitwise_xor
6656 expr_ty bitwise_xor_var;
6657 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006658 (bitwise_xor_var = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006659 )
6660 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006661 _res = bitwise_xor_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006662 goto done;
6663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006664 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006665 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006666 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006667 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006668 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006669}
6670
6671// Left-recursive
6672// bitwise_xor: bitwise_xor '^' bitwise_and | bitwise_and
6673static expr_ty bitwise_xor_raw(Parser *);
6674static expr_ty
6675bitwise_xor_rule(Parser *p)
6676{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006677 expr_ty _res = NULL;
6678 if (_PyPegen_is_memoized(p, bitwise_xor_type, &_res))
6679 return _res;
6680 int _mark = p->mark;
6681 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006682 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006683 int tmpvar_2 = _PyPegen_update_memo(p, _mark, bitwise_xor_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006684 if (tmpvar_2) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006685 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006686 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006687 p->mark = _mark;
6688 void *_raw = bitwise_xor_raw(p);
6689 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006690 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006691 _resmark = p->mark;
6692 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006694 p->mark = _resmark;
6695 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006696}
6697static expr_ty
6698bitwise_xor_raw(Parser *p)
6699{
6700 if (p->error_indicator) {
6701 return NULL;
6702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006703 expr_ty _res = NULL;
6704 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006705 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6706 p->error_indicator = 1;
6707 return NULL;
6708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006709 int _start_lineno = p->tokens[_mark]->lineno;
6710 UNUSED(_start_lineno); // Only used by EXTRA macro
6711 int _start_col_offset = p->tokens[_mark]->col_offset;
6712 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006713 { // bitwise_xor '^' bitwise_and
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006714 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006715 expr_ty a;
6716 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006717 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006718 (a = bitwise_xor_rule(p)) // bitwise_xor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006719 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006720 (_literal = _PyPegen_expect_token(p, 32)) // token='^'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006721 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006722 (b = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006723 )
6724 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006725 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6726 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006727 return NULL;
6728 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006729 int _end_lineno = _token->end_lineno;
6730 UNUSED(_end_lineno); // Only used by EXTRA macro
6731 int _end_col_offset = _token->end_col_offset;
6732 UNUSED(_end_col_offset); // Only used by EXTRA macro
6733 _res = _Py_BinOp ( a , BitXor , b , EXTRA );
6734 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006735 p->error_indicator = 1;
6736 return NULL;
6737 }
6738 goto done;
6739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006740 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006741 }
6742 { // bitwise_and
6743 expr_ty bitwise_and_var;
6744 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006745 (bitwise_and_var = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006746 )
6747 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006748 _res = bitwise_and_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006749 goto done;
6750 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006751 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006752 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006753 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006754 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006755 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006756}
6757
6758// Left-recursive
6759// bitwise_and: bitwise_and '&' shift_expr | shift_expr
6760static expr_ty bitwise_and_raw(Parser *);
6761static expr_ty
6762bitwise_and_rule(Parser *p)
6763{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006764 expr_ty _res = NULL;
6765 if (_PyPegen_is_memoized(p, bitwise_and_type, &_res))
6766 return _res;
6767 int _mark = p->mark;
6768 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006769 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006770 int tmpvar_3 = _PyPegen_update_memo(p, _mark, bitwise_and_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006771 if (tmpvar_3) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006772 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006774 p->mark = _mark;
6775 void *_raw = bitwise_and_raw(p);
6776 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006777 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006778 _resmark = p->mark;
6779 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006780 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006781 p->mark = _resmark;
6782 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006783}
6784static expr_ty
6785bitwise_and_raw(Parser *p)
6786{
6787 if (p->error_indicator) {
6788 return NULL;
6789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006790 expr_ty _res = NULL;
6791 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006792 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6793 p->error_indicator = 1;
6794 return NULL;
6795 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006796 int _start_lineno = p->tokens[_mark]->lineno;
6797 UNUSED(_start_lineno); // Only used by EXTRA macro
6798 int _start_col_offset = p->tokens[_mark]->col_offset;
6799 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006800 { // bitwise_and '&' shift_expr
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006801 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006802 expr_ty a;
6803 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006804 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006805 (a = bitwise_and_rule(p)) // bitwise_and
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006806 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006807 (_literal = _PyPegen_expect_token(p, 19)) // token='&'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006808 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006809 (b = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006810 )
6811 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006812 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6813 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006814 return NULL;
6815 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006816 int _end_lineno = _token->end_lineno;
6817 UNUSED(_end_lineno); // Only used by EXTRA macro
6818 int _end_col_offset = _token->end_col_offset;
6819 UNUSED(_end_col_offset); // Only used by EXTRA macro
6820 _res = _Py_BinOp ( a , BitAnd , b , EXTRA );
6821 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006822 p->error_indicator = 1;
6823 return NULL;
6824 }
6825 goto done;
6826 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006827 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006828 }
6829 { // shift_expr
6830 expr_ty shift_expr_var;
6831 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006832 (shift_expr_var = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006833 )
6834 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006835 _res = shift_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006836 goto done;
6837 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006838 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006839 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006840 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006841 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006842 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006843}
6844
6845// Left-recursive
6846// shift_expr: shift_expr '<<' sum | shift_expr '>>' sum | sum
6847static expr_ty shift_expr_raw(Parser *);
6848static expr_ty
6849shift_expr_rule(Parser *p)
6850{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006851 expr_ty _res = NULL;
6852 if (_PyPegen_is_memoized(p, shift_expr_type, &_res))
6853 return _res;
6854 int _mark = p->mark;
6855 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006856 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006857 int tmpvar_4 = _PyPegen_update_memo(p, _mark, shift_expr_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006858 if (tmpvar_4) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006859 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006861 p->mark = _mark;
6862 void *_raw = shift_expr_raw(p);
6863 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006864 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006865 _resmark = p->mark;
6866 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006867 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006868 p->mark = _resmark;
6869 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006870}
6871static expr_ty
6872shift_expr_raw(Parser *p)
6873{
6874 if (p->error_indicator) {
6875 return NULL;
6876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006877 expr_ty _res = NULL;
6878 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006879 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6880 p->error_indicator = 1;
6881 return NULL;
6882 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006883 int _start_lineno = p->tokens[_mark]->lineno;
6884 UNUSED(_start_lineno); // Only used by EXTRA macro
6885 int _start_col_offset = p->tokens[_mark]->col_offset;
6886 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006887 { // shift_expr '<<' sum
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006888 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006889 expr_ty a;
6890 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006891 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006892 (a = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006893 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006894 (_literal = _PyPegen_expect_token(p, 33)) // token='<<'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006895 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006896 (b = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006897 )
6898 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006899 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6900 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006901 return NULL;
6902 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006903 int _end_lineno = _token->end_lineno;
6904 UNUSED(_end_lineno); // Only used by EXTRA macro
6905 int _end_col_offset = _token->end_col_offset;
6906 UNUSED(_end_col_offset); // Only used by EXTRA macro
6907 _res = _Py_BinOp ( a , LShift , b , EXTRA );
6908 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006909 p->error_indicator = 1;
6910 return NULL;
6911 }
6912 goto done;
6913 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006914 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006915 }
6916 { // shift_expr '>>' sum
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006917 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006918 expr_ty a;
6919 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006920 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006921 (a = shift_expr_rule(p)) // shift_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006922 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006923 (_literal = _PyPegen_expect_token(p, 34)) // token='>>'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006924 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01006925 (b = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006926 )
6927 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006928 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6929 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006930 return NULL;
6931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006932 int _end_lineno = _token->end_lineno;
6933 UNUSED(_end_lineno); // Only used by EXTRA macro
6934 int _end_col_offset = _token->end_col_offset;
6935 UNUSED(_end_col_offset); // Only used by EXTRA macro
6936 _res = _Py_BinOp ( a , RShift , b , EXTRA );
6937 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006938 p->error_indicator = 1;
6939 return NULL;
6940 }
6941 goto done;
6942 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006943 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006944 }
6945 { // sum
6946 expr_ty sum_var;
6947 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01006948 (sum_var = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006949 )
6950 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006951 _res = sum_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006952 goto done;
6953 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006954 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006955 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006956 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006957 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006958 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006959}
6960
6961// Left-recursive
6962// sum: sum '+' term | sum '-' term | term
6963static expr_ty sum_raw(Parser *);
6964static expr_ty
6965sum_rule(Parser *p)
6966{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006967 expr_ty _res = NULL;
6968 if (_PyPegen_is_memoized(p, sum_type, &_res))
6969 return _res;
6970 int _mark = p->mark;
6971 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006972 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006973 int tmpvar_5 = _PyPegen_update_memo(p, _mark, sum_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006974 if (tmpvar_5) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006975 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006976 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006977 p->mark = _mark;
6978 void *_raw = sum_raw(p);
6979 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006980 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006981 _resmark = p->mark;
6982 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006984 p->mark = _resmark;
6985 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006986}
6987static expr_ty
6988sum_raw(Parser *p)
6989{
6990 if (p->error_indicator) {
6991 return NULL;
6992 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006993 expr_ty _res = NULL;
6994 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01006995 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6996 p->error_indicator = 1;
6997 return NULL;
6998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01006999 int _start_lineno = p->tokens[_mark]->lineno;
7000 UNUSED(_start_lineno); // Only used by EXTRA macro
7001 int _start_col_offset = p->tokens[_mark]->col_offset;
7002 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007003 { // sum '+' term
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007004 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007005 expr_ty a;
7006 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007007 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007008 (a = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007009 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007010 (_literal = _PyPegen_expect_token(p, 14)) // token='+'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007011 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007012 (b = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007013 )
7014 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007015 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7016 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007017 return NULL;
7018 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007019 int _end_lineno = _token->end_lineno;
7020 UNUSED(_end_lineno); // Only used by EXTRA macro
7021 int _end_col_offset = _token->end_col_offset;
7022 UNUSED(_end_col_offset); // Only used by EXTRA macro
7023 _res = _Py_BinOp ( a , Add , b , EXTRA );
7024 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007025 p->error_indicator = 1;
7026 return NULL;
7027 }
7028 goto done;
7029 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007030 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007031 }
7032 { // sum '-' term
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007033 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007034 expr_ty a;
7035 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007036 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007037 (a = sum_rule(p)) // sum
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007038 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007039 (_literal = _PyPegen_expect_token(p, 15)) // token='-'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007040 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007041 (b = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007042 )
7043 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007044 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7045 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007046 return NULL;
7047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007048 int _end_lineno = _token->end_lineno;
7049 UNUSED(_end_lineno); // Only used by EXTRA macro
7050 int _end_col_offset = _token->end_col_offset;
7051 UNUSED(_end_col_offset); // Only used by EXTRA macro
7052 _res = _Py_BinOp ( a , Sub , b , EXTRA );
7053 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007054 p->error_indicator = 1;
7055 return NULL;
7056 }
7057 goto done;
7058 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007059 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007060 }
7061 { // term
7062 expr_ty term_var;
7063 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007064 (term_var = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007065 )
7066 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007067 _res = term_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007068 goto done;
7069 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007070 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007072 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007073 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007074 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007075}
7076
7077// Left-recursive
7078// term:
7079// | term '*' factor
7080// | term '/' factor
7081// | term '//' factor
7082// | term '%' factor
7083// | term '@' factor
7084// | factor
7085static expr_ty term_raw(Parser *);
7086static expr_ty
7087term_rule(Parser *p)
7088{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007089 expr_ty _res = NULL;
7090 if (_PyPegen_is_memoized(p, term_type, &_res))
7091 return _res;
7092 int _mark = p->mark;
7093 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007094 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007095 int tmpvar_6 = _PyPegen_update_memo(p, _mark, term_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007096 if (tmpvar_6) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007097 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007098 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007099 p->mark = _mark;
7100 void *_raw = term_raw(p);
7101 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007102 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007103 _resmark = p->mark;
7104 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007105 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007106 p->mark = _resmark;
7107 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007108}
7109static expr_ty
7110term_raw(Parser *p)
7111{
7112 if (p->error_indicator) {
7113 return NULL;
7114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007115 expr_ty _res = NULL;
7116 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007117 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7118 p->error_indicator = 1;
7119 return NULL;
7120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007121 int _start_lineno = p->tokens[_mark]->lineno;
7122 UNUSED(_start_lineno); // Only used by EXTRA macro
7123 int _start_col_offset = p->tokens[_mark]->col_offset;
7124 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007125 { // term '*' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007126 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007127 expr_ty a;
7128 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007129 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007130 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007131 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007132 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007133 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007134 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007135 )
7136 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007137 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7138 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007139 return NULL;
7140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007141 int _end_lineno = _token->end_lineno;
7142 UNUSED(_end_lineno); // Only used by EXTRA macro
7143 int _end_col_offset = _token->end_col_offset;
7144 UNUSED(_end_col_offset); // Only used by EXTRA macro
7145 _res = _Py_BinOp ( a , Mult , b , EXTRA );
7146 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007147 p->error_indicator = 1;
7148 return NULL;
7149 }
7150 goto done;
7151 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007152 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007153 }
7154 { // term '/' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007155 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007156 expr_ty a;
7157 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007158 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007159 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007160 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007161 (_literal = _PyPegen_expect_token(p, 17)) // token='/'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007162 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007163 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007164 )
7165 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007166 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7167 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007168 return NULL;
7169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007170 int _end_lineno = _token->end_lineno;
7171 UNUSED(_end_lineno); // Only used by EXTRA macro
7172 int _end_col_offset = _token->end_col_offset;
7173 UNUSED(_end_col_offset); // Only used by EXTRA macro
7174 _res = _Py_BinOp ( a , Div , b , EXTRA );
7175 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007176 p->error_indicator = 1;
7177 return NULL;
7178 }
7179 goto done;
7180 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007181 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007182 }
7183 { // term '//' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007184 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007185 expr_ty a;
7186 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007187 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007188 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007189 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007190 (_literal = _PyPegen_expect_token(p, 47)) // token='//'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007191 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007192 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007193 )
7194 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007195 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7196 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007197 return NULL;
7198 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007199 int _end_lineno = _token->end_lineno;
7200 UNUSED(_end_lineno); // Only used by EXTRA macro
7201 int _end_col_offset = _token->end_col_offset;
7202 UNUSED(_end_col_offset); // Only used by EXTRA macro
7203 _res = _Py_BinOp ( a , FloorDiv , b , EXTRA );
7204 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007205 p->error_indicator = 1;
7206 return NULL;
7207 }
7208 goto done;
7209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007210 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007211 }
7212 { // term '%' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007213 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007214 expr_ty a;
7215 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007216 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007217 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007218 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007219 (_literal = _PyPegen_expect_token(p, 24)) // token='%'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007220 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007221 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007222 )
7223 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007224 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7225 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007226 return NULL;
7227 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007228 int _end_lineno = _token->end_lineno;
7229 UNUSED(_end_lineno); // Only used by EXTRA macro
7230 int _end_col_offset = _token->end_col_offset;
7231 UNUSED(_end_col_offset); // Only used by EXTRA macro
7232 _res = _Py_BinOp ( a , Mod , b , EXTRA );
7233 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007234 p->error_indicator = 1;
7235 return NULL;
7236 }
7237 goto done;
7238 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007239 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007240 }
7241 { // term '@' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007242 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007243 expr_ty a;
7244 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007245 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007246 (a = term_rule(p)) // term
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007247 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007248 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007249 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007250 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007251 )
7252 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007253 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7254 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007255 return NULL;
7256 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007257 int _end_lineno = _token->end_lineno;
7258 UNUSED(_end_lineno); // Only used by EXTRA macro
7259 int _end_col_offset = _token->end_col_offset;
7260 UNUSED(_end_col_offset); // Only used by EXTRA macro
7261 _res = CHECK_VERSION ( 5 , "The '@' operator is" , _Py_BinOp ( a , MatMult , b , EXTRA ) );
7262 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007263 p->error_indicator = 1;
7264 return NULL;
7265 }
7266 goto done;
7267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007268 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007269 }
7270 { // factor
7271 expr_ty factor_var;
7272 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007273 (factor_var = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007274 )
7275 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007276 _res = factor_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007277 goto done;
7278 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007279 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007280 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007281 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007282 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007283 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007284}
7285
7286// factor: '+' factor | '-' factor | '~' factor | power
7287static expr_ty
7288factor_rule(Parser *p)
7289{
7290 if (p->error_indicator) {
7291 return NULL;
7292 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007293 expr_ty _res = NULL;
7294 if (_PyPegen_is_memoized(p, factor_type, &_res))
7295 return _res;
7296 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007297 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7298 p->error_indicator = 1;
7299 return NULL;
7300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007301 int _start_lineno = p->tokens[_mark]->lineno;
7302 UNUSED(_start_lineno); // Only used by EXTRA macro
7303 int _start_col_offset = p->tokens[_mark]->col_offset;
7304 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007305 { // '+' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007306 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007307 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007308 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007309 (_literal = _PyPegen_expect_token(p, 14)) // token='+'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007310 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007311 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007312 )
7313 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007314 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7315 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007316 return NULL;
7317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007318 int _end_lineno = _token->end_lineno;
7319 UNUSED(_end_lineno); // Only used by EXTRA macro
7320 int _end_col_offset = _token->end_col_offset;
7321 UNUSED(_end_col_offset); // Only used by EXTRA macro
7322 _res = _Py_UnaryOp ( UAdd , a , EXTRA );
7323 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007324 p->error_indicator = 1;
7325 return NULL;
7326 }
7327 goto done;
7328 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007329 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007330 }
7331 { // '-' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007332 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007333 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007334 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007335 (_literal = _PyPegen_expect_token(p, 15)) // token='-'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007336 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007337 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007338 )
7339 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007340 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7341 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007342 return NULL;
7343 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007344 int _end_lineno = _token->end_lineno;
7345 UNUSED(_end_lineno); // Only used by EXTRA macro
7346 int _end_col_offset = _token->end_col_offset;
7347 UNUSED(_end_col_offset); // Only used by EXTRA macro
7348 _res = _Py_UnaryOp ( USub , a , EXTRA );
7349 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007350 p->error_indicator = 1;
7351 return NULL;
7352 }
7353 goto done;
7354 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007355 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007356 }
7357 { // '~' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007358 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007359 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007360 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007361 (_literal = _PyPegen_expect_token(p, 31)) // token='~'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007362 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007363 (a = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007364 )
7365 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007366 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7367 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007368 return NULL;
7369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007370 int _end_lineno = _token->end_lineno;
7371 UNUSED(_end_lineno); // Only used by EXTRA macro
7372 int _end_col_offset = _token->end_col_offset;
7373 UNUSED(_end_col_offset); // Only used by EXTRA macro
7374 _res = _Py_UnaryOp ( Invert , a , EXTRA );
7375 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007376 p->error_indicator = 1;
7377 return NULL;
7378 }
7379 goto done;
7380 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007381 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007382 }
7383 { // power
7384 expr_ty power_var;
7385 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007386 (power_var = power_rule(p)) // power
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007387 )
7388 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007389 _res = power_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007390 goto done;
7391 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007392 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007394 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007395 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007396 _PyPegen_insert_memo(p, _mark, factor_type, _res);
7397 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007398}
7399
7400// power: await_primary '**' factor | await_primary
7401static expr_ty
7402power_rule(Parser *p)
7403{
7404 if (p->error_indicator) {
7405 return NULL;
7406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007407 expr_ty _res = NULL;
7408 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007409 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7410 p->error_indicator = 1;
7411 return NULL;
7412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007413 int _start_lineno = p->tokens[_mark]->lineno;
7414 UNUSED(_start_lineno); // Only used by EXTRA macro
7415 int _start_col_offset = p->tokens[_mark]->col_offset;
7416 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007417 { // await_primary '**' factor
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007418 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007419 expr_ty a;
7420 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007421 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007422 (a = await_primary_rule(p)) // await_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007423 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007424 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007425 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007426 (b = factor_rule(p)) // factor
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007427 )
7428 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007429 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7430 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007431 return NULL;
7432 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007433 int _end_lineno = _token->end_lineno;
7434 UNUSED(_end_lineno); // Only used by EXTRA macro
7435 int _end_col_offset = _token->end_col_offset;
7436 UNUSED(_end_col_offset); // Only used by EXTRA macro
7437 _res = _Py_BinOp ( a , Pow , b , EXTRA );
7438 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007439 p->error_indicator = 1;
7440 return NULL;
7441 }
7442 goto done;
7443 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007444 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007445 }
7446 { // await_primary
7447 expr_ty await_primary_var;
7448 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007449 (await_primary_var = await_primary_rule(p)) // await_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007450 )
7451 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007452 _res = await_primary_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007453 goto done;
7454 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007455 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007457 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007458 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007459 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007460}
7461
7462// await_primary: AWAIT primary | primary
7463static expr_ty
7464await_primary_rule(Parser *p)
7465{
7466 if (p->error_indicator) {
7467 return NULL;
7468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007469 expr_ty _res = NULL;
7470 if (_PyPegen_is_memoized(p, await_primary_type, &_res))
7471 return _res;
7472 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007473 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7474 p->error_indicator = 1;
7475 return NULL;
7476 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007477 int _start_lineno = p->tokens[_mark]->lineno;
7478 UNUSED(_start_lineno); // Only used by EXTRA macro
7479 int _start_col_offset = p->tokens[_mark]->col_offset;
7480 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007481 { // AWAIT primary
7482 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01007483 Token * await_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007484 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007485 (await_var = _PyPegen_expect_token(p, AWAIT)) // token='AWAIT'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007486 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007487 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007488 )
7489 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007490 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7491 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007492 return NULL;
7493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007494 int _end_lineno = _token->end_lineno;
7495 UNUSED(_end_lineno); // Only used by EXTRA macro
7496 int _end_col_offset = _token->end_col_offset;
7497 UNUSED(_end_col_offset); // Only used by EXTRA macro
7498 _res = CHECK_VERSION ( 5 , "Await expressions are" , _Py_Await ( a , EXTRA ) );
7499 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007500 p->error_indicator = 1;
7501 return NULL;
7502 }
7503 goto done;
7504 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007505 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007506 }
7507 { // primary
7508 expr_ty primary_var;
7509 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007510 (primary_var = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007511 )
7512 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007513 _res = primary_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007514 goto done;
7515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007516 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007517 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007518 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007519 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007520 _PyPegen_insert_memo(p, _mark, await_primary_type, _res);
7521 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007522}
7523
7524// Left-recursive
7525// primary:
7526// | primary '.' NAME
7527// | primary genexp
7528// | primary '(' arguments? ')'
7529// | primary '[' slices ']'
7530// | atom
7531static expr_ty primary_raw(Parser *);
7532static expr_ty
7533primary_rule(Parser *p)
7534{
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007535 expr_ty _res = NULL;
7536 if (_PyPegen_is_memoized(p, primary_type, &_res))
7537 return _res;
7538 int _mark = p->mark;
7539 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007540 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007541 int tmpvar_7 = _PyPegen_update_memo(p, _mark, primary_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007542 if (tmpvar_7) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007543 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007544 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007545 p->mark = _mark;
7546 void *_raw = primary_raw(p);
7547 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007548 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007549 _resmark = p->mark;
7550 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007551 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007552 p->mark = _resmark;
7553 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007554}
7555static expr_ty
7556primary_raw(Parser *p)
7557{
7558 if (p->error_indicator) {
7559 return NULL;
7560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007561 expr_ty _res = NULL;
7562 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007563 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7564 p->error_indicator = 1;
7565 return NULL;
7566 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007567 int _start_lineno = p->tokens[_mark]->lineno;
7568 UNUSED(_start_lineno); // Only used by EXTRA macro
7569 int _start_col_offset = p->tokens[_mark]->col_offset;
7570 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007571 { // primary '.' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007572 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007573 expr_ty a;
7574 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007575 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007576 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007577 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007578 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007579 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007580 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007581 )
7582 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007583 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7584 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007585 return NULL;
7586 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007587 int _end_lineno = _token->end_lineno;
7588 UNUSED(_end_lineno); // Only used by EXTRA macro
7589 int _end_col_offset = _token->end_col_offset;
7590 UNUSED(_end_col_offset); // Only used by EXTRA macro
7591 _res = _Py_Attribute ( a , b -> v . Name . id , Load , EXTRA );
7592 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007593 p->error_indicator = 1;
7594 return NULL;
7595 }
7596 goto done;
7597 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007598 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007599 }
7600 { // primary genexp
7601 expr_ty a;
7602 expr_ty b;
7603 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007604 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007605 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007606 (b = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007607 )
7608 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007609 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7610 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007611 return NULL;
7612 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007613 int _end_lineno = _token->end_lineno;
7614 UNUSED(_end_lineno); // Only used by EXTRA macro
7615 int _end_col_offset = _token->end_col_offset;
7616 UNUSED(_end_col_offset); // Only used by EXTRA macro
7617 _res = _Py_Call ( a , CHECK ( _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
7618 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007619 p->error_indicator = 1;
7620 return NULL;
7621 }
7622 goto done;
7623 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007624 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007625 }
7626 { // primary '(' arguments? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007627 Token * _literal;
7628 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007629 expr_ty a;
7630 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007631 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007632 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007633 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007634 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007635 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007636 (b = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007637 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007638 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007639 )
7640 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007641 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7642 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007643 return NULL;
7644 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007645 int _end_lineno = _token->end_lineno;
7646 UNUSED(_end_lineno); // Only used by EXTRA macro
7647 int _end_col_offset = _token->end_col_offset;
7648 UNUSED(_end_col_offset); // Only used by EXTRA macro
7649 _res = _Py_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
7650 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007651 p->error_indicator = 1;
7652 return NULL;
7653 }
7654 goto done;
7655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007656 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007657 }
7658 { // primary '[' slices ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007659 Token * _literal;
7660 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007661 expr_ty a;
7662 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007663 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007664 (a = primary_rule(p)) // primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007665 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007666 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007667 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007668 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007669 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007670 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007671 )
7672 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007673 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7674 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007675 return NULL;
7676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007677 int _end_lineno = _token->end_lineno;
7678 UNUSED(_end_lineno); // Only used by EXTRA macro
7679 int _end_col_offset = _token->end_col_offset;
7680 UNUSED(_end_col_offset); // Only used by EXTRA macro
7681 _res = _Py_Subscript ( a , b , Load , EXTRA );
7682 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007683 p->error_indicator = 1;
7684 return NULL;
7685 }
7686 goto done;
7687 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007688 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007689 }
7690 { // atom
7691 expr_ty atom_var;
7692 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007693 (atom_var = atom_rule(p)) // atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007694 )
7695 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007696 _res = atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007697 goto done;
7698 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007699 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007700 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007701 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007702 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007703 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007704}
7705
7706// slices: slice !',' | ','.slice+ ','?
7707static expr_ty
7708slices_rule(Parser *p)
7709{
7710 if (p->error_indicator) {
7711 return NULL;
7712 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007713 expr_ty _res = NULL;
7714 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007715 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7716 p->error_indicator = 1;
7717 return NULL;
7718 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007719 int _start_lineno = p->tokens[_mark]->lineno;
7720 UNUSED(_start_lineno); // Only used by EXTRA macro
7721 int _start_col_offset = p->tokens[_mark]->col_offset;
7722 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007723 { // slice !','
7724 expr_ty a;
7725 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007726 (a = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007727 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007728 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007729 )
7730 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007731 _res = a;
7732 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007733 p->error_indicator = 1;
7734 return NULL;
7735 }
7736 goto done;
7737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007738 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007739 }
7740 { // ','.slice+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007741 void *_opt_var;
7742 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007743 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007744 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007745 (a = _gather_93_rule(p)) // ','.slice+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007746 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007747 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007748 )
7749 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007750 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7751 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007752 return NULL;
7753 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007754 int _end_lineno = _token->end_lineno;
7755 UNUSED(_end_lineno); // Only used by EXTRA macro
7756 int _end_col_offset = _token->end_col_offset;
7757 UNUSED(_end_col_offset); // Only used by EXTRA macro
7758 _res = _Py_Tuple ( a , Load , EXTRA );
7759 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007760 p->error_indicator = 1;
7761 return NULL;
7762 }
7763 goto done;
7764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007765 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007766 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007767 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007768 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007769 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007770}
7771
7772// slice: expression? ':' expression? [':' expression?] | expression
7773static expr_ty
7774slice_rule(Parser *p)
7775{
7776 if (p->error_indicator) {
7777 return NULL;
7778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007779 expr_ty _res = NULL;
7780 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007781 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7782 p->error_indicator = 1;
7783 return NULL;
7784 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007785 int _start_lineno = p->tokens[_mark]->lineno;
7786 UNUSED(_start_lineno); // Only used by EXTRA macro
7787 int _start_col_offset = p->tokens[_mark]->col_offset;
7788 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007789 { // expression? ':' expression? [':' expression?]
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007790 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007791 void *a;
7792 void *b;
7793 void *c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007794 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007795 (a = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007796 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007797 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007798 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007799 (b = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007800 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007801 (c = _tmp_95_rule(p), 1) // [':' expression?]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007802 )
7803 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007804 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7805 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007806 return NULL;
7807 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007808 int _end_lineno = _token->end_lineno;
7809 UNUSED(_end_lineno); // Only used by EXTRA macro
7810 int _end_col_offset = _token->end_col_offset;
7811 UNUSED(_end_col_offset); // Only used by EXTRA macro
7812 _res = _Py_Slice ( a , b , c , EXTRA );
7813 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007814 p->error_indicator = 1;
7815 return NULL;
7816 }
7817 goto done;
7818 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007819 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007820 }
7821 { // expression
7822 expr_ty a;
7823 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007824 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007825 )
7826 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007827 _res = a;
7828 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007829 p->error_indicator = 1;
7830 return NULL;
7831 }
7832 goto done;
7833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007834 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007835 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007836 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007837 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007838 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007839}
7840
7841// atom:
7842// | NAME
7843// | 'True'
7844// | 'False'
7845// | 'None'
7846// | '__new_parser__'
7847// | &STRING strings
7848// | NUMBER
7849// | &'(' (tuple | group | genexp)
7850// | &'[' (list | listcomp)
7851// | &'{' (dict | set | dictcomp | setcomp)
7852// | '...'
7853static expr_ty
7854atom_rule(Parser *p)
7855{
7856 if (p->error_indicator) {
7857 return NULL;
7858 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007859 expr_ty _res = NULL;
7860 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007861 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7862 p->error_indicator = 1;
7863 return NULL;
7864 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007865 int _start_lineno = p->tokens[_mark]->lineno;
7866 UNUSED(_start_lineno); // Only used by EXTRA macro
7867 int _start_col_offset = p->tokens[_mark]->col_offset;
7868 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007869 { // NAME
7870 expr_ty name_var;
7871 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007872 (name_var = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007873 )
7874 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007875 _res = name_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007876 goto done;
7877 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007878 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007879 }
7880 { // 'True'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007881 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007882 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007883 (_keyword = _PyPegen_expect_token(p, 527)) // token='True'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007884 )
7885 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007886 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7887 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007888 return NULL;
7889 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007890 int _end_lineno = _token->end_lineno;
7891 UNUSED(_end_lineno); // Only used by EXTRA macro
7892 int _end_col_offset = _token->end_col_offset;
7893 UNUSED(_end_col_offset); // Only used by EXTRA macro
7894 _res = _Py_Constant ( Py_True , NULL , EXTRA );
7895 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007896 p->error_indicator = 1;
7897 return NULL;
7898 }
7899 goto done;
7900 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007901 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007902 }
7903 { // 'False'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007904 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007905 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007906 (_keyword = _PyPegen_expect_token(p, 528)) // token='False'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007907 )
7908 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007909 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7910 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007911 return NULL;
7912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007913 int _end_lineno = _token->end_lineno;
7914 UNUSED(_end_lineno); // Only used by EXTRA macro
7915 int _end_col_offset = _token->end_col_offset;
7916 UNUSED(_end_col_offset); // Only used by EXTRA macro
7917 _res = _Py_Constant ( Py_False , NULL , EXTRA );
7918 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007919 p->error_indicator = 1;
7920 return NULL;
7921 }
7922 goto done;
7923 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007924 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007925 }
7926 { // 'None'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007927 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007928 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007929 (_keyword = _PyPegen_expect_token(p, 529)) // token='None'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007930 )
7931 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007932 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7933 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007934 return NULL;
7935 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007936 int _end_lineno = _token->end_lineno;
7937 UNUSED(_end_lineno); // Only used by EXTRA macro
7938 int _end_col_offset = _token->end_col_offset;
7939 UNUSED(_end_col_offset); // Only used by EXTRA macro
7940 _res = _Py_Constant ( Py_None , NULL , EXTRA );
7941 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007942 p->error_indicator = 1;
7943 return NULL;
7944 }
7945 goto done;
7946 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007947 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007948 }
7949 { // '__new_parser__'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007950 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007951 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007952 (_keyword = _PyPegen_expect_token(p, 530)) // token='__new_parser__'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007953 )
7954 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007955 _res = RAISE_SYNTAX_ERROR ( "You found it!" );
7956 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007957 p->error_indicator = 1;
7958 return NULL;
7959 }
7960 goto done;
7961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007962 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007963 }
7964 { // &STRING strings
7965 expr_ty strings_var;
7966 if (
7967 _PyPegen_lookahead(1, _PyPegen_string_token, p)
7968 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007969 (strings_var = strings_rule(p)) // strings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007970 )
7971 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007972 _res = strings_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007973 goto done;
7974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007975 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007976 }
7977 { // NUMBER
7978 expr_ty number_var;
7979 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007980 (number_var = _PyPegen_number_token(p)) // NUMBER
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007981 )
7982 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007983 _res = number_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007984 goto done;
7985 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007986 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007987 }
7988 { // &'(' (tuple | group | genexp)
Guido van Rossum3941d972020-05-01 09:42:03 -07007989 void *_tmp_96_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007990 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01007991 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007992 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01007993 (_tmp_96_var = _tmp_96_rule(p)) // tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007994 )
7995 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007996 _res = _tmp_96_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01007997 goto done;
7998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01007999 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008000 }
Pablo Galindo2b74c832020-04-27 18:02:07 +01008001 { // &'[' (list | listcomp)
Guido van Rossum3941d972020-05-01 09:42:03 -07008002 void *_tmp_97_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008003 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008004 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008005 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008006 (_tmp_97_var = _tmp_97_rule(p)) // list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008007 )
8008 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008009 _res = _tmp_97_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008010 goto done;
8011 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008012 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008013 }
Pablo Galindo2b74c832020-04-27 18:02:07 +01008014 { // &'{' (dict | set | dictcomp | setcomp)
Guido van Rossum3941d972020-05-01 09:42:03 -07008015 void *_tmp_98_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008016 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008017 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25) // token='{'
Pablo Galindo2b74c832020-04-27 18:02:07 +01008018 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008019 (_tmp_98_var = _tmp_98_rule(p)) // dict | set | dictcomp | setcomp
Pablo Galindo2b74c832020-04-27 18:02:07 +01008020 )
8021 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008022 _res = _tmp_98_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008023 goto done;
8024 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008025 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +01008026 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008027 { // '...'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008028 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008029 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008030 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008031 )
8032 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008033 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8034 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008035 return NULL;
8036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008037 int _end_lineno = _token->end_lineno;
8038 UNUSED(_end_lineno); // Only used by EXTRA macro
8039 int _end_col_offset = _token->end_col_offset;
8040 UNUSED(_end_col_offset); // Only used by EXTRA macro
8041 _res = _Py_Constant ( Py_Ellipsis , NULL , EXTRA );
8042 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008043 p->error_indicator = 1;
8044 return NULL;
8045 }
8046 goto done;
8047 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008048 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008049 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008050 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008051 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008052 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008053}
8054
8055// strings: STRING+
8056static expr_ty
8057strings_rule(Parser *p)
8058{
8059 if (p->error_indicator) {
8060 return NULL;
8061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008062 expr_ty _res = NULL;
8063 if (_PyPegen_is_memoized(p, strings_type, &_res))
8064 return _res;
8065 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008066 { // STRING+
8067 asdl_seq * a;
8068 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008069 (a = _loop1_99_rule(p)) // STRING+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008070 )
8071 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008072 _res = _PyPegen_concatenate_strings ( p , a );
8073 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008074 p->error_indicator = 1;
8075 return NULL;
8076 }
8077 goto done;
8078 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008079 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008081 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008082 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008083 _PyPegen_insert_memo(p, _mark, strings_type, _res);
8084 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008085}
8086
8087// list: '[' star_named_expressions? ']'
8088static expr_ty
8089list_rule(Parser *p)
8090{
8091 if (p->error_indicator) {
8092 return NULL;
8093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008094 expr_ty _res = NULL;
8095 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008096 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8097 p->error_indicator = 1;
8098 return NULL;
8099 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008100 int _start_lineno = p->tokens[_mark]->lineno;
8101 UNUSED(_start_lineno); // Only used by EXTRA macro
8102 int _start_col_offset = p->tokens[_mark]->col_offset;
8103 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008104 { // '[' star_named_expressions? ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008105 Token * _literal;
8106 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008107 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008108 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008109 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008110 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008111 (a = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008112 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008113 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008114 )
8115 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008116 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8117 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008118 return NULL;
8119 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008120 int _end_lineno = _token->end_lineno;
8121 UNUSED(_end_lineno); // Only used by EXTRA macro
8122 int _end_col_offset = _token->end_col_offset;
8123 UNUSED(_end_col_offset); // Only used by EXTRA macro
8124 _res = _Py_List ( a , Load , EXTRA );
8125 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008126 p->error_indicator = 1;
8127 return NULL;
8128 }
8129 goto done;
8130 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008131 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008132 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008133 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008134 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008135 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008136}
8137
8138// listcomp: '[' named_expression for_if_clauses ']' | invalid_comprehension
8139static expr_ty
8140listcomp_rule(Parser *p)
8141{
8142 if (p->error_indicator) {
8143 return NULL;
8144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008145 expr_ty _res = NULL;
8146 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008147 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8148 p->error_indicator = 1;
8149 return NULL;
8150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008151 int _start_lineno = p->tokens[_mark]->lineno;
8152 UNUSED(_start_lineno); // Only used by EXTRA macro
8153 int _start_col_offset = p->tokens[_mark]->col_offset;
8154 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008155 { // '[' named_expression for_if_clauses ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008156 Token * _literal;
8157 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008158 expr_ty a;
8159 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008160 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008161 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008162 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008163 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008164 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008165 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008166 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008167 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008168 )
8169 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008170 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8171 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008172 return NULL;
8173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008174 int _end_lineno = _token->end_lineno;
8175 UNUSED(_end_lineno); // Only used by EXTRA macro
8176 int _end_col_offset = _token->end_col_offset;
8177 UNUSED(_end_col_offset); // Only used by EXTRA macro
8178 _res = _Py_ListComp ( a , b , EXTRA );
8179 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008180 p->error_indicator = 1;
8181 return NULL;
8182 }
8183 goto done;
8184 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008185 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008186 }
8187 { // invalid_comprehension
8188 void *invalid_comprehension_var;
8189 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008190 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008191 )
8192 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008193 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008194 goto done;
8195 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008196 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008197 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008198 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008199 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008200 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008201}
8202
8203// tuple: '(' [star_named_expression ',' star_named_expressions?] ')'
8204static expr_ty
8205tuple_rule(Parser *p)
8206{
8207 if (p->error_indicator) {
8208 return NULL;
8209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008210 expr_ty _res = NULL;
8211 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008212 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8213 p->error_indicator = 1;
8214 return NULL;
8215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008216 int _start_lineno = p->tokens[_mark]->lineno;
8217 UNUSED(_start_lineno); // Only used by EXTRA macro
8218 int _start_col_offset = p->tokens[_mark]->col_offset;
8219 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008220 { // '(' [star_named_expression ',' star_named_expressions?] ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008221 Token * _literal;
8222 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008223 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008224 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008225 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008226 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008227 (a = _tmp_100_rule(p), 1) // [star_named_expression ',' star_named_expressions?]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008228 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008229 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008230 )
8231 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008232 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8233 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008234 return NULL;
8235 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008236 int _end_lineno = _token->end_lineno;
8237 UNUSED(_end_lineno); // Only used by EXTRA macro
8238 int _end_col_offset = _token->end_col_offset;
8239 UNUSED(_end_col_offset); // Only used by EXTRA macro
8240 _res = _Py_Tuple ( a , Load , EXTRA );
8241 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008242 p->error_indicator = 1;
8243 return NULL;
8244 }
8245 goto done;
8246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008247 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008249 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008250 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008251 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008252}
8253
8254// group: '(' (yield_expr | named_expression) ')'
8255static expr_ty
8256group_rule(Parser *p)
8257{
8258 if (p->error_indicator) {
8259 return NULL;
8260 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008261 expr_ty _res = NULL;
8262 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008263 { // '(' (yield_expr | named_expression) ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008264 Token * _literal;
8265 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008266 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008267 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008268 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008269 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008270 (a = _tmp_101_rule(p)) // yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008271 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008272 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008273 )
8274 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008275 _res = a;
8276 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008277 p->error_indicator = 1;
8278 return NULL;
8279 }
8280 goto done;
8281 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008282 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008283 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008284 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008285 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008286 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008287}
8288
8289// genexp: '(' expression for_if_clauses ')' | invalid_comprehension
8290static expr_ty
8291genexp_rule(Parser *p)
8292{
8293 if (p->error_indicator) {
8294 return NULL;
8295 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008296 expr_ty _res = NULL;
8297 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008298 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8299 p->error_indicator = 1;
8300 return NULL;
8301 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008302 int _start_lineno = p->tokens[_mark]->lineno;
8303 UNUSED(_start_lineno); // Only used by EXTRA macro
8304 int _start_col_offset = p->tokens[_mark]->col_offset;
8305 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008306 { // '(' expression for_if_clauses ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008307 Token * _literal;
8308 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008309 expr_ty a;
8310 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008311 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008312 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008313 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008314 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008315 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008316 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008317 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008318 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008319 )
8320 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008321 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8322 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008323 return NULL;
8324 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008325 int _end_lineno = _token->end_lineno;
8326 UNUSED(_end_lineno); // Only used by EXTRA macro
8327 int _end_col_offset = _token->end_col_offset;
8328 UNUSED(_end_col_offset); // Only used by EXTRA macro
8329 _res = _Py_GeneratorExp ( a , b , EXTRA );
8330 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008331 p->error_indicator = 1;
8332 return NULL;
8333 }
8334 goto done;
8335 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008336 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008337 }
8338 { // invalid_comprehension
8339 void *invalid_comprehension_var;
8340 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008341 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008342 )
8343 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008344 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008345 goto done;
8346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008347 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008349 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008350 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008351 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008352}
8353
8354// set: '{' expressions_list '}'
8355static expr_ty
8356set_rule(Parser *p)
8357{
8358 if (p->error_indicator) {
8359 return NULL;
8360 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008361 expr_ty _res = NULL;
8362 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008363 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8364 p->error_indicator = 1;
8365 return NULL;
8366 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008367 int _start_lineno = p->tokens[_mark]->lineno;
8368 UNUSED(_start_lineno); // Only used by EXTRA macro
8369 int _start_col_offset = p->tokens[_mark]->col_offset;
8370 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008371 { // '{' expressions_list '}'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008372 Token * _literal;
8373 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008374 asdl_seq* a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008375 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008376 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008377 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008378 (a = expressions_list_rule(p)) // expressions_list
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008379 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008380 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008381 )
8382 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008383 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8384 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008385 return NULL;
8386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008387 int _end_lineno = _token->end_lineno;
8388 UNUSED(_end_lineno); // Only used by EXTRA macro
8389 int _end_col_offset = _token->end_col_offset;
8390 UNUSED(_end_col_offset); // Only used by EXTRA macro
8391 _res = _Py_Set ( a , EXTRA );
8392 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008393 p->error_indicator = 1;
8394 return NULL;
8395 }
8396 goto done;
8397 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008398 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008399 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008400 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008401 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008402 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008403}
8404
8405// setcomp: '{' expression for_if_clauses '}' | invalid_comprehension
8406static expr_ty
8407setcomp_rule(Parser *p)
8408{
8409 if (p->error_indicator) {
8410 return NULL;
8411 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008412 expr_ty _res = NULL;
8413 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008414 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8415 p->error_indicator = 1;
8416 return NULL;
8417 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008418 int _start_lineno = p->tokens[_mark]->lineno;
8419 UNUSED(_start_lineno); // Only used by EXTRA macro
8420 int _start_col_offset = p->tokens[_mark]->col_offset;
8421 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008422 { // '{' expression for_if_clauses '}'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008423 Token * _literal;
8424 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008425 expr_ty a;
8426 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008427 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008428 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008429 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008430 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008431 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008432 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008433 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008434 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008435 )
8436 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008437 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8438 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008439 return NULL;
8440 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008441 int _end_lineno = _token->end_lineno;
8442 UNUSED(_end_lineno); // Only used by EXTRA macro
8443 int _end_col_offset = _token->end_col_offset;
8444 UNUSED(_end_col_offset); // Only used by EXTRA macro
8445 _res = _Py_SetComp ( a , b , EXTRA );
8446 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008447 p->error_indicator = 1;
8448 return NULL;
8449 }
8450 goto done;
8451 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008452 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008453 }
8454 { // invalid_comprehension
8455 void *invalid_comprehension_var;
8456 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008457 (invalid_comprehension_var = invalid_comprehension_rule(p)) // invalid_comprehension
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008458 )
8459 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008460 _res = invalid_comprehension_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008461 goto done;
8462 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008463 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008465 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008466 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008467 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008468}
8469
8470// dict: '{' kvpairs? '}'
8471static expr_ty
8472dict_rule(Parser *p)
8473{
8474 if (p->error_indicator) {
8475 return NULL;
8476 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008477 expr_ty _res = NULL;
8478 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008479 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8480 p->error_indicator = 1;
8481 return NULL;
8482 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008483 int _start_lineno = p->tokens[_mark]->lineno;
8484 UNUSED(_start_lineno); // Only used by EXTRA macro
8485 int _start_col_offset = p->tokens[_mark]->col_offset;
8486 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008487 { // '{' kvpairs? '}'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008488 Token * _literal;
8489 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008490 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008491 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008492 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008493 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008494 (a = kvpairs_rule(p), 1) // kvpairs?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008495 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008496 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008497 )
8498 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008499 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8500 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008501 return NULL;
8502 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008503 int _end_lineno = _token->end_lineno;
8504 UNUSED(_end_lineno); // Only used by EXTRA macro
8505 int _end_col_offset = _token->end_col_offset;
8506 UNUSED(_end_col_offset); // Only used by EXTRA macro
8507 _res = _Py_Dict ( CHECK ( _PyPegen_get_keys ( p , a ) ) , CHECK ( _PyPegen_get_values ( p , a ) ) , EXTRA );
8508 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008509 p->error_indicator = 1;
8510 return NULL;
8511 }
8512 goto done;
8513 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008514 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008515 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008516 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008517 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008518 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008519}
8520
8521// dictcomp: '{' kvpair for_if_clauses '}'
8522static expr_ty
8523dictcomp_rule(Parser *p)
8524{
8525 if (p->error_indicator) {
8526 return NULL;
8527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008528 expr_ty _res = NULL;
8529 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008530 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8531 p->error_indicator = 1;
8532 return NULL;
8533 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008534 int _start_lineno = p->tokens[_mark]->lineno;
8535 UNUSED(_start_lineno); // Only used by EXTRA macro
8536 int _start_col_offset = p->tokens[_mark]->col_offset;
8537 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008538 { // '{' kvpair for_if_clauses '}'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008539 Token * _literal;
8540 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008541 KeyValuePair* a;
8542 asdl_seq* b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008543 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008544 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008545 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008546 (a = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008547 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008548 (b = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008549 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008550 (_literal_1 = _PyPegen_expect_token(p, 26)) // token='}'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008551 )
8552 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008553 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8554 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008555 return NULL;
8556 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008557 int _end_lineno = _token->end_lineno;
8558 UNUSED(_end_lineno); // Only used by EXTRA macro
8559 int _end_col_offset = _token->end_col_offset;
8560 UNUSED(_end_col_offset); // Only used by EXTRA macro
8561 _res = _Py_DictComp ( a -> key , a -> value , b , EXTRA );
8562 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008563 p->error_indicator = 1;
8564 return NULL;
8565 }
8566 goto done;
8567 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008568 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008569 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008570 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008571 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008572 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008573}
8574
8575// kvpairs: ','.kvpair+ ','?
8576static asdl_seq*
8577kvpairs_rule(Parser *p)
8578{
8579 if (p->error_indicator) {
8580 return NULL;
8581 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008582 asdl_seq* _res = NULL;
8583 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008584 { // ','.kvpair+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008585 void *_opt_var;
8586 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008587 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008588 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008589 (a = _gather_102_rule(p)) // ','.kvpair+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008590 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008591 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008592 )
8593 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008594 _res = a;
8595 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008596 p->error_indicator = 1;
8597 return NULL;
8598 }
8599 goto done;
8600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008601 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008603 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008604 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008605 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008606}
8607
8608// kvpair: '**' bitwise_or | expression ':' expression
8609static KeyValuePair*
8610kvpair_rule(Parser *p)
8611{
8612 if (p->error_indicator) {
8613 return NULL;
8614 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008615 KeyValuePair* _res = NULL;
8616 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008617 { // '**' bitwise_or
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008618 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008619 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008620 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008621 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008622 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008623 (a = bitwise_or_rule(p)) // bitwise_or
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008624 )
8625 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008626 _res = _PyPegen_key_value_pair ( p , NULL , a );
8627 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008628 p->error_indicator = 1;
8629 return NULL;
8630 }
8631 goto done;
8632 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008633 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008634 }
8635 { // expression ':' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008636 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008637 expr_ty a;
8638 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008639 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008640 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008641 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008642 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008643 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008644 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008645 )
8646 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008647 _res = _PyPegen_key_value_pair ( p , a , b );
8648 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008649 p->error_indicator = 1;
8650 return NULL;
8651 }
8652 goto done;
8653 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008654 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008656 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008657 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008658 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008659}
8660
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008661// for_if_clauses: for_if_clause+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008662static asdl_seq*
8663for_if_clauses_rule(Parser *p)
8664{
8665 if (p->error_indicator) {
8666 return NULL;
8667 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008668 asdl_seq* _res = NULL;
8669 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008670 { // for_if_clause+
Guido van Rossum3941d972020-05-01 09:42:03 -07008671 asdl_seq * _loop1_104_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008672 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008673 (_loop1_104_var = _loop1_104_rule(p)) // for_if_clause+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008674 )
8675 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008676 _res = _loop1_104_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008677 goto done;
8678 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008679 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008680 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008681 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008682 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008683 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008684}
8685
8686// for_if_clause:
8687// | ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*
8688// | 'for' star_targets 'in' disjunction (('if' disjunction))*
8689static comprehension_ty
8690for_if_clause_rule(Parser *p)
8691{
8692 if (p->error_indicator) {
8693 return NULL;
8694 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008695 comprehension_ty _res = NULL;
8696 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008697 { // ASYNC 'for' star_targets 'in' disjunction (('if' disjunction))*
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008698 Token * _keyword;
8699 Token * _keyword_1;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008700 expr_ty a;
Pablo Galindob796b3f2020-05-01 12:32:26 +01008701 Token * async_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008702 expr_ty b;
8703 asdl_seq * c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008704 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008705 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008706 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008707 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008708 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008709 (a = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008710 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008711 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008712 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008713 (b = disjunction_rule(p)) // disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008714 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008715 (c = _loop0_105_rule(p)) // (('if' disjunction))*
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008716 )
8717 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008718 _res = CHECK_VERSION ( 6 , "Async comprehensions are" , _Py_comprehension ( a , b , c , 1 , p -> arena ) );
8719 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008720 p->error_indicator = 1;
8721 return NULL;
8722 }
8723 goto done;
8724 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008725 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008726 }
8727 { // 'for' star_targets 'in' disjunction (('if' disjunction))*
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008728 Token * _keyword;
8729 Token * _keyword_1;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008730 expr_ty a;
8731 expr_ty b;
8732 asdl_seq * c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008733 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008734 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008735 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008736 (a = star_targets_rule(p)) // star_targets
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008737 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008738 (_keyword_1 = _PyPegen_expect_token(p, 518)) // token='in'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008739 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008740 (b = disjunction_rule(p)) // disjunction
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008741 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008742 (c = _loop0_106_rule(p)) // (('if' disjunction))*
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +03008743 )
8744 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008745 _res = _Py_comprehension ( a , b , c , 0 , p -> arena );
8746 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008747 p->error_indicator = 1;
8748 return NULL;
8749 }
8750 goto done;
8751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008752 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008753 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008754 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008755 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008756 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008757}
8758
8759// yield_expr: 'yield' 'from' expression | 'yield' star_expressions?
8760static expr_ty
8761yield_expr_rule(Parser *p)
8762{
8763 if (p->error_indicator) {
8764 return NULL;
8765 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008766 expr_ty _res = NULL;
8767 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008768 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8769 p->error_indicator = 1;
8770 return NULL;
8771 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008772 int _start_lineno = p->tokens[_mark]->lineno;
8773 UNUSED(_start_lineno); // Only used by EXTRA macro
8774 int _start_col_offset = p->tokens[_mark]->col_offset;
8775 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008776 { // 'yield' 'from' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008777 Token * _keyword;
8778 Token * _keyword_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008779 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008780 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008781 (_keyword = _PyPegen_expect_token(p, 504)) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008782 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008783 (_keyword_1 = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008784 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008785 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008786 )
8787 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008788 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8789 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008790 return NULL;
8791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008792 int _end_lineno = _token->end_lineno;
8793 UNUSED(_end_lineno); // Only used by EXTRA macro
8794 int _end_col_offset = _token->end_col_offset;
8795 UNUSED(_end_col_offset); // Only used by EXTRA macro
8796 _res = _Py_YieldFrom ( a , EXTRA );
8797 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008798 p->error_indicator = 1;
8799 return NULL;
8800 }
8801 goto done;
8802 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008803 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008804 }
8805 { // 'yield' star_expressions?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008806 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008807 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008808 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008809 (_keyword = _PyPegen_expect_token(p, 504)) // token='yield'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008810 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008811 (a = star_expressions_rule(p), 1) // star_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008812 )
8813 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008814 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8815 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008816 return NULL;
8817 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008818 int _end_lineno = _token->end_lineno;
8819 UNUSED(_end_lineno); // Only used by EXTRA macro
8820 int _end_col_offset = _token->end_col_offset;
8821 UNUSED(_end_col_offset); // Only used by EXTRA macro
8822 _res = _Py_Yield ( a , EXTRA );
8823 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008824 p->error_indicator = 1;
8825 return NULL;
8826 }
8827 goto done;
8828 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008829 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008831 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008832 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008833 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008834}
8835
8836// arguments: args ','? &')' | incorrect_arguments
8837static expr_ty
8838arguments_rule(Parser *p)
8839{
8840 if (p->error_indicator) {
8841 return NULL;
8842 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008843 expr_ty _res = NULL;
8844 if (_PyPegen_is_memoized(p, arguments_type, &_res))
8845 return _res;
8846 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008847 { // args ','? &')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008848 void *_opt_var;
8849 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008850 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008851 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008852 (a = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008853 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008854 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008855 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008856 _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008857 )
8858 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008859 _res = a;
8860 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008861 p->error_indicator = 1;
8862 return NULL;
8863 }
8864 goto done;
8865 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008866 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008867 }
8868 { // incorrect_arguments
8869 void *incorrect_arguments_var;
8870 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008871 (incorrect_arguments_var = incorrect_arguments_rule(p)) // incorrect_arguments
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008872 )
8873 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008874 _res = incorrect_arguments_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008875 goto done;
8876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008877 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008878 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008879 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008880 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008881 _PyPegen_insert_memo(p, _mark, arguments_type, _res);
8882 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008883}
8884
8885// args: starred_expression [',' args] | kwargs | named_expression [',' args]
8886static expr_ty
8887args_rule(Parser *p)
8888{
8889 if (p->error_indicator) {
8890 return NULL;
8891 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008892 expr_ty _res = NULL;
8893 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008894 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8895 p->error_indicator = 1;
8896 return NULL;
8897 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008898 int _start_lineno = p->tokens[_mark]->lineno;
8899 UNUSED(_start_lineno); // Only used by EXTRA macro
8900 int _start_col_offset = p->tokens[_mark]->col_offset;
8901 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008902 { // starred_expression [',' args]
8903 expr_ty a;
8904 void *b;
8905 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008906 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008907 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008908 (b = _tmp_107_rule(p), 1) // [',' args]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008909 )
8910 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008911 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8912 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008913 return NULL;
8914 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008915 int _end_lineno = _token->end_lineno;
8916 UNUSED(_end_lineno); // Only used by EXTRA macro
8917 int _end_col_offset = _token->end_col_offset;
8918 UNUSED(_end_col_offset); // Only used by EXTRA macro
8919 _res = _Py_Call ( _PyPegen_dummy_name ( p ) , ( b ) ? CHECK ( _PyPegen_seq_insert_in_front ( p , a , ( ( expr_ty ) b ) -> v . Call . args ) ) : CHECK ( _PyPegen_singleton_seq ( p , a ) ) , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
8920 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008921 p->error_indicator = 1;
8922 return NULL;
8923 }
8924 goto done;
8925 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008926 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008927 }
8928 { // kwargs
8929 asdl_seq* a;
8930 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008931 (a = kwargs_rule(p)) // kwargs
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008932 )
8933 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008934 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8935 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008936 return NULL;
8937 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008938 int _end_lineno = _token->end_lineno;
8939 UNUSED(_end_lineno); // Only used by EXTRA macro
8940 int _end_col_offset = _token->end_col_offset;
8941 UNUSED(_end_col_offset); // Only used by EXTRA macro
8942 _res = _Py_Call ( _PyPegen_dummy_name ( p ) , CHECK_NULL_ALLOWED ( _PyPegen_seq_extract_starred_exprs ( p , a ) ) , CHECK_NULL_ALLOWED ( _PyPegen_seq_delete_starred_exprs ( p , a ) ) , EXTRA );
8943 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008944 p->error_indicator = 1;
8945 return NULL;
8946 }
8947 goto done;
8948 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008949 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008950 }
8951 { // named_expression [',' args]
8952 expr_ty a;
8953 void *b;
8954 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008955 (a = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008956 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01008957 (b = _tmp_108_rule(p), 1) // [',' args]
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008958 )
8959 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008960 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8961 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008962 return NULL;
8963 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008964 int _end_lineno = _token->end_lineno;
8965 UNUSED(_end_lineno); // Only used by EXTRA macro
8966 int _end_col_offset = _token->end_col_offset;
8967 UNUSED(_end_col_offset); // Only used by EXTRA macro
8968 _res = _Py_Call ( _PyPegen_dummy_name ( p ) , ( b ) ? CHECK ( _PyPegen_seq_insert_in_front ( p , a , ( ( expr_ty ) b ) -> v . Call . args ) ) : CHECK ( _PyPegen_singleton_seq ( p , a ) ) , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
8969 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008970 p->error_indicator = 1;
8971 return NULL;
8972 }
8973 goto done;
8974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008975 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008976 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008977 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008978 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008979 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008980}
8981
8982// kwargs:
8983// | ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
8984// | ','.kwarg_or_starred+
8985// | ','.kwarg_or_double_starred+
8986static asdl_seq*
8987kwargs_rule(Parser *p)
8988{
8989 if (p->error_indicator) {
8990 return NULL;
8991 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008992 asdl_seq* _res = NULL;
8993 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008994 { // ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
Pablo Galindoac7a92c2020-05-10 05:34:50 +01008995 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008996 asdl_seq * a;
8997 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01008998 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01008999 (a = _gather_109_rule(p)) // ','.kwarg_or_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009000 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009001 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009002 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009003 (b = _gather_111_rule(p)) // ','.kwarg_or_double_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009004 )
9005 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009006 _res = _PyPegen_join_sequences ( p , a , b );
9007 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009008 p->error_indicator = 1;
9009 return NULL;
9010 }
9011 goto done;
9012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009013 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009014 }
9015 { // ','.kwarg_or_starred+
Guido van Rossum3941d972020-05-01 09:42:03 -07009016 asdl_seq * _gather_113_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009017 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009018 (_gather_113_var = _gather_113_rule(p)) // ','.kwarg_or_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009019 )
9020 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009021 _res = _gather_113_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009022 goto done;
9023 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009024 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009025 }
9026 { // ','.kwarg_or_double_starred+
Guido van Rossum3941d972020-05-01 09:42:03 -07009027 asdl_seq * _gather_115_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009028 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009029 (_gather_115_var = _gather_115_rule(p)) // ','.kwarg_or_double_starred+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009030 )
9031 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009032 _res = _gather_115_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009033 goto done;
9034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009035 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009036 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009037 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009038 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009039 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009040}
9041
9042// starred_expression: '*' expression
9043static expr_ty
9044starred_expression_rule(Parser *p)
9045{
9046 if (p->error_indicator) {
9047 return NULL;
9048 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009049 expr_ty _res = NULL;
9050 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009051 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9052 p->error_indicator = 1;
9053 return NULL;
9054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009055 int _start_lineno = p->tokens[_mark]->lineno;
9056 UNUSED(_start_lineno); // Only used by EXTRA macro
9057 int _start_col_offset = p->tokens[_mark]->col_offset;
9058 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009059 { // '*' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009060 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009061 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009062 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009063 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009064 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009065 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009066 )
9067 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009068 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9069 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009070 return NULL;
9071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009072 int _end_lineno = _token->end_lineno;
9073 UNUSED(_end_lineno); // Only used by EXTRA macro
9074 int _end_col_offset = _token->end_col_offset;
9075 UNUSED(_end_col_offset); // Only used by EXTRA macro
9076 _res = _Py_Starred ( a , Load , EXTRA );
9077 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009078 p->error_indicator = 1;
9079 return NULL;
9080 }
9081 goto done;
9082 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009083 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009084 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009085 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009086 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009087 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009088}
9089
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009090// kwarg_or_starred: NAME '=' expression | starred_expression | invalid_kwarg
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009091static KeywordOrStarred*
9092kwarg_or_starred_rule(Parser *p)
9093{
9094 if (p->error_indicator) {
9095 return NULL;
9096 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009097 KeywordOrStarred* _res = NULL;
9098 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009099 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9100 p->error_indicator = 1;
9101 return NULL;
9102 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009103 int _start_lineno = p->tokens[_mark]->lineno;
9104 UNUSED(_start_lineno); // Only used by EXTRA macro
9105 int _start_col_offset = p->tokens[_mark]->col_offset;
9106 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009107 { // NAME '=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009108 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009109 expr_ty a;
9110 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009111 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009112 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009113 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009114 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009115 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009116 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009117 )
9118 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009119 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9120 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009121 return NULL;
9122 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009123 int _end_lineno = _token->end_lineno;
9124 UNUSED(_end_lineno); // Only used by EXTRA macro
9125 int _end_col_offset = _token->end_col_offset;
9126 UNUSED(_end_col_offset); // Only used by EXTRA macro
9127 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
9128 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009129 p->error_indicator = 1;
9130 return NULL;
9131 }
9132 goto done;
9133 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009134 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009135 }
9136 { // starred_expression
9137 expr_ty a;
9138 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009139 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009140 )
9141 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009142 _res = _PyPegen_keyword_or_starred ( p , a , 0 );
9143 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009144 p->error_indicator = 1;
9145 return NULL;
9146 }
9147 goto done;
9148 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009149 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009150 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009151 { // invalid_kwarg
9152 void *invalid_kwarg_var;
9153 if (
9154 (invalid_kwarg_var = invalid_kwarg_rule(p)) // invalid_kwarg
9155 )
9156 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009157 _res = invalid_kwarg_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009158 goto done;
9159 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009160 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009161 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009162 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009163 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009164 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009165}
9166
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009167// kwarg_or_double_starred: NAME '=' expression | '**' expression | invalid_kwarg
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009168static KeywordOrStarred*
9169kwarg_or_double_starred_rule(Parser *p)
9170{
9171 if (p->error_indicator) {
9172 return NULL;
9173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009174 KeywordOrStarred* _res = NULL;
9175 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009176 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9177 p->error_indicator = 1;
9178 return NULL;
9179 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009180 int _start_lineno = p->tokens[_mark]->lineno;
9181 UNUSED(_start_lineno); // Only used by EXTRA macro
9182 int _start_col_offset = p->tokens[_mark]->col_offset;
9183 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009184 { // NAME '=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009185 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009186 expr_ty a;
9187 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009188 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009189 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009190 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009191 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009192 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009193 (b = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009194 )
9195 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009196 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9197 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009198 return NULL;
9199 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009200 int _end_lineno = _token->end_lineno;
9201 UNUSED(_end_lineno); // Only used by EXTRA macro
9202 int _end_col_offset = _token->end_col_offset;
9203 UNUSED(_end_col_offset); // Only used by EXTRA macro
9204 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
9205 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009206 p->error_indicator = 1;
9207 return NULL;
9208 }
9209 goto done;
9210 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009211 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009212 }
9213 { // '**' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009214 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009215 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009216 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009217 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009218 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009219 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009220 )
9221 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009222 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9223 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009224 return NULL;
9225 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009226 int _end_lineno = _token->end_lineno;
9227 UNUSED(_end_lineno); // Only used by EXTRA macro
9228 int _end_col_offset = _token->end_col_offset;
9229 UNUSED(_end_col_offset); // Only used by EXTRA macro
9230 _res = _PyPegen_keyword_or_starred ( p , CHECK ( _Py_keyword ( NULL , a , EXTRA ) ) , 1 );
9231 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009232 p->error_indicator = 1;
9233 return NULL;
9234 }
9235 goto done;
9236 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009237 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009238 }
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009239 { // invalid_kwarg
9240 void *invalid_kwarg_var;
9241 if (
9242 (invalid_kwarg_var = invalid_kwarg_rule(p)) // invalid_kwarg
9243 )
9244 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009245 _res = invalid_kwarg_var;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009246 goto done;
9247 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009248 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +03009249 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009250 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009251 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009252 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009253}
9254
9255// star_targets: star_target !',' | star_target ((',' star_target))* ','?
9256static expr_ty
9257star_targets_rule(Parser *p)
9258{
9259 if (p->error_indicator) {
9260 return NULL;
9261 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009262 expr_ty _res = NULL;
9263 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009264 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9265 p->error_indicator = 1;
9266 return NULL;
9267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009268 int _start_lineno = p->tokens[_mark]->lineno;
9269 UNUSED(_start_lineno); // Only used by EXTRA macro
9270 int _start_col_offset = p->tokens[_mark]->col_offset;
9271 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009272 { // star_target !','
9273 expr_ty a;
9274 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009275 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009276 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009277 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009278 )
9279 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009280 _res = a;
9281 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009282 p->error_indicator = 1;
9283 return NULL;
9284 }
9285 goto done;
9286 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009287 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009288 }
9289 { // star_target ((',' star_target))* ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009290 void *_opt_var;
9291 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009292 expr_ty a;
9293 asdl_seq * b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009294 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009295 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009296 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009297 (b = _loop0_117_rule(p)) // ((',' star_target))*
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009298 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009299 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009300 )
9301 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009302 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9303 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009304 return NULL;
9305 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009306 int _end_lineno = _token->end_lineno;
9307 UNUSED(_end_lineno); // Only used by EXTRA macro
9308 int _end_col_offset = _token->end_col_offset;
9309 UNUSED(_end_col_offset); // Only used by EXTRA macro
9310 _res = _Py_Tuple ( CHECK ( _PyPegen_seq_insert_in_front ( p , a , b ) ) , Store , EXTRA );
9311 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009312 p->error_indicator = 1;
9313 return NULL;
9314 }
9315 goto done;
9316 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009317 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009318 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009319 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009320 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009321 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009322}
9323
9324// star_targets_seq: ','.star_target+ ','?
9325static asdl_seq*
9326star_targets_seq_rule(Parser *p)
9327{
9328 if (p->error_indicator) {
9329 return NULL;
9330 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009331 asdl_seq* _res = NULL;
9332 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009333 { // ','.star_target+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009334 void *_opt_var;
9335 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009336 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009337 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009338 (a = _gather_118_rule(p)) // ','.star_target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009339 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009340 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009341 )
9342 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009343 _res = a;
9344 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009345 p->error_indicator = 1;
9346 return NULL;
9347 }
9348 goto done;
9349 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009350 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009351 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009352 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009353 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009354 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009355}
9356
9357// star_target:
9358// | '*' (!'*' star_target)
9359// | t_primary '.' NAME !t_lookahead
9360// | t_primary '[' slices ']' !t_lookahead
9361// | star_atom
9362static expr_ty
9363star_target_rule(Parser *p)
9364{
9365 if (p->error_indicator) {
9366 return NULL;
9367 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009368 expr_ty _res = NULL;
9369 if (_PyPegen_is_memoized(p, star_target_type, &_res))
9370 return _res;
9371 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009372 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9373 p->error_indicator = 1;
9374 return NULL;
9375 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009376 int _start_lineno = p->tokens[_mark]->lineno;
9377 UNUSED(_start_lineno); // Only used by EXTRA macro
9378 int _start_col_offset = p->tokens[_mark]->col_offset;
9379 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009380 { // '*' (!'*' star_target)
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009381 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009382 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009383 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009384 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009385 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009386 (a = _tmp_120_rule(p)) // !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009387 )
9388 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009389 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9390 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009391 return NULL;
9392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009393 int _end_lineno = _token->end_lineno;
9394 UNUSED(_end_lineno); // Only used by EXTRA macro
9395 int _end_col_offset = _token->end_col_offset;
9396 UNUSED(_end_col_offset); // Only used by EXTRA macro
9397 _res = _Py_Starred ( CHECK ( _PyPegen_set_expr_context ( p , a , Store ) ) , Store , EXTRA );
9398 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009399 p->error_indicator = 1;
9400 return NULL;
9401 }
9402 goto done;
9403 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009404 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009405 }
9406 { // t_primary '.' NAME !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009407 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009408 expr_ty a;
9409 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009410 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009411 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009412 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009413 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009414 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009415 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009416 &&
9417 _PyPegen_lookahead(0, t_lookahead_rule, p)
9418 )
9419 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009420 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9421 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009422 return NULL;
9423 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009424 int _end_lineno = _token->end_lineno;
9425 UNUSED(_end_lineno); // Only used by EXTRA macro
9426 int _end_col_offset = _token->end_col_offset;
9427 UNUSED(_end_col_offset); // Only used by EXTRA macro
9428 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
9429 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009430 p->error_indicator = 1;
9431 return NULL;
9432 }
9433 goto done;
9434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009435 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009436 }
9437 { // t_primary '[' slices ']' !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009438 Token * _literal;
9439 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009440 expr_ty a;
9441 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009442 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009443 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009444 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009445 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009446 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009447 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009448 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009449 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009450 &&
9451 _PyPegen_lookahead(0, t_lookahead_rule, p)
9452 )
9453 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009454 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9455 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009456 return NULL;
9457 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009458 int _end_lineno = _token->end_lineno;
9459 UNUSED(_end_lineno); // Only used by EXTRA macro
9460 int _end_col_offset = _token->end_col_offset;
9461 UNUSED(_end_col_offset); // Only used by EXTRA macro
9462 _res = _Py_Subscript ( a , b , Store , EXTRA );
9463 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009464 p->error_indicator = 1;
9465 return NULL;
9466 }
9467 goto done;
9468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009469 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009470 }
9471 { // star_atom
9472 expr_ty star_atom_var;
9473 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009474 (star_atom_var = star_atom_rule(p)) // star_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009475 )
9476 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009477 _res = star_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009478 goto done;
9479 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009480 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009481 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009482 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009483 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009484 _PyPegen_insert_memo(p, _mark, star_target_type, _res);
9485 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009486}
9487
9488// star_atom:
9489// | NAME
9490// | '(' star_target ')'
9491// | '(' star_targets_seq? ')'
9492// | '[' star_targets_seq? ']'
9493static expr_ty
9494star_atom_rule(Parser *p)
9495{
9496 if (p->error_indicator) {
9497 return NULL;
9498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009499 expr_ty _res = NULL;
9500 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009501 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9502 p->error_indicator = 1;
9503 return NULL;
9504 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009505 int _start_lineno = p->tokens[_mark]->lineno;
9506 UNUSED(_start_lineno); // Only used by EXTRA macro
9507 int _start_col_offset = p->tokens[_mark]->col_offset;
9508 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009509 { // NAME
9510 expr_ty a;
9511 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009512 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009513 )
9514 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009515 _res = _PyPegen_set_expr_context ( p , a , Store );
9516 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009517 p->error_indicator = 1;
9518 return NULL;
9519 }
9520 goto done;
9521 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009522 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009523 }
9524 { // '(' star_target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009525 Token * _literal;
9526 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009527 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009528 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009529 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009530 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009531 (a = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009532 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009533 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009534 )
9535 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009536 _res = _PyPegen_set_expr_context ( p , a , Store );
9537 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009538 p->error_indicator = 1;
9539 return NULL;
9540 }
9541 goto done;
9542 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009543 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009544 }
9545 { // '(' star_targets_seq? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009546 Token * _literal;
9547 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009548 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009549 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009550 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009551 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009552 (a = star_targets_seq_rule(p), 1) // star_targets_seq?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009553 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009554 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009555 )
9556 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009557 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9558 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009559 return NULL;
9560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009561 int _end_lineno = _token->end_lineno;
9562 UNUSED(_end_lineno); // Only used by EXTRA macro
9563 int _end_col_offset = _token->end_col_offset;
9564 UNUSED(_end_col_offset); // Only used by EXTRA macro
9565 _res = _Py_Tuple ( a , Store , EXTRA );
9566 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009567 p->error_indicator = 1;
9568 return NULL;
9569 }
9570 goto done;
9571 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009572 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009573 }
9574 { // '[' star_targets_seq? ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009575 Token * _literal;
9576 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009577 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009578 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009579 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009580 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009581 (a = star_targets_seq_rule(p), 1) // star_targets_seq?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009582 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009583 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009584 )
9585 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009586 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9587 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009588 return NULL;
9589 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009590 int _end_lineno = _token->end_lineno;
9591 UNUSED(_end_lineno); // Only used by EXTRA macro
9592 int _end_col_offset = _token->end_col_offset;
9593 UNUSED(_end_col_offset); // Only used by EXTRA macro
9594 _res = _Py_List ( a , Store , EXTRA );
9595 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009596 p->error_indicator = 1;
9597 return NULL;
9598 }
9599 goto done;
9600 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009601 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009603 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009604 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009605 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009606}
9607
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03009608// single_target: single_subscript_attribute_target | NAME | '(' single_target ')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009609static expr_ty
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03009610single_target_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009611{
9612 if (p->error_indicator) {
9613 return NULL;
9614 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009615 expr_ty _res = NULL;
9616 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03009617 { // single_subscript_attribute_target
9618 expr_ty single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009619 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03009620 (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p)) // single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009621 )
9622 {
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03009623 _res = single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009624 goto done;
9625 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009626 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009627 }
9628 { // NAME
9629 expr_ty a;
9630 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009631 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009632 )
9633 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009634 _res = _PyPegen_set_expr_context ( p , a , Store );
9635 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009636 p->error_indicator = 1;
9637 return NULL;
9638 }
9639 goto done;
9640 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009641 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009642 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03009643 { // '(' single_target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009644 Token * _literal;
9645 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009646 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009647 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009648 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009649 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03009650 (a = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009651 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009652 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009653 )
9654 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009655 _res = a;
9656 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009657 p->error_indicator = 1;
9658 return NULL;
9659 }
9660 goto done;
9661 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009662 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009663 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009664 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009665 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009666 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009667}
9668
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03009669// single_subscript_attribute_target:
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009670// | t_primary '.' NAME !t_lookahead
9671// | t_primary '[' slices ']' !t_lookahead
9672static expr_ty
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +03009673single_subscript_attribute_target_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009674{
9675 if (p->error_indicator) {
9676 return NULL;
9677 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009678 expr_ty _res = NULL;
9679 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009680 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9681 p->error_indicator = 1;
9682 return NULL;
9683 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009684 int _start_lineno = p->tokens[_mark]->lineno;
9685 UNUSED(_start_lineno); // Only used by EXTRA macro
9686 int _start_col_offset = p->tokens[_mark]->col_offset;
9687 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009688 { // t_primary '.' NAME !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009689 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009690 expr_ty a;
9691 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009692 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009693 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009694 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009695 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009696 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009697 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009698 &&
9699 _PyPegen_lookahead(0, t_lookahead_rule, p)
9700 )
9701 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009702 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9703 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009704 return NULL;
9705 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009706 int _end_lineno = _token->end_lineno;
9707 UNUSED(_end_lineno); // Only used by EXTRA macro
9708 int _end_col_offset = _token->end_col_offset;
9709 UNUSED(_end_col_offset); // Only used by EXTRA macro
9710 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
9711 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009712 p->error_indicator = 1;
9713 return NULL;
9714 }
9715 goto done;
9716 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009717 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009718 }
9719 { // t_primary '[' slices ']' !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009720 Token * _literal;
9721 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009722 expr_ty a;
9723 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009724 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009725 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009726 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009727 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009728 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009729 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009730 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009731 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009732 &&
9733 _PyPegen_lookahead(0, t_lookahead_rule, p)
9734 )
9735 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009736 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9737 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009738 return NULL;
9739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009740 int _end_lineno = _token->end_lineno;
9741 UNUSED(_end_lineno); // Only used by EXTRA macro
9742 int _end_col_offset = _token->end_col_offset;
9743 UNUSED(_end_col_offset); // Only used by EXTRA macro
9744 _res = _Py_Subscript ( a , b , Store , EXTRA );
9745 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009746 p->error_indicator = 1;
9747 return NULL;
9748 }
9749 goto done;
9750 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009751 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009752 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009753 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009754 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009755 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009756}
9757
9758// del_targets: ','.del_target+ ','?
9759static asdl_seq*
9760del_targets_rule(Parser *p)
9761{
9762 if (p->error_indicator) {
9763 return NULL;
9764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009765 asdl_seq* _res = NULL;
9766 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009767 { // ','.del_target+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009768 void *_opt_var;
9769 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009770 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009771 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009772 (a = _gather_121_rule(p)) // ','.del_target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009773 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009774 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009775 )
9776 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009777 _res = a;
9778 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009779 p->error_indicator = 1;
9780 return NULL;
9781 }
9782 goto done;
9783 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009784 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009785 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009786 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009787 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009788 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009789}
9790
9791// del_target:
Shantanu27c0d9b2020-05-11 14:53:58 -07009792// | t_primary '.' NAME &del_target_end
9793// | t_primary '[' slices ']' &del_target_end
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009794// | del_t_atom
9795static expr_ty
9796del_target_rule(Parser *p)
9797{
9798 if (p->error_indicator) {
9799 return NULL;
9800 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009801 expr_ty _res = NULL;
9802 if (_PyPegen_is_memoized(p, del_target_type, &_res))
9803 return _res;
9804 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009805 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9806 p->error_indicator = 1;
9807 return NULL;
9808 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009809 int _start_lineno = p->tokens[_mark]->lineno;
9810 UNUSED(_start_lineno); // Only used by EXTRA macro
9811 int _start_col_offset = p->tokens[_mark]->col_offset;
9812 UNUSED(_start_col_offset); // Only used by EXTRA macro
Shantanu27c0d9b2020-05-11 14:53:58 -07009813 { // t_primary '.' NAME &del_target_end
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009814 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009815 expr_ty a;
9816 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009817 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009818 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009819 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009820 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009821 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009822 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009823 &&
Shantanu27c0d9b2020-05-11 14:53:58 -07009824 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009825 )
9826 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009827 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9828 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009829 return NULL;
9830 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009831 int _end_lineno = _token->end_lineno;
9832 UNUSED(_end_lineno); // Only used by EXTRA macro
9833 int _end_col_offset = _token->end_col_offset;
9834 UNUSED(_end_col_offset); // Only used by EXTRA macro
9835 _res = _Py_Attribute ( a , b -> v . Name . id , Del , EXTRA );
9836 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009837 p->error_indicator = 1;
9838 return NULL;
9839 }
9840 goto done;
9841 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009842 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009843 }
Shantanu27c0d9b2020-05-11 14:53:58 -07009844 { // t_primary '[' slices ']' &del_target_end
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009845 Token * _literal;
9846 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009847 expr_ty a;
9848 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009849 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009850 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009851 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009852 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009853 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009854 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009855 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009856 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009857 &&
Shantanu27c0d9b2020-05-11 14:53:58 -07009858 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009859 )
9860 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009861 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9862 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009863 return NULL;
9864 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009865 int _end_lineno = _token->end_lineno;
9866 UNUSED(_end_lineno); // Only used by EXTRA macro
9867 int _end_col_offset = _token->end_col_offset;
9868 UNUSED(_end_col_offset); // Only used by EXTRA macro
9869 _res = _Py_Subscript ( a , b , Del , EXTRA );
9870 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009871 p->error_indicator = 1;
9872 return NULL;
9873 }
9874 goto done;
9875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009876 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009877 }
9878 { // del_t_atom
9879 expr_ty del_t_atom_var;
9880 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009881 (del_t_atom_var = del_t_atom_rule(p)) // del_t_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009882 )
9883 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009884 _res = del_t_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009885 goto done;
9886 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009887 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009888 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009889 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009890 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009891 _PyPegen_insert_memo(p, _mark, del_target_type, _res);
9892 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009893}
9894
Shantanu27c0d9b2020-05-11 14:53:58 -07009895// del_t_atom:
9896// | NAME &del_target_end
9897// | '(' del_target ')'
9898// | '(' del_targets? ')'
9899// | '[' del_targets? ']'
9900// | invalid_del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009901static expr_ty
9902del_t_atom_rule(Parser *p)
9903{
9904 if (p->error_indicator) {
9905 return NULL;
9906 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009907 expr_ty _res = NULL;
9908 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009909 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9910 p->error_indicator = 1;
9911 return NULL;
9912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009913 int _start_lineno = p->tokens[_mark]->lineno;
9914 UNUSED(_start_lineno); // Only used by EXTRA macro
9915 int _start_col_offset = p->tokens[_mark]->col_offset;
9916 UNUSED(_start_col_offset); // Only used by EXTRA macro
Shantanu27c0d9b2020-05-11 14:53:58 -07009917 { // NAME &del_target_end
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009918 expr_ty a;
9919 if (
Pablo Galindo470aac42020-05-06 23:14:43 +01009920 (a = _PyPegen_name_token(p)) // NAME
Shantanu27c0d9b2020-05-11 14:53:58 -07009921 &&
9922 _PyPegen_lookahead(1, del_target_end_rule, p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009923 )
9924 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009925 _res = _PyPegen_set_expr_context ( p , a , Del );
9926 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009927 p->error_indicator = 1;
9928 return NULL;
9929 }
9930 goto done;
9931 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009932 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009933 }
9934 { // '(' del_target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009935 Token * _literal;
9936 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009937 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009938 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009939 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009940 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009941 (a = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009942 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009943 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009944 )
9945 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009946 _res = _PyPegen_set_expr_context ( p , a , Del );
9947 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009948 p->error_indicator = 1;
9949 return NULL;
9950 }
9951 goto done;
9952 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009953 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009954 }
9955 { // '(' del_targets? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009956 Token * _literal;
9957 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009958 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009959 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009960 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009961 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009962 (a = del_targets_rule(p), 1) // del_targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009963 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009964 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009965 )
9966 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009967 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9968 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009969 return NULL;
9970 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009971 int _end_lineno = _token->end_lineno;
9972 UNUSED(_end_lineno); // Only used by EXTRA macro
9973 int _end_col_offset = _token->end_col_offset;
9974 UNUSED(_end_col_offset); // Only used by EXTRA macro
9975 _res = _Py_Tuple ( a , Del , EXTRA );
9976 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009977 p->error_indicator = 1;
9978 return NULL;
9979 }
9980 goto done;
9981 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009982 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009983 }
9984 { // '[' del_targets? ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009985 Token * _literal;
9986 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009987 void *a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009988 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009989 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009990 &&
Pablo Galindo470aac42020-05-06 23:14:43 +01009991 (a = del_targets_rule(p), 1) // del_targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009992 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009993 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009994 )
9995 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +01009996 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9997 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +01009998 return NULL;
9999 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010000 int _end_lineno = _token->end_lineno;
10001 UNUSED(_end_lineno); // Only used by EXTRA macro
10002 int _end_col_offset = _token->end_col_offset;
10003 UNUSED(_end_col_offset); // Only used by EXTRA macro
10004 _res = _Py_List ( a , Del , EXTRA );
10005 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010006 p->error_indicator = 1;
10007 return NULL;
10008 }
10009 goto done;
10010 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010011 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010012 }
Shantanu27c0d9b2020-05-11 14:53:58 -070010013 { // invalid_del_target
10014 void *invalid_del_target_var;
10015 if (
10016 (invalid_del_target_var = invalid_del_target_rule(p)) // invalid_del_target
10017 )
10018 {
10019 _res = invalid_del_target_var;
10020 goto done;
10021 }
10022 p->mark = _mark;
10023 }
10024 _res = NULL;
10025 done:
10026 return _res;
10027}
10028
10029// del_target_end: ')' | ']' | ',' | ';' | NEWLINE
10030static void *
10031del_target_end_rule(Parser *p)
10032{
10033 if (p->error_indicator) {
10034 return NULL;
10035 }
10036 void * _res = NULL;
10037 int _mark = p->mark;
10038 { // ')'
10039 Token * _literal;
10040 if (
10041 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
10042 )
10043 {
10044 _res = _literal;
10045 goto done;
10046 }
10047 p->mark = _mark;
10048 }
10049 { // ']'
10050 Token * _literal;
10051 if (
10052 (_literal = _PyPegen_expect_token(p, 10)) // token=']'
10053 )
10054 {
10055 _res = _literal;
10056 goto done;
10057 }
10058 p->mark = _mark;
10059 }
10060 { // ','
10061 Token * _literal;
10062 if (
10063 (_literal = _PyPegen_expect_token(p, 12)) // token=','
10064 )
10065 {
10066 _res = _literal;
10067 goto done;
10068 }
10069 p->mark = _mark;
10070 }
10071 { // ';'
10072 Token * _literal;
10073 if (
10074 (_literal = _PyPegen_expect_token(p, 13)) // token=';'
10075 )
10076 {
10077 _res = _literal;
10078 goto done;
10079 }
10080 p->mark = _mark;
10081 }
10082 { // NEWLINE
10083 Token * newline_var;
10084 if (
10085 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
10086 )
10087 {
10088 _res = newline_var;
10089 goto done;
10090 }
10091 p->mark = _mark;
10092 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010093 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010094 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010095 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010096}
10097
10098// targets: ','.target+ ','?
10099static asdl_seq*
10100targets_rule(Parser *p)
10101{
10102 if (p->error_indicator) {
10103 return NULL;
10104 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010105 asdl_seq* _res = NULL;
10106 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010107 { // ','.target+ ','?
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010108 void *_opt_var;
10109 UNUSED(_opt_var); // Silence compiler warnings
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010110 asdl_seq * a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010111 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010112 (a = _gather_123_rule(p)) // ','.target+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010113 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010114 (_opt_var = _PyPegen_expect_token(p, 12), 1) // ','?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010115 )
10116 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010117 _res = a;
10118 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010119 p->error_indicator = 1;
10120 return NULL;
10121 }
10122 goto done;
10123 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010124 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010125 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010126 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010127 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010128 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010129}
10130
10131// target:
10132// | t_primary '.' NAME !t_lookahead
10133// | t_primary '[' slices ']' !t_lookahead
10134// | t_atom
10135static expr_ty
10136target_rule(Parser *p)
10137{
10138 if (p->error_indicator) {
10139 return NULL;
10140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010141 expr_ty _res = NULL;
10142 if (_PyPegen_is_memoized(p, target_type, &_res))
10143 return _res;
10144 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010145 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10146 p->error_indicator = 1;
10147 return NULL;
10148 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010149 int _start_lineno = p->tokens[_mark]->lineno;
10150 UNUSED(_start_lineno); // Only used by EXTRA macro
10151 int _start_col_offset = p->tokens[_mark]->col_offset;
10152 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010153 { // t_primary '.' NAME !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010154 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010155 expr_ty a;
10156 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010157 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010158 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010159 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010160 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010161 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010162 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010163 &&
10164 _PyPegen_lookahead(0, t_lookahead_rule, p)
10165 )
10166 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010167 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10168 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010169 return NULL;
10170 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010171 int _end_lineno = _token->end_lineno;
10172 UNUSED(_end_lineno); // Only used by EXTRA macro
10173 int _end_col_offset = _token->end_col_offset;
10174 UNUSED(_end_col_offset); // Only used by EXTRA macro
10175 _res = _Py_Attribute ( a , b -> v . Name . id , Store , EXTRA );
10176 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010177 p->error_indicator = 1;
10178 return NULL;
10179 }
10180 goto done;
10181 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010182 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010183 }
10184 { // t_primary '[' slices ']' !t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010185 Token * _literal;
10186 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010187 expr_ty a;
10188 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010189 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010190 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010191 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010192 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010193 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010194 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010195 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010196 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010197 &&
10198 _PyPegen_lookahead(0, t_lookahead_rule, p)
10199 )
10200 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010201 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10202 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010203 return NULL;
10204 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010205 int _end_lineno = _token->end_lineno;
10206 UNUSED(_end_lineno); // Only used by EXTRA macro
10207 int _end_col_offset = _token->end_col_offset;
10208 UNUSED(_end_col_offset); // Only used by EXTRA macro
10209 _res = _Py_Subscript ( a , b , Store , EXTRA );
10210 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010211 p->error_indicator = 1;
10212 return NULL;
10213 }
10214 goto done;
10215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010216 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010217 }
10218 { // t_atom
10219 expr_ty t_atom_var;
10220 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010221 (t_atom_var = t_atom_rule(p)) // t_atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010222 )
10223 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010224 _res = t_atom_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010225 goto done;
10226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010227 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010228 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010229 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010230 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010231 _PyPegen_insert_memo(p, _mark, target_type, _res);
10232 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010233}
10234
10235// Left-recursive
10236// t_primary:
10237// | t_primary '.' NAME &t_lookahead
10238// | t_primary '[' slices ']' &t_lookahead
10239// | t_primary genexp &t_lookahead
10240// | t_primary '(' arguments? ')' &t_lookahead
10241// | atom &t_lookahead
10242static expr_ty t_primary_raw(Parser *);
10243static expr_ty
10244t_primary_rule(Parser *p)
10245{
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010246 expr_ty _res = NULL;
10247 if (_PyPegen_is_memoized(p, t_primary_type, &_res))
10248 return _res;
10249 int _mark = p->mark;
10250 int _resmark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010251 while (1) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010252 int tmpvar_8 = _PyPegen_update_memo(p, _mark, t_primary_type, _res);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010253 if (tmpvar_8) {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010254 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010255 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010256 p->mark = _mark;
10257 void *_raw = t_primary_raw(p);
10258 if (_raw == NULL || p->mark <= _resmark)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010259 break;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010260 _resmark = p->mark;
10261 _res = _raw;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010263 p->mark = _resmark;
10264 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010265}
10266static expr_ty
10267t_primary_raw(Parser *p)
10268{
10269 if (p->error_indicator) {
10270 return NULL;
10271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010272 expr_ty _res = NULL;
10273 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010274 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10275 p->error_indicator = 1;
10276 return NULL;
10277 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010278 int _start_lineno = p->tokens[_mark]->lineno;
10279 UNUSED(_start_lineno); // Only used by EXTRA macro
10280 int _start_col_offset = p->tokens[_mark]->col_offset;
10281 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010282 { // t_primary '.' NAME &t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010283 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010284 expr_ty a;
10285 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010286 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010287 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010288 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010289 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010290 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010291 (b = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010292 &&
10293 _PyPegen_lookahead(1, t_lookahead_rule, p)
10294 )
10295 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010296 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10297 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010298 return NULL;
10299 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010300 int _end_lineno = _token->end_lineno;
10301 UNUSED(_end_lineno); // Only used by EXTRA macro
10302 int _end_col_offset = _token->end_col_offset;
10303 UNUSED(_end_col_offset); // Only used by EXTRA macro
10304 _res = _Py_Attribute ( a , b -> v . Name . id , Load , EXTRA );
10305 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010306 p->error_indicator = 1;
10307 return NULL;
10308 }
10309 goto done;
10310 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010311 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010312 }
10313 { // t_primary '[' slices ']' &t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010314 Token * _literal;
10315 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010316 expr_ty a;
10317 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010318 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010319 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010320 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010321 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010322 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010323 (b = slices_rule(p)) // slices
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010324 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010325 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010326 &&
10327 _PyPegen_lookahead(1, t_lookahead_rule, p)
10328 )
10329 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010330 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10331 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010332 return NULL;
10333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010334 int _end_lineno = _token->end_lineno;
10335 UNUSED(_end_lineno); // Only used by EXTRA macro
10336 int _end_col_offset = _token->end_col_offset;
10337 UNUSED(_end_col_offset); // Only used by EXTRA macro
10338 _res = _Py_Subscript ( a , b , Load , EXTRA );
10339 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010340 p->error_indicator = 1;
10341 return NULL;
10342 }
10343 goto done;
10344 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010345 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010346 }
10347 { // t_primary genexp &t_lookahead
10348 expr_ty a;
10349 expr_ty b;
10350 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010351 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010352 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010353 (b = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010354 &&
10355 _PyPegen_lookahead(1, t_lookahead_rule, p)
10356 )
10357 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010358 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10359 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010360 return NULL;
10361 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010362 int _end_lineno = _token->end_lineno;
10363 UNUSED(_end_lineno); // Only used by EXTRA macro
10364 int _end_col_offset = _token->end_col_offset;
10365 UNUSED(_end_col_offset); // Only used by EXTRA macro
10366 _res = _Py_Call ( a , CHECK ( _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
10367 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010368 p->error_indicator = 1;
10369 return NULL;
10370 }
10371 goto done;
10372 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010373 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010374 }
10375 { // t_primary '(' arguments? ')' &t_lookahead
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010376 Token * _literal;
10377 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010378 expr_ty a;
10379 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010380 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010381 (a = t_primary_rule(p)) // t_primary
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010382 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010383 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010384 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010385 (b = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010386 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010387 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010388 &&
10389 _PyPegen_lookahead(1, t_lookahead_rule, p)
10390 )
10391 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010392 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10393 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010394 return NULL;
10395 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010396 int _end_lineno = _token->end_lineno;
10397 UNUSED(_end_lineno); // Only used by EXTRA macro
10398 int _end_col_offset = _token->end_col_offset;
10399 UNUSED(_end_col_offset); // Only used by EXTRA macro
10400 _res = _Py_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
10401 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010402 p->error_indicator = 1;
10403 return NULL;
10404 }
10405 goto done;
10406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010407 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010408 }
10409 { // atom &t_lookahead
10410 expr_ty a;
10411 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010412 (a = atom_rule(p)) // atom
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010413 &&
10414 _PyPegen_lookahead(1, t_lookahead_rule, p)
10415 )
10416 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010417 _res = a;
10418 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010419 p->error_indicator = 1;
10420 return NULL;
10421 }
10422 goto done;
10423 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010424 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010425 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010426 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010427 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010428 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010429}
10430
10431// t_lookahead: '(' | '[' | '.'
10432static void *
10433t_lookahead_rule(Parser *p)
10434{
10435 if (p->error_indicator) {
10436 return NULL;
10437 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010438 void * _res = NULL;
10439 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010440 { // '('
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010441 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010442 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010443 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010444 )
10445 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010446 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010447 goto done;
10448 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010449 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010450 }
10451 { // '['
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010452 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010453 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010454 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010455 )
10456 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010457 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010458 goto done;
10459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010460 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010461 }
10462 { // '.'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010463 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010464 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010465 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010466 )
10467 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010468 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010469 goto done;
10470 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010471 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010472 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010473 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010474 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010475 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010476}
10477
10478// t_atom: NAME | '(' target ')' | '(' targets? ')' | '[' targets? ']'
10479static expr_ty
10480t_atom_rule(Parser *p)
10481{
10482 if (p->error_indicator) {
10483 return NULL;
10484 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010485 expr_ty _res = NULL;
10486 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010487 if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10488 p->error_indicator = 1;
10489 return NULL;
10490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010491 int _start_lineno = p->tokens[_mark]->lineno;
10492 UNUSED(_start_lineno); // Only used by EXTRA macro
10493 int _start_col_offset = p->tokens[_mark]->col_offset;
10494 UNUSED(_start_col_offset); // Only used by EXTRA macro
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010495 { // NAME
10496 expr_ty a;
10497 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010498 (a = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010499 )
10500 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010501 _res = _PyPegen_set_expr_context ( p , a , Store );
10502 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010503 p->error_indicator = 1;
10504 return NULL;
10505 }
10506 goto done;
10507 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010508 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010509 }
10510 { // '(' target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010511 Token * _literal;
10512 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010513 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010514 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010515 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010516 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010517 (a = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010518 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010519 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010520 )
10521 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010522 _res = _PyPegen_set_expr_context ( p , a , Store );
10523 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010524 p->error_indicator = 1;
10525 return NULL;
10526 }
10527 goto done;
10528 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010529 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010530 }
10531 { // '(' targets? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010532 Token * _literal;
10533 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010534 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010535 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010536 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010537 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010538 (b = targets_rule(p), 1) // targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010539 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010540 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010541 )
10542 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010543 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10544 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010545 return NULL;
10546 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010547 int _end_lineno = _token->end_lineno;
10548 UNUSED(_end_lineno); // Only used by EXTRA macro
10549 int _end_col_offset = _token->end_col_offset;
10550 UNUSED(_end_col_offset); // Only used by EXTRA macro
10551 _res = _Py_Tuple ( b , Store , EXTRA );
10552 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010553 p->error_indicator = 1;
10554 return NULL;
10555 }
10556 goto done;
10557 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010558 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010559 }
10560 { // '[' targets? ']'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010561 Token * _literal;
10562 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010563 void *b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010564 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010565 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010566 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010567 (b = targets_rule(p), 1) // targets?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010568 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010569 (_literal_1 = _PyPegen_expect_token(p, 10)) // token=']'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010570 )
10571 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010572 Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10573 if (_token == NULL) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010574 return NULL;
10575 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010576 int _end_lineno = _token->end_lineno;
10577 UNUSED(_end_lineno); // Only used by EXTRA macro
10578 int _end_col_offset = _token->end_col_offset;
10579 UNUSED(_end_col_offset); // Only used by EXTRA macro
10580 _res = _Py_List ( b , Store , EXTRA );
10581 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010582 p->error_indicator = 1;
10583 return NULL;
10584 }
10585 goto done;
10586 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010587 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010588 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010589 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010590 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010591 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010592}
10593
10594// incorrect_arguments:
10595// | args ',' '*'
10596// | expression for_if_clauses ',' [args | expression for_if_clauses]
10597// | args ',' args
10598static void *
10599incorrect_arguments_rule(Parser *p)
10600{
10601 if (p->error_indicator) {
10602 return NULL;
10603 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010604 void * _res = NULL;
10605 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010606 { // args ',' '*'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010607 Token * _literal;
10608 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010609 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010610 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010611 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010612 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010613 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010614 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010615 (_literal_1 = _PyPegen_expect_token(p, 16)) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010616 )
10617 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010618 _res = RAISE_SYNTAX_ERROR ( "iterable argument unpacking follows keyword argument unpacking" );
10619 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010620 p->error_indicator = 1;
10621 return NULL;
10622 }
10623 goto done;
10624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010625 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010626 }
10627 { // expression for_if_clauses ',' [args | expression for_if_clauses]
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010628 Token * _literal;
10629 void *_opt_var;
10630 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010631 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010632 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010633 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010634 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010635 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010636 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010637 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010638 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010639 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010640 (_opt_var = _tmp_125_rule(p), 1) // [args | expression for_if_clauses]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010641 )
10642 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010643 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "Generator expression must be parenthesized" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010644 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010645 p->error_indicator = 1;
10646 return NULL;
10647 }
10648 goto done;
10649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010650 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010651 }
10652 { // args ',' args
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010653 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010654 expr_ty a;
10655 expr_ty args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010656 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010657 (a = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010658 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010659 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010660 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010661 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010662 )
10663 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010664 _res = _PyPegen_arguments_parsing_error ( p , a );
10665 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010666 p->error_indicator = 1;
10667 return NULL;
10668 }
10669 goto done;
10670 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010671 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010672 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010673 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010674 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010675 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010676}
10677
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010678// invalid_kwarg: expression '='
10679static void *
10680invalid_kwarg_rule(Parser *p)
10681{
10682 if (p->error_indicator) {
10683 return NULL;
10684 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010685 void * _res = NULL;
10686 int _mark = p->mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010687 { // expression '='
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010688 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010689 expr_ty a;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010690 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010691 (a = expression_rule(p)) // expression
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010692 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010693 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010694 )
10695 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010696 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression cannot contain assignment, perhaps you meant \"==\"?" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010697 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010698 p->error_indicator = 1;
10699 return NULL;
10700 }
10701 goto done;
10702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010703 p->mark = _mark;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010704 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010705 _res = NULL;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010706 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010707 return _res;
Lysandros Nikolaou4638c642020-05-07 13:44:06 +030010708}
10709
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010710// invalid_named_expression: expression ':=' expression
10711static void *
10712invalid_named_expression_rule(Parser *p)
10713{
10714 if (p->error_indicator) {
10715 return NULL;
10716 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010717 void * _res = NULL;
10718 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010719 { // expression ':=' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010720 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010721 expr_ty a;
10722 expr_ty expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010723 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010724 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010725 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010726 (_literal = _PyPegen_expect_token(p, 53)) // token=':='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010727 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010728 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010729 )
10730 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010731 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use assignment expressions with %s" , _PyPegen_get_expr_name ( a ) );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010732 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010733 p->error_indicator = 1;
10734 return NULL;
10735 }
10736 goto done;
10737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010738 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010740 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010741 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010742 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010743}
10744
10745// invalid_assignment:
10746// | list ':'
10747// | tuple ':'
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010748// | star_named_expression ',' star_named_expressions* ':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010749// | expression ':' expression ['=' annotated_rhs]
10750// | expression ('=' | augassign) (yield_expr | star_expressions)
10751static void *
10752invalid_assignment_rule(Parser *p)
10753{
10754 if (p->error_indicator) {
10755 return NULL;
10756 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010757 void * _res = NULL;
10758 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010759 { // list ':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010760 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010761 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010762 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010763 (a = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010764 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010765 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010766 )
10767 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010768 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not list) can be annotated" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010769 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010770 p->error_indicator = 1;
10771 return NULL;
10772 }
10773 goto done;
10774 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010775 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010776 }
10777 { // tuple ':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010778 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010779 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010780 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010781 (a = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010782 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010783 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010784 )
10785 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010786 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
10787 if (_res == NULL && PyErr_Occurred()) {
10788 p->error_indicator = 1;
10789 return NULL;
10790 }
10791 goto done;
10792 }
10793 p->mark = _mark;
10794 }
10795 { // star_named_expression ',' star_named_expressions* ':'
10796 Token * _literal;
10797 Token * _literal_1;
10798 asdl_seq * _loop0_126_var;
10799 expr_ty a;
10800 if (
10801 (a = star_named_expression_rule(p)) // star_named_expression
10802 &&
10803 (_literal = _PyPegen_expect_token(p, 12)) // token=','
10804 &&
10805 (_loop0_126_var = _loop0_126_rule(p)) // star_named_expressions*
10806 &&
10807 (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':'
10808 )
10809 {
10810 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010811 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010812 p->error_indicator = 1;
10813 return NULL;
10814 }
10815 goto done;
10816 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010817 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010818 }
10819 { // expression ':' expression ['=' annotated_rhs]
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010820 Token * _literal;
10821 void *_opt_var;
10822 UNUSED(_opt_var); // Silence compiler warnings
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010823 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010824 expr_ty expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010825 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010826 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010827 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010828 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010829 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010830 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010831 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010832 (_opt_var = _tmp_127_rule(p), 1) // ['=' annotated_rhs]
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010833 )
10834 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010835 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "illegal target for annotation" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010836 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010837 p->error_indicator = 1;
10838 return NULL;
10839 }
10840 goto done;
10841 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010842 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010843 }
10844 { // expression ('=' | augassign) (yield_expr | star_expressions)
Guido van Rossum3941d972020-05-01 09:42:03 -070010845 void *_tmp_128_var;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010846 void *_tmp_129_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010847 expr_ty a;
10848 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010849 (a = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010850 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010851 (_tmp_128_var = _tmp_128_rule(p)) // '=' | augassign
Pablo Galindo2b74c832020-04-27 18:02:07 +010010852 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010853 (_tmp_129_var = _tmp_129_rule(p)) // yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010854 )
10855 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010856 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot assign to %s" , _PyPegen_get_expr_name ( a ) );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010857 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010858 p->error_indicator = 1;
10859 return NULL;
10860 }
10861 goto done;
10862 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010863 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010864 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010865 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010866 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010867 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010868}
10869
10870// invalid_block: NEWLINE !INDENT
10871static void *
10872invalid_block_rule(Parser *p)
10873{
10874 if (p->error_indicator) {
10875 return NULL;
10876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010877 void * _res = NULL;
10878 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010879 { // NEWLINE !INDENT
Pablo Galindob796b3f2020-05-01 12:32:26 +010010880 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010881 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010010882 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010883 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010884 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT) // token=INDENT
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010885 )
10886 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010887 _res = RAISE_INDENTATION_ERROR ( "expected an indented block" );
10888 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010889 p->error_indicator = 1;
10890 return NULL;
10891 }
10892 goto done;
10893 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010894 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010895 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010896 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010897 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010898 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010899}
10900
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010901// invalid_comprehension: ('[' | '(' | '{') starred_expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010902static void *
10903invalid_comprehension_rule(Parser *p)
10904{
10905 if (p->error_indicator) {
10906 return NULL;
10907 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010908 void * _res = NULL;
10909 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010910 { // ('[' | '(' | '{') starred_expression for_if_clauses
10911 void *_tmp_130_var;
10912 expr_ty a;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010913 asdl_seq* for_if_clauses_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010914 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010915 (_tmp_130_var = _tmp_130_rule(p)) // '[' | '(' | '{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010916 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010917 (a = starred_expression_rule(p)) // starred_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010918 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010919 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010920 )
10921 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010922 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "iterable unpacking cannot be used in comprehension" );
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010923 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010924 p->error_indicator = 1;
10925 return NULL;
10926 }
10927 goto done;
10928 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010929 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010930 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010931 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010932 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010933 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010934}
10935
10936// invalid_parameters:
Guido van Rossumc001c092020-04-30 12:12:19 -070010937// | param_no_default* (slash_with_default | param_with_default+) param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010938static void *
10939invalid_parameters_rule(Parser *p)
10940{
10941 if (p->error_indicator) {
10942 return NULL;
10943 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010944 void * _res = NULL;
10945 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070010946 { // param_no_default* (slash_with_default | param_with_default+) param_no_default
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010947 asdl_seq * _loop0_131_var;
10948 void *_tmp_132_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070010949 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010950 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010951 (_loop0_131_var = _loop0_131_rule(p)) // param_no_default*
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010952 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010953 (_tmp_132_var = _tmp_132_rule(p)) // slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010954 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010010955 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010956 )
10957 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010958 _res = RAISE_SYNTAX_ERROR ( "non-default argument follows default argument" );
10959 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010960 p->error_indicator = 1;
10961 return NULL;
10962 }
10963 goto done;
10964 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010965 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010966 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010967 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010968 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010969 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010010970}
10971
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010972// invalid_star_etc: '*' (')' | ',' (')' | '**'))
10973static void *
10974invalid_star_etc_rule(Parser *p)
10975{
10976 if (p->error_indicator) {
10977 return NULL;
10978 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010979 void * _res = NULL;
10980 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010981 { // '*' (')' | ',' (')' | '**'))
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010982 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010983 void *_tmp_133_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010984 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010985 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010986 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030010987 (_tmp_133_var = _tmp_133_rule(p)) // ')' | ',' (')' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010988 )
10989 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010990 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
10991 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010992 p->error_indicator = 1;
10993 return NULL;
10994 }
10995 goto done;
10996 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010997 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030010998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010010999 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011000 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011001 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011002}
11003
11004// invalid_lambda_star_etc: '*' (':' | ',' (':' | '**'))
11005static void *
11006invalid_lambda_star_etc_rule(Parser *p)
11007{
11008 if (p->error_indicator) {
11009 return NULL;
11010 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011011 void * _res = NULL;
11012 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011013 { // '*' (':' | ',' (':' | '**'))
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011014 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011015 void *_tmp_134_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011016 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011017 (_literal = _PyPegen_expect_token(p, 16)) // token='*'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011018 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011019 (_tmp_134_var = _tmp_134_rule(p)) // ':' | ',' (':' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011020 )
11021 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011022 _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
11023 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011024 p->error_indicator = 1;
11025 return NULL;
11026 }
11027 goto done;
11028 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011029 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011030 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011031 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011032 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011033 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030011034}
11035
Guido van Rossumc001c092020-04-30 12:12:19 -070011036// invalid_double_type_comments: TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
11037static void *
11038invalid_double_type_comments_rule(Parser *p)
11039{
11040 if (p->error_indicator) {
11041 return NULL;
11042 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011043 void * _res = NULL;
11044 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011045 { // TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
Pablo Galindob796b3f2020-05-01 12:32:26 +010011046 Token * indent_var;
11047 Token * newline_var;
11048 Token * newline_var_1;
11049 Token * type_comment_var;
11050 Token * type_comment_var_1;
Guido van Rossumc001c092020-04-30 12:12:19 -070011051 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011052 (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070011053 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011054 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070011055 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011056 (type_comment_var_1 = _PyPegen_expect_token(p, TYPE_COMMENT)) // token='TYPE_COMMENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070011057 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011058 (newline_var_1 = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070011059 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011060 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070011061 )
11062 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011063 _res = RAISE_SYNTAX_ERROR ( "Cannot have two type comments on def" );
11064 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011065 p->error_indicator = 1;
11066 return NULL;
11067 }
11068 goto done;
11069 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011070 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011071 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011072 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011073 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011074 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011075}
11076
Shantanu27c0d9b2020-05-11 14:53:58 -070011077// invalid_del_target: star_expression &del_target_end
11078static void *
11079invalid_del_target_rule(Parser *p)
11080{
11081 if (p->error_indicator) {
11082 return NULL;
11083 }
11084 void * _res = NULL;
11085 int _mark = p->mark;
11086 { // star_expression &del_target_end
11087 expr_ty a;
11088 if (
11089 (a = star_expression_rule(p)) // star_expression
11090 &&
11091 _PyPegen_lookahead(1, del_target_end_rule, p)
11092 )
11093 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030011094 _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot delete %s" , _PyPegen_get_expr_name ( a ) );
Shantanu27c0d9b2020-05-11 14:53:58 -070011095 if (_res == NULL && PyErr_Occurred()) {
11096 p->error_indicator = 1;
11097 return NULL;
11098 }
11099 goto done;
11100 }
11101 p->mark = _mark;
11102 }
11103 _res = NULL;
11104 done:
11105 return _res;
11106}
11107
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011108// _loop0_1: NEWLINE
11109static asdl_seq *
11110_loop0_1_rule(Parser *p)
11111{
11112 if (p->error_indicator) {
11113 return NULL;
11114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011115 void *_res = NULL;
11116 int _mark = p->mark;
11117 int _start_mark = p->mark;
11118 void **_children = PyMem_Malloc(sizeof(void *));
11119 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011120 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11121 return NULL;
11122 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011123 ssize_t _children_capacity = 1;
11124 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011125 { // NEWLINE
Pablo Galindob796b3f2020-05-01 12:32:26 +010011126 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011127 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010011128 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011129 )
11130 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011131 _res = newline_var;
11132 if (_n == _children_capacity) {
11133 _children_capacity *= 2;
11134 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11135 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011136 PyErr_Format(PyExc_MemoryError, "realloc None");
11137 return NULL;
11138 }
11139 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011140 _children[_n++] = _res;
11141 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011142 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011143 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011144 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011145 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11146 if (!_seq) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011147 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_1");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011148 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011149 return NULL;
11150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011151 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11152 PyMem_Free(_children);
11153 _PyPegen_insert_memo(p, _start_mark, _loop0_1_type, _seq);
11154 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011155}
11156
Guido van Rossumc001c092020-04-30 12:12:19 -070011157// _loop0_2: NEWLINE
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011158static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070011159_loop0_2_rule(Parser *p)
11160{
11161 if (p->error_indicator) {
11162 return NULL;
11163 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011164 void *_res = NULL;
11165 int _mark = p->mark;
11166 int _start_mark = p->mark;
11167 void **_children = PyMem_Malloc(sizeof(void *));
11168 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011169 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11170 return NULL;
11171 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011172 ssize_t _children_capacity = 1;
11173 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011174 { // NEWLINE
Pablo Galindob796b3f2020-05-01 12:32:26 +010011175 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070011176 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010011177 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070011178 )
11179 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011180 _res = newline_var;
11181 if (_n == _children_capacity) {
11182 _children_capacity *= 2;
11183 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11184 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011185 PyErr_Format(PyExc_MemoryError, "realloc None");
11186 return NULL;
11187 }
11188 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011189 _children[_n++] = _res;
11190 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011191 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011192 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011193 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011194 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11195 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011196 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_2");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011197 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011198 return NULL;
11199 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011200 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11201 PyMem_Free(_children);
11202 _PyPegen_insert_memo(p, _start_mark, _loop0_2_type, _seq);
11203 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011204}
11205
11206// _loop0_4: ',' expression
11207static asdl_seq *
11208_loop0_4_rule(Parser *p)
11209{
11210 if (p->error_indicator) {
11211 return NULL;
11212 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011213 void *_res = NULL;
11214 int _mark = p->mark;
11215 int _start_mark = p->mark;
11216 void **_children = PyMem_Malloc(sizeof(void *));
11217 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011218 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11219 return NULL;
11220 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011221 ssize_t _children_capacity = 1;
11222 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011223 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011224 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011225 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011226 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011227 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011228 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011229 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011230 )
11231 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011232 _res = elem;
11233 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011234 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011235 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011236 return NULL;
11237 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011238 if (_n == _children_capacity) {
11239 _children_capacity *= 2;
11240 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11241 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011242 PyErr_Format(PyExc_MemoryError, "realloc None");
11243 return NULL;
11244 }
11245 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011246 _children[_n++] = _res;
11247 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011249 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011250 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011251 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11252 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011253 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_4");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011254 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011255 return NULL;
11256 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011257 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11258 PyMem_Free(_children);
11259 _PyPegen_insert_memo(p, _start_mark, _loop0_4_type, _seq);
11260 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011261}
11262
11263// _gather_3: expression _loop0_4
11264static asdl_seq *
11265_gather_3_rule(Parser *p)
11266{
11267 if (p->error_indicator) {
11268 return NULL;
11269 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011270 asdl_seq * _res = NULL;
11271 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011272 { // expression _loop0_4
11273 expr_ty elem;
11274 asdl_seq * seq;
11275 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011276 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011277 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011278 (seq = _loop0_4_rule(p)) // _loop0_4
Guido van Rossumc001c092020-04-30 12:12:19 -070011279 )
11280 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011281 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011282 goto done;
11283 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011284 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011286 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011287 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011288 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011289}
11290
11291// _loop0_6: ',' expression
11292static asdl_seq *
11293_loop0_6_rule(Parser *p)
11294{
11295 if (p->error_indicator) {
11296 return NULL;
11297 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011298 void *_res = NULL;
11299 int _mark = p->mark;
11300 int _start_mark = p->mark;
11301 void **_children = PyMem_Malloc(sizeof(void *));
11302 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011303 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11304 return NULL;
11305 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011306 ssize_t _children_capacity = 1;
11307 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011308 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011309 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011310 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011311 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011312 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011313 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011314 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011315 )
11316 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011317 _res = elem;
11318 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011319 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011320 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011321 return NULL;
11322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011323 if (_n == _children_capacity) {
11324 _children_capacity *= 2;
11325 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11326 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011327 PyErr_Format(PyExc_MemoryError, "realloc None");
11328 return NULL;
11329 }
11330 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011331 _children[_n++] = _res;
11332 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011334 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011335 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011336 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11337 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011338 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_6");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011339 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011340 return NULL;
11341 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011342 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11343 PyMem_Free(_children);
11344 _PyPegen_insert_memo(p, _start_mark, _loop0_6_type, _seq);
11345 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011346}
11347
11348// _gather_5: expression _loop0_6
11349static asdl_seq *
11350_gather_5_rule(Parser *p)
11351{
11352 if (p->error_indicator) {
11353 return NULL;
11354 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011355 asdl_seq * _res = NULL;
11356 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011357 { // expression _loop0_6
11358 expr_ty elem;
11359 asdl_seq * seq;
11360 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011361 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011362 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011363 (seq = _loop0_6_rule(p)) // _loop0_6
Guido van Rossumc001c092020-04-30 12:12:19 -070011364 )
11365 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011366 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011367 goto done;
11368 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011369 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011370 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011371 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011372 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011373 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011374}
11375
11376// _loop0_8: ',' expression
11377static asdl_seq *
11378_loop0_8_rule(Parser *p)
11379{
11380 if (p->error_indicator) {
11381 return NULL;
11382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011383 void *_res = NULL;
11384 int _mark = p->mark;
11385 int _start_mark = p->mark;
11386 void **_children = PyMem_Malloc(sizeof(void *));
11387 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011388 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11389 return NULL;
11390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011391 ssize_t _children_capacity = 1;
11392 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011393 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011394 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011395 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011396 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011397 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011398 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011399 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011400 )
11401 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011402 _res = elem;
11403 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011404 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011405 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011406 return NULL;
11407 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011408 if (_n == _children_capacity) {
11409 _children_capacity *= 2;
11410 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11411 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011412 PyErr_Format(PyExc_MemoryError, "realloc None");
11413 return NULL;
11414 }
11415 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011416 _children[_n++] = _res;
11417 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011418 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011419 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011421 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11422 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011423 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_8");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011424 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011425 return NULL;
11426 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011427 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11428 PyMem_Free(_children);
11429 _PyPegen_insert_memo(p, _start_mark, _loop0_8_type, _seq);
11430 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011431}
11432
11433// _gather_7: expression _loop0_8
11434static asdl_seq *
11435_gather_7_rule(Parser *p)
11436{
11437 if (p->error_indicator) {
11438 return NULL;
11439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011440 asdl_seq * _res = NULL;
11441 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011442 { // expression _loop0_8
11443 expr_ty elem;
11444 asdl_seq * seq;
11445 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011446 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011447 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011448 (seq = _loop0_8_rule(p)) // _loop0_8
Guido van Rossumc001c092020-04-30 12:12:19 -070011449 )
11450 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011451 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011452 goto done;
11453 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011454 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011455 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011456 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011457 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011458 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011459}
11460
11461// _loop0_10: ',' expression
11462static asdl_seq *
11463_loop0_10_rule(Parser *p)
11464{
11465 if (p->error_indicator) {
11466 return NULL;
11467 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011468 void *_res = NULL;
11469 int _mark = p->mark;
11470 int _start_mark = p->mark;
11471 void **_children = PyMem_Malloc(sizeof(void *));
11472 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011473 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11474 return NULL;
11475 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011476 ssize_t _children_capacity = 1;
11477 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070011478 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011479 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070011480 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070011481 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011482 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070011483 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011484 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011485 )
11486 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011487 _res = elem;
11488 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011489 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011490 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011491 return NULL;
11492 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011493 if (_n == _children_capacity) {
11494 _children_capacity *= 2;
11495 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11496 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011497 PyErr_Format(PyExc_MemoryError, "realloc None");
11498 return NULL;
11499 }
11500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011501 _children[_n++] = _res;
11502 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011504 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011505 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011506 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11507 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011508 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_10");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011509 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070011510 return NULL;
11511 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011512 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11513 PyMem_Free(_children);
11514 _PyPegen_insert_memo(p, _start_mark, _loop0_10_type, _seq);
11515 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070011516}
11517
11518// _gather_9: expression _loop0_10
11519static asdl_seq *
11520_gather_9_rule(Parser *p)
11521{
11522 if (p->error_indicator) {
11523 return NULL;
11524 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011525 asdl_seq * _res = NULL;
11526 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011527 { // expression _loop0_10
11528 expr_ty elem;
11529 asdl_seq * seq;
11530 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011531 (elem = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070011532 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011533 (seq = _loop0_10_rule(p)) // _loop0_10
Guido van Rossumc001c092020-04-30 12:12:19 -070011534 )
11535 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011536 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070011537 goto done;
11538 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011539 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011541 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070011542 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011543 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070011544}
11545
11546// _loop1_11: statement
11547static asdl_seq *
11548_loop1_11_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011549{
11550 if (p->error_indicator) {
11551 return NULL;
11552 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011553 void *_res = NULL;
11554 int _mark = p->mark;
11555 int _start_mark = p->mark;
11556 void **_children = PyMem_Malloc(sizeof(void *));
11557 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011558 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11559 return NULL;
11560 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011561 ssize_t _children_capacity = 1;
11562 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011563 { // statement
11564 asdl_seq* statement_var;
11565 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010011566 (statement_var = statement_rule(p)) // statement
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011567 )
11568 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011569 _res = statement_var;
11570 if (_n == _children_capacity) {
11571 _children_capacity *= 2;
11572 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11573 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011574 PyErr_Format(PyExc_MemoryError, "realloc None");
11575 return NULL;
11576 }
11577 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011578 _children[_n++] = _res;
11579 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011580 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011581 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011582 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011583 if (_n == 0 || p->error_indicator) {
11584 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011585 return NULL;
11586 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011587 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11588 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011589 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_11");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011590 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011591 return NULL;
11592 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011593 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11594 PyMem_Free(_children);
11595 _PyPegen_insert_memo(p, _start_mark, _loop1_11_type, _seq);
11596 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011597}
11598
Guido van Rossumc001c092020-04-30 12:12:19 -070011599// _loop0_13: ';' small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011600static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070011601_loop0_13_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011602{
11603 if (p->error_indicator) {
11604 return NULL;
11605 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011606 void *_res = NULL;
11607 int _mark = p->mark;
11608 int _start_mark = p->mark;
11609 void **_children = PyMem_Malloc(sizeof(void *));
11610 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011611 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11612 return NULL;
11613 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011614 ssize_t _children_capacity = 1;
11615 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011616 { // ';' small_stmt
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011617 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011618 stmt_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011619 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011620 (_literal = _PyPegen_expect_token(p, 13)) // token=';'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011621 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011622 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011623 )
11624 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011625 _res = elem;
11626 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011627 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011628 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011629 return NULL;
11630 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011631 if (_n == _children_capacity) {
11632 _children_capacity *= 2;
11633 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
11634 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011635 PyErr_Format(PyExc_MemoryError, "realloc None");
11636 return NULL;
11637 }
11638 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011639 _children[_n++] = _res;
11640 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011642 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011643 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011644 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
11645 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070011646 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_13");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011647 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011648 return NULL;
11649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011650 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
11651 PyMem_Free(_children);
11652 _PyPegen_insert_memo(p, _start_mark, _loop0_13_type, _seq);
11653 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011654}
11655
Guido van Rossumc001c092020-04-30 12:12:19 -070011656// _gather_12: small_stmt _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011657static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070011658_gather_12_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011659{
11660 if (p->error_indicator) {
11661 return NULL;
11662 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011663 asdl_seq * _res = NULL;
11664 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070011665 { // small_stmt _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011666 stmt_ty elem;
11667 asdl_seq * seq;
11668 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011669 (elem = small_stmt_rule(p)) // small_stmt
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011670 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011671 (seq = _loop0_13_rule(p)) // _loop0_13
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011672 )
11673 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011674 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011675 goto done;
11676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011677 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011678 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011679 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011680 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011681 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011682}
11683
Guido van Rossumc001c092020-04-30 12:12:19 -070011684// _tmp_14: 'import' | 'from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011685static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011686_tmp_14_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011687{
11688 if (p->error_indicator) {
11689 return NULL;
11690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011691 void * _res = NULL;
11692 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011693 { // 'import'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011694 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011695 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011696 (_keyword = _PyPegen_expect_token(p, 513)) // token='import'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011697 )
11698 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011699 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011700 goto done;
11701 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011702 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011703 }
11704 { // 'from'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011705 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011706 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011707 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011708 )
11709 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011710 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011711 goto done;
11712 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011713 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011714 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011715 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011716 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011717 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011718}
11719
Guido van Rossumc001c092020-04-30 12:12:19 -070011720// _tmp_15: 'def' | '@' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011721static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011722_tmp_15_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011723{
11724 if (p->error_indicator) {
11725 return NULL;
11726 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011727 void * _res = NULL;
11728 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011729 { // 'def'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011730 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011731 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011732 (_keyword = _PyPegen_expect_token(p, 522)) // token='def'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011733 )
11734 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011735 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011736 goto done;
11737 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011738 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011739 }
11740 { // '@'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011741 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011742 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011743 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011744 )
11745 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011746 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011747 goto done;
11748 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011749 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011750 }
11751 { // ASYNC
Pablo Galindob796b3f2020-05-01 12:32:26 +010011752 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011753 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011754 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011755 )
11756 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011757 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011758 goto done;
11759 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011760 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011761 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011762 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011763 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011764 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011765}
11766
Guido van Rossumc001c092020-04-30 12:12:19 -070011767// _tmp_16: 'class' | '@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011768static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011769_tmp_16_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011770{
11771 if (p->error_indicator) {
11772 return NULL;
11773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011774 void * _res = NULL;
11775 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011776 { // 'class'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011777 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011778 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011779 (_keyword = _PyPegen_expect_token(p, 523)) // token='class'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011780 )
11781 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011782 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011783 goto done;
11784 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011785 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011786 }
11787 { // '@'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011788 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011789 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011790 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011791 )
11792 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011793 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011794 goto done;
11795 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011796 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011797 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011798 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011799 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011800 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011801}
11802
Guido van Rossumc001c092020-04-30 12:12:19 -070011803// _tmp_17: 'with' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011804static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011805_tmp_17_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011806{
11807 if (p->error_indicator) {
11808 return NULL;
11809 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011810 void * _res = NULL;
11811 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011812 { // 'with'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011813 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011814 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011815 (_keyword = _PyPegen_expect_token(p, 519)) // token='with'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011816 )
11817 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011818 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011819 goto done;
11820 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011821 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011822 }
11823 { // ASYNC
Pablo Galindob796b3f2020-05-01 12:32:26 +010011824 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011825 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011826 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011827 )
11828 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011829 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011830 goto done;
11831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011832 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011834 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011835 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011836 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011837}
11838
Guido van Rossumc001c092020-04-30 12:12:19 -070011839// _tmp_18: 'for' | ASYNC
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011840static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011841_tmp_18_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011842{
11843 if (p->error_indicator) {
11844 return NULL;
11845 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011846 void * _res = NULL;
11847 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011848 { // 'for'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011849 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011850 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011851 (_keyword = _PyPegen_expect_token(p, 517)) // token='for'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011852 )
11853 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011854 _res = _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011855 goto done;
11856 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011857 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011858 }
11859 { // ASYNC
Pablo Galindob796b3f2020-05-01 12:32:26 +010011860 Token * async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011861 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010011862 (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011863 )
11864 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011865 _res = async_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011866 goto done;
11867 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011868 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011869 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011870 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011871 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011872 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011873}
11874
Guido van Rossumc001c092020-04-30 12:12:19 -070011875// _tmp_19: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011876static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011877_tmp_19_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011878{
11879 if (p->error_indicator) {
11880 return NULL;
11881 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011882 void * _res = NULL;
11883 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011884 { // '=' annotated_rhs
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011885 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011886 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011887 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011888 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011889 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011890 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011891 )
11892 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011893 _res = d;
11894 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011895 p->error_indicator = 1;
11896 return NULL;
11897 }
11898 goto done;
11899 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011900 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011901 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011902 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011903 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011904 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011905}
11906
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030011907// _tmp_20: '(' single_target ')' | single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011908static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011909_tmp_20_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011910{
11911 if (p->error_indicator) {
11912 return NULL;
11913 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011914 void * _res = NULL;
11915 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030011916 { // '(' single_target ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011917 Token * _literal;
11918 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011919 expr_ty b;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011920 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011921 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011922 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030011923 (b = single_target_rule(p)) // single_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011924 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011925 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011926 )
11927 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011928 _res = b;
11929 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011930 p->error_indicator = 1;
11931 return NULL;
11932 }
11933 goto done;
11934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011935 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011936 }
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030011937 { // single_subscript_attribute_target
11938 expr_ty single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011939 if (
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030011940 (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p)) // single_subscript_attribute_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011941 )
11942 {
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030011943 _res = single_subscript_attribute_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011944 goto done;
11945 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011946 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011947 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011948 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011949 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011950 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011951}
11952
Guido van Rossumc001c092020-04-30 12:12:19 -070011953// _tmp_21: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011954static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070011955_tmp_21_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011956{
11957 if (p->error_indicator) {
11958 return NULL;
11959 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011960 void * _res = NULL;
11961 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011962 { // '=' annotated_rhs
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011963 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011964 expr_ty d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011965 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011966 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011967 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010011968 (d = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011969 )
11970 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011971 _res = d;
11972 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011973 p->error_indicator = 1;
11974 return NULL;
11975 }
11976 goto done;
11977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011978 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011979 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011980 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011981 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011982 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011983}
11984
Guido van Rossumc001c092020-04-30 12:12:19 -070011985// _loop1_22: (star_targets '=')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011986static asdl_seq *
11987_loop1_22_rule(Parser *p)
11988{
11989 if (p->error_indicator) {
11990 return NULL;
11991 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010011992 void *_res = NULL;
11993 int _mark = p->mark;
11994 int _start_mark = p->mark;
11995 void **_children = PyMem_Malloc(sizeof(void *));
11996 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010011997 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
11998 return NULL;
11999 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012000 ssize_t _children_capacity = 1;
12001 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012002 { // (star_targets '=')
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012003 void *_tmp_135_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012004 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012005 (_tmp_135_var = _tmp_135_rule(p)) // star_targets '='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012006 )
12007 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012008 _res = _tmp_135_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012009 if (_n == _children_capacity) {
12010 _children_capacity *= 2;
12011 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12012 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012013 PyErr_Format(PyExc_MemoryError, "realloc None");
12014 return NULL;
12015 }
12016 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012017 _children[_n++] = _res;
12018 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012019 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012020 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012021 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012022 if (_n == 0 || p->error_indicator) {
12023 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012024 return NULL;
12025 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012026 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12027 if (!_seq) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012028 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_22");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012029 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012030 return NULL;
12031 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012032 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12033 PyMem_Free(_children);
12034 _PyPegen_insert_memo(p, _start_mark, _loop1_22_type, _seq);
12035 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012036}
12037
Guido van Rossumc001c092020-04-30 12:12:19 -070012038// _tmp_23: yield_expr | star_expressions
12039static void *
12040_tmp_23_rule(Parser *p)
12041{
12042 if (p->error_indicator) {
12043 return NULL;
12044 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012045 void * _res = NULL;
12046 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012047 { // yield_expr
12048 expr_ty yield_expr_var;
12049 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012050 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070012051 )
12052 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012053 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012054 goto done;
12055 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012056 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012057 }
12058 { // star_expressions
12059 expr_ty star_expressions_var;
12060 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012061 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070012062 )
12063 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012064 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012065 goto done;
12066 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012067 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012068 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012069 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012070 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012071 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012072}
12073
12074// _tmp_24: yield_expr | star_expressions
12075static void *
12076_tmp_24_rule(Parser *p)
12077{
12078 if (p->error_indicator) {
12079 return NULL;
12080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012081 void * _res = NULL;
12082 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012083 { // yield_expr
12084 expr_ty yield_expr_var;
12085 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012086 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Guido van Rossumc001c092020-04-30 12:12:19 -070012087 )
12088 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012089 _res = yield_expr_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012090 goto done;
12091 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012092 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012093 }
12094 { // star_expressions
12095 expr_ty star_expressions_var;
12096 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012097 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Guido van Rossumc001c092020-04-30 12:12:19 -070012098 )
12099 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012100 _res = star_expressions_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012101 goto done;
12102 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012103 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012104 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012105 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012106 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012107 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012108}
12109
12110// _loop0_26: ',' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012111static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012112_loop0_26_rule(Parser *p)
12113{
12114 if (p->error_indicator) {
12115 return NULL;
12116 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012117 void *_res = NULL;
12118 int _mark = p->mark;
12119 int _start_mark = p->mark;
12120 void **_children = PyMem_Malloc(sizeof(void *));
12121 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012122 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12123 return NULL;
12124 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012125 ssize_t _children_capacity = 1;
12126 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012127 { // ',' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012128 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012129 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012130 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012131 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012132 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012133 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070012134 )
12135 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012136 _res = elem;
12137 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012138 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012139 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012140 return NULL;
12141 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012142 if (_n == _children_capacity) {
12143 _children_capacity *= 2;
12144 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12145 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012146 PyErr_Format(PyExc_MemoryError, "realloc None");
12147 return NULL;
12148 }
12149 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012150 _children[_n++] = _res;
12151 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012153 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012154 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012155 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12156 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012157 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_26");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012158 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012159 return NULL;
12160 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012161 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12162 PyMem_Free(_children);
12163 _PyPegen_insert_memo(p, _start_mark, _loop0_26_type, _seq);
12164 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012165}
12166
12167// _gather_25: NAME _loop0_26
12168static asdl_seq *
12169_gather_25_rule(Parser *p)
12170{
12171 if (p->error_indicator) {
12172 return NULL;
12173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012174 asdl_seq * _res = NULL;
12175 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012176 { // NAME _loop0_26
12177 expr_ty elem;
12178 asdl_seq * seq;
12179 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012180 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070012181 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012182 (seq = _loop0_26_rule(p)) // _loop0_26
Guido van Rossumc001c092020-04-30 12:12:19 -070012183 )
12184 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012185 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012186 goto done;
12187 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012188 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012189 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012190 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012191 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012192 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012193}
12194
12195// _loop0_28: ',' NAME
12196static asdl_seq *
12197_loop0_28_rule(Parser *p)
12198{
12199 if (p->error_indicator) {
12200 return NULL;
12201 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012202 void *_res = NULL;
12203 int _mark = p->mark;
12204 int _start_mark = p->mark;
12205 void **_children = PyMem_Malloc(sizeof(void *));
12206 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012207 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12208 return NULL;
12209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012210 ssize_t _children_capacity = 1;
12211 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012212 { // ',' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012213 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012214 expr_ty elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070012215 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012216 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012217 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012218 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070012219 )
12220 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012221 _res = elem;
12222 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012223 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012224 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012225 return NULL;
12226 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012227 if (_n == _children_capacity) {
12228 _children_capacity *= 2;
12229 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12230 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012231 PyErr_Format(PyExc_MemoryError, "realloc None");
12232 return NULL;
12233 }
12234 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012235 _children[_n++] = _res;
12236 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012237 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012238 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012239 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012240 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12241 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012242 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_28");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012243 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012244 return NULL;
12245 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012246 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12247 PyMem_Free(_children);
12248 _PyPegen_insert_memo(p, _start_mark, _loop0_28_type, _seq);
12249 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012250}
12251
12252// _gather_27: NAME _loop0_28
12253static asdl_seq *
12254_gather_27_rule(Parser *p)
12255{
12256 if (p->error_indicator) {
12257 return NULL;
12258 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012259 asdl_seq * _res = NULL;
12260 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012261 { // NAME _loop0_28
12262 expr_ty elem;
12263 asdl_seq * seq;
12264 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012265 (elem = _PyPegen_name_token(p)) // NAME
Guido van Rossumc001c092020-04-30 12:12:19 -070012266 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012267 (seq = _loop0_28_rule(p)) // _loop0_28
Guido van Rossumc001c092020-04-30 12:12:19 -070012268 )
12269 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012270 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070012271 goto done;
12272 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012273 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012274 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012275 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012276 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012277 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012278}
12279
12280// _tmp_29: ',' expression
12281static void *
12282_tmp_29_rule(Parser *p)
12283{
12284 if (p->error_indicator) {
12285 return NULL;
12286 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012287 void * _res = NULL;
12288 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012289 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012290 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070012291 expr_ty z;
12292 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012293 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070012294 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012295 (z = expression_rule(p)) // expression
Guido van Rossumc001c092020-04-30 12:12:19 -070012296 )
12297 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012298 _res = z;
12299 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012300 p->error_indicator = 1;
12301 return NULL;
12302 }
12303 goto done;
12304 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012305 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012306 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012307 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070012308 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012309 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070012310}
12311
12312// _loop0_30: ('.' | '...')
12313static asdl_seq *
12314_loop0_30_rule(Parser *p)
12315{
12316 if (p->error_indicator) {
12317 return NULL;
12318 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012319 void *_res = NULL;
12320 int _mark = p->mark;
12321 int _start_mark = p->mark;
12322 void **_children = PyMem_Malloc(sizeof(void *));
12323 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012324 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12325 return NULL;
12326 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012327 ssize_t _children_capacity = 1;
12328 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012329 { // ('.' | '...')
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012330 void *_tmp_136_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012331 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012332 (_tmp_136_var = _tmp_136_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070012333 )
12334 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012335 _res = _tmp_136_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012336 if (_n == _children_capacity) {
12337 _children_capacity *= 2;
12338 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12339 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012340 PyErr_Format(PyExc_MemoryError, "realloc None");
12341 return NULL;
12342 }
12343 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012344 _children[_n++] = _res;
12345 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012346 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012347 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012348 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012349 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12350 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012351 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_30");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012352 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012353 return NULL;
12354 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012355 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12356 PyMem_Free(_children);
12357 _PyPegen_insert_memo(p, _start_mark, _loop0_30_type, _seq);
12358 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012359}
12360
12361// _loop1_31: ('.' | '...')
12362static asdl_seq *
12363_loop1_31_rule(Parser *p)
12364{
12365 if (p->error_indicator) {
12366 return NULL;
12367 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012368 void *_res = NULL;
12369 int _mark = p->mark;
12370 int _start_mark = p->mark;
12371 void **_children = PyMem_Malloc(sizeof(void *));
12372 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012373 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12374 return NULL;
12375 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012376 ssize_t _children_capacity = 1;
12377 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070012378 { // ('.' | '...')
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012379 void *_tmp_137_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070012380 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012381 (_tmp_137_var = _tmp_137_rule(p)) // '.' | '...'
Guido van Rossumc001c092020-04-30 12:12:19 -070012382 )
12383 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030012384 _res = _tmp_137_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012385 if (_n == _children_capacity) {
12386 _children_capacity *= 2;
12387 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12388 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012389 PyErr_Format(PyExc_MemoryError, "realloc None");
12390 return NULL;
12391 }
12392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012393 _children[_n++] = _res;
12394 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012395 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012396 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012397 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012398 if (_n == 0 || p->error_indicator) {
12399 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012400 return NULL;
12401 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012402 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12403 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012404 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_31");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012405 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070012406 return NULL;
12407 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012408 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12409 PyMem_Free(_children);
12410 _PyPegen_insert_memo(p, _start_mark, _loop1_31_type, _seq);
12411 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070012412}
12413
12414// _loop0_33: ',' import_from_as_name
12415static asdl_seq *
12416_loop0_33_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012417{
12418 if (p->error_indicator) {
12419 return NULL;
12420 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012421 void *_res = NULL;
12422 int _mark = p->mark;
12423 int _start_mark = p->mark;
12424 void **_children = PyMem_Malloc(sizeof(void *));
12425 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012426 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12427 return NULL;
12428 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012429 ssize_t _children_capacity = 1;
12430 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012431 { // ',' import_from_as_name
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012432 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012433 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012434 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012435 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012436 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012437 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012438 )
12439 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012440 _res = elem;
12441 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012442 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012443 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012444 return NULL;
12445 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012446 if (_n == _children_capacity) {
12447 _children_capacity *= 2;
12448 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12449 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012450 PyErr_Format(PyExc_MemoryError, "realloc None");
12451 return NULL;
12452 }
12453 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012454 _children[_n++] = _res;
12455 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012456 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012457 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012458 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012459 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12460 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012461 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_33");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012462 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012463 return NULL;
12464 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012465 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12466 PyMem_Free(_children);
12467 _PyPegen_insert_memo(p, _start_mark, _loop0_33_type, _seq);
12468 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012469}
12470
Guido van Rossumc001c092020-04-30 12:12:19 -070012471// _gather_32: import_from_as_name _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012472static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012473_gather_32_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012474{
12475 if (p->error_indicator) {
12476 return NULL;
12477 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012478 asdl_seq * _res = NULL;
12479 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012480 { // import_from_as_name _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012481 alias_ty elem;
12482 asdl_seq * seq;
12483 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012484 (elem = import_from_as_name_rule(p)) // import_from_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012485 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012486 (seq = _loop0_33_rule(p)) // _loop0_33
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012487 )
12488 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012489 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012490 goto done;
12491 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012492 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012493 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012494 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012495 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012496 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012497}
12498
Guido van Rossumc001c092020-04-30 12:12:19 -070012499// _tmp_34: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012500static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070012501_tmp_34_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012502{
12503 if (p->error_indicator) {
12504 return NULL;
12505 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012506 void * _res = NULL;
12507 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012508 { // 'as' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012509 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012510 expr_ty z;
12511 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012512 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012513 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012514 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012515 )
12516 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012517 _res = z;
12518 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012519 p->error_indicator = 1;
12520 return NULL;
12521 }
12522 goto done;
12523 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012524 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012525 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012526 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012527 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012528 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012529}
12530
Guido van Rossumc001c092020-04-30 12:12:19 -070012531// _loop0_36: ',' dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012532static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012533_loop0_36_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012534{
12535 if (p->error_indicator) {
12536 return NULL;
12537 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012538 void *_res = NULL;
12539 int _mark = p->mark;
12540 int _start_mark = p->mark;
12541 void **_children = PyMem_Malloc(sizeof(void *));
12542 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012543 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12544 return NULL;
12545 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012546 ssize_t _children_capacity = 1;
12547 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012548 { // ',' dotted_as_name
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012549 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012550 alias_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012551 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012552 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012553 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012554 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012555 )
12556 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012557 _res = elem;
12558 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012559 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012560 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012561 return NULL;
12562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012563 if (_n == _children_capacity) {
12564 _children_capacity *= 2;
12565 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12566 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012567 PyErr_Format(PyExc_MemoryError, "realloc None");
12568 return NULL;
12569 }
12570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012571 _children[_n++] = _res;
12572 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012573 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012574 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012575 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012576 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12577 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012578 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_36");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012579 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012580 return NULL;
12581 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012582 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12583 PyMem_Free(_children);
12584 _PyPegen_insert_memo(p, _start_mark, _loop0_36_type, _seq);
12585 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012586}
12587
Guido van Rossumc001c092020-04-30 12:12:19 -070012588// _gather_35: dotted_as_name _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012589static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012590_gather_35_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012591{
12592 if (p->error_indicator) {
12593 return NULL;
12594 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012595 asdl_seq * _res = NULL;
12596 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012597 { // dotted_as_name _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012598 alias_ty elem;
12599 asdl_seq * seq;
12600 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012601 (elem = dotted_as_name_rule(p)) // dotted_as_name
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012602 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012603 (seq = _loop0_36_rule(p)) // _loop0_36
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012604 )
12605 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012606 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012607 goto done;
12608 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012609 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012610 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012611 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012612 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012613 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012614}
12615
Guido van Rossumc001c092020-04-30 12:12:19 -070012616// _tmp_37: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012617static void *
Guido van Rossumc001c092020-04-30 12:12:19 -070012618_tmp_37_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012619{
12620 if (p->error_indicator) {
12621 return NULL;
12622 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012623 void * _res = NULL;
12624 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012625 { // 'as' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012626 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012627 expr_ty z;
12628 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012629 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012630 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012631 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012632 )
12633 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012634 _res = z;
12635 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012636 p->error_indicator = 1;
12637 return NULL;
12638 }
12639 goto done;
12640 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012641 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012642 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012643 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012644 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012645 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012646}
12647
Guido van Rossumc001c092020-04-30 12:12:19 -070012648// _loop0_39: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012649static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012650_loop0_39_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012651{
12652 if (p->error_indicator) {
12653 return NULL;
12654 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012655 void *_res = NULL;
12656 int _mark = p->mark;
12657 int _start_mark = p->mark;
12658 void **_children = PyMem_Malloc(sizeof(void *));
12659 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012660 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12661 return NULL;
12662 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012663 ssize_t _children_capacity = 1;
12664 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012665 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012666 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012667 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012668 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012669 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012670 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012671 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012672 )
12673 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012674 _res = elem;
12675 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012676 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012677 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012678 return NULL;
12679 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012680 if (_n == _children_capacity) {
12681 _children_capacity *= 2;
12682 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12683 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012684 PyErr_Format(PyExc_MemoryError, "realloc None");
12685 return NULL;
12686 }
12687 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012688 _children[_n++] = _res;
12689 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012691 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012692 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012693 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12694 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012695 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_39");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012696 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012697 return NULL;
12698 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012699 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12700 PyMem_Free(_children);
12701 _PyPegen_insert_memo(p, _start_mark, _loop0_39_type, _seq);
12702 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012703}
12704
Guido van Rossumc001c092020-04-30 12:12:19 -070012705// _gather_38: with_item _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012706static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012707_gather_38_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012708{
12709 if (p->error_indicator) {
12710 return NULL;
12711 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012712 asdl_seq * _res = NULL;
12713 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012714 { // with_item _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012715 withitem_ty elem;
12716 asdl_seq * seq;
12717 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012718 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012719 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012720 (seq = _loop0_39_rule(p)) // _loop0_39
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012721 )
12722 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012723 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012724 goto done;
12725 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012726 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012727 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012728 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012729 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012730 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012731}
12732
Guido van Rossumc001c092020-04-30 12:12:19 -070012733// _loop0_41: ',' with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012734static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012735_loop0_41_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012736{
12737 if (p->error_indicator) {
12738 return NULL;
12739 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012740 void *_res = NULL;
12741 int _mark = p->mark;
12742 int _start_mark = p->mark;
12743 void **_children = PyMem_Malloc(sizeof(void *));
12744 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012745 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12746 return NULL;
12747 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012748 ssize_t _children_capacity = 1;
12749 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012750 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012751 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012752 withitem_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012753 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012754 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012755 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012756 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012757 )
12758 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012759 _res = elem;
12760 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012761 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012762 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012763 return NULL;
12764 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012765 if (_n == _children_capacity) {
12766 _children_capacity *= 2;
12767 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12768 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012769 PyErr_Format(PyExc_MemoryError, "realloc None");
12770 return NULL;
12771 }
12772 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012773 _children[_n++] = _res;
12774 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012775 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012776 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012777 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012778 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12779 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070012780 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_41");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012781 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012782 return NULL;
12783 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012784 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12785 PyMem_Free(_children);
12786 _PyPegen_insert_memo(p, _start_mark, _loop0_41_type, _seq);
12787 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012788}
12789
Guido van Rossumc001c092020-04-30 12:12:19 -070012790// _gather_40: with_item _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012791static asdl_seq *
Guido van Rossumc001c092020-04-30 12:12:19 -070012792_gather_40_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012793{
12794 if (p->error_indicator) {
12795 return NULL;
12796 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012797 asdl_seq * _res = NULL;
12798 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070012799 { // with_item _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012800 withitem_ty elem;
12801 asdl_seq * seq;
12802 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012803 (elem = with_item_rule(p)) // with_item
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012804 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012805 (seq = _loop0_41_rule(p)) // _loop0_41
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012806 )
12807 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012808 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012809 goto done;
12810 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012811 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012812 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012813 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012814 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012815 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012816}
12817
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012818// _loop0_43: ',' with_item
12819static asdl_seq *
12820_loop0_43_rule(Parser *p)
12821{
12822 if (p->error_indicator) {
12823 return NULL;
12824 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012825 void *_res = NULL;
12826 int _mark = p->mark;
12827 int _start_mark = p->mark;
12828 void **_children = PyMem_Malloc(sizeof(void *));
12829 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012830 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12831 return NULL;
12832 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012833 ssize_t _children_capacity = 1;
12834 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012835 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012836 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012837 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012838 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012839 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012840 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012841 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012842 )
12843 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012844 _res = elem;
12845 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012846 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012847 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012848 return NULL;
12849 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012850 if (_n == _children_capacity) {
12851 _children_capacity *= 2;
12852 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12853 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012854 PyErr_Format(PyExc_MemoryError, "realloc None");
12855 return NULL;
12856 }
12857 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012858 _children[_n++] = _res;
12859 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012860 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012861 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012862 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012863 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12864 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012865 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_43");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012866 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012867 return NULL;
12868 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012869 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12870 PyMem_Free(_children);
12871 _PyPegen_insert_memo(p, _start_mark, _loop0_43_type, _seq);
12872 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012873}
12874
12875// _gather_42: with_item _loop0_43
12876static asdl_seq *
12877_gather_42_rule(Parser *p)
12878{
12879 if (p->error_indicator) {
12880 return NULL;
12881 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012882 asdl_seq * _res = NULL;
12883 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012884 { // with_item _loop0_43
12885 withitem_ty elem;
12886 asdl_seq * seq;
12887 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012888 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012889 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012890 (seq = _loop0_43_rule(p)) // _loop0_43
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012891 )
12892 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012893 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012894 goto done;
12895 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012896 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012897 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012898 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012899 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012900 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012901}
12902
12903// _loop0_45: ',' with_item
12904static asdl_seq *
12905_loop0_45_rule(Parser *p)
12906{
12907 if (p->error_indicator) {
12908 return NULL;
12909 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012910 void *_res = NULL;
12911 int _mark = p->mark;
12912 int _start_mark = p->mark;
12913 void **_children = PyMem_Malloc(sizeof(void *));
12914 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012915 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
12916 return NULL;
12917 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012918 ssize_t _children_capacity = 1;
12919 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012920 { // ',' with_item
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012921 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012922 withitem_ty elem;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012923 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012924 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012925 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012926 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012927 )
12928 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012929 _res = elem;
12930 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012931 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012932 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012933 return NULL;
12934 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012935 if (_n == _children_capacity) {
12936 _children_capacity *= 2;
12937 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
12938 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012939 PyErr_Format(PyExc_MemoryError, "realloc None");
12940 return NULL;
12941 }
12942 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012943 _children[_n++] = _res;
12944 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012945 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012946 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012947 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012948 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
12949 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012950 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_45");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012951 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012952 return NULL;
12953 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012954 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
12955 PyMem_Free(_children);
12956 _PyPegen_insert_memo(p, _start_mark, _loop0_45_type, _seq);
12957 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012958}
12959
12960// _gather_44: with_item _loop0_45
12961static asdl_seq *
12962_gather_44_rule(Parser *p)
12963{
12964 if (p->error_indicator) {
12965 return NULL;
12966 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012967 asdl_seq * _res = NULL;
12968 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012969 { // with_item _loop0_45
12970 withitem_ty elem;
12971 asdl_seq * seq;
12972 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010012973 (elem = with_item_rule(p)) // with_item
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012974 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010012975 (seq = _loop0_45_rule(p)) // _loop0_45
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012976 )
12977 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012978 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012979 goto done;
12980 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012981 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012982 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012983 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012984 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012985 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012986}
12987
12988// _tmp_46: 'as' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012989static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030012990_tmp_46_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012991{
12992 if (p->error_indicator) {
12993 return NULL;
12994 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012995 void * _res = NULL;
12996 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012997 { // 'as' target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010012998 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010012999 expr_ty t;
13000 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013001 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013002 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013003 (t = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013004 )
13005 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013006 _res = t;
13007 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013008 p->error_indicator = 1;
13009 return NULL;
13010 }
13011 goto done;
13012 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013013 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013014 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013015 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013016 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013017 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013018}
13019
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013020// _loop1_47: except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013021static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013022_loop1_47_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013023{
13024 if (p->error_indicator) {
13025 return NULL;
13026 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013027 void *_res = NULL;
13028 int _mark = p->mark;
13029 int _start_mark = p->mark;
13030 void **_children = PyMem_Malloc(sizeof(void *));
13031 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013032 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13033 return NULL;
13034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013035 ssize_t _children_capacity = 1;
13036 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013037 { // except_block
13038 excepthandler_ty except_block_var;
13039 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013040 (except_block_var = except_block_rule(p)) // except_block
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013041 )
13042 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013043 _res = except_block_var;
13044 if (_n == _children_capacity) {
13045 _children_capacity *= 2;
13046 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13047 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013048 PyErr_Format(PyExc_MemoryError, "realloc None");
13049 return NULL;
13050 }
13051 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013052 _children[_n++] = _res;
13053 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013054 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013055 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013056 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013057 if (_n == 0 || p->error_indicator) {
13058 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013059 return NULL;
13060 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013061 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13062 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013063 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_47");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013064 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013065 return NULL;
13066 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013067 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13068 PyMem_Free(_children);
13069 _PyPegen_insert_memo(p, _start_mark, _loop1_47_type, _seq);
13070 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013071}
13072
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013073// _tmp_48: 'as' NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013074static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013075_tmp_48_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013076{
13077 if (p->error_indicator) {
13078 return NULL;
13079 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013080 void * _res = NULL;
13081 int _mark = p->mark;
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013082 { // 'as' NAME
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013083 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013084 expr_ty z;
13085 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013086 (_keyword = _PyPegen_expect_token(p, 531)) // token='as'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013087 &&
Lysandros Nikolaouce21cfc2020-05-14 23:13:50 +030013088 (z = _PyPegen_name_token(p)) // NAME
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013089 )
13090 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013091 _res = z;
13092 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013093 p->error_indicator = 1;
13094 return NULL;
13095 }
13096 goto done;
13097 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013098 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013099 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013100 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013101 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013102 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013103}
13104
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013105// _tmp_49: 'from' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013106static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013107_tmp_49_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013108{
13109 if (p->error_indicator) {
13110 return NULL;
13111 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013112 void * _res = NULL;
13113 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013114 { // 'from' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013115 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013116 expr_ty z;
13117 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013118 (_keyword = _PyPegen_expect_token(p, 514)) // token='from'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013119 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013120 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013121 )
13122 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013123 _res = z;
13124 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013125 p->error_indicator = 1;
13126 return NULL;
13127 }
13128 goto done;
13129 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013130 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013131 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013132 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013133 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013134 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013135}
13136
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013137// _tmp_50: '->' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013138static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013139_tmp_50_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013140{
13141 if (p->error_indicator) {
13142 return NULL;
13143 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013144 void * _res = NULL;
13145 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013146 { // '->' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013147 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070013148 expr_ty z;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013149 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013150 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013151 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013152 (z = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013153 )
13154 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013155 _res = z;
13156 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013157 p->error_indicator = 1;
13158 return NULL;
13159 }
13160 goto done;
13161 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013162 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013163 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013164 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013165 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013166 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013167}
13168
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013169// _tmp_51: '->' expression
Guido van Rossumc001c092020-04-30 12:12:19 -070013170static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013171_tmp_51_rule(Parser *p)
13172{
13173 if (p->error_indicator) {
13174 return NULL;
13175 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013176 void * _res = NULL;
13177 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013178 { // '->' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013179 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013180 expr_ty z;
13181 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013182 (_literal = _PyPegen_expect_token(p, 51)) // token='->'
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013183 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013184 (z = expression_rule(p)) // expression
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013185 )
13186 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013187 _res = z;
13188 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013189 p->error_indicator = 1;
13190 return NULL;
13191 }
13192 goto done;
13193 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013194 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013195 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013196 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013197 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013198 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013199}
13200
13201// _tmp_52: NEWLINE INDENT
13202static void *
13203_tmp_52_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013204{
13205 if (p->error_indicator) {
13206 return NULL;
13207 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013208 void * _res = NULL;
13209 int _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013210 { // NEWLINE INDENT
Pablo Galindob796b3f2020-05-01 12:32:26 +010013211 Token * indent_var;
13212 Token * newline_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013213 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010013214 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Guido van Rossumc001c092020-04-30 12:12:19 -070013215 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010013216 (indent_var = _PyPegen_expect_token(p, INDENT)) // token='INDENT'
Guido van Rossumc001c092020-04-30 12:12:19 -070013217 )
13218 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013219 _res = _PyPegen_dummy_name(p, newline_var, indent_var);
Guido van Rossumc001c092020-04-30 12:12:19 -070013220 goto done;
13221 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013222 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013223 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013224 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070013225 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013226 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070013227}
13228
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013229// _loop0_53: param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013230static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013231_loop0_53_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013232{
13233 if (p->error_indicator) {
13234 return NULL;
13235 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013236 void *_res = NULL;
13237 int _mark = p->mark;
13238 int _start_mark = p->mark;
13239 void **_children = PyMem_Malloc(sizeof(void *));
13240 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013241 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13242 return NULL;
13243 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013244 ssize_t _children_capacity = 1;
13245 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013246 { // param_no_default
13247 arg_ty param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013248 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013249 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013250 )
13251 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013252 _res = param_no_default_var;
13253 if (_n == _children_capacity) {
13254 _children_capacity *= 2;
13255 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13256 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013257 PyErr_Format(PyExc_MemoryError, "realloc None");
13258 return NULL;
13259 }
13260 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013261 _children[_n++] = _res;
13262 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013263 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013264 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013266 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13267 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013268 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_53");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013269 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013270 return NULL;
13271 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013272 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13273 PyMem_Free(_children);
13274 _PyPegen_insert_memo(p, _start_mark, _loop0_53_type, _seq);
13275 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013276}
13277
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013278// _loop0_54: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013279static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013280_loop0_54_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013281{
13282 if (p->error_indicator) {
13283 return NULL;
13284 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013285 void *_res = NULL;
13286 int _mark = p->mark;
13287 int _start_mark = p->mark;
13288 void **_children = PyMem_Malloc(sizeof(void *));
13289 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013290 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13291 return NULL;
13292 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013293 ssize_t _children_capacity = 1;
13294 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013295 { // param_with_default
13296 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013297 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013298 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013299 )
13300 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013301 _res = param_with_default_var;
13302 if (_n == _children_capacity) {
13303 _children_capacity *= 2;
13304 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13305 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013306 PyErr_Format(PyExc_MemoryError, "realloc None");
13307 return NULL;
13308 }
13309 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013310 _children[_n++] = _res;
13311 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013312 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013313 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013314 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013315 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13316 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013317 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_54");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013318 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013319 return NULL;
13320 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013321 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13322 PyMem_Free(_children);
13323 _PyPegen_insert_memo(p, _start_mark, _loop0_54_type, _seq);
13324 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013325}
13326
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013327// _loop0_55: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013328static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013329_loop0_55_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013330{
13331 if (p->error_indicator) {
13332 return NULL;
13333 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013334 void *_res = NULL;
13335 int _mark = p->mark;
13336 int _start_mark = p->mark;
13337 void **_children = PyMem_Malloc(sizeof(void *));
13338 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013339 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13340 return NULL;
13341 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013342 ssize_t _children_capacity = 1;
13343 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013344 { // param_with_default
13345 NameDefaultPair* param_with_default_var;
13346 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013347 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013348 )
13349 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013350 _res = param_with_default_var;
13351 if (_n == _children_capacity) {
13352 _children_capacity *= 2;
13353 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13354 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013355 PyErr_Format(PyExc_MemoryError, "realloc None");
13356 return NULL;
13357 }
13358 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013359 _children[_n++] = _res;
13360 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013361 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013362 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013363 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013364 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13365 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013366 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_55");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013367 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013368 return NULL;
13369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013370 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13371 PyMem_Free(_children);
13372 _PyPegen_insert_memo(p, _start_mark, _loop0_55_type, _seq);
13373 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013374}
13375
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013376// _loop1_56: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013377static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013378_loop1_56_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013379{
13380 if (p->error_indicator) {
13381 return NULL;
13382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013383 void *_res = NULL;
13384 int _mark = p->mark;
13385 int _start_mark = p->mark;
13386 void **_children = PyMem_Malloc(sizeof(void *));
13387 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013388 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13389 return NULL;
13390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013391 ssize_t _children_capacity = 1;
13392 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013393 { // param_no_default
13394 arg_ty param_no_default_var;
13395 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013396 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013397 )
13398 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013399 _res = param_no_default_var;
13400 if (_n == _children_capacity) {
13401 _children_capacity *= 2;
13402 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13403 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013404 PyErr_Format(PyExc_MemoryError, "realloc None");
13405 return NULL;
13406 }
13407 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013408 _children[_n++] = _res;
13409 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013410 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013411 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013412 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013413 if (_n == 0 || p->error_indicator) {
13414 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013415 return NULL;
13416 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013417 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13418 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013419 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_56");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013420 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013421 return NULL;
13422 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013423 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13424 PyMem_Free(_children);
13425 _PyPegen_insert_memo(p, _start_mark, _loop1_56_type, _seq);
13426 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013427}
13428
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013429// _loop0_57: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013430static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013431_loop0_57_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013432{
13433 if (p->error_indicator) {
13434 return NULL;
13435 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013436 void *_res = NULL;
13437 int _mark = p->mark;
13438 int _start_mark = p->mark;
13439 void **_children = PyMem_Malloc(sizeof(void *));
13440 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013441 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13442 return NULL;
13443 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013444 ssize_t _children_capacity = 1;
13445 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013446 { // param_with_default
13447 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013448 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013449 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013450 )
13451 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013452 _res = param_with_default_var;
13453 if (_n == _children_capacity) {
13454 _children_capacity *= 2;
13455 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13456 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013457 PyErr_Format(PyExc_MemoryError, "realloc None");
13458 return NULL;
13459 }
13460 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013461 _children[_n++] = _res;
13462 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013463 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013464 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013465 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013466 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13467 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013468 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_57");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013469 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013470 return NULL;
13471 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013472 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13473 PyMem_Free(_children);
13474 _PyPegen_insert_memo(p, _start_mark, _loop0_57_type, _seq);
13475 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013476}
13477
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013478// _loop1_58: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013479static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013480_loop1_58_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013481{
13482 if (p->error_indicator) {
13483 return NULL;
13484 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013485 void *_res = NULL;
13486 int _mark = p->mark;
13487 int _start_mark = p->mark;
13488 void **_children = PyMem_Malloc(sizeof(void *));
13489 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013490 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13491 return NULL;
13492 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013493 ssize_t _children_capacity = 1;
13494 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070013495 { // param_with_default
13496 NameDefaultPair* param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013497 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013498 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013499 )
13500 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013501 _res = param_with_default_var;
13502 if (_n == _children_capacity) {
13503 _children_capacity *= 2;
13504 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13505 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013506 PyErr_Format(PyExc_MemoryError, "realloc None");
13507 return NULL;
13508 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013509 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013510 _children[_n++] = _res;
13511 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013512 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013513 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013514 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013515 if (_n == 0 || p->error_indicator) {
13516 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013517 return NULL;
13518 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013519 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13520 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013521 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_58");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013522 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013523 return NULL;
13524 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013525 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13526 PyMem_Free(_children);
13527 _PyPegen_insert_memo(p, _start_mark, _loop1_58_type, _seq);
13528 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013529}
13530
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013531// _loop1_59: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013532static asdl_seq *
13533_loop1_59_rule(Parser *p)
13534{
13535 if (p->error_indicator) {
13536 return NULL;
13537 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013538 void *_res = NULL;
13539 int _mark = p->mark;
13540 int _start_mark = p->mark;
13541 void **_children = PyMem_Malloc(sizeof(void *));
13542 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013543 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13544 return NULL;
13545 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013546 ssize_t _children_capacity = 1;
13547 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013548 { // param_no_default
13549 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013550 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013551 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013552 )
13553 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013554 _res = param_no_default_var;
13555 if (_n == _children_capacity) {
13556 _children_capacity *= 2;
13557 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13558 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013559 PyErr_Format(PyExc_MemoryError, "realloc None");
13560 return NULL;
13561 }
13562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013563 _children[_n++] = _res;
13564 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013565 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013566 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013567 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013568 if (_n == 0 || p->error_indicator) {
13569 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013570 return NULL;
13571 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013572 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13573 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013574 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_59");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013575 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013576 return NULL;
13577 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013578 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13579 PyMem_Free(_children);
13580 _PyPegen_insert_memo(p, _start_mark, _loop1_59_type, _seq);
13581 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013582}
13583
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013584// _loop1_60: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013585static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013586_loop1_60_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070013587{
13588 if (p->error_indicator) {
13589 return NULL;
13590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013591 void *_res = NULL;
13592 int _mark = p->mark;
13593 int _start_mark = p->mark;
13594 void **_children = PyMem_Malloc(sizeof(void *));
13595 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013596 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13597 return NULL;
13598 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013599 ssize_t _children_capacity = 1;
13600 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013601 { // param_no_default
13602 arg_ty param_no_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013603 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013604 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013605 )
13606 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013607 _res = param_no_default_var;
13608 if (_n == _children_capacity) {
13609 _children_capacity *= 2;
13610 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13611 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013612 PyErr_Format(PyExc_MemoryError, "realloc None");
13613 return NULL;
13614 }
13615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013616 _children[_n++] = _res;
13617 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013618 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013619 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013620 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013621 if (_n == 0 || p->error_indicator) {
13622 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013623 return NULL;
13624 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013625 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13626 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013627 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_60");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013628 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013629 return NULL;
13630 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013631 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13632 PyMem_Free(_children);
13633 _PyPegen_insert_memo(p, _start_mark, _loop1_60_type, _seq);
13634 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013635}
13636
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013637// _loop0_61: param_no_default
13638static asdl_seq *
13639_loop0_61_rule(Parser *p)
13640{
13641 if (p->error_indicator) {
13642 return NULL;
13643 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013644 void *_res = NULL;
13645 int _mark = p->mark;
13646 int _start_mark = p->mark;
13647 void **_children = PyMem_Malloc(sizeof(void *));
13648 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013649 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13650 return NULL;
13651 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013652 ssize_t _children_capacity = 1;
13653 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013654 { // param_no_default
13655 arg_ty param_no_default_var;
13656 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013657 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013658 )
13659 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013660 _res = param_no_default_var;
13661 if (_n == _children_capacity) {
13662 _children_capacity *= 2;
13663 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13664 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013665 PyErr_Format(PyExc_MemoryError, "realloc None");
13666 return NULL;
13667 }
13668 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013669 _children[_n++] = _res;
13670 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013671 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013672 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013673 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013674 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13675 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013676 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_61");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013677 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013678 return NULL;
13679 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013680 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13681 PyMem_Free(_children);
13682 _PyPegen_insert_memo(p, _start_mark, _loop0_61_type, _seq);
13683 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013684}
13685
13686// _loop1_62: param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013687static asdl_seq *
13688_loop1_62_rule(Parser *p)
13689{
13690 if (p->error_indicator) {
13691 return NULL;
13692 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013693 void *_res = NULL;
13694 int _mark = p->mark;
13695 int _start_mark = p->mark;
13696 void **_children = PyMem_Malloc(sizeof(void *));
13697 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013698 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13699 return NULL;
13700 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013701 ssize_t _children_capacity = 1;
13702 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013703 { // param_with_default
13704 NameDefaultPair* param_with_default_var;
Guido van Rossumc001c092020-04-30 12:12:19 -070013705 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013706 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070013707 )
13708 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013709 _res = param_with_default_var;
13710 if (_n == _children_capacity) {
13711 _children_capacity *= 2;
13712 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13713 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013714 PyErr_Format(PyExc_MemoryError, "realloc None");
13715 return NULL;
13716 }
13717 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013718 _children[_n++] = _res;
13719 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013720 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013721 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070013722 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013723 if (_n == 0 || p->error_indicator) {
13724 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013725 return NULL;
13726 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013727 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13728 if (!_seq) {
Guido van Rossumc001c092020-04-30 12:12:19 -070013729 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_62");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013730 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070013731 return NULL;
13732 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013733 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13734 PyMem_Free(_children);
13735 _PyPegen_insert_memo(p, _start_mark, _loop1_62_type, _seq);
13736 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070013737}
13738
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013739// _loop0_63: param_no_default
13740static asdl_seq *
13741_loop0_63_rule(Parser *p)
13742{
13743 if (p->error_indicator) {
13744 return NULL;
13745 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013746 void *_res = NULL;
13747 int _mark = p->mark;
13748 int _start_mark = p->mark;
13749 void **_children = PyMem_Malloc(sizeof(void *));
13750 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013751 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13752 return NULL;
13753 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013754 ssize_t _children_capacity = 1;
13755 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013756 { // param_no_default
13757 arg_ty param_no_default_var;
13758 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013759 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013760 )
13761 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013762 _res = param_no_default_var;
13763 if (_n == _children_capacity) {
13764 _children_capacity *= 2;
13765 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13766 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013767 PyErr_Format(PyExc_MemoryError, "realloc None");
13768 return NULL;
13769 }
13770 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013771 _children[_n++] = _res;
13772 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013773 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013774 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013775 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013776 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13777 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013778 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_63");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013779 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013780 return NULL;
13781 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013782 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13783 PyMem_Free(_children);
13784 _PyPegen_insert_memo(p, _start_mark, _loop0_63_type, _seq);
13785 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013786}
13787
13788// _loop1_64: param_with_default
13789static asdl_seq *
13790_loop1_64_rule(Parser *p)
13791{
13792 if (p->error_indicator) {
13793 return NULL;
13794 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013795 void *_res = NULL;
13796 int _mark = p->mark;
13797 int _start_mark = p->mark;
13798 void **_children = PyMem_Malloc(sizeof(void *));
13799 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013800 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13801 return NULL;
13802 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013803 ssize_t _children_capacity = 1;
13804 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013805 { // param_with_default
13806 NameDefaultPair* param_with_default_var;
13807 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013808 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013809 )
13810 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013811 _res = param_with_default_var;
13812 if (_n == _children_capacity) {
13813 _children_capacity *= 2;
13814 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13815 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013816 PyErr_Format(PyExc_MemoryError, "realloc None");
13817 return NULL;
13818 }
13819 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013820 _children[_n++] = _res;
13821 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013822 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013823 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013824 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013825 if (_n == 0 || p->error_indicator) {
13826 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013827 return NULL;
13828 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013829 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13830 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013831 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_64");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013832 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013833 return NULL;
13834 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013835 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13836 PyMem_Free(_children);
13837 _PyPegen_insert_memo(p, _start_mark, _loop1_64_type, _seq);
13838 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013839}
13840
13841// _loop0_65: param_maybe_default
13842static asdl_seq *
13843_loop0_65_rule(Parser *p)
13844{
13845 if (p->error_indicator) {
13846 return NULL;
13847 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013848 void *_res = NULL;
13849 int _mark = p->mark;
13850 int _start_mark = p->mark;
13851 void **_children = PyMem_Malloc(sizeof(void *));
13852 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013853 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13854 return NULL;
13855 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013856 ssize_t _children_capacity = 1;
13857 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013858 { // param_maybe_default
13859 NameDefaultPair* param_maybe_default_var;
13860 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013861 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013862 )
13863 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013864 _res = param_maybe_default_var;
13865 if (_n == _children_capacity) {
13866 _children_capacity *= 2;
13867 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13868 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013869 PyErr_Format(PyExc_MemoryError, "realloc None");
13870 return NULL;
13871 }
13872 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013873 _children[_n++] = _res;
13874 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013875 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013876 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013877 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013878 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13879 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013880 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_65");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013881 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013882 return NULL;
13883 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013884 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13885 PyMem_Free(_children);
13886 _PyPegen_insert_memo(p, _start_mark, _loop0_65_type, _seq);
13887 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013888}
13889
13890// _loop1_66: param_maybe_default
13891static asdl_seq *
13892_loop1_66_rule(Parser *p)
13893{
13894 if (p->error_indicator) {
13895 return NULL;
13896 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013897 void *_res = NULL;
13898 int _mark = p->mark;
13899 int _start_mark = p->mark;
13900 void **_children = PyMem_Malloc(sizeof(void *));
13901 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013902 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13903 return NULL;
13904 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013905 ssize_t _children_capacity = 1;
13906 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013907 { // param_maybe_default
13908 NameDefaultPair* param_maybe_default_var;
13909 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010013910 (param_maybe_default_var = param_maybe_default_rule(p)) // param_maybe_default
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013911 )
13912 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013913 _res = param_maybe_default_var;
13914 if (_n == _children_capacity) {
13915 _children_capacity *= 2;
13916 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13917 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013918 PyErr_Format(PyExc_MemoryError, "realloc None");
13919 return NULL;
13920 }
13921 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013922 _children[_n++] = _res;
13923 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013924 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013925 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013926 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013927 if (_n == 0 || p->error_indicator) {
13928 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013929 return NULL;
13930 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013931 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13932 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013933 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_66");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013934 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013935 return NULL;
13936 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013937 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13938 PyMem_Free(_children);
13939 _PyPegen_insert_memo(p, _start_mark, _loop1_66_type, _seq);
13940 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013941}
13942
13943// _loop1_67: ('@' named_expression NEWLINE)
13944static asdl_seq *
13945_loop1_67_rule(Parser *p)
13946{
13947 if (p->error_indicator) {
13948 return NULL;
13949 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013950 void *_res = NULL;
13951 int _mark = p->mark;
13952 int _start_mark = p->mark;
13953 void **_children = PyMem_Malloc(sizeof(void *));
13954 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013955 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
13956 return NULL;
13957 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013958 ssize_t _children_capacity = 1;
13959 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013960 { // ('@' named_expression NEWLINE)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013961 void *_tmp_138_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013962 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013963 (_tmp_138_var = _tmp_138_rule(p)) // '@' named_expression NEWLINE
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013964 )
13965 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030013966 _res = _tmp_138_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013967 if (_n == _children_capacity) {
13968 _children_capacity *= 2;
13969 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
13970 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013971 PyErr_Format(PyExc_MemoryError, "realloc None");
13972 return NULL;
13973 }
13974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013975 _children[_n++] = _res;
13976 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013977 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013978 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013979 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013980 if (_n == 0 || p->error_indicator) {
13981 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013982 return NULL;
13983 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013984 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
13985 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013986 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_67");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013987 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013988 return NULL;
13989 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010013990 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
13991 PyMem_Free(_children);
13992 _PyPegen_insert_memo(p, _start_mark, _loop1_67_type, _seq);
13993 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013994}
13995
13996// _tmp_68: '(' arguments? ')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013997static void *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030013998_tmp_68_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010013999{
14000 if (p->error_indicator) {
14001 return NULL;
14002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014003 void * _res = NULL;
14004 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014005 { // '(' arguments? ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014006 Token * _literal;
14007 Token * _literal_1;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014008 void *z;
14009 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014010 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014011 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014012 (z = arguments_rule(p), 1) // arguments?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014013 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014014 (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014015 )
14016 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014017 _res = z;
14018 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014019 p->error_indicator = 1;
14020 return NULL;
14021 }
14022 goto done;
14023 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014024 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014025 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014026 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014027 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014028 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014029}
14030
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014031// _loop0_70: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014032static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014033_loop0_70_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014034{
14035 if (p->error_indicator) {
14036 return NULL;
14037 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014038 void *_res = NULL;
14039 int _mark = p->mark;
14040 int _start_mark = p->mark;
14041 void **_children = PyMem_Malloc(sizeof(void *));
14042 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014043 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14044 return NULL;
14045 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014046 ssize_t _children_capacity = 1;
14047 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014048 { // ',' star_expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014049 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014050 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014051 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014052 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014053 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014054 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014055 )
14056 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014057 _res = elem;
14058 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014059 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014060 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014061 return NULL;
14062 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014063 if (_n == _children_capacity) {
14064 _children_capacity *= 2;
14065 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14066 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014067 PyErr_Format(PyExc_MemoryError, "realloc None");
14068 return NULL;
14069 }
14070 }
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) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014078 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_70");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014079 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014080 return NULL;
14081 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014082 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14083 PyMem_Free(_children);
14084 _PyPegen_insert_memo(p, _start_mark, _loop0_70_type, _seq);
14085 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014086}
14087
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014088// _gather_69: star_expression _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014089static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014090_gather_69_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014091{
14092 if (p->error_indicator) {
14093 return NULL;
14094 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014095 asdl_seq * _res = NULL;
14096 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014097 { // star_expression _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014098 expr_ty elem;
14099 asdl_seq * seq;
14100 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014101 (elem = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014102 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014103 (seq = _loop0_70_rule(p)) // _loop0_70
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014104 )
14105 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014106 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014107 goto done;
14108 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014109 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014110 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014111 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014112 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014113 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014114}
14115
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014116// _loop1_71: (',' star_expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014117static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014118_loop1_71_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014119{
14120 if (p->error_indicator) {
14121 return NULL;
14122 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014123 void *_res = NULL;
14124 int _mark = p->mark;
14125 int _start_mark = p->mark;
14126 void **_children = PyMem_Malloc(sizeof(void *));
14127 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014128 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14129 return NULL;
14130 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014131 ssize_t _children_capacity = 1;
14132 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014133 { // (',' star_expression)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014134 void *_tmp_139_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014135 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014136 (_tmp_139_var = _tmp_139_rule(p)) // ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014137 )
14138 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014139 _res = _tmp_139_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014140 if (_n == _children_capacity) {
14141 _children_capacity *= 2;
14142 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14143 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014144 PyErr_Format(PyExc_MemoryError, "realloc None");
14145 return NULL;
14146 }
14147 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014148 _children[_n++] = _res;
14149 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014150 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014151 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014153 if (_n == 0 || p->error_indicator) {
14154 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014155 return NULL;
14156 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014157 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14158 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014159 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_71");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014160 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014161 return NULL;
14162 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014163 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14164 PyMem_Free(_children);
14165 _PyPegen_insert_memo(p, _start_mark, _loop1_71_type, _seq);
14166 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014167}
14168
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014169// _loop0_73: ',' star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014170static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014171_loop0_73_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014172{
14173 if (p->error_indicator) {
14174 return NULL;
14175 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014176 void *_res = NULL;
14177 int _mark = p->mark;
14178 int _start_mark = p->mark;
14179 void **_children = PyMem_Malloc(sizeof(void *));
14180 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014181 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14182 return NULL;
14183 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014184 ssize_t _children_capacity = 1;
14185 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014186 { // ',' star_named_expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014187 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014188 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014189 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014190 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014191 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014192 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014193 )
14194 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014195 _res = elem;
14196 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014197 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014198 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014199 return NULL;
14200 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014201 if (_n == _children_capacity) {
14202 _children_capacity *= 2;
14203 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14204 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014205 PyErr_Format(PyExc_MemoryError, "realloc None");
14206 return NULL;
14207 }
14208 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014209 _children[_n++] = _res;
14210 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014211 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014212 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014213 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014214 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14215 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014216 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_73");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014217 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014218 return NULL;
14219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014220 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14221 PyMem_Free(_children);
14222 _PyPegen_insert_memo(p, _start_mark, _loop0_73_type, _seq);
14223 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014224}
14225
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014226// _gather_72: star_named_expression _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014227static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014228_gather_72_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014229{
14230 if (p->error_indicator) {
14231 return NULL;
14232 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014233 asdl_seq * _res = NULL;
14234 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014235 { // star_named_expression _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014236 expr_ty elem;
14237 asdl_seq * seq;
14238 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010014239 (elem = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014240 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010014241 (seq = _loop0_73_rule(p)) // _loop0_73
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014242 )
14243 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014244 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014245 goto done;
14246 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014247 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014249 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014250 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014251 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014252}
14253
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014254// _loop1_74: (',' expression)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014255static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014256_loop1_74_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014257{
14258 if (p->error_indicator) {
14259 return NULL;
14260 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014261 void *_res = NULL;
14262 int _mark = p->mark;
14263 int _start_mark = p->mark;
14264 void **_children = PyMem_Malloc(sizeof(void *));
14265 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014266 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14267 return NULL;
14268 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014269 ssize_t _children_capacity = 1;
14270 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014271 { // (',' expression)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014272 void *_tmp_140_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014273 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014274 (_tmp_140_var = _tmp_140_rule(p)) // ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014275 )
14276 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030014277 _res = _tmp_140_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014278 if (_n == _children_capacity) {
14279 _children_capacity *= 2;
14280 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14281 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014282 PyErr_Format(PyExc_MemoryError, "realloc None");
14283 return NULL;
14284 }
14285 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014286 _children[_n++] = _res;
14287 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014288 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014289 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014290 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014291 if (_n == 0 || p->error_indicator) {
14292 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014293 return NULL;
14294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014295 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14296 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014297 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_74");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014298 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014299 return NULL;
14300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014301 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14302 PyMem_Free(_children);
14303 _PyPegen_insert_memo(p, _start_mark, _loop1_74_type, _seq);
14304 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014305}
14306
Guido van Rossum3941d972020-05-01 09:42:03 -070014307// _loop0_75: lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014308static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070014309_loop0_75_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014310{
14311 if (p->error_indicator) {
14312 return NULL;
14313 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014314 void *_res = NULL;
14315 int _mark = p->mark;
14316 int _start_mark = p->mark;
14317 void **_children = PyMem_Malloc(sizeof(void *));
14318 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014319 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14320 return NULL;
14321 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014322 ssize_t _children_capacity = 1;
14323 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014324 { // lambda_param_no_default
14325 arg_ty lambda_param_no_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014326 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014327 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014328 )
14329 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014330 _res = lambda_param_no_default_var;
14331 if (_n == _children_capacity) {
14332 _children_capacity *= 2;
14333 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14334 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014335 PyErr_Format(PyExc_MemoryError, "realloc None");
14336 return NULL;
14337 }
14338 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014339 _children[_n++] = _res;
14340 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014341 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014342 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014343 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014344 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14345 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014346 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_75");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014347 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014348 return NULL;
14349 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014350 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14351 PyMem_Free(_children);
14352 _PyPegen_insert_memo(p, _start_mark, _loop0_75_type, _seq);
14353 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014354}
14355
Guido van Rossum3941d972020-05-01 09:42:03 -070014356// _loop0_76: lambda_param_with_default
14357static asdl_seq *
14358_loop0_76_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014359{
14360 if (p->error_indicator) {
14361 return NULL;
14362 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014363 void *_res = NULL;
14364 int _mark = p->mark;
14365 int _start_mark = p->mark;
14366 void **_children = PyMem_Malloc(sizeof(void *));
14367 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014368 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14369 return NULL;
14370 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014371 ssize_t _children_capacity = 1;
14372 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014373 { // lambda_param_with_default
14374 NameDefaultPair* lambda_param_with_default_var;
14375 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014376 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014377 )
14378 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014379 _res = lambda_param_with_default_var;
14380 if (_n == _children_capacity) {
14381 _children_capacity *= 2;
14382 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14383 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014384 PyErr_Format(PyExc_MemoryError, "realloc None");
14385 return NULL;
14386 }
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014387 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014388 _children[_n++] = _res;
14389 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014391 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014392 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014393 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14394 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014395 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_76");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014396 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014397 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, _loop0_76_type, _seq);
14402 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014403}
14404
Guido van Rossum3941d972020-05-01 09:42:03 -070014405// _loop0_77: lambda_param_with_default
14406static asdl_seq *
14407_loop0_77_rule(Parser *p)
14408{
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;
14414 int _start_mark = p->mark;
14415 void **_children = PyMem_Malloc(sizeof(void *));
14416 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014417 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14418 return NULL;
14419 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014420 ssize_t _children_capacity = 1;
14421 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014422 { // lambda_param_with_default
14423 NameDefaultPair* lambda_param_with_default_var;
14424 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014425 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014426 )
14427 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014428 _res = lambda_param_with_default_var;
14429 if (_n == _children_capacity) {
14430 _children_capacity *= 2;
14431 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14432 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014433 PyErr_Format(PyExc_MemoryError, "realloc None");
14434 return NULL;
14435 }
14436 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014437 _children[_n++] = _res;
14438 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014439 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014440 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014441 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014442 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14443 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014444 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_77");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014445 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014446 return NULL;
14447 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014448 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14449 PyMem_Free(_children);
14450 _PyPegen_insert_memo(p, _start_mark, _loop0_77_type, _seq);
14451 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014452}
14453
14454// _loop1_78: lambda_param_no_default
14455static asdl_seq *
14456_loop1_78_rule(Parser *p)
14457{
14458 if (p->error_indicator) {
14459 return NULL;
14460 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014461 void *_res = NULL;
14462 int _mark = p->mark;
14463 int _start_mark = p->mark;
14464 void **_children = PyMem_Malloc(sizeof(void *));
14465 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014466 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14467 return NULL;
14468 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014469 ssize_t _children_capacity = 1;
14470 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014471 { // lambda_param_no_default
14472 arg_ty lambda_param_no_default_var;
14473 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014474 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014475 )
14476 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014477 _res = lambda_param_no_default_var;
14478 if (_n == _children_capacity) {
14479 _children_capacity *= 2;
14480 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14481 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014482 PyErr_Format(PyExc_MemoryError, "realloc None");
14483 return NULL;
14484 }
14485 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014486 _children[_n++] = _res;
14487 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014488 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014489 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014490 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014491 if (_n == 0 || p->error_indicator) {
14492 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014493 return NULL;
14494 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014495 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14496 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014497 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_78");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014498 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014499 return NULL;
14500 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014501 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14502 PyMem_Free(_children);
14503 _PyPegen_insert_memo(p, _start_mark, _loop1_78_type, _seq);
14504 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014505}
14506
14507// _loop0_79: lambda_param_with_default
14508static asdl_seq *
14509_loop0_79_rule(Parser *p)
14510{
14511 if (p->error_indicator) {
14512 return NULL;
14513 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014514 void *_res = NULL;
14515 int _mark = p->mark;
14516 int _start_mark = p->mark;
14517 void **_children = PyMem_Malloc(sizeof(void *));
14518 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014519 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14520 return NULL;
14521 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014522 ssize_t _children_capacity = 1;
14523 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014524 { // lambda_param_with_default
14525 NameDefaultPair* lambda_param_with_default_var;
14526 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014527 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014528 )
14529 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014530 _res = lambda_param_with_default_var;
14531 if (_n == _children_capacity) {
14532 _children_capacity *= 2;
14533 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14534 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014535 PyErr_Format(PyExc_MemoryError, "realloc None");
14536 return NULL;
14537 }
14538 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014539 _children[_n++] = _res;
14540 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014541 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014542 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014543 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014544 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14545 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014546 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_79");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014547 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014548 return NULL;
14549 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014550 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14551 PyMem_Free(_children);
14552 _PyPegen_insert_memo(p, _start_mark, _loop0_79_type, _seq);
14553 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014554}
14555
14556// _loop1_80: lambda_param_with_default
14557static asdl_seq *
14558_loop1_80_rule(Parser *p)
14559{
14560 if (p->error_indicator) {
14561 return NULL;
14562 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014563 void *_res = NULL;
14564 int _mark = p->mark;
14565 int _start_mark = p->mark;
14566 void **_children = PyMem_Malloc(sizeof(void *));
14567 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014568 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14569 return NULL;
14570 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014571 ssize_t _children_capacity = 1;
14572 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014573 { // lambda_param_with_default
14574 NameDefaultPair* lambda_param_with_default_var;
14575 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014576 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014577 )
14578 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014579 _res = lambda_param_with_default_var;
14580 if (_n == _children_capacity) {
14581 _children_capacity *= 2;
14582 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14583 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014584 PyErr_Format(PyExc_MemoryError, "realloc None");
14585 return NULL;
14586 }
14587 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014588 _children[_n++] = _res;
14589 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014590 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014591 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014592 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014593 if (_n == 0 || p->error_indicator) {
14594 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014595 return NULL;
14596 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014597 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14598 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014599 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_80");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014600 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014601 return NULL;
14602 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014603 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14604 PyMem_Free(_children);
14605 _PyPegen_insert_memo(p, _start_mark, _loop1_80_type, _seq);
14606 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014607}
14608
14609// _loop1_81: lambda_param_no_default
14610static asdl_seq *
14611_loop1_81_rule(Parser *p)
14612{
14613 if (p->error_indicator) {
14614 return NULL;
14615 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014616 void *_res = NULL;
14617 int _mark = p->mark;
14618 int _start_mark = p->mark;
14619 void **_children = PyMem_Malloc(sizeof(void *));
14620 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014621 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14622 return NULL;
14623 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014624 ssize_t _children_capacity = 1;
14625 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014626 { // lambda_param_no_default
14627 arg_ty lambda_param_no_default_var;
14628 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014629 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014630 )
14631 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014632 _res = lambda_param_no_default_var;
14633 if (_n == _children_capacity) {
14634 _children_capacity *= 2;
14635 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14636 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014637 PyErr_Format(PyExc_MemoryError, "realloc None");
14638 return NULL;
14639 }
14640 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014641 _children[_n++] = _res;
14642 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014643 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014644 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014645 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014646 if (_n == 0 || p->error_indicator) {
14647 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014648 return NULL;
14649 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014650 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14651 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014652 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_81");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014653 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014654 return NULL;
14655 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014656 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14657 PyMem_Free(_children);
14658 _PyPegen_insert_memo(p, _start_mark, _loop1_81_type, _seq);
14659 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014660}
14661
14662// _loop1_82: lambda_param_no_default
14663static asdl_seq *
14664_loop1_82_rule(Parser *p)
14665{
14666 if (p->error_indicator) {
14667 return NULL;
14668 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014669 void *_res = NULL;
14670 int _mark = p->mark;
14671 int _start_mark = p->mark;
14672 void **_children = PyMem_Malloc(sizeof(void *));
14673 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014674 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14675 return NULL;
14676 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014677 ssize_t _children_capacity = 1;
14678 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014679 { // lambda_param_no_default
14680 arg_ty lambda_param_no_default_var;
14681 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014682 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014683 )
14684 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014685 _res = lambda_param_no_default_var;
14686 if (_n == _children_capacity) {
14687 _children_capacity *= 2;
14688 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14689 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014690 PyErr_Format(PyExc_MemoryError, "realloc None");
14691 return NULL;
14692 }
14693 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014694 _children[_n++] = _res;
14695 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014696 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014697 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014698 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014699 if (_n == 0 || p->error_indicator) {
14700 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014701 return NULL;
14702 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014703 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14704 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014705 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_82");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014706 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014707 return NULL;
14708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014709 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14710 PyMem_Free(_children);
14711 _PyPegen_insert_memo(p, _start_mark, _loop1_82_type, _seq);
14712 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014713}
14714
14715// _loop0_83: lambda_param_no_default
14716static asdl_seq *
14717_loop0_83_rule(Parser *p)
14718{
14719 if (p->error_indicator) {
14720 return NULL;
14721 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014722 void *_res = NULL;
14723 int _mark = p->mark;
14724 int _start_mark = p->mark;
14725 void **_children = PyMem_Malloc(sizeof(void *));
14726 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014727 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14728 return NULL;
14729 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014730 ssize_t _children_capacity = 1;
14731 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014732 { // lambda_param_no_default
14733 arg_ty lambda_param_no_default_var;
14734 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014735 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014736 )
14737 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014738 _res = lambda_param_no_default_var;
14739 if (_n == _children_capacity) {
14740 _children_capacity *= 2;
14741 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14742 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014743 PyErr_Format(PyExc_MemoryError, "realloc None");
14744 return NULL;
14745 }
14746 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014747 _children[_n++] = _res;
14748 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014749 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014750 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014751 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014752 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14753 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014754 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_83");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014755 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014756 return NULL;
14757 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014758 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14759 PyMem_Free(_children);
14760 _PyPegen_insert_memo(p, _start_mark, _loop0_83_type, _seq);
14761 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014762}
14763
14764// _loop1_84: lambda_param_with_default
14765static asdl_seq *
14766_loop1_84_rule(Parser *p)
14767{
14768 if (p->error_indicator) {
14769 return NULL;
14770 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014771 void *_res = NULL;
14772 int _mark = p->mark;
14773 int _start_mark = p->mark;
14774 void **_children = PyMem_Malloc(sizeof(void *));
14775 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014776 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14777 return NULL;
14778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014779 ssize_t _children_capacity = 1;
14780 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014781 { // lambda_param_with_default
14782 NameDefaultPair* lambda_param_with_default_var;
14783 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014784 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014785 )
14786 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014787 _res = lambda_param_with_default_var;
14788 if (_n == _children_capacity) {
14789 _children_capacity *= 2;
14790 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14791 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014792 PyErr_Format(PyExc_MemoryError, "realloc None");
14793 return NULL;
14794 }
14795 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014796 _children[_n++] = _res;
14797 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014798 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014799 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014800 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014801 if (_n == 0 || p->error_indicator) {
14802 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014803 return NULL;
14804 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014805 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14806 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014807 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_84");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014808 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014809 return NULL;
14810 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014811 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14812 PyMem_Free(_children);
14813 _PyPegen_insert_memo(p, _start_mark, _loop1_84_type, _seq);
14814 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014815}
14816
14817// _loop0_85: lambda_param_no_default
14818static asdl_seq *
14819_loop0_85_rule(Parser *p)
14820{
14821 if (p->error_indicator) {
14822 return NULL;
14823 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014824 void *_res = NULL;
14825 int _mark = p->mark;
14826 int _start_mark = p->mark;
14827 void **_children = PyMem_Malloc(sizeof(void *));
14828 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014829 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14830 return NULL;
14831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014832 ssize_t _children_capacity = 1;
14833 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014834 { // lambda_param_no_default
14835 arg_ty lambda_param_no_default_var;
14836 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014837 (lambda_param_no_default_var = lambda_param_no_default_rule(p)) // lambda_param_no_default
Guido van Rossum3941d972020-05-01 09:42:03 -070014838 )
14839 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014840 _res = lambda_param_no_default_var;
14841 if (_n == _children_capacity) {
14842 _children_capacity *= 2;
14843 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14844 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014845 PyErr_Format(PyExc_MemoryError, "realloc None");
14846 return NULL;
14847 }
14848 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014849 _children[_n++] = _res;
14850 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014852 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070014853 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014854 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14855 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014856 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_85");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014857 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070014858 return NULL;
14859 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014860 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14861 PyMem_Free(_children);
14862 _PyPegen_insert_memo(p, _start_mark, _loop0_85_type, _seq);
14863 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070014864}
14865
14866// _loop1_86: lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014867static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014868_loop1_86_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014869{
14870 if (p->error_indicator) {
14871 return NULL;
14872 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014873 void *_res = NULL;
14874 int _mark = p->mark;
14875 int _start_mark = p->mark;
14876 void **_children = PyMem_Malloc(sizeof(void *));
14877 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014878 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14879 return NULL;
14880 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014881 ssize_t _children_capacity = 1;
14882 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014883 { // lambda_param_with_default
14884 NameDefaultPair* lambda_param_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014885 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014886 (lambda_param_with_default_var = lambda_param_with_default_rule(p)) // lambda_param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014887 )
14888 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014889 _res = lambda_param_with_default_var;
14890 if (_n == _children_capacity) {
14891 _children_capacity *= 2;
14892 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14893 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014894 PyErr_Format(PyExc_MemoryError, "realloc None");
14895 return NULL;
14896 }
14897 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014898 _children[_n++] = _res;
14899 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014900 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014901 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014902 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014903 if (_n == 0 || p->error_indicator) {
14904 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014905 return NULL;
14906 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014907 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14908 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030014909 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_86");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014910 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014911 return NULL;
14912 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014913 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14914 PyMem_Free(_children);
14915 _PyPegen_insert_memo(p, _start_mark, _loop1_86_type, _seq);
14916 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014917}
14918
Guido van Rossum3941d972020-05-01 09:42:03 -070014919// _loop0_87: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014920static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070014921_loop0_87_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014922{
14923 if (p->error_indicator) {
14924 return NULL;
14925 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014926 void *_res = NULL;
14927 int _mark = p->mark;
14928 int _start_mark = p->mark;
14929 void **_children = PyMem_Malloc(sizeof(void *));
14930 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014931 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14932 return NULL;
14933 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014934 ssize_t _children_capacity = 1;
14935 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014936 { // lambda_param_maybe_default
14937 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014938 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014939 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014940 )
14941 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014942 _res = lambda_param_maybe_default_var;
14943 if (_n == _children_capacity) {
14944 _children_capacity *= 2;
14945 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14946 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014947 PyErr_Format(PyExc_MemoryError, "realloc None");
14948 return NULL;
14949 }
14950 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014951 _children[_n++] = _res;
14952 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014953 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014954 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014955 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014956 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
14957 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070014958 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_87");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014959 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014960 return NULL;
14961 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014962 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
14963 PyMem_Free(_children);
14964 _PyPegen_insert_memo(p, _start_mark, _loop0_87_type, _seq);
14965 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014966}
14967
Guido van Rossum3941d972020-05-01 09:42:03 -070014968// _loop1_88: lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014969static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070014970_loop1_88_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014971{
14972 if (p->error_indicator) {
14973 return NULL;
14974 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014975 void *_res = NULL;
14976 int _mark = p->mark;
14977 int _start_mark = p->mark;
14978 void **_children = PyMem_Malloc(sizeof(void *));
14979 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014980 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
14981 return NULL;
14982 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014983 ssize_t _children_capacity = 1;
14984 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070014985 { // lambda_param_maybe_default
14986 NameDefaultPair* lambda_param_maybe_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014987 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010014988 (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p)) // lambda_param_maybe_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014989 )
14990 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010014991 _res = lambda_param_maybe_default_var;
14992 if (_n == _children_capacity) {
14993 _children_capacity *= 2;
14994 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
14995 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010014996 PyErr_Format(PyExc_MemoryError, "realloc None");
14997 return NULL;
14998 }
14999 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015000 _children[_n++] = _res;
15001 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015002 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015003 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015004 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015005 if (_n == 0 || p->error_indicator) {
15006 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070015007 return NULL;
15008 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015009 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15010 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015011 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_88");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015012 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015013 return NULL;
15014 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015015 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15016 PyMem_Free(_children);
15017 _PyPegen_insert_memo(p, _start_mark, _loop1_88_type, _seq);
15018 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015019}
15020
Guido van Rossum3941d972020-05-01 09:42:03 -070015021// _loop1_89: ('or' conjunction)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015022static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015023_loop1_89_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015024{
15025 if (p->error_indicator) {
15026 return NULL;
15027 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015028 void *_res = NULL;
15029 int _mark = p->mark;
15030 int _start_mark = p->mark;
15031 void **_children = PyMem_Malloc(sizeof(void *));
15032 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015033 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15034 return NULL;
15035 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015036 ssize_t _children_capacity = 1;
15037 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015038 { // ('or' conjunction)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015039 void *_tmp_141_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015040 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015041 (_tmp_141_var = _tmp_141_rule(p)) // 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015042 )
15043 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015044 _res = _tmp_141_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015045 if (_n == _children_capacity) {
15046 _children_capacity *= 2;
15047 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15048 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015049 PyErr_Format(PyExc_MemoryError, "realloc None");
15050 return NULL;
15051 }
15052 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015053 _children[_n++] = _res;
15054 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015055 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015056 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015057 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015058 if (_n == 0 || p->error_indicator) {
15059 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015060 return NULL;
15061 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015062 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15063 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015064 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_89");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015065 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015066 return NULL;
15067 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015068 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15069 PyMem_Free(_children);
15070 _PyPegen_insert_memo(p, _start_mark, _loop1_89_type, _seq);
15071 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015072}
15073
Guido van Rossum3941d972020-05-01 09:42:03 -070015074// _loop1_90: ('and' inversion)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015075static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015076_loop1_90_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015077{
15078 if (p->error_indicator) {
15079 return NULL;
15080 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015081 void *_res = NULL;
15082 int _mark = p->mark;
15083 int _start_mark = p->mark;
15084 void **_children = PyMem_Malloc(sizeof(void *));
15085 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015086 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15087 return NULL;
15088 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015089 ssize_t _children_capacity = 1;
15090 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015091 { // ('and' inversion)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015092 void *_tmp_142_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015093 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015094 (_tmp_142_var = _tmp_142_rule(p)) // 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015095 )
15096 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015097 _res = _tmp_142_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015098 if (_n == _children_capacity) {
15099 _children_capacity *= 2;
15100 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15101 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015102 PyErr_Format(PyExc_MemoryError, "realloc None");
15103 return NULL;
15104 }
15105 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015106 _children[_n++] = _res;
15107 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015108 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015109 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015110 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015111 if (_n == 0 || p->error_indicator) {
15112 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015113 return NULL;
15114 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015115 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15116 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015117 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_90");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015118 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015119 return NULL;
15120 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015121 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15122 PyMem_Free(_children);
15123 _PyPegen_insert_memo(p, _start_mark, _loop1_90_type, _seq);
15124 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015125}
15126
Guido van Rossum3941d972020-05-01 09:42:03 -070015127// _loop1_91: compare_op_bitwise_or_pair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015128static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015129_loop1_91_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015130{
15131 if (p->error_indicator) {
15132 return NULL;
15133 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015134 void *_res = NULL;
15135 int _mark = p->mark;
15136 int _start_mark = p->mark;
15137 void **_children = PyMem_Malloc(sizeof(void *));
15138 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015139 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15140 return NULL;
15141 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015142 ssize_t _children_capacity = 1;
15143 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015144 { // compare_op_bitwise_or_pair
15145 CmpopExprPair* compare_op_bitwise_or_pair_var;
15146 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015147 (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 +010015148 )
15149 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015150 _res = compare_op_bitwise_or_pair_var;
15151 if (_n == _children_capacity) {
15152 _children_capacity *= 2;
15153 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15154 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015155 PyErr_Format(PyExc_MemoryError, "realloc None");
15156 return NULL;
15157 }
15158 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015159 _children[_n++] = _res;
15160 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015161 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015162 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015163 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015164 if (_n == 0 || p->error_indicator) {
15165 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015166 return NULL;
15167 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015168 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15169 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015170 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_91");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015171 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015172 return NULL;
15173 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015174 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15175 PyMem_Free(_children);
15176 _PyPegen_insert_memo(p, _start_mark, _loop1_91_type, _seq);
15177 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015178}
15179
Guido van Rossum3941d972020-05-01 09:42:03 -070015180// _tmp_92: '!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010015181static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015182_tmp_92_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010015183{
15184 if (p->error_indicator) {
15185 return NULL;
15186 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015187 void * _res = NULL;
15188 int _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015189 { // '!='
Pablo Galindob796b3f2020-05-01 12:32:26 +010015190 Token * tok;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015191 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015192 (tok = _PyPegen_expect_token(p, 28)) // token='!='
Pablo Galindo2b74c832020-04-27 18:02:07 +010015193 )
15194 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015195 _res = _PyPegen_check_barry_as_flufl ( p ) ? NULL : tok;
15196 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindo2b74c832020-04-27 18:02:07 +010015197 p->error_indicator = 1;
15198 return NULL;
15199 }
15200 goto done;
15201 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015202 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015203 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015204 _res = NULL;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015205 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015206 return _res;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015207}
15208
Guido van Rossum3941d972020-05-01 09:42:03 -070015209// _loop0_94: ',' slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015210static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015211_loop0_94_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015212{
15213 if (p->error_indicator) {
15214 return NULL;
15215 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015216 void *_res = NULL;
15217 int _mark = p->mark;
15218 int _start_mark = p->mark;
15219 void **_children = PyMem_Malloc(sizeof(void *));
15220 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015221 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15222 return NULL;
15223 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015224 ssize_t _children_capacity = 1;
15225 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015226 { // ',' slice
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015227 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015228 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015229 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015230 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015231 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015232 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015233 )
15234 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015235 _res = elem;
15236 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015237 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015238 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015239 return NULL;
15240 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015241 if (_n == _children_capacity) {
15242 _children_capacity *= 2;
15243 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15244 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015245 PyErr_Format(PyExc_MemoryError, "realloc None");
15246 return NULL;
15247 }
15248 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015249 _children[_n++] = _res;
15250 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015252 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015254 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15255 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015256 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_94");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015257 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015258 return NULL;
15259 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015260 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15261 PyMem_Free(_children);
15262 _PyPegen_insert_memo(p, _start_mark, _loop0_94_type, _seq);
15263 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015264}
15265
Guido van Rossum3941d972020-05-01 09:42:03 -070015266// _gather_93: slice _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015267static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015268_gather_93_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015269{
15270 if (p->error_indicator) {
15271 return NULL;
15272 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015273 asdl_seq * _res = NULL;
15274 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015275 { // slice _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015276 expr_ty elem;
15277 asdl_seq * seq;
15278 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015279 (elem = slice_rule(p)) // slice
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015280 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015281 (seq = _loop0_94_rule(p)) // _loop0_94
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015282 )
15283 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015284 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015285 goto done;
15286 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015287 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015288 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015289 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015290 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015291 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015292}
15293
Guido van Rossum3941d972020-05-01 09:42:03 -070015294// _tmp_95: ':' expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015295static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015296_tmp_95_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015297{
15298 if (p->error_indicator) {
15299 return NULL;
15300 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015301 void * _res = NULL;
15302 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015303 { // ':' expression?
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015304 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015305 void *d;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015306 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015307 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015308 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015309 (d = expression_rule(p), 1) // expression?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015310 )
15311 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015312 _res = d;
15313 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015314 p->error_indicator = 1;
15315 return NULL;
15316 }
15317 goto done;
15318 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015319 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015320 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015321 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015322 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015323 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015324}
15325
Guido van Rossum3941d972020-05-01 09:42:03 -070015326// _tmp_96: tuple | group | genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015327static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015328_tmp_96_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015329{
15330 if (p->error_indicator) {
15331 return NULL;
15332 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015333 void * _res = NULL;
15334 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015335 { // tuple
15336 expr_ty tuple_var;
15337 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015338 (tuple_var = tuple_rule(p)) // tuple
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015339 )
15340 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015341 _res = tuple_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015342 goto done;
15343 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015344 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015345 }
15346 { // group
15347 expr_ty group_var;
15348 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015349 (group_var = group_rule(p)) // group
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015350 )
15351 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015352 _res = group_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015353 goto done;
15354 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015355 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015356 }
15357 { // genexp
15358 expr_ty genexp_var;
15359 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015360 (genexp_var = genexp_rule(p)) // genexp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015361 )
15362 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015363 _res = genexp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015364 goto done;
15365 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015366 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015367 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015368 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015369 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015370 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015371}
15372
Guido van Rossum3941d972020-05-01 09:42:03 -070015373// _tmp_97: list | listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015374static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015375_tmp_97_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015376{
15377 if (p->error_indicator) {
15378 return NULL;
15379 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015380 void * _res = NULL;
15381 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015382 { // list
15383 expr_ty list_var;
15384 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015385 (list_var = list_rule(p)) // list
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015386 )
15387 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015388 _res = list_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015389 goto done;
15390 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015391 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015392 }
15393 { // listcomp
15394 expr_ty listcomp_var;
15395 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015396 (listcomp_var = listcomp_rule(p)) // listcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015397 )
15398 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015399 _res = listcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015400 goto done;
15401 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015402 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015403 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015404 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015405 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015406 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015407}
15408
Guido van Rossum3941d972020-05-01 09:42:03 -070015409// _tmp_98: dict | set | dictcomp | setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015410static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015411_tmp_98_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015412{
15413 if (p->error_indicator) {
15414 return NULL;
15415 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015416 void * _res = NULL;
15417 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015418 { // dict
15419 expr_ty dict_var;
15420 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015421 (dict_var = dict_rule(p)) // dict
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015422 )
15423 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015424 _res = dict_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015425 goto done;
15426 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015427 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015428 }
15429 { // set
15430 expr_ty set_var;
15431 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015432 (set_var = set_rule(p)) // set
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015433 )
15434 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015435 _res = set_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015436 goto done;
15437 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015438 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015439 }
15440 { // dictcomp
15441 expr_ty dictcomp_var;
15442 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015443 (dictcomp_var = dictcomp_rule(p)) // dictcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015444 )
15445 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015446 _res = dictcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015447 goto done;
15448 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015449 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015450 }
15451 { // setcomp
15452 expr_ty setcomp_var;
15453 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015454 (setcomp_var = setcomp_rule(p)) // setcomp
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015455 )
15456 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015457 _res = setcomp_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015458 goto done;
15459 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015460 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015461 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015462 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015463 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015464 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015465}
15466
Guido van Rossum3941d972020-05-01 09:42:03 -070015467// _loop1_99: STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015468static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015469_loop1_99_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015470{
15471 if (p->error_indicator) {
15472 return NULL;
15473 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015474 void *_res = NULL;
15475 int _mark = p->mark;
15476 int _start_mark = p->mark;
15477 void **_children = PyMem_Malloc(sizeof(void *));
15478 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015479 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15480 return NULL;
15481 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015482 ssize_t _children_capacity = 1;
15483 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015484 { // STRING
15485 expr_ty string_var;
15486 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015487 (string_var = _PyPegen_string_token(p)) // STRING
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015488 )
15489 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015490 _res = string_var;
15491 if (_n == _children_capacity) {
15492 _children_capacity *= 2;
15493 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15494 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015495 PyErr_Format(PyExc_MemoryError, "realloc None");
15496 return NULL;
15497 }
15498 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015499 _children[_n++] = _res;
15500 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015501 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015502 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015503 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015504 if (_n == 0 || p->error_indicator) {
15505 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015506 return NULL;
15507 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015508 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15509 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015510 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_99");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015511 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015512 return NULL;
15513 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015514 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15515 PyMem_Free(_children);
15516 _PyPegen_insert_memo(p, _start_mark, _loop1_99_type, _seq);
15517 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015518}
15519
Guido van Rossum3941d972020-05-01 09:42:03 -070015520// _tmp_100: star_named_expression ',' star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015521static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015522_tmp_100_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015523{
15524 if (p->error_indicator) {
15525 return NULL;
15526 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015527 void * _res = NULL;
15528 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015529 { // star_named_expression ',' star_named_expressions?
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015530 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015531 expr_ty y;
15532 void *z;
15533 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015534 (y = star_named_expression_rule(p)) // star_named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015535 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015536 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015537 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015538 (z = star_named_expressions_rule(p), 1) // star_named_expressions?
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015539 )
15540 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015541 _res = _PyPegen_seq_insert_in_front ( p , y , z );
15542 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015543 p->error_indicator = 1;
15544 return NULL;
15545 }
15546 goto done;
15547 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015548 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015549 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015550 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015551 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015552 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015553}
15554
Guido van Rossum3941d972020-05-01 09:42:03 -070015555// _tmp_101: yield_expr | named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015556static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015557_tmp_101_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015558{
15559 if (p->error_indicator) {
15560 return NULL;
15561 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015562 void * _res = NULL;
15563 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015564 { // yield_expr
15565 expr_ty yield_expr_var;
15566 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015567 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015568 )
15569 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015570 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015571 goto done;
15572 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015573 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015574 }
15575 { // named_expression
15576 expr_ty named_expression_var;
15577 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015578 (named_expression_var = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015579 )
15580 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015581 _res = named_expression_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015582 goto done;
15583 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015584 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015585 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015586 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015587 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015588 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015589}
15590
Guido van Rossum3941d972020-05-01 09:42:03 -070015591// _loop0_103: ',' kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015592static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015593_loop0_103_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015594{
15595 if (p->error_indicator) {
15596 return NULL;
15597 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015598 void *_res = NULL;
15599 int _mark = p->mark;
15600 int _start_mark = p->mark;
15601 void **_children = PyMem_Malloc(sizeof(void *));
15602 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015603 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15604 return NULL;
15605 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015606 ssize_t _children_capacity = 1;
15607 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015608 { // ',' kvpair
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015609 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015610 KeyValuePair* elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015611 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015612 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015613 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015614 (elem = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015615 )
15616 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015617 _res = elem;
15618 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015619 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015620 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015621 return NULL;
15622 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015623 if (_n == _children_capacity) {
15624 _children_capacity *= 2;
15625 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15626 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015627 PyErr_Format(PyExc_MemoryError, "realloc None");
15628 return NULL;
15629 }
15630 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015631 _children[_n++] = _res;
15632 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015633 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015634 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015635 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015636 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15637 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015638 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_103");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015639 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015640 return NULL;
15641 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015642 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15643 PyMem_Free(_children);
15644 _PyPegen_insert_memo(p, _start_mark, _loop0_103_type, _seq);
15645 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015646}
15647
Guido van Rossum3941d972020-05-01 09:42:03 -070015648// _gather_102: kvpair _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015649static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015650_gather_102_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015651{
15652 if (p->error_indicator) {
15653 return NULL;
15654 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015655 asdl_seq * _res = NULL;
15656 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015657 { // kvpair _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015658 KeyValuePair* elem;
15659 asdl_seq * seq;
15660 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015661 (elem = kvpair_rule(p)) // kvpair
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015662 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015663 (seq = _loop0_103_rule(p)) // _loop0_103
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015664 )
15665 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015666 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015667 goto done;
15668 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015669 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015670 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015671 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015672 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015673 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015674}
15675
Guido van Rossum3941d972020-05-01 09:42:03 -070015676// _loop1_104: for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015677static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015678_loop1_104_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015679{
15680 if (p->error_indicator) {
15681 return NULL;
15682 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015683 void *_res = NULL;
15684 int _mark = p->mark;
15685 int _start_mark = p->mark;
15686 void **_children = PyMem_Malloc(sizeof(void *));
15687 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015688 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15689 return NULL;
15690 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015691 ssize_t _children_capacity = 1;
15692 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015693 { // for_if_clause
15694 comprehension_ty for_if_clause_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015695 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010015696 (for_if_clause_var = for_if_clause_rule(p)) // for_if_clause
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015697 )
15698 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015699 _res = for_if_clause_var;
15700 if (_n == _children_capacity) {
15701 _children_capacity *= 2;
15702 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15703 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015704 PyErr_Format(PyExc_MemoryError, "realloc None");
15705 return NULL;
15706 }
15707 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015708 _children[_n++] = _res;
15709 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015710 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015711 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015712 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015713 if (_n == 0 || p->error_indicator) {
15714 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015715 return NULL;
15716 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015717 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15718 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015719 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_104");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015720 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015721 return NULL;
15722 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015723 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15724 PyMem_Free(_children);
15725 _PyPegen_insert_memo(p, _start_mark, _loop1_104_type, _seq);
15726 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010015727}
15728
Guido van Rossum3941d972020-05-01 09:42:03 -070015729// _loop0_105: ('if' disjunction)
Pablo Galindo2b74c832020-04-27 18:02:07 +010015730static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015731_loop0_105_rule(Parser *p)
Pablo Galindo2b74c832020-04-27 18:02:07 +010015732{
15733 if (p->error_indicator) {
15734 return NULL;
15735 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015736 void *_res = NULL;
15737 int _mark = p->mark;
15738 int _start_mark = p->mark;
15739 void **_children = PyMem_Malloc(sizeof(void *));
15740 if (!_children) {
Pablo Galindo2b74c832020-04-27 18:02:07 +010015741 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15742 return NULL;
15743 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015744 ssize_t _children_capacity = 1;
15745 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015746 { // ('if' disjunction)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015747 void *_tmp_143_var;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015748 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015749 (_tmp_143_var = _tmp_143_rule(p)) // 'if' disjunction
Pablo Galindo2b74c832020-04-27 18:02:07 +010015750 )
15751 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015752 _res = _tmp_143_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015753 if (_n == _children_capacity) {
15754 _children_capacity *= 2;
15755 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15756 if (!_children) {
Pablo Galindo2b74c832020-04-27 18:02:07 +010015757 PyErr_Format(PyExc_MemoryError, "realloc None");
15758 return NULL;
15759 }
15760 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015761 _children[_n++] = _res;
15762 _mark = p->mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015763 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015764 p->mark = _mark;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015765 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015766 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15767 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015768 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_105");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015769 PyMem_Free(_children);
Pablo Galindo2b74c832020-04-27 18:02:07 +010015770 return NULL;
15771 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015772 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15773 PyMem_Free(_children);
15774 _PyPegen_insert_memo(p, _start_mark, _loop0_105_type, _seq);
15775 return _seq;
Pablo Galindo2b74c832020-04-27 18:02:07 +010015776}
15777
Guido van Rossum3941d972020-05-01 09:42:03 -070015778// _loop0_106: ('if' disjunction)
Guido van Rossumc001c092020-04-30 12:12:19 -070015779static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070015780_loop0_106_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070015781{
15782 if (p->error_indicator) {
15783 return NULL;
15784 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015785 void *_res = NULL;
15786 int _mark = p->mark;
15787 int _start_mark = p->mark;
15788 void **_children = PyMem_Malloc(sizeof(void *));
15789 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015790 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15791 return NULL;
15792 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015793 ssize_t _children_capacity = 1;
15794 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015795 { // ('if' disjunction)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015796 void *_tmp_144_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015797 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015798 (_tmp_144_var = _tmp_144_rule(p)) // 'if' disjunction
Guido van Rossumc001c092020-04-30 12:12:19 -070015799 )
15800 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030015801 _res = _tmp_144_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015802 if (_n == _children_capacity) {
15803 _children_capacity *= 2;
15804 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15805 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015806 PyErr_Format(PyExc_MemoryError, "realloc None");
15807 return NULL;
15808 }
15809 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015810 _children[_n++] = _res;
15811 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015812 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015813 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015814 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015815 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15816 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015817 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_106");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015818 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015819 return NULL;
15820 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015821 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15822 PyMem_Free(_children);
15823 _PyPegen_insert_memo(p, _start_mark, _loop0_106_type, _seq);
15824 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015825}
15826
Guido van Rossum3941d972020-05-01 09:42:03 -070015827// _tmp_107: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015828static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015829_tmp_107_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015830{
15831 if (p->error_indicator) {
15832 return NULL;
15833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015834 void * _res = NULL;
15835 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015836 { // ',' args
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015837 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015838 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015839 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015840 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015841 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015842 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015843 )
15844 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015845 _res = c;
15846 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015847 p->error_indicator = 1;
15848 return NULL;
15849 }
Guido van Rossumc001c092020-04-30 12:12:19 -070015850 goto done;
15851 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015852 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070015853 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015854 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070015855 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015856 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070015857}
15858
Guido van Rossum3941d972020-05-01 09:42:03 -070015859// _tmp_108: ',' args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015860static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070015861_tmp_108_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015862{
15863 if (p->error_indicator) {
15864 return NULL;
15865 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015866 void * _res = NULL;
15867 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015868 { // ',' args
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015869 Token * _literal;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015870 expr_ty c;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015871 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015872 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015873 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015874 (c = args_rule(p)) // args
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015875 )
15876 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015877 _res = c;
15878 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015879 p->error_indicator = 1;
15880 return NULL;
15881 }
15882 goto done;
15883 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015884 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015885 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015886 _res = NULL;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015887 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015888 return _res;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030015889}
15890
Guido van Rossum3941d972020-05-01 09:42:03 -070015891// _loop0_110: ',' kwarg_or_starred
15892static asdl_seq *
15893_loop0_110_rule(Parser *p)
15894{
15895 if (p->error_indicator) {
15896 return NULL;
15897 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015898 void *_res = NULL;
15899 int _mark = p->mark;
15900 int _start_mark = p->mark;
15901 void **_children = PyMem_Malloc(sizeof(void *));
15902 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015903 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15904 return NULL;
15905 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015906 ssize_t _children_capacity = 1;
15907 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070015908 { // ',' kwarg_or_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015909 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070015910 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070015911 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015912 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070015913 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015914 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070015915 )
15916 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015917 _res = elem;
15918 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015919 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015920 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070015921 return NULL;
15922 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015923 if (_n == _children_capacity) {
15924 _children_capacity *= 2;
15925 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
15926 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015927 PyErr_Format(PyExc_MemoryError, "realloc None");
15928 return NULL;
15929 }
15930 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015931 _children[_n++] = _res;
15932 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015933 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015934 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015935 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015936 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
15937 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015938 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_110");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015939 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070015940 return NULL;
15941 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015942 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
15943 PyMem_Free(_children);
15944 _PyPegen_insert_memo(p, _start_mark, _loop0_110_type, _seq);
15945 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070015946}
15947
15948// _gather_109: kwarg_or_starred _loop0_110
15949static asdl_seq *
15950_gather_109_rule(Parser *p)
15951{
15952 if (p->error_indicator) {
15953 return NULL;
15954 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015955 asdl_seq * _res = NULL;
15956 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015957 { // kwarg_or_starred _loop0_110
15958 KeywordOrStarred* elem;
15959 asdl_seq * seq;
15960 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010015961 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070015962 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015963 (seq = _loop0_110_rule(p)) // _loop0_110
Guido van Rossum3941d972020-05-01 09:42:03 -070015964 )
15965 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015966 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070015967 goto done;
15968 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015969 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070015970 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015971 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070015972 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015973 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070015974}
15975
15976// _loop0_112: ',' kwarg_or_double_starred
15977static asdl_seq *
15978_loop0_112_rule(Parser *p)
15979{
15980 if (p->error_indicator) {
15981 return NULL;
15982 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015983 void *_res = NULL;
15984 int _mark = p->mark;
15985 int _start_mark = p->mark;
15986 void **_children = PyMem_Malloc(sizeof(void *));
15987 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070015988 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
15989 return NULL;
15990 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015991 ssize_t _children_capacity = 1;
15992 ssize_t _n = 0;
Guido van Rossum3941d972020-05-01 09:42:03 -070015993 { // ',' kwarg_or_double_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015994 Token * _literal;
Guido van Rossum3941d972020-05-01 09:42:03 -070015995 KeywordOrStarred* elem;
Guido van Rossum3941d972020-05-01 09:42:03 -070015996 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010015997 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossum3941d972020-05-01 09:42:03 -070015998 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010015999 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070016000 )
16001 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016002 _res = elem;
16003 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016004 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016005 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016006 return NULL;
16007 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016008 if (_n == _children_capacity) {
16009 _children_capacity *= 2;
16010 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16011 if (!_children) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016012 PyErr_Format(PyExc_MemoryError, "realloc None");
16013 return NULL;
16014 }
16015 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016016 _children[_n++] = _res;
16017 _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016018 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016019 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016021 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16022 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016023 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_112");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016024 PyMem_Free(_children);
Guido van Rossum3941d972020-05-01 09:42:03 -070016025 return NULL;
16026 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016027 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16028 PyMem_Free(_children);
16029 _PyPegen_insert_memo(p, _start_mark, _loop0_112_type, _seq);
16030 return _seq;
Guido van Rossum3941d972020-05-01 09:42:03 -070016031}
16032
16033// _gather_111: kwarg_or_double_starred _loop0_112
16034static asdl_seq *
16035_gather_111_rule(Parser *p)
16036{
16037 if (p->error_indicator) {
16038 return NULL;
16039 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016040 asdl_seq * _res = NULL;
16041 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016042 { // kwarg_or_double_starred _loop0_112
16043 KeywordOrStarred* elem;
16044 asdl_seq * seq;
16045 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016046 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossum3941d972020-05-01 09:42:03 -070016047 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016048 (seq = _loop0_112_rule(p)) // _loop0_112
Guido van Rossum3941d972020-05-01 09:42:03 -070016049 )
16050 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016051 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossum3941d972020-05-01 09:42:03 -070016052 goto done;
16053 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016054 p->mark = _mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016055 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016056 _res = NULL;
Guido van Rossum3941d972020-05-01 09:42:03 -070016057 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016058 return _res;
Guido van Rossum3941d972020-05-01 09:42:03 -070016059}
16060
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016061// _loop0_114: ',' kwarg_or_starred
Pablo Galindo2b74c832020-04-27 18:02:07 +010016062static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016063_loop0_114_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016064{
16065 if (p->error_indicator) {
16066 return NULL;
16067 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016068 void *_res = NULL;
16069 int _mark = p->mark;
16070 int _start_mark = p->mark;
16071 void **_children = PyMem_Malloc(sizeof(void *));
16072 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016073 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16074 return NULL;
16075 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016076 ssize_t _children_capacity = 1;
16077 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070016078 { // ',' kwarg_or_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016079 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070016080 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070016081 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016082 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070016083 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016084 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016085 )
16086 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016087 _res = elem;
16088 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016089 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016090 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016091 return NULL;
16092 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016093 if (_n == _children_capacity) {
16094 _children_capacity *= 2;
16095 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16096 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016097 PyErr_Format(PyExc_MemoryError, "realloc None");
16098 return NULL;
16099 }
16100 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016101 _children[_n++] = _res;
16102 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016103 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016104 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016105 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016106 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16107 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016108 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_114");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016109 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016110 return NULL;
16111 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016112 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16113 PyMem_Free(_children);
16114 _PyPegen_insert_memo(p, _start_mark, _loop0_114_type, _seq);
16115 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070016116}
16117
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016118// _gather_113: kwarg_or_starred _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070016119static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016120_gather_113_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016121{
16122 if (p->error_indicator) {
16123 return NULL;
16124 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016125 asdl_seq * _res = NULL;
16126 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016127 { // kwarg_or_starred _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070016128 KeywordOrStarred* elem;
16129 asdl_seq * seq;
16130 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016131 (elem = kwarg_or_starred_rule(p)) // kwarg_or_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016132 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016133 (seq = _loop0_114_rule(p)) // _loop0_114
Guido van Rossumc001c092020-04-30 12:12:19 -070016134 )
16135 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016136 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070016137 goto done;
16138 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016139 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016140 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016141 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070016142 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016143 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070016144}
16145
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016146// _loop0_116: ',' kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016147static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016148_loop0_116_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016149{
16150 if (p->error_indicator) {
16151 return NULL;
16152 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016153 void *_res = NULL;
16154 int _mark = p->mark;
16155 int _start_mark = p->mark;
16156 void **_children = PyMem_Malloc(sizeof(void *));
16157 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016158 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16159 return NULL;
16160 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016161 ssize_t _children_capacity = 1;
16162 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070016163 { // ',' kwarg_or_double_starred
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016164 Token * _literal;
Guido van Rossumc001c092020-04-30 12:12:19 -070016165 KeywordOrStarred* elem;
Guido van Rossumc001c092020-04-30 12:12:19 -070016166 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016167 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Guido van Rossumc001c092020-04-30 12:12:19 -070016168 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016169 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016170 )
16171 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016172 _res = elem;
16173 if (_res == NULL && PyErr_Occurred()) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016174 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016175 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016176 return NULL;
16177 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016178 if (_n == _children_capacity) {
16179 _children_capacity *= 2;
16180 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16181 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016182 PyErr_Format(PyExc_MemoryError, "realloc None");
16183 return NULL;
16184 }
16185 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016186 _children[_n++] = _res;
16187 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016188 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016189 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016190 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016191 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16192 if (!_seq) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016193 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_116");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016194 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016195 return NULL;
16196 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016197 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16198 PyMem_Free(_children);
16199 _PyPegen_insert_memo(p, _start_mark, _loop0_116_type, _seq);
16200 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070016201}
16202
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016203// _gather_115: kwarg_or_double_starred _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070016204static asdl_seq *
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016205_gather_115_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016206{
16207 if (p->error_indicator) {
16208 return NULL;
16209 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016210 asdl_seq * _res = NULL;
16211 int _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016212 { // kwarg_or_double_starred _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070016213 KeywordOrStarred* elem;
16214 asdl_seq * seq;
16215 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016216 (elem = kwarg_or_double_starred_rule(p)) // kwarg_or_double_starred
Guido van Rossumc001c092020-04-30 12:12:19 -070016217 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016218 (seq = _loop0_116_rule(p)) // _loop0_116
Guido van Rossumc001c092020-04-30 12:12:19 -070016219 )
16220 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016221 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Guido van Rossumc001c092020-04-30 12:12:19 -070016222 goto done;
16223 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016224 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070016225 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016226 _res = NULL;
Guido van Rossumc001c092020-04-30 12:12:19 -070016227 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016228 return _res;
Guido van Rossumc001c092020-04-30 12:12:19 -070016229}
16230
Guido van Rossum3941d972020-05-01 09:42:03 -070016231// _loop0_117: (',' star_target)
Guido van Rossumc001c092020-04-30 12:12:19 -070016232static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016233_loop0_117_rule(Parser *p)
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016234{
16235 if (p->error_indicator) {
16236 return NULL;
16237 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016238 void *_res = NULL;
16239 int _mark = p->mark;
16240 int _start_mark = p->mark;
16241 void **_children = PyMem_Malloc(sizeof(void *));
16242 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016243 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16244 return NULL;
16245 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016246 ssize_t _children_capacity = 1;
16247 ssize_t _n = 0;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016248 { // (',' star_target)
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016249 void *_tmp_145_var;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016250 while (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016251 (_tmp_145_var = _tmp_145_rule(p)) // ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016252 )
16253 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016254 _res = _tmp_145_var;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016255 if (_n == _children_capacity) {
16256 _children_capacity *= 2;
16257 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16258 if (!_children) {
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016259 PyErr_Format(PyExc_MemoryError, "realloc None");
16260 return NULL;
16261 }
16262 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016263 _children[_n++] = _res;
16264 _mark = p->mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016266 p->mark = _mark;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016267 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016268 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16269 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016270 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_117");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016271 PyMem_Free(_children);
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016272 return NULL;
16273 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016274 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16275 PyMem_Free(_children);
16276 _PyPegen_insert_memo(p, _start_mark, _loop0_117_type, _seq);
16277 return _seq;
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016278}
16279
Guido van Rossum3941d972020-05-01 09:42:03 -070016280// _loop0_119: ',' star_target
Lysandros Nikolaou3e0a6f32020-05-01 06:27:52 +030016281static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016282_loop0_119_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070016283{
16284 if (p->error_indicator) {
16285 return NULL;
16286 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016287 void *_res = NULL;
16288 int _mark = p->mark;
16289 int _start_mark = p->mark;
16290 void **_children = PyMem_Malloc(sizeof(void *));
16291 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016292 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16293 return NULL;
16294 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016295 ssize_t _children_capacity = 1;
16296 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016297 { // ',' star_target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016298 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016299 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016300 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016301 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016302 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016303 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016304 )
16305 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016306 _res = elem;
16307 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016308 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016309 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016310 return NULL;
16311 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016312 if (_n == _children_capacity) {
16313 _children_capacity *= 2;
16314 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16315 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016316 PyErr_Format(PyExc_MemoryError, "realloc None");
16317 return NULL;
16318 }
16319 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016320 _children[_n++] = _res;
16321 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016322 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016323 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016324 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016325 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16326 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016327 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_119");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016328 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016329 return NULL;
16330 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016331 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16332 PyMem_Free(_children);
16333 _PyPegen_insert_memo(p, _start_mark, _loop0_119_type, _seq);
16334 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016335}
16336
Guido van Rossum3941d972020-05-01 09:42:03 -070016337// _gather_118: star_target _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016338static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016339_gather_118_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016340{
16341 if (p->error_indicator) {
16342 return NULL;
16343 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016344 asdl_seq * _res = NULL;
16345 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016346 { // star_target _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016347 expr_ty elem;
16348 asdl_seq * seq;
16349 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016350 (elem = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016351 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016352 (seq = _loop0_119_rule(p)) // _loop0_119
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016353 )
16354 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016355 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016356 goto done;
16357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016358 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016360 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016361 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016362 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016363}
16364
Guido van Rossum3941d972020-05-01 09:42:03 -070016365// _tmp_120: !'*' star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016366static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016367_tmp_120_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016368{
16369 if (p->error_indicator) {
16370 return NULL;
16371 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016372 void * _res = NULL;
16373 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016374 { // !'*' star_target
16375 expr_ty star_target_var;
16376 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016377 _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16) // token='*'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016378 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016379 (star_target_var = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016380 )
16381 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016382 _res = star_target_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016383 goto done;
16384 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016385 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016386 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016387 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016388 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016389 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016390}
16391
Guido van Rossum3941d972020-05-01 09:42:03 -070016392// _loop0_122: ',' del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016393static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016394_loop0_122_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016395{
16396 if (p->error_indicator) {
16397 return NULL;
16398 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016399 void *_res = NULL;
16400 int _mark = p->mark;
16401 int _start_mark = p->mark;
16402 void **_children = PyMem_Malloc(sizeof(void *));
16403 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016404 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16405 return NULL;
16406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016407 ssize_t _children_capacity = 1;
16408 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016409 { // ',' del_target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016410 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016411 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016412 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016413 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016414 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016415 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016416 )
16417 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016418 _res = elem;
16419 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016420 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016421 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016422 return NULL;
16423 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016424 if (_n == _children_capacity) {
16425 _children_capacity *= 2;
16426 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16427 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016428 PyErr_Format(PyExc_MemoryError, "realloc None");
16429 return NULL;
16430 }
16431 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016432 _children[_n++] = _res;
16433 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016434 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016435 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016436 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016437 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16438 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016439 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_122");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016440 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016441 return NULL;
16442 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016443 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16444 PyMem_Free(_children);
16445 _PyPegen_insert_memo(p, _start_mark, _loop0_122_type, _seq);
16446 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016447}
16448
Guido van Rossum3941d972020-05-01 09:42:03 -070016449// _gather_121: del_target _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016450static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016451_gather_121_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016452{
16453 if (p->error_indicator) {
16454 return NULL;
16455 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016456 asdl_seq * _res = NULL;
16457 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016458 { // del_target _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016459 expr_ty elem;
16460 asdl_seq * seq;
16461 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016462 (elem = del_target_rule(p)) // del_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016463 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016464 (seq = _loop0_122_rule(p)) // _loop0_122
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016465 )
16466 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016467 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016468 goto done;
16469 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016470 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016471 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016472 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016473 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016474 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016475}
16476
Guido van Rossum3941d972020-05-01 09:42:03 -070016477// _loop0_124: ',' target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016478static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016479_loop0_124_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016480{
16481 if (p->error_indicator) {
16482 return NULL;
16483 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016484 void *_res = NULL;
16485 int _mark = p->mark;
16486 int _start_mark = p->mark;
16487 void **_children = PyMem_Malloc(sizeof(void *));
16488 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016489 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16490 return NULL;
16491 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016492 ssize_t _children_capacity = 1;
16493 ssize_t _n = 0;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016494 { // ',' target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016495 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016496 expr_ty elem;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016497 while (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016498 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016499 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016500 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016501 )
16502 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016503 _res = elem;
16504 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016505 p->error_indicator = 1;
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016506 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016507 return NULL;
16508 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016509 if (_n == _children_capacity) {
16510 _children_capacity *= 2;
16511 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16512 if (!_children) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016513 PyErr_Format(PyExc_MemoryError, "realloc None");
16514 return NULL;
16515 }
16516 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016517 _children[_n++] = _res;
16518 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016519 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016520 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016521 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016522 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16523 if (!_seq) {
Guido van Rossum3941d972020-05-01 09:42:03 -070016524 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_124");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016525 PyMem_Free(_children);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016526 return NULL;
16527 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016528 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16529 PyMem_Free(_children);
16530 _PyPegen_insert_memo(p, _start_mark, _loop0_124_type, _seq);
16531 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016532}
16533
Guido van Rossum3941d972020-05-01 09:42:03 -070016534// _gather_123: target _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016535static asdl_seq *
Guido van Rossum3941d972020-05-01 09:42:03 -070016536_gather_123_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016537{
16538 if (p->error_indicator) {
16539 return NULL;
16540 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016541 asdl_seq * _res = NULL;
16542 int _mark = p->mark;
Guido van Rossum3941d972020-05-01 09:42:03 -070016543 { // target _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016544 expr_ty elem;
16545 asdl_seq * seq;
16546 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016547 (elem = target_rule(p)) // target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016548 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016549 (seq = _loop0_124_rule(p)) // _loop0_124
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016550 )
16551 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016552 _res = _PyPegen_seq_insert_in_front(p, elem, seq);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016553 goto done;
16554 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016555 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016556 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016557 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016558 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016559 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016560}
16561
Guido van Rossum3941d972020-05-01 09:42:03 -070016562// _tmp_125: args | expression for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016563static void *
Guido van Rossum3941d972020-05-01 09:42:03 -070016564_tmp_125_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016565{
16566 if (p->error_indicator) {
16567 return NULL;
16568 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016569 void * _res = NULL;
16570 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016571 { // args
16572 expr_ty args_var;
16573 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016574 (args_var = args_rule(p)) // args
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016575 )
16576 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016577 _res = args_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016578 goto done;
16579 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016580 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016581 }
16582 { // expression for_if_clauses
16583 expr_ty expression_var;
16584 asdl_seq* for_if_clauses_var;
16585 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016586 (expression_var = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016587 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016588 (for_if_clauses_var = for_if_clauses_rule(p)) // for_if_clauses
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016589 )
16590 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016591 _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016592 goto done;
16593 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016594 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016595 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016596 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016597 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016598 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016599}
16600
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016601// _loop0_126: star_named_expressions
16602static asdl_seq *
16603_loop0_126_rule(Parser *p)
16604{
16605 if (p->error_indicator) {
16606 return NULL;
16607 }
16608 void *_res = NULL;
16609 int _mark = p->mark;
16610 int _start_mark = p->mark;
16611 void **_children = PyMem_Malloc(sizeof(void *));
16612 if (!_children) {
16613 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16614 return NULL;
16615 }
16616 ssize_t _children_capacity = 1;
16617 ssize_t _n = 0;
16618 { // star_named_expressions
16619 asdl_seq* star_named_expressions_var;
16620 while (
16621 (star_named_expressions_var = star_named_expressions_rule(p)) // star_named_expressions
16622 )
16623 {
16624 _res = star_named_expressions_var;
16625 if (_n == _children_capacity) {
16626 _children_capacity *= 2;
16627 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16628 if (!_children) {
16629 PyErr_Format(PyExc_MemoryError, "realloc None");
16630 return NULL;
16631 }
16632 }
16633 _children[_n++] = _res;
16634 _mark = p->mark;
16635 }
16636 p->mark = _mark;
16637 }
16638 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16639 if (!_seq) {
16640 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_126");
16641 PyMem_Free(_children);
16642 return NULL;
16643 }
16644 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16645 PyMem_Free(_children);
16646 _PyPegen_insert_memo(p, _start_mark, _loop0_126_type, _seq);
16647 return _seq;
16648}
16649
16650// _tmp_127: '=' annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016651static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016652_tmp_127_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016653{
16654 if (p->error_indicator) {
16655 return NULL;
16656 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016657 void * _res = NULL;
16658 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016659 { // '=' annotated_rhs
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016660 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016661 expr_ty annotated_rhs_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016662 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016663 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016664 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010016665 (annotated_rhs_var = annotated_rhs_rule(p)) // annotated_rhs
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016666 )
16667 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016668 _res = _PyPegen_dummy_name(p, _literal, annotated_rhs_var);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016669 goto done;
16670 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016671 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016672 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016673 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016674 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016675 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016676}
16677
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016678// _tmp_128: '=' | augassign
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016679static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016680_tmp_128_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016681{
16682 if (p->error_indicator) {
16683 return NULL;
16684 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016685 void * _res = NULL;
16686 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016687 { // '='
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016688 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016689 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016690 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016691 )
16692 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016693 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016694 goto done;
16695 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016696 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016697 }
16698 { // augassign
16699 AugOperator* augassign_var;
16700 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016701 (augassign_var = augassign_rule(p)) // augassign
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016702 )
16703 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016704 _res = augassign_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016705 goto done;
16706 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016707 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016708 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016709 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016710 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016711 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016712}
16713
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016714// _tmp_129: yield_expr | star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016715static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016716_tmp_129_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016717{
16718 if (p->error_indicator) {
16719 return NULL;
16720 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016721 void * _res = NULL;
16722 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016723 { // yield_expr
16724 expr_ty yield_expr_var;
16725 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016726 (yield_expr_var = yield_expr_rule(p)) // yield_expr
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016727 )
16728 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016729 _res = yield_expr_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016730 goto done;
16731 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016732 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016733 }
16734 { // star_expressions
16735 expr_ty star_expressions_var;
16736 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016737 (star_expressions_var = star_expressions_rule(p)) // star_expressions
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016738 )
16739 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016740 _res = star_expressions_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016741 goto done;
16742 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016743 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016744 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016745 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016746 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016747 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016748}
16749
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016750// _tmp_130: '[' | '(' | '{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016751static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016752_tmp_130_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016753{
16754 if (p->error_indicator) {
16755 return NULL;
16756 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016757 void * _res = NULL;
16758 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016759 { // '['
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016760 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016761 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016762 (_literal = _PyPegen_expect_token(p, 9)) // token='['
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016763 )
16764 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016765 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016766 goto done;
16767 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016768 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016769 }
16770 { // '('
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016771 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016772 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016773 (_literal = _PyPegen_expect_token(p, 7)) // token='('
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016774 )
16775 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016776 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016777 goto done;
16778 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016779 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016780 }
16781 { // '{'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016782 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016783 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016784 (_literal = _PyPegen_expect_token(p, 25)) // token='{'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016785 )
16786 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016787 _res = _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016788 goto done;
16789 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016790 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016791 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016792 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016793 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016794 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016795}
16796
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016797// _loop0_131: param_no_default
Guido van Rossumc001c092020-04-30 12:12:19 -070016798static asdl_seq *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016799_loop0_131_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016800{
16801 if (p->error_indicator) {
16802 return NULL;
16803 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016804 void *_res = NULL;
16805 int _mark = p->mark;
16806 int _start_mark = p->mark;
16807 void **_children = PyMem_Malloc(sizeof(void *));
16808 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016809 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
16810 return NULL;
16811 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016812 ssize_t _children_capacity = 1;
16813 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070016814 { // param_no_default
16815 arg_ty param_no_default_var;
16816 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010016817 (param_no_default_var = param_no_default_rule(p)) // param_no_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016818 )
16819 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016820 _res = param_no_default_var;
16821 if (_n == _children_capacity) {
16822 _children_capacity *= 2;
16823 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
16824 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070016825 PyErr_Format(PyExc_MemoryError, "realloc None");
16826 return NULL;
16827 }
16828 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016829 _children[_n++] = _res;
16830 _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016831 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016832 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016833 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016834 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
16835 if (!_seq) {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016836 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop0_131");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016837 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070016838 return NULL;
16839 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016840 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
16841 PyMem_Free(_children);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016842 _PyPegen_insert_memo(p, _start_mark, _loop0_131_type, _seq);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016843 return _seq;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016844}
16845
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016846// _tmp_132: slash_with_default | param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016847static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016848_tmp_132_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016849{
16850 if (p->error_indicator) {
16851 return NULL;
16852 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016853 void * _res = NULL;
16854 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016855 { // slash_with_default
16856 SlashWithDefault* slash_with_default_var;
16857 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016858 (slash_with_default_var = slash_with_default_rule(p)) // slash_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016859 )
16860 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016861 _res = slash_with_default_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016862 goto done;
16863 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016864 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016865 }
Guido van Rossumc001c092020-04-30 12:12:19 -070016866 { // param_with_default+
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016867 asdl_seq * _loop1_146_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016868 if (
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016869 (_loop1_146_var = _loop1_146_rule(p)) // param_with_default+
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016870 )
16871 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016872 _res = _loop1_146_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016873 goto done;
16874 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016875 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016876 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016877 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016878 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016879 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016880}
16881
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016882// _tmp_133: ')' | ',' (')' | '**')
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016883static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016884_tmp_133_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016885{
16886 if (p->error_indicator) {
16887 return NULL;
16888 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016889 void * _res = NULL;
16890 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016891 { // ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016892 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016893 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016894 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016895 )
16896 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016897 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016898 goto done;
16899 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016900 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016901 }
16902 { // ',' (')' | '**')
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016903 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016904 void *_tmp_147_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016905 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016906 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016907 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016908 (_tmp_147_var = _tmp_147_rule(p)) // ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016909 )
16910 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016911 _res = _PyPegen_dummy_name(p, _literal, _tmp_147_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016912 goto done;
16913 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016914 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016915 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016916 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016917 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016918 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016919}
16920
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016921// _tmp_134: ':' | ',' (':' | '**')
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016922static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016923_tmp_134_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016924{
16925 if (p->error_indicator) {
16926 return NULL;
16927 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016928 void * _res = NULL;
16929 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016930 { // ':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016931 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016932 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016933 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016934 )
16935 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016936 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016937 goto done;
16938 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016939 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016940 }
16941 { // ',' (':' | '**')
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016942 Token * _literal;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016943 void *_tmp_148_var;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016944 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016945 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016946 &&
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016947 (_tmp_148_var = _tmp_148_rule(p)) // ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016948 )
16949 {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016950 _res = _PyPegen_dummy_name(p, _literal, _tmp_148_var);
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016951 goto done;
16952 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016953 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016954 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016955 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016956 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016957 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016958}
16959
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016960// _tmp_135: star_targets '='
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016961static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030016962_tmp_135_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016963{
16964 if (p->error_indicator) {
16965 return NULL;
16966 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016967 void * _res = NULL;
16968 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016969 { // star_targets '='
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016970 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016971 expr_ty z;
16972 if (
Pablo Galindo470aac42020-05-06 23:14:43 +010016973 (z = star_targets_rule(p)) // star_targets
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016974 &&
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016975 (_literal = _PyPegen_expect_token(p, 22)) // token='='
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016976 )
16977 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016978 _res = z;
16979 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016980 p->error_indicator = 1;
16981 return NULL;
16982 }
16983 goto done;
16984 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016985 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016986 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016987 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016988 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016989 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010016990}
16991
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030016992// _tmp_136: '.' | '...'
16993static void *
16994_tmp_136_rule(Parser *p)
16995{
16996 if (p->error_indicator) {
16997 return NULL;
16998 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010016999 void * _res = NULL;
17000 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017001 { // '.'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017002 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017003 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017004 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017005 )
17006 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017007 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017008 goto done;
17009 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017010 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017011 }
17012 { // '...'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017013 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017014 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017015 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017016 )
17017 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017018 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017019 goto done;
17020 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017021 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017022 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017023 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017024 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017025 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017026}
17027
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017028// _tmp_137: '.' | '...'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017029static void *
17030_tmp_137_rule(Parser *p)
17031{
17032 if (p->error_indicator) {
17033 return NULL;
17034 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017035 void * _res = NULL;
17036 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017037 { // '.'
17038 Token * _literal;
17039 if (
17040 (_literal = _PyPegen_expect_token(p, 23)) // token='.'
17041 )
17042 {
17043 _res = _literal;
17044 goto done;
17045 }
17046 p->mark = _mark;
17047 }
17048 { // '...'
17049 Token * _literal;
17050 if (
17051 (_literal = _PyPegen_expect_token(p, 52)) // token='...'
17052 )
17053 {
17054 _res = _literal;
17055 goto done;
17056 }
17057 p->mark = _mark;
17058 }
17059 _res = NULL;
17060 done:
17061 return _res;
17062}
17063
17064// _tmp_138: '@' named_expression NEWLINE
17065static void *
17066_tmp_138_rule(Parser *p)
17067{
17068 if (p->error_indicator) {
17069 return NULL;
17070 }
17071 void * _res = NULL;
17072 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017073 { // '@' named_expression NEWLINE
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017074 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017075 expr_ty f;
Pablo Galindob796b3f2020-05-01 12:32:26 +010017076 Token * newline_var;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017077 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017078 (_literal = _PyPegen_expect_token(p, 49)) // token='@'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017079 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017080 (f = named_expression_rule(p)) // named_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017081 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017082 (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017083 )
17084 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017085 _res = f;
17086 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017087 p->error_indicator = 1;
17088 return NULL;
17089 }
17090 goto done;
17091 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017092 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017093 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017094 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017095 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017096 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017097}
17098
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017099// _tmp_139: ',' star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017100static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017101_tmp_139_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017102{
17103 if (p->error_indicator) {
17104 return NULL;
17105 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017106 void * _res = NULL;
17107 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017108 { // ',' star_expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017109 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017110 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017111 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017112 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017113 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017114 (c = star_expression_rule(p)) // star_expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017115 )
17116 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017117 _res = c;
17118 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017119 p->error_indicator = 1;
17120 return NULL;
17121 }
17122 goto done;
17123 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017124 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017125 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017126 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017127 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017128 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017129}
17130
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017131// _tmp_140: ',' expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017132static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017133_tmp_140_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017134{
17135 if (p->error_indicator) {
17136 return NULL;
17137 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017138 void * _res = NULL;
17139 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017140 { // ',' expression
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017141 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017142 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017143 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017144 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017145 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017146 (c = expression_rule(p)) // expression
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017147 )
17148 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017149 _res = c;
17150 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017151 p->error_indicator = 1;
17152 return NULL;
17153 }
17154 goto done;
17155 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017156 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017157 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017158 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017159 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017160 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017161}
17162
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017163// _tmp_141: 'or' conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017164static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017165_tmp_141_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017166{
17167 if (p->error_indicator) {
17168 return NULL;
17169 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017170 void * _res = NULL;
17171 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017172 { // 'or' conjunction
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017173 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017174 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017175 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017176 (_keyword = _PyPegen_expect_token(p, 532)) // token='or'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017177 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017178 (c = conjunction_rule(p)) // conjunction
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017179 )
17180 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017181 _res = c;
17182 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017183 p->error_indicator = 1;
17184 return NULL;
17185 }
17186 goto done;
17187 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017188 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017189 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017190 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017191 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017192 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017193}
17194
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017195// _tmp_142: 'and' inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017196static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017197_tmp_142_rule(Parser *p)
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017198{
17199 if (p->error_indicator) {
17200 return NULL;
17201 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017202 void * _res = NULL;
17203 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017204 { // 'and' inversion
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017205 Token * _keyword;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017206 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017207 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017208 (_keyword = _PyPegen_expect_token(p, 533)) // token='and'
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017209 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017210 (c = inversion_rule(p)) // inversion
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017211 )
17212 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017213 _res = c;
17214 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017215 p->error_indicator = 1;
17216 return NULL;
17217 }
17218 goto done;
17219 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017220 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017221 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017222 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017223 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017224 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017225}
17226
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017227// _tmp_143: 'if' disjunction
17228static void *
17229_tmp_143_rule(Parser *p)
17230{
17231 if (p->error_indicator) {
17232 return NULL;
17233 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017234 void * _res = NULL;
17235 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017236 { // 'if' disjunction
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017237 Token * _keyword;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017238 expr_ty z;
17239 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017240 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017241 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017242 (z = disjunction_rule(p)) // disjunction
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017243 )
17244 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017245 _res = z;
17246 if (_res == NULL && PyErr_Occurred()) {
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017247 p->error_indicator = 1;
17248 return NULL;
17249 }
17250 goto done;
17251 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017252 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017253 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017254 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017255 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017256 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017257}
17258
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017259// _tmp_144: 'if' disjunction
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017260static void *
17261_tmp_144_rule(Parser *p)
17262{
17263 if (p->error_indicator) {
17264 return NULL;
17265 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017266 void * _res = NULL;
17267 int _mark = p->mark;
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017268 { // 'if' disjunction
17269 Token * _keyword;
17270 expr_ty z;
17271 if (
17272 (_keyword = _PyPegen_expect_token(p, 510)) // token='if'
17273 &&
17274 (z = disjunction_rule(p)) // disjunction
17275 )
17276 {
17277 _res = z;
17278 if (_res == NULL && PyErr_Occurred()) {
17279 p->error_indicator = 1;
17280 return NULL;
17281 }
17282 goto done;
17283 }
17284 p->mark = _mark;
17285 }
17286 _res = NULL;
17287 done:
17288 return _res;
17289}
17290
17291// _tmp_145: ',' star_target
17292static void *
17293_tmp_145_rule(Parser *p)
17294{
17295 if (p->error_indicator) {
17296 return NULL;
17297 }
17298 void * _res = NULL;
17299 int _mark = p->mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017300 { // ',' star_target
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017301 Token * _literal;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017302 expr_ty c;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017303 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017304 (_literal = _PyPegen_expect_token(p, 12)) // token=','
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017305 &&
Pablo Galindo470aac42020-05-06 23:14:43 +010017306 (c = star_target_rule(p)) // star_target
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017307 )
17308 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017309 _res = c;
17310 if (_res == NULL && PyErr_Occurred()) {
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017311 p->error_indicator = 1;
17312 return NULL;
17313 }
17314 goto done;
17315 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017316 p->mark = _mark;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017317 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017318 _res = NULL;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017319 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017320 return _res;
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017321}
17322
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017323// _loop1_146: param_with_default
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017324static asdl_seq *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017325_loop1_146_rule(Parser *p)
Guido van Rossumc001c092020-04-30 12:12:19 -070017326{
17327 if (p->error_indicator) {
17328 return NULL;
17329 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017330 void *_res = NULL;
17331 int _mark = p->mark;
17332 int _start_mark = p->mark;
17333 void **_children = PyMem_Malloc(sizeof(void *));
17334 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070017335 PyErr_Format(PyExc_MemoryError, "Parser out of memory");
17336 return NULL;
17337 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017338 ssize_t _children_capacity = 1;
17339 ssize_t _n = 0;
Guido van Rossumc001c092020-04-30 12:12:19 -070017340 { // param_with_default
17341 NameDefaultPair* param_with_default_var;
17342 while (
Pablo Galindo470aac42020-05-06 23:14:43 +010017343 (param_with_default_var = param_with_default_rule(p)) // param_with_default
Guido van Rossumc001c092020-04-30 12:12:19 -070017344 )
17345 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017346 _res = param_with_default_var;
17347 if (_n == _children_capacity) {
17348 _children_capacity *= 2;
17349 _children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
17350 if (!_children) {
Guido van Rossumc001c092020-04-30 12:12:19 -070017351 PyErr_Format(PyExc_MemoryError, "realloc None");
17352 return NULL;
17353 }
17354 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017355 _children[_n++] = _res;
17356 _mark = p->mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017357 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017358 p->mark = _mark;
Guido van Rossumc001c092020-04-30 12:12:19 -070017359 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017360 if (_n == 0 || p->error_indicator) {
17361 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070017362 return NULL;
17363 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017364 asdl_seq *_seq = _Py_asdl_seq_new(_n, p->arena);
17365 if (!_seq) {
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017366 PyErr_Format(PyExc_MemoryError, "asdl_seq_new _loop1_146");
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017367 PyMem_Free(_children);
Guido van Rossumc001c092020-04-30 12:12:19 -070017368 return NULL;
17369 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017370 for (int i = 0; i < _n; i++) asdl_seq_SET(_seq, i, _children[i]);
17371 PyMem_Free(_children);
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017372 _PyPegen_insert_memo(p, _start_mark, _loop1_146_type, _seq);
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017373 return _seq;
Guido van Rossumc001c092020-04-30 12:12:19 -070017374}
17375
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017376// _tmp_147: ')' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017377static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017378_tmp_147_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017379{
17380 if (p->error_indicator) {
17381 return NULL;
17382 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017383 void * _res = NULL;
17384 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017385 { // ')'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017386 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017387 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017388 (_literal = _PyPegen_expect_token(p, 8)) // token=')'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017389 )
17390 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017391 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017392 goto done;
17393 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017394 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017395 }
17396 { // '**'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017397 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017398 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017399 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017400 )
17401 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017402 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017403 goto done;
17404 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017405 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017406 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017407 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017408 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017409 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017410}
17411
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017412// _tmp_148: ':' | '**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017413static void *
Lysandros Nikolaoua15c9b32020-05-13 22:36:27 +030017414_tmp_148_rule(Parser *p)
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017415{
17416 if (p->error_indicator) {
17417 return NULL;
17418 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017419 void * _res = NULL;
17420 int _mark = p->mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017421 { // ':'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017422 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017423 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017424 (_literal = _PyPegen_expect_token(p, 11)) // token=':'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017425 )
17426 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017427 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017428 goto done;
17429 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017430 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017431 }
17432 { // '**'
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017433 Token * _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017434 if (
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017435 (_literal = _PyPegen_expect_token(p, 35)) // token='**'
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017436 )
17437 {
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017438 _res = _literal;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017439 goto done;
17440 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017441 p->mark = _mark;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017442 }
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017443 _res = NULL;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017444 done:
Pablo Galindoac7a92c2020-05-10 05:34:50 +010017445 return _res;
Lysandros Nikolaoue10e7c72020-05-04 13:58:31 +030017446}
17447
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017448void *
17449_PyPegen_parse(Parser *p)
17450{
17451 // Initialize keywords
17452 p->keywords = reserved_keywords;
17453 p->n_keyword_lists = n_keyword_lists;
17454
17455 // Run parser
17456 void *result = NULL;
17457 if (p->start_rule == Py_file_input) {
17458 result = file_rule(p);
17459 } else if (p->start_rule == Py_single_input) {
17460 result = interactive_rule(p);
17461 } else if (p->start_rule == Py_eval_input) {
17462 result = eval_rule(p);
Guido van Rossumc001c092020-04-30 12:12:19 -070017463 } else if (p->start_rule == Py_func_type_input) {
17464 result = func_type_rule(p);
Pablo Galindoc5fc1562020-04-22 23:29:27 +010017465 } else if (p->start_rule == Py_fstring_input) {
17466 result = fstring_rule(p);
17467 }
17468
17469 return result;
17470}
17471
17472// The end