From 78234d2696978d69e79c51c115e08b9a99943b6b Mon Sep 17 00:00:00 2001 From: Pablo Galindo Date: Thu, 18 Nov 2021 19:08:44 +0000 Subject: [PATCH] bpo-45834: Move runtime 'except:' check to the parser --- Grammar/python.gram | 13 +- Lib/test/test_syntax.py | 43 + Parser/parser.c | 1965 +++++++++++++++++++++++---------------- Parser/pegen.c | 2 +- Python/compile.c | 4 +- 5 files changed, 1198 insertions(+), 829 deletions(-) diff --git a/Grammar/python.gram b/Grammar/python.gram index d1901a5a9a2bc7..d80823bf3f2760 100644 --- a/Grammar/python.gram +++ b/Grammar/python.gram @@ -402,7 +402,12 @@ with_item[withitem_ty]: try_stmt[stmt_ty]: | invalid_try_stmt | 'try' &&':' b=block f=finally_block { _PyAST_Try(b, NULL, NULL, f, EXTRA) } - | 'try' &&':' b=block ex[asdl_excepthandler_seq*]=except_block+ el=[else_block] f=[finally_block] { _PyAST_Try(b, ex, el, f, EXTRA) } + | 'try' &&':' b=block ex[asdl_excepthandler_seq*]=except_block+ d_ex[asdl_match_case_seq*]=[default_except_block] el=[else_block] f=[finally_block] { + _PyAST_Try(b, (d_ex) ? (asdl_excepthandler_seq*)_PyPegen_seq_append_to_end(p, (asdl_seq*)ex, d_ex) : ex, el, f, EXTRA) + } + | 'try' &&':' b=block d_ex[asdl_match_case_seq*]=default_except_block el=[else_block] f=[finally_block] { + _PyAST_Try(b, (asdl_excepthandler_seq*)_PyPegen_singleton_seq(p, d_ex), el, f, EXTRA) + } # Except statement # ---------------- @@ -411,8 +416,9 @@ except_block[excepthandler_ty]: | invalid_except_stmt_indent | 'except' e=expression t=['as' z=NAME { z }] ':' b=block { _PyAST_ExceptHandler(e, (t) ? ((expr_ty) t)->v.Name.id : NULL, b, EXTRA) } - | 'except' ':' b=block { _PyAST_ExceptHandler(NULL, NULL, b, EXTRA) } | invalid_except_stmt +default_except_block[excepthandler_ty]: + | 'except' ':' b=block { _PyAST_ExceptHandler(NULL, NULL, b, EXTRA) } finally_block[asdl_stmt_seq*]: | invalid_finally_stmt | 'finally' &&':' a=block { a } @@ -1187,6 +1193,9 @@ invalid_try_stmt: | a='try' ':' NEWLINE !INDENT { RAISE_INDENTATION_ERROR("expected an indented block after 'try' statement on line %d", a->lineno) } | 'try' ':' block !('except' | 'finally') { RAISE_SYNTAX_ERROR("expected 'except' or 'finally' block") } + | 'try' ':' block except_block* a=default_except_block (except_block|default_except_block)+ { + RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "default 'except:' must be last") } + invalid_except_stmt: | 'except' a=expression ',' expressions ['as' NAME ] ':' { RAISE_SYNTAX_ERROR_STARTING_FROM(a, "multiple exception types must be parenthesized") } diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py index f41df8ca49aa6f..7112a6bf174d06 100644 --- a/Lib/test/test_syntax.py +++ b/Lib/test/test_syntax.py @@ -1039,6 +1039,49 @@ Traceback (most recent call last): IndentationError: expected an indented block after 'finally' statement on line 5 + >>> try: + ... something() + ... except: + ... pass + ... except A: + ... pass + ... else: + ... pass + ... finally: + ... pass + Traceback (most recent call last): + SyntaxError: default 'except:' must be last + + >>> try: + ... something() + ... except: + ... pass + ... except: + ... pass + ... else: + ... pass + ... finally: + ... pass + Traceback (most recent call last): + SyntaxError: default 'except:' must be last + + >>> try: + ... something() + ... except A: + ... pass + ... except B: + ... pass + ... except: + ... pass + ... except C: + ... pass + ... else: + ... pass + ... finally: + ... pass + Traceback (most recent call last): + SyntaxError: default 'except:' must be last + >>> with A: ... pass Traceback (most recent call last): diff --git a/Parser/parser.c b/Parser/parser.c index b508c1ddec15cb..f8677b7777f754 100644 --- a/Parser/parser.c +++ b/Parser/parser.c @@ -11,39 +11,39 @@ static KeywordToken *reserved_keywords[] = { (KeywordToken[]) {{NULL, -1}}, (KeywordToken[]) {{NULL, -1}}, (KeywordToken[]) { - {"if", 627}, - {"as", 625}, - {"in", 634}, - {"or", 571}, - {"is", 579}, + {"if", 629}, + {"as", 627}, + {"in", 636}, + {"or", 572}, + {"is", 580}, {NULL, -1}, }, (KeywordToken[]) { - {"del", 600}, - {"def", 635}, - {"for", 633}, - {"try", 612}, - {"and", 572}, - {"not", 578}, + {"del", 601}, + {"def", 637}, + {"for", 635}, + {"try", 616}, + {"and", 573}, + {"not", 579}, {NULL, -1}, }, (KeywordToken[]) { - {"from", 569}, + {"from", 570}, {"pass", 504}, - {"with", 609}, - {"elif", 629}, - {"else", 630}, - {"None", 598}, - {"True", 597}, + {"with", 610}, + {"elif", 631}, + {"else", 632}, + {"None", 599}, + {"True", 598}, {NULL, -1}, }, (KeywordToken[]) { {"raise", 522}, - {"yield", 570}, + {"yield", 571}, {"break", 508}, - {"class", 636}, - {"while", 632}, - {"False", 599}, + {"class", 638}, + {"while", 634}, + {"False", 600}, {NULL, -1}, }, (KeywordToken[]) { @@ -51,12 +51,12 @@ static KeywordToken *reserved_keywords[] = { {"import", 531}, {"assert", 526}, {"global", 523}, - {"except", 623}, - {"lambda", 583}, + {"except", 625}, + {"lambda", 584}, {NULL, -1}, }, (KeywordToken[]) { - {"finally", 620}, + {"finally", 622}, {NULL, -1}, }, (KeywordToken[]) { @@ -128,376 +128,380 @@ static char *soft_keywords[] = { #define with_item_type 1054 #define try_stmt_type 1055 #define except_block_type 1056 -#define finally_block_type 1057 -#define match_stmt_type 1058 -#define subject_expr_type 1059 -#define case_block_type 1060 -#define guard_type 1061 -#define patterns_type 1062 -#define pattern_type 1063 -#define as_pattern_type 1064 -#define or_pattern_type 1065 -#define closed_pattern_type 1066 -#define literal_pattern_type 1067 -#define literal_expr_type 1068 -#define complex_number_type 1069 -#define signed_number_type 1070 -#define signed_real_number_type 1071 -#define real_number_type 1072 -#define imaginary_number_type 1073 -#define capture_pattern_type 1074 -#define pattern_capture_target_type 1075 -#define wildcard_pattern_type 1076 -#define value_pattern_type 1077 -#define attr_type 1078 // Left-recursive -#define name_or_attr_type 1079 // Left-recursive -#define group_pattern_type 1080 -#define sequence_pattern_type 1081 -#define open_sequence_pattern_type 1082 -#define maybe_sequence_pattern_type 1083 -#define maybe_star_pattern_type 1084 -#define star_pattern_type 1085 -#define mapping_pattern_type 1086 -#define items_pattern_type 1087 -#define key_value_pattern_type 1088 -#define double_star_pattern_type 1089 -#define class_pattern_type 1090 -#define positional_patterns_type 1091 -#define keyword_patterns_type 1092 -#define keyword_pattern_type 1093 -#define expressions_type 1094 -#define expression_type 1095 -#define yield_expr_type 1096 -#define star_expressions_type 1097 -#define star_expression_type 1098 -#define star_named_expressions_type 1099 -#define star_named_expression_type 1100 -#define assignment_expression_type 1101 -#define named_expression_type 1102 -#define disjunction_type 1103 -#define conjunction_type 1104 -#define inversion_type 1105 -#define comparison_type 1106 -#define compare_op_bitwise_or_pair_type 1107 -#define eq_bitwise_or_type 1108 -#define noteq_bitwise_or_type 1109 -#define lte_bitwise_or_type 1110 -#define lt_bitwise_or_type 1111 -#define gte_bitwise_or_type 1112 -#define gt_bitwise_or_type 1113 -#define notin_bitwise_or_type 1114 -#define in_bitwise_or_type 1115 -#define isnot_bitwise_or_type 1116 -#define is_bitwise_or_type 1117 -#define bitwise_or_type 1118 // Left-recursive -#define bitwise_xor_type 1119 // Left-recursive -#define bitwise_and_type 1120 // Left-recursive -#define shift_expr_type 1121 // Left-recursive -#define sum_type 1122 // Left-recursive -#define term_type 1123 // Left-recursive -#define factor_type 1124 -#define power_type 1125 -#define await_primary_type 1126 -#define primary_type 1127 // Left-recursive -#define slices_type 1128 -#define slice_type 1129 -#define atom_type 1130 -#define group_type 1131 -#define lambdef_type 1132 -#define lambda_params_type 1133 -#define lambda_parameters_type 1134 -#define lambda_slash_no_default_type 1135 -#define lambda_slash_with_default_type 1136 -#define lambda_star_etc_type 1137 -#define lambda_kwds_type 1138 -#define lambda_param_no_default_type 1139 -#define lambda_param_with_default_type 1140 -#define lambda_param_maybe_default_type 1141 -#define lambda_param_type 1142 -#define strings_type 1143 -#define list_type 1144 -#define tuple_type 1145 -#define set_type 1146 -#define dict_type 1147 -#define double_starred_kvpairs_type 1148 -#define double_starred_kvpair_type 1149 -#define kvpair_type 1150 -#define for_if_clauses_type 1151 -#define for_if_clause_type 1152 -#define listcomp_type 1153 -#define setcomp_type 1154 -#define genexp_type 1155 -#define dictcomp_type 1156 -#define arguments_type 1157 -#define args_type 1158 -#define kwargs_type 1159 -#define starred_expression_type 1160 -#define kwarg_or_starred_type 1161 -#define kwarg_or_double_starred_type 1162 -#define star_targets_type 1163 -#define star_targets_list_seq_type 1164 -#define star_targets_tuple_seq_type 1165 -#define star_target_type 1166 -#define target_with_star_atom_type 1167 -#define star_atom_type 1168 -#define single_target_type 1169 -#define single_subscript_attribute_target_type 1170 -#define t_primary_type 1171 // Left-recursive -#define t_lookahead_type 1172 -#define del_targets_type 1173 -#define del_target_type 1174 -#define del_t_atom_type 1175 -#define type_expressions_type 1176 -#define func_type_comment_type 1177 -#define invalid_arguments_type 1178 -#define invalid_kwarg_type 1179 -#define expression_without_invalid_type 1180 -#define invalid_legacy_expression_type 1181 -#define invalid_expression_type 1182 -#define invalid_named_expression_type 1183 -#define invalid_assignment_type 1184 -#define invalid_ann_assign_target_type 1185 -#define invalid_del_stmt_type 1186 -#define invalid_block_type 1187 -#define invalid_comprehension_type 1188 -#define invalid_dict_comprehension_type 1189 -#define invalid_parameters_type 1190 -#define invalid_parameters_helper_type 1191 -#define invalid_lambda_parameters_type 1192 -#define invalid_lambda_parameters_helper_type 1193 -#define invalid_star_etc_type 1194 -#define invalid_lambda_star_etc_type 1195 -#define invalid_double_type_comments_type 1196 -#define invalid_with_item_type 1197 -#define invalid_for_target_type 1198 -#define invalid_group_type 1199 -#define invalid_import_from_targets_type 1200 -#define invalid_with_stmt_type 1201 -#define invalid_with_stmt_indent_type 1202 -#define invalid_try_stmt_type 1203 -#define invalid_except_stmt_type 1204 -#define invalid_finally_stmt_type 1205 -#define invalid_except_stmt_indent_type 1206 -#define invalid_match_stmt_type 1207 -#define invalid_case_block_type 1208 -#define invalid_as_pattern_type 1209 -#define invalid_class_pattern_type 1210 -#define invalid_class_argument_pattern_type 1211 -#define invalid_if_stmt_type 1212 -#define invalid_elif_stmt_type 1213 -#define invalid_else_stmt_type 1214 -#define invalid_while_stmt_type 1215 -#define invalid_for_stmt_type 1216 -#define invalid_def_raw_type 1217 -#define invalid_class_def_raw_type 1218 -#define invalid_double_starred_kvpairs_type 1219 -#define invalid_kvpair_type 1220 -#define _loop0_1_type 1221 -#define _loop0_2_type 1222 -#define _loop1_3_type 1223 -#define _loop0_5_type 1224 -#define _gather_4_type 1225 -#define _tmp_6_type 1226 -#define _tmp_7_type 1227 -#define _tmp_8_type 1228 -#define _tmp_9_type 1229 -#define _tmp_10_type 1230 -#define _tmp_11_type 1231 -#define _tmp_12_type 1232 -#define _tmp_13_type 1233 -#define _loop1_14_type 1234 -#define _tmp_15_type 1235 -#define _tmp_16_type 1236 -#define _tmp_17_type 1237 -#define _loop0_19_type 1238 -#define _gather_18_type 1239 -#define _loop0_21_type 1240 -#define _gather_20_type 1241 -#define _tmp_22_type 1242 -#define _tmp_23_type 1243 -#define _loop0_24_type 1244 -#define _loop1_25_type 1245 -#define _loop0_27_type 1246 -#define _gather_26_type 1247 -#define _tmp_28_type 1248 -#define _loop0_30_type 1249 -#define _gather_29_type 1250 -#define _tmp_31_type 1251 -#define _loop1_32_type 1252 -#define _tmp_33_type 1253 -#define _tmp_34_type 1254 -#define _tmp_35_type 1255 -#define _loop0_36_type 1256 -#define _loop0_37_type 1257 -#define _loop0_38_type 1258 -#define _loop1_39_type 1259 -#define _loop0_40_type 1260 -#define _loop1_41_type 1261 -#define _loop1_42_type 1262 -#define _loop1_43_type 1263 -#define _loop0_44_type 1264 -#define _loop1_45_type 1265 -#define _loop0_46_type 1266 -#define _loop1_47_type 1267 -#define _loop0_48_type 1268 -#define _loop1_49_type 1269 -#define _loop0_51_type 1270 -#define _gather_50_type 1271 -#define _loop0_53_type 1272 -#define _gather_52_type 1273 -#define _loop0_55_type 1274 -#define _gather_54_type 1275 -#define _loop0_57_type 1276 -#define _gather_56_type 1277 -#define _tmp_58_type 1278 -#define _loop1_59_type 1279 -#define _tmp_60_type 1280 -#define _loop1_61_type 1281 -#define _loop0_63_type 1282 -#define _gather_62_type 1283 -#define _tmp_64_type 1284 -#define _tmp_65_type 1285 -#define _tmp_66_type 1286 -#define _tmp_67_type 1287 -#define _loop0_69_type 1288 -#define _gather_68_type 1289 -#define _loop0_71_type 1290 -#define _gather_70_type 1291 -#define _tmp_72_type 1292 -#define _loop0_74_type 1293 -#define _gather_73_type 1294 -#define _loop0_76_type 1295 -#define _gather_75_type 1296 -#define _loop1_77_type 1297 -#define _loop1_78_type 1298 -#define _loop0_80_type 1299 -#define _gather_79_type 1300 -#define _loop1_81_type 1301 -#define _loop1_82_type 1302 -#define _loop1_83_type 1303 -#define _tmp_84_type 1304 -#define _loop0_86_type 1305 -#define _gather_85_type 1306 -#define _tmp_87_type 1307 -#define _tmp_88_type 1308 -#define _tmp_89_type 1309 -#define _tmp_90_type 1310 -#define _tmp_91_type 1311 -#define _loop0_92_type 1312 -#define _loop0_93_type 1313 -#define _loop0_94_type 1314 -#define _loop1_95_type 1315 -#define _loop0_96_type 1316 -#define _loop1_97_type 1317 -#define _loop1_98_type 1318 -#define _loop1_99_type 1319 -#define _loop0_100_type 1320 -#define _loop1_101_type 1321 -#define _loop0_102_type 1322 -#define _loop1_103_type 1323 -#define _loop0_104_type 1324 -#define _loop1_105_type 1325 -#define _loop1_106_type 1326 -#define _tmp_107_type 1327 -#define _loop0_109_type 1328 -#define _gather_108_type 1329 -#define _loop1_110_type 1330 -#define _loop0_111_type 1331 -#define _loop0_112_type 1332 -#define _tmp_113_type 1333 -#define _loop0_115_type 1334 -#define _gather_114_type 1335 -#define _tmp_116_type 1336 -#define _loop0_118_type 1337 -#define _gather_117_type 1338 -#define _loop0_120_type 1339 -#define _gather_119_type 1340 -#define _loop0_122_type 1341 -#define _gather_121_type 1342 -#define _loop0_124_type 1343 -#define _gather_123_type 1344 -#define _loop0_125_type 1345 -#define _loop0_127_type 1346 -#define _gather_126_type 1347 -#define _loop1_128_type 1348 -#define _tmp_129_type 1349 -#define _loop0_131_type 1350 -#define _gather_130_type 1351 -#define _loop0_133_type 1352 -#define _gather_132_type 1353 -#define _loop0_135_type 1354 -#define _gather_134_type 1355 -#define _loop0_137_type 1356 -#define _gather_136_type 1357 -#define _loop0_139_type 1358 -#define _gather_138_type 1359 -#define _tmp_140_type 1360 -#define _tmp_141_type 1361 -#define _tmp_142_type 1362 -#define _tmp_143_type 1363 -#define _tmp_144_type 1364 -#define _tmp_145_type 1365 -#define _tmp_146_type 1366 -#define _tmp_147_type 1367 -#define _tmp_148_type 1368 -#define _loop0_149_type 1369 -#define _loop0_150_type 1370 -#define _loop0_151_type 1371 -#define _tmp_152_type 1372 -#define _tmp_153_type 1373 -#define _tmp_154_type 1374 -#define _tmp_155_type 1375 -#define _loop0_156_type 1376 -#define _loop1_157_type 1377 -#define _loop0_158_type 1378 -#define _loop1_159_type 1379 -#define _tmp_160_type 1380 -#define _tmp_161_type 1381 -#define _tmp_162_type 1382 -#define _loop0_164_type 1383 -#define _gather_163_type 1384 -#define _loop0_166_type 1385 -#define _gather_165_type 1386 -#define _loop0_168_type 1387 -#define _gather_167_type 1388 -#define _loop0_170_type 1389 -#define _gather_169_type 1390 -#define _tmp_171_type 1391 -#define _tmp_172_type 1392 -#define _tmp_173_type 1393 -#define _tmp_174_type 1394 -#define _tmp_175_type 1395 -#define _tmp_176_type 1396 -#define _tmp_177_type 1397 -#define _loop0_179_type 1398 -#define _gather_178_type 1399 -#define _tmp_180_type 1400 -#define _tmp_181_type 1401 -#define _tmp_182_type 1402 -#define _tmp_183_type 1403 -#define _tmp_184_type 1404 -#define _tmp_185_type 1405 -#define _tmp_186_type 1406 -#define _tmp_187_type 1407 -#define _tmp_188_type 1408 -#define _tmp_189_type 1409 -#define _tmp_190_type 1410 -#define _tmp_191_type 1411 -#define _tmp_192_type 1412 -#define _tmp_193_type 1413 -#define _tmp_194_type 1414 -#define _tmp_195_type 1415 -#define _tmp_196_type 1416 -#define _tmp_197_type 1417 -#define _tmp_198_type 1418 -#define _tmp_199_type 1419 -#define _tmp_200_type 1420 -#define _tmp_201_type 1421 -#define _tmp_202_type 1422 -#define _tmp_203_type 1423 -#define _tmp_204_type 1424 -#define _tmp_205_type 1425 -#define _tmp_206_type 1426 +#define default_except_block_type 1057 +#define finally_block_type 1058 +#define match_stmt_type 1059 +#define subject_expr_type 1060 +#define case_block_type 1061 +#define guard_type 1062 +#define patterns_type 1063 +#define pattern_type 1064 +#define as_pattern_type 1065 +#define or_pattern_type 1066 +#define closed_pattern_type 1067 +#define literal_pattern_type 1068 +#define literal_expr_type 1069 +#define complex_number_type 1070 +#define signed_number_type 1071 +#define signed_real_number_type 1072 +#define real_number_type 1073 +#define imaginary_number_type 1074 +#define capture_pattern_type 1075 +#define pattern_capture_target_type 1076 +#define wildcard_pattern_type 1077 +#define value_pattern_type 1078 +#define attr_type 1079 // Left-recursive +#define name_or_attr_type 1080 // Left-recursive +#define group_pattern_type 1081 +#define sequence_pattern_type 1082 +#define open_sequence_pattern_type 1083 +#define maybe_sequence_pattern_type 1084 +#define maybe_star_pattern_type 1085 +#define star_pattern_type 1086 +#define mapping_pattern_type 1087 +#define items_pattern_type 1088 +#define key_value_pattern_type 1089 +#define double_star_pattern_type 1090 +#define class_pattern_type 1091 +#define positional_patterns_type 1092 +#define keyword_patterns_type 1093 +#define keyword_pattern_type 1094 +#define expressions_type 1095 +#define expression_type 1096 +#define yield_expr_type 1097 +#define star_expressions_type 1098 +#define star_expression_type 1099 +#define star_named_expressions_type 1100 +#define star_named_expression_type 1101 +#define assignment_expression_type 1102 +#define named_expression_type 1103 +#define disjunction_type 1104 +#define conjunction_type 1105 +#define inversion_type 1106 +#define comparison_type 1107 +#define compare_op_bitwise_or_pair_type 1108 +#define eq_bitwise_or_type 1109 +#define noteq_bitwise_or_type 1110 +#define lte_bitwise_or_type 1111 +#define lt_bitwise_or_type 1112 +#define gte_bitwise_or_type 1113 +#define gt_bitwise_or_type 1114 +#define notin_bitwise_or_type 1115 +#define in_bitwise_or_type 1116 +#define isnot_bitwise_or_type 1117 +#define is_bitwise_or_type 1118 +#define bitwise_or_type 1119 // Left-recursive +#define bitwise_xor_type 1120 // Left-recursive +#define bitwise_and_type 1121 // Left-recursive +#define shift_expr_type 1122 // Left-recursive +#define sum_type 1123 // Left-recursive +#define term_type 1124 // Left-recursive +#define factor_type 1125 +#define power_type 1126 +#define await_primary_type 1127 +#define primary_type 1128 // Left-recursive +#define slices_type 1129 +#define slice_type 1130 +#define atom_type 1131 +#define group_type 1132 +#define lambdef_type 1133 +#define lambda_params_type 1134 +#define lambda_parameters_type 1135 +#define lambda_slash_no_default_type 1136 +#define lambda_slash_with_default_type 1137 +#define lambda_star_etc_type 1138 +#define lambda_kwds_type 1139 +#define lambda_param_no_default_type 1140 +#define lambda_param_with_default_type 1141 +#define lambda_param_maybe_default_type 1142 +#define lambda_param_type 1143 +#define strings_type 1144 +#define list_type 1145 +#define tuple_type 1146 +#define set_type 1147 +#define dict_type 1148 +#define double_starred_kvpairs_type 1149 +#define double_starred_kvpair_type 1150 +#define kvpair_type 1151 +#define for_if_clauses_type 1152 +#define for_if_clause_type 1153 +#define listcomp_type 1154 +#define setcomp_type 1155 +#define genexp_type 1156 +#define dictcomp_type 1157 +#define arguments_type 1158 +#define args_type 1159 +#define kwargs_type 1160 +#define starred_expression_type 1161 +#define kwarg_or_starred_type 1162 +#define kwarg_or_double_starred_type 1163 +#define star_targets_type 1164 +#define star_targets_list_seq_type 1165 +#define star_targets_tuple_seq_type 1166 +#define star_target_type 1167 +#define target_with_star_atom_type 1168 +#define star_atom_type 1169 +#define single_target_type 1170 +#define single_subscript_attribute_target_type 1171 +#define t_primary_type 1172 // Left-recursive +#define t_lookahead_type 1173 +#define del_targets_type 1174 +#define del_target_type 1175 +#define del_t_atom_type 1176 +#define type_expressions_type 1177 +#define func_type_comment_type 1178 +#define invalid_arguments_type 1179 +#define invalid_kwarg_type 1180 +#define expression_without_invalid_type 1181 +#define invalid_legacy_expression_type 1182 +#define invalid_expression_type 1183 +#define invalid_named_expression_type 1184 +#define invalid_assignment_type 1185 +#define invalid_ann_assign_target_type 1186 +#define invalid_del_stmt_type 1187 +#define invalid_block_type 1188 +#define invalid_comprehension_type 1189 +#define invalid_dict_comprehension_type 1190 +#define invalid_parameters_type 1191 +#define invalid_parameters_helper_type 1192 +#define invalid_lambda_parameters_type 1193 +#define invalid_lambda_parameters_helper_type 1194 +#define invalid_star_etc_type 1195 +#define invalid_lambda_star_etc_type 1196 +#define invalid_double_type_comments_type 1197 +#define invalid_with_item_type 1198 +#define invalid_for_target_type 1199 +#define invalid_group_type 1200 +#define invalid_import_from_targets_type 1201 +#define invalid_with_stmt_type 1202 +#define invalid_with_stmt_indent_type 1203 +#define invalid_try_stmt_type 1204 +#define invalid_except_stmt_type 1205 +#define invalid_finally_stmt_type 1206 +#define invalid_except_stmt_indent_type 1207 +#define invalid_match_stmt_type 1208 +#define invalid_case_block_type 1209 +#define invalid_as_pattern_type 1210 +#define invalid_class_pattern_type 1211 +#define invalid_class_argument_pattern_type 1212 +#define invalid_if_stmt_type 1213 +#define invalid_elif_stmt_type 1214 +#define invalid_else_stmt_type 1215 +#define invalid_while_stmt_type 1216 +#define invalid_for_stmt_type 1217 +#define invalid_def_raw_type 1218 +#define invalid_class_def_raw_type 1219 +#define invalid_double_starred_kvpairs_type 1220 +#define invalid_kvpair_type 1221 +#define _loop0_1_type 1222 +#define _loop0_2_type 1223 +#define _loop1_3_type 1224 +#define _loop0_5_type 1225 +#define _gather_4_type 1226 +#define _tmp_6_type 1227 +#define _tmp_7_type 1228 +#define _tmp_8_type 1229 +#define _tmp_9_type 1230 +#define _tmp_10_type 1231 +#define _tmp_11_type 1232 +#define _tmp_12_type 1233 +#define _tmp_13_type 1234 +#define _loop1_14_type 1235 +#define _tmp_15_type 1236 +#define _tmp_16_type 1237 +#define _tmp_17_type 1238 +#define _loop0_19_type 1239 +#define _gather_18_type 1240 +#define _loop0_21_type 1241 +#define _gather_20_type 1242 +#define _tmp_22_type 1243 +#define _tmp_23_type 1244 +#define _loop0_24_type 1245 +#define _loop1_25_type 1246 +#define _loop0_27_type 1247 +#define _gather_26_type 1248 +#define _tmp_28_type 1249 +#define _loop0_30_type 1250 +#define _gather_29_type 1251 +#define _tmp_31_type 1252 +#define _loop1_32_type 1253 +#define _tmp_33_type 1254 +#define _tmp_34_type 1255 +#define _tmp_35_type 1256 +#define _loop0_36_type 1257 +#define _loop0_37_type 1258 +#define _loop0_38_type 1259 +#define _loop1_39_type 1260 +#define _loop0_40_type 1261 +#define _loop1_41_type 1262 +#define _loop1_42_type 1263 +#define _loop1_43_type 1264 +#define _loop0_44_type 1265 +#define _loop1_45_type 1266 +#define _loop0_46_type 1267 +#define _loop1_47_type 1268 +#define _loop0_48_type 1269 +#define _loop1_49_type 1270 +#define _loop0_51_type 1271 +#define _gather_50_type 1272 +#define _loop0_53_type 1273 +#define _gather_52_type 1274 +#define _loop0_55_type 1275 +#define _gather_54_type 1276 +#define _loop0_57_type 1277 +#define _gather_56_type 1278 +#define _tmp_58_type 1279 +#define _loop1_59_type 1280 +#define _tmp_60_type 1281 +#define _loop1_61_type 1282 +#define _loop0_63_type 1283 +#define _gather_62_type 1284 +#define _tmp_64_type 1285 +#define _tmp_65_type 1286 +#define _tmp_66_type 1287 +#define _tmp_67_type 1288 +#define _loop0_69_type 1289 +#define _gather_68_type 1290 +#define _loop0_71_type 1291 +#define _gather_70_type 1292 +#define _tmp_72_type 1293 +#define _loop0_74_type 1294 +#define _gather_73_type 1295 +#define _loop0_76_type 1296 +#define _gather_75_type 1297 +#define _loop1_77_type 1298 +#define _loop1_78_type 1299 +#define _loop0_80_type 1300 +#define _gather_79_type 1301 +#define _loop1_81_type 1302 +#define _loop1_82_type 1303 +#define _loop1_83_type 1304 +#define _tmp_84_type 1305 +#define _loop0_86_type 1306 +#define _gather_85_type 1307 +#define _tmp_87_type 1308 +#define _tmp_88_type 1309 +#define _tmp_89_type 1310 +#define _tmp_90_type 1311 +#define _tmp_91_type 1312 +#define _loop0_92_type 1313 +#define _loop0_93_type 1314 +#define _loop0_94_type 1315 +#define _loop1_95_type 1316 +#define _loop0_96_type 1317 +#define _loop1_97_type 1318 +#define _loop1_98_type 1319 +#define _loop1_99_type 1320 +#define _loop0_100_type 1321 +#define _loop1_101_type 1322 +#define _loop0_102_type 1323 +#define _loop1_103_type 1324 +#define _loop0_104_type 1325 +#define _loop1_105_type 1326 +#define _loop1_106_type 1327 +#define _tmp_107_type 1328 +#define _loop0_109_type 1329 +#define _gather_108_type 1330 +#define _loop1_110_type 1331 +#define _loop0_111_type 1332 +#define _loop0_112_type 1333 +#define _tmp_113_type 1334 +#define _loop0_115_type 1335 +#define _gather_114_type 1336 +#define _tmp_116_type 1337 +#define _loop0_118_type 1338 +#define _gather_117_type 1339 +#define _loop0_120_type 1340 +#define _gather_119_type 1341 +#define _loop0_122_type 1342 +#define _gather_121_type 1343 +#define _loop0_124_type 1344 +#define _gather_123_type 1345 +#define _loop0_125_type 1346 +#define _loop0_127_type 1347 +#define _gather_126_type 1348 +#define _loop1_128_type 1349 +#define _tmp_129_type 1350 +#define _loop0_131_type 1351 +#define _gather_130_type 1352 +#define _loop0_133_type 1353 +#define _gather_132_type 1354 +#define _loop0_135_type 1355 +#define _gather_134_type 1356 +#define _loop0_137_type 1357 +#define _gather_136_type 1358 +#define _loop0_139_type 1359 +#define _gather_138_type 1360 +#define _tmp_140_type 1361 +#define _tmp_141_type 1362 +#define _tmp_142_type 1363 +#define _tmp_143_type 1364 +#define _tmp_144_type 1365 +#define _tmp_145_type 1366 +#define _tmp_146_type 1367 +#define _tmp_147_type 1368 +#define _tmp_148_type 1369 +#define _loop0_149_type 1370 +#define _loop0_150_type 1371 +#define _loop0_151_type 1372 +#define _tmp_152_type 1373 +#define _tmp_153_type 1374 +#define _tmp_154_type 1375 +#define _tmp_155_type 1376 +#define _loop0_156_type 1377 +#define _loop1_157_type 1378 +#define _loop0_158_type 1379 +#define _loop1_159_type 1380 +#define _tmp_160_type 1381 +#define _tmp_161_type 1382 +#define _tmp_162_type 1383 +#define _loop0_164_type 1384 +#define _gather_163_type 1385 +#define _loop0_166_type 1386 +#define _gather_165_type 1387 +#define _loop0_168_type 1388 +#define _gather_167_type 1389 +#define _loop0_170_type 1390 +#define _gather_169_type 1391 +#define _tmp_171_type 1392 +#define _loop0_172_type 1393 +#define _loop1_173_type 1394 +#define _tmp_174_type 1395 +#define _tmp_175_type 1396 +#define _tmp_176_type 1397 +#define _tmp_177_type 1398 +#define _tmp_178_type 1399 +#define _tmp_179_type 1400 +#define _loop0_181_type 1401 +#define _gather_180_type 1402 +#define _tmp_182_type 1403 +#define _tmp_183_type 1404 +#define _tmp_184_type 1405 +#define _tmp_185_type 1406 +#define _tmp_186_type 1407 +#define _tmp_187_type 1408 +#define _tmp_188_type 1409 +#define _tmp_189_type 1410 +#define _tmp_190_type 1411 +#define _tmp_191_type 1412 +#define _tmp_192_type 1413 +#define _tmp_193_type 1414 +#define _tmp_194_type 1415 +#define _tmp_195_type 1416 +#define _tmp_196_type 1417 +#define _tmp_197_type 1418 +#define _tmp_198_type 1419 +#define _tmp_199_type 1420 +#define _tmp_200_type 1421 +#define _tmp_201_type 1422 +#define _tmp_202_type 1423 +#define _tmp_203_type 1424 +#define _tmp_204_type 1425 +#define _tmp_205_type 1426 +#define _tmp_206_type 1427 +#define _tmp_207_type 1428 +#define _tmp_208_type 1429 +#define _tmp_209_type 1430 static mod_ty file_rule(Parser *p); static mod_ty interactive_rule(Parser *p); @@ -556,6 +560,7 @@ static stmt_ty with_stmt_rule(Parser *p); static withitem_ty with_item_rule(Parser *p); static stmt_ty try_stmt_rule(Parser *p); static excepthandler_ty except_block_rule(Parser *p); +static excepthandler_ty default_except_block_rule(Parser *p); static asdl_stmt_seq* finally_block_rule(Parser *p); static stmt_ty match_stmt_rule(Parser *p); static expr_ty subject_expr_rule(Parser *p); @@ -891,16 +896,16 @@ static asdl_seq *_gather_167_rule(Parser *p); static asdl_seq *_loop0_170_rule(Parser *p); static asdl_seq *_gather_169_rule(Parser *p); static void *_tmp_171_rule(Parser *p); -static void *_tmp_172_rule(Parser *p); -static void *_tmp_173_rule(Parser *p); +static asdl_seq *_loop0_172_rule(Parser *p); +static asdl_seq *_loop1_173_rule(Parser *p); static void *_tmp_174_rule(Parser *p); static void *_tmp_175_rule(Parser *p); static void *_tmp_176_rule(Parser *p); static void *_tmp_177_rule(Parser *p); -static asdl_seq *_loop0_179_rule(Parser *p); -static asdl_seq *_gather_178_rule(Parser *p); -static void *_tmp_180_rule(Parser *p); -static void *_tmp_181_rule(Parser *p); +static void *_tmp_178_rule(Parser *p); +static void *_tmp_179_rule(Parser *p); +static asdl_seq *_loop0_181_rule(Parser *p); +static asdl_seq *_gather_180_rule(Parser *p); static void *_tmp_182_rule(Parser *p); static void *_tmp_183_rule(Parser *p); static void *_tmp_184_rule(Parser *p); @@ -926,6 +931,9 @@ static void *_tmp_203_rule(Parser *p); static void *_tmp_204_rule(Parser *p); static void *_tmp_205_rule(Parser *p); static void *_tmp_206_rule(Parser *p); +static void *_tmp_207_rule(Parser *p); +static void *_tmp_208_rule(Parser *p); +static void *_tmp_209_rule(Parser *p); // file: statements? $ @@ -1660,7 +1668,7 @@ simple_stmt_rule(Parser *p) D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt")); stmt_ty del_stmt_var; if ( - _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 600) // token='del' + _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 601) // token='del' && (del_stmt_var = del_stmt_rule(p)) // del_stmt ) @@ -1681,7 +1689,7 @@ simple_stmt_rule(Parser *p) D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'yield' yield_stmt")); stmt_ty yield_stmt_var; if ( - _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 570) // token='yield' + _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 571) // token='yield' && (yield_stmt_var = yield_stmt_rule(p)) // yield_stmt ) @@ -1878,7 +1886,7 @@ compound_stmt_rule(Parser *p) D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt")); stmt_ty if_stmt_var; if ( - _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 627) // token='if' + _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 629) // token='if' && (if_stmt_var = if_stmt_rule(p)) // if_stmt ) @@ -1962,7 +1970,7 @@ compound_stmt_rule(Parser *p) D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt")); stmt_ty try_stmt_var; if ( - _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 612) // token='try' + _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 616) // token='try' && (try_stmt_var = try_stmt_rule(p)) // try_stmt ) @@ -1983,7 +1991,7 @@ compound_stmt_rule(Parser *p) D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt")); stmt_ty while_stmt_var; if ( - _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 632) // token='while' + _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 634) // token='while' && (while_stmt_var = while_stmt_rule(p)) // while_stmt ) @@ -2952,7 +2960,7 @@ del_stmt_rule(Parser *p) Token * _keyword; asdl_expr_seq* a; if ( - (_keyword = _PyPegen_expect_token(p, 600)) // token='del' + (_keyword = _PyPegen_expect_token(p, 601)) // token='del' && (a = del_targets_rule(p)) // del_targets && @@ -3281,7 +3289,7 @@ import_from_rule(Parser *p) expr_ty b; asdl_alias_seq* c; if ( - (_keyword = _PyPegen_expect_token(p, 569)) // token='from' + (_keyword = _PyPegen_expect_token(p, 570)) // token='from' && (a = _loop0_24_rule(p)) // (('.' | '...'))* && @@ -3325,7 +3333,7 @@ import_from_rule(Parser *p) asdl_seq * a; asdl_alias_seq* b; if ( - (_keyword = _PyPegen_expect_token(p, 569)) // token='from' + (_keyword = _PyPegen_expect_token(p, 570)) // token='from' && (a = _loop1_25_rule(p)) // (('.' | '...'))+ && @@ -4053,7 +4061,7 @@ class_def_raw_rule(Parser *p) void *b; asdl_stmt_seq* c; if ( - (_keyword = _PyPegen_expect_token(p, 636)) // token='class' + (_keyword = _PyPegen_expect_token(p, 638)) // token='class' && (a = _PyPegen_name_token(p)) // NAME && @@ -4213,7 +4221,7 @@ function_def_raw_rule(Parser *p) void *params; void *tc; if ( - (_keyword = _PyPegen_expect_token(p, 635)) // token='def' + (_keyword = _PyPegen_expect_token(p, 637)) // token='def' && (n = _PyPegen_name_token(p)) // NAME && @@ -4273,7 +4281,7 @@ function_def_raw_rule(Parser *p) if ( (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC' && - (_keyword = _PyPegen_expect_token(p, 635)) // token='def' + (_keyword = _PyPegen_expect_token(p, 637)) // token='def' && (n = _PyPegen_name_token(p)) // NAME && @@ -5321,7 +5329,7 @@ if_stmt_rule(Parser *p) asdl_stmt_seq* b; stmt_ty c; if ( - (_keyword = _PyPegen_expect_token(p, 627)) // token='if' + (_keyword = _PyPegen_expect_token(p, 629)) // token='if' && (a = named_expression_rule(p)) // named_expression && @@ -5366,7 +5374,7 @@ if_stmt_rule(Parser *p) asdl_stmt_seq* b; void *c; if ( - (_keyword = _PyPegen_expect_token(p, 627)) // token='if' + (_keyword = _PyPegen_expect_token(p, 629)) // token='if' && (a = named_expression_rule(p)) // named_expression && @@ -5459,7 +5467,7 @@ elif_stmt_rule(Parser *p) asdl_stmt_seq* b; stmt_ty c; if ( - (_keyword = _PyPegen_expect_token(p, 629)) // token='elif' + (_keyword = _PyPegen_expect_token(p, 631)) // token='elif' && (a = named_expression_rule(p)) // named_expression && @@ -5504,7 +5512,7 @@ elif_stmt_rule(Parser *p) asdl_stmt_seq* b; void *c; if ( - (_keyword = _PyPegen_expect_token(p, 629)) // token='elif' + (_keyword = _PyPegen_expect_token(p, 631)) // token='elif' && (a = named_expression_rule(p)) // named_expression && @@ -5583,7 +5591,7 @@ else_block_rule(Parser *p) Token * _literal; asdl_stmt_seq* b; if ( - (_keyword = _PyPegen_expect_token(p, 630)) // token='else' + (_keyword = _PyPegen_expect_token(p, 632)) // token='else' && (_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' && @@ -5660,7 +5668,7 @@ while_stmt_rule(Parser *p) asdl_stmt_seq* b; void *c; if ( - (_keyword = _PyPegen_expect_token(p, 632)) // token='while' + (_keyword = _PyPegen_expect_token(p, 634)) // token='while' && (a = named_expression_rule(p)) // named_expression && @@ -5758,11 +5766,11 @@ for_stmt_rule(Parser *p) expr_ty t; void *tc; if ( - (_keyword = _PyPegen_expect_token(p, 633)) // token='for' + (_keyword = _PyPegen_expect_token(p, 635)) // token='for' && (t = star_targets_rule(p)) // star_targets && - (_keyword_1 = _PyPegen_expect_token(p, 634)) // token='in' + (_keyword_1 = _PyPegen_expect_token(p, 636)) // token='in' && (_cut_var = 1) && @@ -5822,11 +5830,11 @@ for_stmt_rule(Parser *p) if ( (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC' && - (_keyword = _PyPegen_expect_token(p, 633)) // token='for' + (_keyword = _PyPegen_expect_token(p, 635)) // token='for' && (t = star_targets_rule(p)) // star_targets && - (_keyword_1 = _PyPegen_expect_token(p, 634)) // token='in' + (_keyword_1 = _PyPegen_expect_token(p, 636)) // token='in' && (_cut_var = 1) && @@ -5952,7 +5960,7 @@ with_stmt_rule(Parser *p) asdl_withitem_seq* a; asdl_stmt_seq* b; if ( - (_keyword = _PyPegen_expect_token(p, 609)) // token='with' + (_keyword = _PyPegen_expect_token(p, 610)) // token='with' && (_literal = _PyPegen_expect_token(p, 7)) // token='(' && @@ -6001,7 +6009,7 @@ with_stmt_rule(Parser *p) asdl_stmt_seq* b; void *tc; if ( - (_keyword = _PyPegen_expect_token(p, 609)) // token='with' + (_keyword = _PyPegen_expect_token(p, 610)) // token='with' && (a = (asdl_withitem_seq*)_gather_52_rule(p)) // ','.with_item+ && @@ -6052,7 +6060,7 @@ with_stmt_rule(Parser *p) if ( (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC' && - (_keyword = _PyPegen_expect_token(p, 609)) // token='with' + (_keyword = _PyPegen_expect_token(p, 610)) // token='with' && (_literal = _PyPegen_expect_token(p, 7)) // token='(' && @@ -6104,7 +6112,7 @@ with_stmt_rule(Parser *p) if ( (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC' && - (_keyword = _PyPegen_expect_token(p, 609)) // token='with' + (_keyword = _PyPegen_expect_token(p, 610)) // token='with' && (a = (asdl_withitem_seq*)_gather_56_rule(p)) // ','.with_item+ && @@ -6188,7 +6196,7 @@ with_item_rule(Parser *p) if ( (e = expression_rule(p)) // expression && - (_keyword = _PyPegen_expect_token(p, 625)) // token='as' + (_keyword = _PyPegen_expect_token(p, 627)) // token='as' && (t = star_target_rule(p)) // star_target && @@ -6260,7 +6268,8 @@ with_item_rule(Parser *p) // try_stmt: // | invalid_try_stmt // | 'try' &&':' block finally_block -// | 'try' &&':' block except_block+ else_block? finally_block? +// | 'try' &&':' block except_block+ default_except_block? else_block? finally_block? +// | 'try' &&':' block default_except_block else_block? finally_block? static stmt_ty try_stmt_rule(Parser *p) { @@ -6310,7 +6319,7 @@ try_stmt_rule(Parser *p) asdl_stmt_seq* b; asdl_stmt_seq* f; if ( - (_keyword = _PyPegen_expect_token(p, 612)) // token='try' + (_keyword = _PyPegen_expect_token(p, 616)) // token='try' && (_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' && @@ -6341,20 +6350,21 @@ try_stmt_rule(Parser *p) D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block finally_block")); } - { // 'try' &&':' block except_block+ else_block? finally_block? + { // 'try' &&':' block except_block+ default_except_block? else_block? finally_block? if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?")); + D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ default_except_block? else_block? finally_block?")); Token * _keyword; Token * _literal; asdl_stmt_seq* b; + asdl_match_case_seq* d_ex; void *el; asdl_excepthandler_seq* ex; void *f; if ( - (_keyword = _PyPegen_expect_token(p, 612)) // token='try' + (_keyword = _PyPegen_expect_token(p, 616)) // token='try' && (_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' && @@ -6362,12 +6372,62 @@ try_stmt_rule(Parser *p) && (ex = (asdl_excepthandler_seq*)_loop1_59_rule(p)) // except_block+ && + (d_ex = (asdl_match_case_seq*)default_except_block_rule(p), !p->error_indicator) // default_except_block? + && + (el = else_block_rule(p), !p->error_indicator) // else_block? + && + (f = finally_block_rule(p), !p->error_indicator) // finally_block? + ) + { + D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ default_except_block? else_block? finally_block?")); + Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); + if (_token == NULL) { + D(p->level--); + return NULL; + } + int _end_lineno = _token->end_lineno; + UNUSED(_end_lineno); // Only used by EXTRA macro + int _end_col_offset = _token->end_col_offset; + UNUSED(_end_col_offset); // Only used by EXTRA macro + _res = _PyAST_Try ( b , ( d_ex ) ? ( asdl_excepthandler_seq* ) _PyPegen_seq_append_to_end ( p , ( asdl_seq* ) ex , d_ex ) : ex , el , f , EXTRA ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + D(p->level--); + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block except_block+ default_except_block? else_block? finally_block?")); + } + { // 'try' &&':' block default_except_block else_block? finally_block? + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block default_except_block else_block? finally_block?")); + Token * _keyword; + Token * _literal; + asdl_stmt_seq* b; + asdl_match_case_seq* d_ex; + void *el; + void *f; + if ( + (_keyword = _PyPegen_expect_token(p, 616)) // token='try' + && + (_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' + && + (b = block_rule(p)) // block + && + (d_ex = (asdl_match_case_seq*)default_except_block_rule(p)) // default_except_block + && (el = else_block_rule(p), !p->error_indicator) // else_block? && (f = finally_block_rule(p), !p->error_indicator) // finally_block? ) { - D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?")); + D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block default_except_block else_block? finally_block?")); Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); if (_token == NULL) { D(p->level--); @@ -6377,7 +6437,7 @@ try_stmt_rule(Parser *p) UNUSED(_end_lineno); // Only used by EXTRA macro int _end_col_offset = _token->end_col_offset; UNUSED(_end_col_offset); // Only used by EXTRA macro - _res = _PyAST_Try ( b , ex , el , f , EXTRA ); + _res = _PyAST_Try ( b , ( asdl_excepthandler_seq* ) _PyPegen_singleton_seq ( p , d_ex ) , el , f , EXTRA ); if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; D(p->level--); @@ -6387,7 +6447,7 @@ try_stmt_rule(Parser *p) } p->mark = _mark; D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?")); + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block default_except_block else_block? finally_block?")); } _res = NULL; done: @@ -6398,7 +6458,6 @@ try_stmt_rule(Parser *p) // except_block: // | invalid_except_stmt_indent // | 'except' expression ['as' NAME] ':' block -// | 'except' ':' block // | invalid_except_stmt static excepthandler_ty except_block_rule(Parser *p) @@ -6450,7 +6509,7 @@ except_block_rule(Parser *p) expr_ty e; void *t; if ( - (_keyword = _PyPegen_expect_token(p, 623)) // token='except' + (_keyword = _PyPegen_expect_token(p, 625)) // token='except' && (e = expression_rule(p)) // expression && @@ -6483,24 +6542,69 @@ except_block_rule(Parser *p) D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] ':' block")); } + if (p->call_invalid_rules) { // invalid_except_stmt + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt")); + void *invalid_except_stmt_var; + if ( + (invalid_except_stmt_var = invalid_except_stmt_rule(p)) // invalid_except_stmt + ) + { + D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt")); + _res = invalid_except_stmt_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_stmt")); + } + _res = NULL; + done: + D(p->level--); + return _res; +} + +// default_except_block: 'except' ':' block +static excepthandler_ty +default_except_block_rule(Parser *p) +{ + D(p->level++); + if (p->error_indicator) { + D(p->level--); + return NULL; + } + excepthandler_ty _res = NULL; + int _mark = p->mark; + if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) { + p->error_indicator = 1; + D(p->level--); + return NULL; + } + int _start_lineno = p->tokens[_mark]->lineno; + UNUSED(_start_lineno); // Only used by EXTRA macro + int _start_col_offset = p->tokens[_mark]->col_offset; + UNUSED(_start_col_offset); // Only used by EXTRA macro { // 'except' ':' block if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' ':' block")); + D(fprintf(stderr, "%*c> default_except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' ':' block")); Token * _keyword; Token * _literal; asdl_stmt_seq* b; if ( - (_keyword = _PyPegen_expect_token(p, 623)) // token='except' + (_keyword = _PyPegen_expect_token(p, 625)) // token='except' && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && (b = block_rule(p)) // block ) { - D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' ':' block")); + D(fprintf(stderr, "%*c+ default_except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' ':' block")); Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); if (_token == NULL) { D(p->level--); @@ -6519,28 +6623,9 @@ except_block_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s default_except_block[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' ':' block")); } - if (p->call_invalid_rules) { // invalid_except_stmt - if (p->error_indicator) { - D(p->level--); - return NULL; - } - D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt")); - void *invalid_except_stmt_var; - if ( - (invalid_except_stmt_var = invalid_except_stmt_rule(p)) // invalid_except_stmt - ) - { - D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt")); - _res = invalid_except_stmt_var; - goto done; - } - p->mark = _mark; - D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_stmt")); - } _res = NULL; done: D(p->level--); @@ -6587,7 +6672,7 @@ finally_block_rule(Parser *p) Token * _literal; asdl_stmt_seq* a; if ( - (_keyword = _PyPegen_expect_token(p, 620)) // token='finally' + (_keyword = _PyPegen_expect_token(p, 622)) // token='finally' && (_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' && @@ -6887,7 +6972,7 @@ guard_rule(Parser *p) Token * _keyword; expr_ty guard; if ( - (_keyword = _PyPegen_expect_token(p, 627)) // token='if' + (_keyword = _PyPegen_expect_token(p, 629)) // token='if' && (guard = named_expression_rule(p)) // named_expression ) @@ -7076,7 +7161,7 @@ as_pattern_rule(Parser *p) if ( (pattern = or_pattern_rule(p)) // or_pattern && - (_keyword = _PyPegen_expect_token(p, 625)) // token='as' + (_keyword = _PyPegen_expect_token(p, 627)) // token='as' && (target = pattern_capture_target_rule(p)) // pattern_capture_target ) @@ -7499,7 +7584,7 @@ literal_pattern_rule(Parser *p) D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 598)) // token='None' + (_keyword = _PyPegen_expect_token(p, 599)) // token='None' ) { D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'")); @@ -7532,7 +7617,7 @@ literal_pattern_rule(Parser *p) D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 597)) // token='True' + (_keyword = _PyPegen_expect_token(p, 598)) // token='True' ) { D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'")); @@ -7565,7 +7650,7 @@ literal_pattern_rule(Parser *p) D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 599)) // token='False' + (_keyword = _PyPegen_expect_token(p, 600)) // token='False' ) { D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'")); @@ -7689,7 +7774,7 @@ literal_expr_rule(Parser *p) D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 598)) // token='None' + (_keyword = _PyPegen_expect_token(p, 599)) // token='None' ) { D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'")); @@ -7722,7 +7807,7 @@ literal_expr_rule(Parser *p) D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 597)) // token='True' + (_keyword = _PyPegen_expect_token(p, 598)) // token='True' ) { D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'")); @@ -7755,7 +7840,7 @@ literal_expr_rule(Parser *p) D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 599)) // token='False' + (_keyword = _PyPegen_expect_token(p, 600)) // token='False' ) { D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'")); @@ -9778,11 +9863,11 @@ expression_rule(Parser *p) if ( (a = disjunction_rule(p)) // disjunction && - (_keyword = _PyPegen_expect_token(p, 627)) // token='if' + (_keyword = _PyPegen_expect_token(p, 629)) // token='if' && (b = disjunction_rule(p)) // disjunction && - (_keyword_1 = _PyPegen_expect_token(p, 630)) // token='else' + (_keyword_1 = _PyPegen_expect_token(p, 632)) // token='else' && (c = expression_rule(p)) // expression ) @@ -9884,9 +9969,9 @@ yield_expr_rule(Parser *p) Token * _keyword_1; expr_ty a; if ( - (_keyword = _PyPegen_expect_token(p, 570)) // token='yield' + (_keyword = _PyPegen_expect_token(p, 571)) // token='yield' && - (_keyword_1 = _PyPegen_expect_token(p, 569)) // token='from' + (_keyword_1 = _PyPegen_expect_token(p, 570)) // token='from' && (a = expression_rule(p)) // expression ) @@ -9922,7 +10007,7 @@ yield_expr_rule(Parser *p) Token * _keyword; void *a; if ( - (_keyword = _PyPegen_expect_token(p, 570)) // token='yield' + (_keyword = _PyPegen_expect_token(p, 571)) // token='yield' && (a = star_expressions_rule(p), !p->error_indicator) // star_expressions? ) @@ -10644,7 +10729,7 @@ inversion_rule(Parser *p) Token * _keyword; expr_ty a; if ( - (_keyword = _PyPegen_expect_token(p, 578)) // token='not' + (_keyword = _PyPegen_expect_token(p, 579)) // token='not' && (a = inversion_rule(p)) // inversion ) @@ -11280,9 +11365,9 @@ notin_bitwise_or_rule(Parser *p) Token * _keyword_1; expr_ty a; if ( - (_keyword = _PyPegen_expect_token(p, 578)) // token='not' + (_keyword = _PyPegen_expect_token(p, 579)) // token='not' && - (_keyword_1 = _PyPegen_expect_token(p, 634)) // token='in' + (_keyword_1 = _PyPegen_expect_token(p, 636)) // token='in' && (a = bitwise_or_rule(p)) // bitwise_or ) @@ -11326,7 +11411,7 @@ in_bitwise_or_rule(Parser *p) Token * _keyword; expr_ty a; if ( - (_keyword = _PyPegen_expect_token(p, 634)) // token='in' + (_keyword = _PyPegen_expect_token(p, 636)) // token='in' && (a = bitwise_or_rule(p)) // bitwise_or ) @@ -11371,9 +11456,9 @@ isnot_bitwise_or_rule(Parser *p) Token * _keyword_1; expr_ty a; if ( - (_keyword = _PyPegen_expect_token(p, 579)) // token='is' + (_keyword = _PyPegen_expect_token(p, 580)) // token='is' && - (_keyword_1 = _PyPegen_expect_token(p, 578)) // token='not' + (_keyword_1 = _PyPegen_expect_token(p, 579)) // token='not' && (a = bitwise_or_rule(p)) // bitwise_or ) @@ -11417,7 +11502,7 @@ is_bitwise_or_rule(Parser *p) Token * _keyword; expr_ty a; if ( - (_keyword = _PyPegen_expect_token(p, 579)) // token='is' + (_keyword = _PyPegen_expect_token(p, 580)) // token='is' && (a = bitwise_or_rule(p)) // bitwise_or ) @@ -13198,7 +13283,7 @@ atom_rule(Parser *p) D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 597)) // token='True' + (_keyword = _PyPegen_expect_token(p, 598)) // token='True' ) { D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'")); @@ -13231,7 +13316,7 @@ atom_rule(Parser *p) D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 599)) // token='False' + (_keyword = _PyPegen_expect_token(p, 600)) // token='False' ) { D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'")); @@ -13264,7 +13349,7 @@ atom_rule(Parser *p) D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 598)) // token='None' + (_keyword = _PyPegen_expect_token(p, 599)) // token='None' ) { D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'")); @@ -13528,7 +13613,7 @@ lambdef_rule(Parser *p) void *a; expr_ty b; if ( - (_keyword = _PyPegen_expect_token(p, 583)) // token='lambda' + (_keyword = _PyPegen_expect_token(p, 584)) // token='lambda' && (a = lambda_params_rule(p), !p->error_indicator) // lambda_params? && @@ -14960,11 +15045,11 @@ for_if_clause_rule(Parser *p) if ( (async_var = _PyPegen_expect_token(p, ASYNC)) // token='ASYNC' && - (_keyword = _PyPegen_expect_token(p, 633)) // token='for' + (_keyword = _PyPegen_expect_token(p, 635)) // token='for' && (a = star_targets_rule(p)) // star_targets && - (_keyword_1 = _PyPegen_expect_token(p, 634)) // token='in' + (_keyword_1 = _PyPegen_expect_token(p, 636)) // token='in' && (_cut_var = 1) && @@ -15003,11 +15088,11 @@ for_if_clause_rule(Parser *p) expr_ty b; asdl_expr_seq* c; if ( - (_keyword = _PyPegen_expect_token(p, 633)) // token='for' + (_keyword = _PyPegen_expect_token(p, 635)) // token='for' && (a = star_targets_rule(p)) // star_targets && - (_keyword_1 = _PyPegen_expect_token(p, 634)) // token='in' + (_keyword_1 = _PyPegen_expect_token(p, 636)) // token='in' && (_cut_var = 1) && @@ -18117,11 +18202,11 @@ expression_without_invalid_rule(Parser *p) if ( (a = disjunction_rule(p)) // disjunction && - (_keyword = _PyPegen_expect_token(p, 627)) // token='if' + (_keyword = _PyPegen_expect_token(p, 629)) // token='if' && (b = disjunction_rule(p)) // disjunction && - (_keyword_1 = _PyPegen_expect_token(p, 630)) // token='else' + (_keyword_1 = _PyPegen_expect_token(p, 632)) // token='else' && (c = expression_rule(p)) // expression ) @@ -18312,7 +18397,7 @@ invalid_expression_rule(Parser *p) if ( (a = disjunction_rule(p)) // disjunction && - (_keyword = _PyPegen_expect_token(p, 627)) // token='if' + (_keyword = _PyPegen_expect_token(p, 629)) // token='if' && (b = disjunction_rule(p)) // disjunction && @@ -18768,7 +18853,7 @@ invalid_del_stmt_rule(Parser *p) Token * _keyword; expr_ty a; if ( - (_keyword = _PyPegen_expect_token(p, 600)) // token='del' + (_keyword = _PyPegen_expect_token(p, 601)) // token='del' && (a = star_expressions_rule(p)) // star_expressions ) @@ -19418,7 +19503,7 @@ invalid_with_item_rule(Parser *p) if ( (expression_var = expression_rule(p)) // expression && - (_keyword = _PyPegen_expect_token(p, 625)) // token='as' + (_keyword = _PyPegen_expect_token(p, 627)) // token='as' && (a = expression_rule(p)) // expression && @@ -19468,7 +19553,7 @@ invalid_for_target_rule(Parser *p) if ( (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator) // ASYNC? && - (_keyword = _PyPegen_expect_token(p, 633)) // token='for' + (_keyword = _PyPegen_expect_token(p, 635)) // token='for' && (a = star_expressions_rule(p)) // star_expressions ) @@ -19646,7 +19731,7 @@ invalid_with_stmt_rule(Parser *p) if ( (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator) // ASYNC? && - (_keyword = _PyPegen_expect_token(p, 609)) // token='with' + (_keyword = _PyPegen_expect_token(p, 610)) // token='with' && (_gather_163_var = _gather_163_rule(p)) // ','.(expression ['as' star_target])+ && @@ -19679,7 +19764,7 @@ invalid_with_stmt_rule(Parser *p) if ( (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator) // ASYNC? && - (_keyword = _PyPegen_expect_token(p, 609)) // token='with' + (_keyword = _PyPegen_expect_token(p, 610)) // token='with' && (_literal = _PyPegen_expect_token(p, 7)) // token='(' && @@ -19734,7 +19819,7 @@ invalid_with_stmt_indent_rule(Parser *p) if ( (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator) // ASYNC? && - (a = _PyPegen_expect_token(p, 609)) // token='with' + (a = _PyPegen_expect_token(p, 610)) // token='with' && (_gather_167_var = _gather_167_rule(p)) // ','.(expression ['as' star_target])+ && @@ -19777,7 +19862,7 @@ invalid_with_stmt_indent_rule(Parser *p) if ( (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator) // ASYNC? && - (a = _PyPegen_expect_token(p, 609)) // token='with' + (a = _PyPegen_expect_token(p, 610)) // token='with' && (_literal = _PyPegen_expect_token(p, 7)) // token='(' && @@ -19813,7 +19898,10 @@ invalid_with_stmt_indent_rule(Parser *p) return _res; } -// invalid_try_stmt: 'try' ':' NEWLINE !INDENT | 'try' ':' block !('except' | 'finally') +// invalid_try_stmt: +// | 'try' ':' NEWLINE !INDENT +// | 'try' ':' block !('except' | 'finally') +// | 'try' ':' block except_block* default_except_block ((except_block | default_except_block))+ static void * invalid_try_stmt_rule(Parser *p) { @@ -19834,7 +19922,7 @@ invalid_try_stmt_rule(Parser *p) Token * a; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 612)) // token='try' + (a = _PyPegen_expect_token(p, 616)) // token='try' && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -19866,7 +19954,7 @@ invalid_try_stmt_rule(Parser *p) Token * _literal; asdl_stmt_seq* block_var; if ( - (_keyword = _PyPegen_expect_token(p, 612)) // token='try' + (_keyword = _PyPegen_expect_token(p, 616)) // token='try' && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -19888,6 +19976,45 @@ invalid_try_stmt_rule(Parser *p) D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block !('except' | 'finally')")); } + { // 'try' ':' block except_block* default_except_block ((except_block | default_except_block))+ + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' block except_block* default_except_block ((except_block | default_except_block))+")); + Token * _keyword; + Token * _literal; + asdl_seq * _loop0_172_var; + asdl_seq * _loop1_173_var; + excepthandler_ty a; + asdl_stmt_seq* block_var; + if ( + (_keyword = _PyPegen_expect_token(p, 616)) // token='try' + && + (_literal = _PyPegen_expect_token(p, 11)) // token=':' + && + (block_var = block_rule(p)) // block + && + (_loop0_172_var = _loop0_172_rule(p)) // except_block* + && + (a = default_except_block_rule(p)) // default_except_block + && + (_loop1_173_var = _loop1_173_rule(p)) // ((except_block | default_except_block))+ + ) + { + D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' block except_block* default_except_block ((except_block | default_except_block))+")); + _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "default 'except:' must be last" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + D(p->level--); + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block except_block* default_except_block ((except_block | default_except_block))+")); + } _res = NULL; done: D(p->level--); @@ -19922,7 +20049,7 @@ invalid_except_stmt_rule(Parser *p) expr_ty a; expr_ty expressions_var; if ( - (_keyword = _PyPegen_expect_token(p, 623)) // token='except' + (_keyword = _PyPegen_expect_token(p, 625)) // token='except' && (a = expression_rule(p)) // expression && @@ -19930,7 +20057,7 @@ invalid_except_stmt_rule(Parser *p) && (expressions_var = expressions_rule(p)) // expressions && - (_opt_var = _tmp_172_rule(p), !p->error_indicator) // ['as' NAME] + (_opt_var = _tmp_174_rule(p), !p->error_indicator) // ['as' NAME] && (_literal_1 = _PyPegen_expect_token(p, 11)) // token=':' ) @@ -19960,11 +20087,11 @@ invalid_except_stmt_rule(Parser *p) expr_ty expression_var; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 623)) // token='except' + (a = _PyPegen_expect_token(p, 625)) // token='except' && (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_173_rule(p), !p->error_indicator) // ['as' NAME] + (_opt_var = _tmp_175_rule(p), !p->error_indicator) // ['as' NAME] && (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) @@ -19991,7 +20118,7 @@ invalid_except_stmt_rule(Parser *p) Token * a; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 623)) // token='except' + (a = _PyPegen_expect_token(p, 625)) // token='except' && (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) @@ -20036,7 +20163,7 @@ invalid_finally_stmt_rule(Parser *p) Token * a; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 620)) // token='finally' + (a = _PyPegen_expect_token(p, 622)) // token='finally' && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -20090,11 +20217,11 @@ invalid_except_stmt_indent_rule(Parser *p) expr_ty expression_var; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 623)) // token='except' + (a = _PyPegen_expect_token(p, 625)) // token='except' && (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_174_rule(p), !p->error_indicator) // ['as' NAME] + (_opt_var = _tmp_176_rule(p), !p->error_indicator) // ['as' NAME] && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -20126,7 +20253,7 @@ invalid_except_stmt_indent_rule(Parser *p) Token * a; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 623)) // token='except' + (a = _PyPegen_expect_token(p, 625)) // token='except' && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -20351,7 +20478,7 @@ invalid_as_pattern_rule(Parser *p) if ( (or_pattern_var = or_pattern_rule(p)) // or_pattern && - (_keyword = _PyPegen_expect_token(p, 625)) // token='as' + (_keyword = _PyPegen_expect_token(p, 627)) // token='as' && (a = _PyPegen_expect_soft_keyword(p, "_")) // soft_keyword='"_"' ) @@ -20381,7 +20508,7 @@ invalid_as_pattern_rule(Parser *p) if ( (or_pattern_var = or_pattern_rule(p)) // or_pattern && - (_keyword = _PyPegen_expect_token(p, 625)) // token='as' + (_keyword = _PyPegen_expect_token(p, 627)) // token='as' && _PyPegen_lookahead_with_name(0, _PyPegen_name_token, p) && @@ -20478,7 +20605,7 @@ invalid_class_argument_pattern_rule(Parser *p) asdl_pattern_seq* a; asdl_seq* keyword_patterns_var; if ( - (_opt_var = _tmp_175_rule(p), !p->error_indicator) // [positional_patterns ','] + (_opt_var = _tmp_177_rule(p), !p->error_indicator) // [positional_patterns ','] && (keyword_patterns_var = keyword_patterns_rule(p)) // keyword_patterns && @@ -20529,7 +20656,7 @@ invalid_if_stmt_rule(Parser *p) expr_ty named_expression_var; Token * newline_var; if ( - (_keyword = _PyPegen_expect_token(p, 627)) // token='if' + (_keyword = _PyPegen_expect_token(p, 629)) // token='if' && (named_expression_var = named_expression_rule(p)) // named_expression && @@ -20560,7 +20687,7 @@ invalid_if_stmt_rule(Parser *p) expr_ty a_1; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 627)) // token='if' + (a = _PyPegen_expect_token(p, 629)) // token='if' && (a_1 = named_expression_rule(p)) // named_expression && @@ -20613,7 +20740,7 @@ invalid_elif_stmt_rule(Parser *p) expr_ty named_expression_var; Token * newline_var; if ( - (_keyword = _PyPegen_expect_token(p, 629)) // token='elif' + (_keyword = _PyPegen_expect_token(p, 631)) // token='elif' && (named_expression_var = named_expression_rule(p)) // named_expression && @@ -20644,7 +20771,7 @@ invalid_elif_stmt_rule(Parser *p) expr_ty named_expression_var; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 629)) // token='elif' + (a = _PyPegen_expect_token(p, 631)) // token='elif' && (named_expression_var = named_expression_rule(p)) // named_expression && @@ -20695,7 +20822,7 @@ invalid_else_stmt_rule(Parser *p) Token * a; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 630)) // token='else' + (a = _PyPegen_expect_token(p, 632)) // token='else' && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -20746,7 +20873,7 @@ invalid_while_stmt_rule(Parser *p) expr_ty named_expression_var; Token * newline_var; if ( - (_keyword = _PyPegen_expect_token(p, 632)) // token='while' + (_keyword = _PyPegen_expect_token(p, 634)) // token='while' && (named_expression_var = named_expression_rule(p)) // named_expression && @@ -20777,7 +20904,7 @@ invalid_while_stmt_rule(Parser *p) expr_ty named_expression_var; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 632)) // token='while' + (a = _PyPegen_expect_token(p, 634)) // token='while' && (named_expression_var = named_expression_rule(p)) // named_expression && @@ -20835,11 +20962,11 @@ invalid_for_stmt_rule(Parser *p) if ( (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator) // ASYNC? && - (a = _PyPegen_expect_token(p, 633)) // token='for' + (a = _PyPegen_expect_token(p, 635)) // token='for' && (star_targets_var = star_targets_rule(p)) // star_targets && - (_keyword = _PyPegen_expect_token(p, 634)) // token='in' + (_keyword = _PyPegen_expect_token(p, 636)) // token='in' && (star_expressions_var = star_expressions_rule(p)) // star_expressions && @@ -20902,7 +21029,7 @@ invalid_def_raw_rule(Parser *p) if ( (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator) // ASYNC? && - (a = _PyPegen_expect_token(p, 635)) // token='def' + (a = _PyPegen_expect_token(p, 637)) // token='def' && (name_var = _PyPegen_name_token(p)) // NAME && @@ -20912,7 +21039,7 @@ invalid_def_raw_rule(Parser *p) && (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' && - (_opt_var_2 = _tmp_176_rule(p), !p->error_indicator) // ['->' expression] + (_opt_var_2 = _tmp_178_rule(p), !p->error_indicator) // ['->' expression] && (_literal_2 = _PyPegen_expect_token(p, 11)) // token=':' && @@ -20964,11 +21091,11 @@ invalid_class_def_raw_rule(Parser *p) expr_ty name_var; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 636)) // token='class' + (a = _PyPegen_expect_token(p, 638)) // token='class' && (name_var = _PyPegen_name_token(p)) // NAME && - (_opt_var = _tmp_177_rule(p), !p->error_indicator) // ['(' arguments? ')'] + (_opt_var = _tmp_179_rule(p), !p->error_indicator) // ['(' arguments? ')'] && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -21016,11 +21143,11 @@ invalid_double_starred_kvpairs_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair")); - asdl_seq * _gather_178_var; + asdl_seq * _gather_180_var; Token * _literal; void *invalid_kvpair_var; if ( - (_gather_178_var = _gather_178_rule(p)) // ','.double_starred_kvpair+ + (_gather_180_var = _gather_180_rule(p)) // ','.double_starred_kvpair+ && (_literal = _PyPegen_expect_token(p, 12)) // token=',' && @@ -21028,7 +21155,7 @@ invalid_double_starred_kvpairs_rule(Parser *p) ) { D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair")); - _res = _PyPegen_dummy_name(p, _gather_178_var, _literal, invalid_kvpair_var); + _res = _PyPegen_dummy_name(p, _gather_180_var, _literal, invalid_kvpair_var); goto done; } p->mark = _mark; @@ -21081,7 +21208,7 @@ invalid_double_starred_kvpairs_rule(Parser *p) && (a = _PyPegen_expect_token(p, 11)) // token=':' && - _PyPegen_lookahead(1, _tmp_180_rule, p) + _PyPegen_lookahead(1, _tmp_182_rule, p) ) { D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')")); @@ -21561,7 +21688,7 @@ _tmp_6_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 569)) // token='from' + (_keyword = _PyPegen_expect_token(p, 570)) // token='from' ) { D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from'")); @@ -21597,7 +21724,7 @@ _tmp_7_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'def'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 635)) // token='def' + (_keyword = _PyPegen_expect_token(p, 637)) // token='def' ) { D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'def'")); @@ -21671,7 +21798,7 @@ _tmp_8_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 636)) // token='class' + (_keyword = _PyPegen_expect_token(p, 638)) // token='class' ) { D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class'")); @@ -21726,7 +21853,7 @@ _tmp_9_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 609)) // token='with' + (_keyword = _PyPegen_expect_token(p, 610)) // token='with' ) { D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with'")); @@ -21781,7 +21908,7 @@ _tmp_10_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_10[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 633)) // token='for' + (_keyword = _PyPegen_expect_token(p, 635)) // token='for' ) { D(fprintf(stderr, "%*c+ _tmp_10[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for'")); @@ -21998,12 +22125,12 @@ _loop1_14_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_14[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_181_var; + void *_tmp_183_var; while ( - (_tmp_181_var = _tmp_181_rule(p)) // star_targets '=' + (_tmp_183_var = _tmp_183_rule(p)) // star_targets '=' ) { - _res = _tmp_181_var; + _res = _tmp_183_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -22172,7 +22299,7 @@ _tmp_17_rule(Parser *p) Token * _keyword; expr_ty z; if ( - (_keyword = _PyPegen_expect_token(p, 569)) // token='from' + (_keyword = _PyPegen_expect_token(p, 570)) // token='from' && (z = expression_rule(p)) // expression ) @@ -22550,12 +22677,12 @@ _loop0_24_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_24[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')")); - void *_tmp_182_var; + void *_tmp_184_var; while ( - (_tmp_182_var = _tmp_182_rule(p)) // '.' | '...' + (_tmp_184_var = _tmp_184_rule(p)) // '.' | '...' ) { - _res = _tmp_182_var; + _res = _tmp_184_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -22616,12 +22743,12 @@ _loop1_25_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_25[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')")); - void *_tmp_183_var; + void *_tmp_185_var; while ( - (_tmp_183_var = _tmp_183_rule(p)) // '.' | '...' + (_tmp_185_var = _tmp_185_rule(p)) // '.' | '...' ) { - _res = _tmp_183_var; + _res = _tmp_185_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -22794,7 +22921,7 @@ _tmp_28_rule(Parser *p) Token * _keyword; expr_ty z; if ( - (_keyword = _PyPegen_expect_token(p, 625)) // token='as' + (_keyword = _PyPegen_expect_token(p, 627)) // token='as' && (z = _PyPegen_name_token(p)) // NAME ) @@ -22952,7 +23079,7 @@ _tmp_31_rule(Parser *p) Token * _keyword; expr_ty z; if ( - (_keyword = _PyPegen_expect_token(p, 625)) // token='as' + (_keyword = _PyPegen_expect_token(p, 627)) // token='as' && (z = _PyPegen_name_token(p)) // NAME ) @@ -23003,12 +23130,12 @@ _loop1_32_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_32[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('@' named_expression NEWLINE)")); - void *_tmp_184_var; + void *_tmp_186_var; while ( - (_tmp_184_var = _tmp_184_rule(p)) // '@' named_expression NEWLINE + (_tmp_186_var = _tmp_186_rule(p)) // '@' named_expression NEWLINE ) { - _res = _tmp_184_var; + _res = _tmp_186_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -24762,7 +24889,7 @@ _tmp_60_rule(Parser *p) Token * _keyword; expr_ty z; if ( - (_keyword = _PyPegen_expect_token(p, 625)) // token='as' + (_keyword = _PyPegen_expect_token(p, 627)) // token='as' && (z = _PyPegen_name_token(p)) // NAME ) @@ -25767,12 +25894,12 @@ _loop1_77_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_77[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)")); - void *_tmp_185_var; + void *_tmp_187_var; while ( - (_tmp_185_var = _tmp_185_rule(p)) // ',' expression + (_tmp_187_var = _tmp_187_rule(p)) // ',' expression ) { - _res = _tmp_185_var; + _res = _tmp_187_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -25838,12 +25965,12 @@ _loop1_78_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_78[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)")); - void *_tmp_186_var; + void *_tmp_188_var; while ( - (_tmp_186_var = _tmp_186_rule(p)) // ',' star_expression + (_tmp_188_var = _tmp_188_rule(p)) // ',' star_expression ) { - _res = _tmp_186_var; + _res = _tmp_188_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -26023,12 +26150,12 @@ _loop1_81_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_81[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)")); - void *_tmp_187_var; + void *_tmp_189_var; while ( - (_tmp_187_var = _tmp_187_rule(p)) // 'or' conjunction + (_tmp_189_var = _tmp_189_rule(p)) // 'or' conjunction ) { - _res = _tmp_187_var; + _res = _tmp_189_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -26094,12 +26221,12 @@ _loop1_82_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_82[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)")); - void *_tmp_188_var; + void *_tmp_190_var; while ( - (_tmp_188_var = _tmp_188_rule(p)) // 'and' inversion + (_tmp_190_var = _tmp_190_rule(p)) // 'and' inversion ) { - _res = _tmp_188_var; + _res = _tmp_190_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -27974,12 +28101,12 @@ _loop0_111_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); - void *_tmp_189_var; + void *_tmp_191_var; while ( - (_tmp_189_var = _tmp_189_rule(p)) // 'if' disjunction + (_tmp_191_var = _tmp_191_rule(p)) // 'if' disjunction ) { - _res = _tmp_189_var; + _res = _tmp_191_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28040,12 +28167,12 @@ _loop0_112_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_112[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)")); - void *_tmp_190_var; + void *_tmp_192_var; while ( - (_tmp_190_var = _tmp_190_rule(p)) // 'if' disjunction + (_tmp_192_var = _tmp_192_rule(p)) // 'if' disjunction ) { - _res = _tmp_190_var; + _res = _tmp_192_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28168,7 +28295,7 @@ _loop0_115_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_191_rule(p)) // starred_expression | (assignment_expression | expression !':=') !'=' + (elem = _tmp_193_rule(p)) // starred_expression | (assignment_expression | expression !':=') !'=' ) { _res = elem; @@ -28232,7 +28359,7 @@ _gather_114_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_191_rule(p)) // starred_expression | (assignment_expression | expression !':=') !'=' + (elem = _tmp_193_rule(p)) // starred_expression | (assignment_expression | expression !':=') !'=' && (seq = _loop0_115_rule(p)) // _loop0_115 ) @@ -28778,12 +28905,12 @@ _loop0_125_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_125[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)")); - void *_tmp_192_var; + void *_tmp_194_var; while ( - (_tmp_192_var = _tmp_192_rule(p)) // ',' star_target + (_tmp_194_var = _tmp_194_rule(p)) // ',' star_target ) { - _res = _tmp_192_var; + _res = _tmp_194_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -28958,12 +29085,12 @@ _loop1_128_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop1_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)")); - void *_tmp_193_var; + void *_tmp_195_var; while ( - (_tmp_193_var = _tmp_193_rule(p)) // ',' star_target + (_tmp_195_var = _tmp_195_rule(p)) // ',' star_target ) { - _res = _tmp_193_var; + _res = _tmp_195_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -29726,7 +29853,7 @@ _tmp_142_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 597)) // token='True' + (_keyword = _PyPegen_expect_token(p, 598)) // token='True' ) { D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'")); @@ -29745,7 +29872,7 @@ _tmp_142_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 599)) // token='False' + (_keyword = _PyPegen_expect_token(p, 600)) // token='False' ) { D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'")); @@ -29764,7 +29891,7 @@ _tmp_142_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 598)) // token='None' + (_keyword = _PyPegen_expect_token(p, 599)) // token='None' ) { D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'")); @@ -29897,7 +30024,7 @@ _tmp_145_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 630)) // token='else' + (_keyword = _PyPegen_expect_token(p, 632)) // token='else' ) { D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else'")); @@ -30064,7 +30191,7 @@ _tmp_147_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 597)) // token='True' + (_keyword = _PyPegen_expect_token(p, 598)) // token='True' ) { D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'")); @@ -30083,7 +30210,7 @@ _tmp_147_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 598)) // token='None' + (_keyword = _PyPegen_expect_token(p, 599)) // token='None' ) { D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'")); @@ -30102,7 +30229,7 @@ _tmp_147_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 599)) // token='False' + (_keyword = _PyPegen_expect_token(p, 600)) // token='False' ) { D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'")); @@ -30267,12 +30394,12 @@ _loop0_150_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_194_var; + void *_tmp_196_var; while ( - (_tmp_194_var = _tmp_194_rule(p)) // star_targets '=' + (_tmp_196_var = _tmp_196_rule(p)) // star_targets '=' ) { - _res = _tmp_194_var; + _res = _tmp_196_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30333,12 +30460,12 @@ _loop0_151_rule(Parser *p) return NULL; } D(fprintf(stderr, "%*c> _loop0_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')")); - void *_tmp_195_var; + void *_tmp_197_var; while ( - (_tmp_195_var = _tmp_195_rule(p)) // star_targets '=' + (_tmp_197_var = _tmp_197_rule(p)) // star_targets '=' ) { - _res = _tmp_195_var; + _res = _tmp_197_var; if (_n == _children_capacity) { _children_capacity *= 2; void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); @@ -30922,15 +31049,15 @@ _tmp_160_rule(Parser *p) } D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); Token * _literal; - void *_tmp_196_var; + void *_tmp_198_var; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_tmp_196_var = _tmp_196_rule(p)) // ')' | '**' + (_tmp_198_var = _tmp_198_rule(p)) // ')' | '**' ) { D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')")); - _res = _PyPegen_dummy_name(p, _literal, _tmp_196_var); + _res = _PyPegen_dummy_name(p, _literal, _tmp_198_var); goto done; } p->mark = _mark; @@ -30980,15 +31107,15 @@ _tmp_161_rule(Parser *p) } D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); Token * _literal; - void *_tmp_197_var; + void *_tmp_199_var; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (_tmp_197_var = _tmp_197_rule(p)) // ':' | '**' + (_tmp_199_var = _tmp_199_rule(p)) // ':' | '**' ) { D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')")); - _res = _PyPegen_dummy_name(p, _literal, _tmp_197_var); + _res = _PyPegen_dummy_name(p, _literal, _tmp_199_var); goto done; } p->mark = _mark; @@ -31107,7 +31234,7 @@ _loop0_164_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_198_rule(p)) // expression ['as' star_target] + (elem = _tmp_200_rule(p)) // expression ['as' star_target] ) { _res = elem; @@ -31170,7 +31297,7 @@ _gather_163_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_198_rule(p)) // expression ['as' star_target] + (elem = _tmp_200_rule(p)) // expression ['as' star_target] && (seq = _loop0_164_rule(p)) // _loop0_164 ) @@ -31221,7 +31348,7 @@ _loop0_166_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_199_rule(p)) // expressions ['as' star_target] + (elem = _tmp_201_rule(p)) // expressions ['as' star_target] ) { _res = elem; @@ -31284,7 +31411,7 @@ _gather_165_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_199_rule(p)) // expressions ['as' star_target] + (elem = _tmp_201_rule(p)) // expressions ['as' star_target] && (seq = _loop0_166_rule(p)) // _loop0_166 ) @@ -31335,7 +31462,7 @@ _loop0_168_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_200_rule(p)) // expression ['as' star_target] + (elem = _tmp_202_rule(p)) // expression ['as' star_target] ) { _res = elem; @@ -31398,7 +31525,7 @@ _gather_167_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_200_rule(p)) // expression ['as' star_target] + (elem = _tmp_202_rule(p)) // expression ['as' star_target] && (seq = _loop0_168_rule(p)) // _loop0_168 ) @@ -31449,7 +31576,7 @@ _loop0_170_rule(Parser *p) while ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' && - (elem = _tmp_201_rule(p)) // expressions ['as' star_target] + (elem = _tmp_203_rule(p)) // expressions ['as' star_target] ) { _res = elem; @@ -31512,7 +31639,7 @@ _gather_169_rule(Parser *p) void *elem; asdl_seq * seq; if ( - (elem = _tmp_201_rule(p)) // expressions ['as' star_target] + (elem = _tmp_203_rule(p)) // expressions ['as' star_target] && (seq = _loop0_170_rule(p)) // _loop0_170 ) @@ -31550,7 +31677,7 @@ _tmp_171_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 623)) // token='except' + (_keyword = _PyPegen_expect_token(p, 625)) // token='except' ) { D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except'")); @@ -31569,7 +31696,7 @@ _tmp_171_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 620)) // token='finally' + (_keyword = _PyPegen_expect_token(p, 622)) // token='finally' ) { D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally'")); @@ -31586,9 +31713,146 @@ _tmp_171_rule(Parser *p) return _res; } -// _tmp_172: 'as' NAME +// _loop0_172: except_block +static asdl_seq * +_loop0_172_rule(Parser *p) +{ + D(p->level++); + if (p->error_indicator) { + D(p->level--); + return NULL; + } + void *_res = NULL; + int _mark = p->mark; + int _start_mark = p->mark; + void **_children = PyMem_Malloc(sizeof(void *)); + if (!_children) { + p->error_indicator = 1; + PyErr_NoMemory(); + D(p->level--); + return NULL; + } + Py_ssize_t _children_capacity = 1; + Py_ssize_t _n = 0; + { // except_block + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> _loop0_172[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_block")); + excepthandler_ty except_block_var; + while ( + (except_block_var = except_block_rule(p)) // except_block + ) + { + _res = except_block_var; + if (_n == _children_capacity) { + _children_capacity *= 2; + void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); + if (!_new_children) { + p->error_indicator = 1; + PyErr_NoMemory(); + D(p->level--); + return NULL; + } + _children = _new_children; + } + _children[_n++] = _res; + _mark = p->mark; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _loop0_172[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_block")); + } + asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); + if (!_seq) { + PyMem_Free(_children); + p->error_indicator = 1; + PyErr_NoMemory(); + D(p->level--); + return NULL; + } + for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); + PyMem_Free(_children); + _PyPegen_insert_memo(p, _start_mark, _loop0_172_type, _seq); + D(p->level--); + return _seq; +} + +// _loop1_173: (except_block | default_except_block) +static asdl_seq * +_loop1_173_rule(Parser *p) +{ + D(p->level++); + if (p->error_indicator) { + D(p->level--); + return NULL; + } + void *_res = NULL; + int _mark = p->mark; + int _start_mark = p->mark; + void **_children = PyMem_Malloc(sizeof(void *)); + if (!_children) { + p->error_indicator = 1; + PyErr_NoMemory(); + D(p->level--); + return NULL; + } + Py_ssize_t _children_capacity = 1; + Py_ssize_t _n = 0; + { // (except_block | default_except_block) + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> _loop1_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(except_block | default_except_block)")); + void *_tmp_204_var; + while ( + (_tmp_204_var = _tmp_204_rule(p)) // except_block | default_except_block + ) + { + _res = _tmp_204_var; + if (_n == _children_capacity) { + _children_capacity *= 2; + void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *)); + if (!_new_children) { + p->error_indicator = 1; + PyErr_NoMemory(); + D(p->level--); + return NULL; + } + _children = _new_children; + } + _children[_n++] = _res; + _mark = p->mark; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _loop1_173[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(except_block | default_except_block)")); + } + if (_n == 0 || p->error_indicator) { + PyMem_Free(_children); + D(p->level--); + return NULL; + } + asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); + if (!_seq) { + PyMem_Free(_children); + p->error_indicator = 1; + PyErr_NoMemory(); + D(p->level--); + return NULL; + } + for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); + PyMem_Free(_children); + _PyPegen_insert_memo(p, _start_mark, _loop1_173_type, _seq); + D(p->level--); + return _seq; +} + +// _tmp_174: 'as' NAME static void * -_tmp_172_rule(Parser *p) +_tmp_174_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31602,21 +31866,21 @@ _tmp_172_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_172[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); Token * _keyword; expr_ty name_var; if ( - (_keyword = _PyPegen_expect_token(p, 625)) // token='as' + (_keyword = _PyPegen_expect_token(p, 627)) // token='as' && (name_var = _PyPegen_name_token(p)) // NAME ) { - D(fprintf(stderr, "%*c+ _tmp_172[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); _res = _PyPegen_dummy_name(p, _keyword, name_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_172[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME")); } _res = NULL; @@ -31625,9 +31889,9 @@ _tmp_172_rule(Parser *p) return _res; } -// _tmp_173: 'as' NAME +// _tmp_175: 'as' NAME static void * -_tmp_173_rule(Parser *p) +_tmp_175_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31641,21 +31905,21 @@ _tmp_173_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c> _tmp_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); Token * _keyword; expr_ty name_var; if ( - (_keyword = _PyPegen_expect_token(p, 625)) // token='as' + (_keyword = _PyPegen_expect_token(p, 627)) // token='as' && (name_var = _PyPegen_name_token(p)) // NAME ) { - D(fprintf(stderr, "%*c+ _tmp_173[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c+ _tmp_175[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); _res = _PyPegen_dummy_name(p, _keyword, name_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_173[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_175[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME")); } _res = NULL; @@ -31664,9 +31928,9 @@ _tmp_173_rule(Parser *p) return _res; } -// _tmp_174: 'as' NAME +// _tmp_176: 'as' NAME static void * -_tmp_174_rule(Parser *p) +_tmp_176_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31680,21 +31944,21 @@ _tmp_174_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c> _tmp_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME")); Token * _keyword; expr_ty name_var; if ( - (_keyword = _PyPegen_expect_token(p, 625)) // token='as' + (_keyword = _PyPegen_expect_token(p, 627)) // token='as' && (name_var = _PyPegen_name_token(p)) // NAME ) { - D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); + D(fprintf(stderr, "%*c+ _tmp_176[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME")); _res = _PyPegen_dummy_name(p, _keyword, name_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_176[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME")); } _res = NULL; @@ -31703,9 +31967,9 @@ _tmp_174_rule(Parser *p) return _res; } -// _tmp_175: positional_patterns ',' +// _tmp_177: positional_patterns ',' static void * -_tmp_175_rule(Parser *p) +_tmp_177_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31719,7 +31983,7 @@ _tmp_175_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "positional_patterns ','")); + D(fprintf(stderr, "%*c> _tmp_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "positional_patterns ','")); Token * _literal; asdl_pattern_seq* positional_patterns_var; if ( @@ -31728,12 +31992,12 @@ _tmp_175_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_175[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "positional_patterns ','")); + D(fprintf(stderr, "%*c+ _tmp_177[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "positional_patterns ','")); _res = _PyPegen_dummy_name(p, positional_patterns_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_175[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_177[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "positional_patterns ','")); } _res = NULL; @@ -31742,9 +32006,9 @@ _tmp_175_rule(Parser *p) return _res; } -// _tmp_176: '->' expression +// _tmp_178: '->' expression static void * -_tmp_176_rule(Parser *p) +_tmp_178_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31758,7 +32022,7 @@ _tmp_176_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression")); + D(fprintf(stderr, "%*c> _tmp_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression")); Token * _literal; expr_ty expression_var; if ( @@ -31767,12 +32031,12 @@ _tmp_176_rule(Parser *p) (expression_var = expression_rule(p)) // expression ) { - D(fprintf(stderr, "%*c+ _tmp_176[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression")); + D(fprintf(stderr, "%*c+ _tmp_178[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression")); _res = _PyPegen_dummy_name(p, _literal, expression_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_176[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_178[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression")); } _res = NULL; @@ -31781,9 +32045,9 @@ _tmp_176_rule(Parser *p) return _res; } -// _tmp_177: '(' arguments? ')' +// _tmp_179: '(' arguments? ')' static void * -_tmp_177_rule(Parser *p) +_tmp_179_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31797,7 +32061,7 @@ _tmp_177_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); + D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); Token * _literal; Token * _literal_1; void *_opt_var; @@ -31810,12 +32074,12 @@ _tmp_177_rule(Parser *p) (_literal_1 = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_177[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); + D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'")); _res = _PyPegen_dummy_name(p, _literal, _opt_var, _literal_1); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_177[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'")); } _res = NULL; @@ -31824,9 +32088,9 @@ _tmp_177_rule(Parser *p) return _res; } -// _loop0_179: ',' double_starred_kvpair +// _loop0_181: ',' double_starred_kvpair static asdl_seq * -_loop0_179_rule(Parser *p) +_loop0_181_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31850,7 +32114,7 @@ _loop0_179_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _loop0_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair")); + D(fprintf(stderr, "%*c> _loop0_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair")); Token * _literal; KeyValuePair* elem; while ( @@ -31881,7 +32145,7 @@ _loop0_179_rule(Parser *p) _mark = p->mark; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _loop0_179[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _loop0_181[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair")); } asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena); @@ -31894,14 +32158,14 @@ _loop0_179_rule(Parser *p) } for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]); PyMem_Free(_children); - _PyPegen_insert_memo(p, _start_mark, _loop0_179_type, _seq); + _PyPegen_insert_memo(p, _start_mark, _loop0_181_type, _seq); D(p->level--); return _seq; } -// _gather_178: double_starred_kvpair _loop0_179 +// _gather_180: double_starred_kvpair _loop0_181 static asdl_seq * -_gather_178_rule(Parser *p) +_gather_180_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31910,27 +32174,27 @@ _gather_178_rule(Parser *p) } asdl_seq * _res = NULL; int _mark = p->mark; - { // double_starred_kvpair _loop0_179 + { // double_starred_kvpair _loop0_181 if (p->error_indicator) { D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _gather_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_179")); + D(fprintf(stderr, "%*c> _gather_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_181")); KeyValuePair* elem; asdl_seq * seq; if ( (elem = double_starred_kvpair_rule(p)) // double_starred_kvpair && - (seq = _loop0_179_rule(p)) // _loop0_179 + (seq = _loop0_181_rule(p)) // _loop0_181 ) { - D(fprintf(stderr, "%*c+ _gather_178[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_179")); + D(fprintf(stderr, "%*c+ _gather_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_181")); _res = _PyPegen_seq_insert_in_front(p, elem, seq); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _gather_178[%d-%d]: %s failed!\n", p->level, ' ', - p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_179")); + D(fprintf(stderr, "%*c%s _gather_180[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_181")); } _res = NULL; done: @@ -31938,9 +32202,9 @@ _gather_178_rule(Parser *p) return _res; } -// _tmp_180: '}' | ',' +// _tmp_182: '}' | ',' static void * -_tmp_180_rule(Parser *p) +_tmp_182_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -31954,18 +32218,18 @@ _tmp_180_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'")); + D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 26)) // token='}' ) { - D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'")); + D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'")); } { // ',' @@ -31973,18 +32237,18 @@ _tmp_180_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 12)) // token=',' ) { - D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); + D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','")); } _res = NULL; @@ -31993,9 +32257,9 @@ _tmp_180_rule(Parser *p) return _res; } -// _tmp_181: star_targets '=' +// _tmp_183: star_targets '=' static void * -_tmp_181_rule(Parser *p) +_tmp_183_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32009,7 +32273,7 @@ _tmp_181_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty z; if ( @@ -32018,7 +32282,7 @@ _tmp_181_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_183[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32028,7 +32292,7 @@ _tmp_181_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_183[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -32037,9 +32301,9 @@ _tmp_181_rule(Parser *p) return _res; } -// _tmp_182: '.' | '...' +// _tmp_184: '.' | '...' static void * -_tmp_182_rule(Parser *p) +_tmp_184_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32053,18 +32317,18 @@ _tmp_182_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c> _tmp_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 23)) // token='.' ) { - D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c+ _tmp_184[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_184[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); } { // '...' @@ -32072,18 +32336,18 @@ _tmp_182_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c> _tmp_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 52)) // token='...' ) { - D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c+ _tmp_184[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_184[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'")); } _res = NULL; @@ -32092,9 +32356,9 @@ _tmp_182_rule(Parser *p) return _res; } -// _tmp_183: '.' | '...' +// _tmp_185: '.' | '...' static void * -_tmp_183_rule(Parser *p) +_tmp_185_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32108,18 +32372,18 @@ _tmp_183_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c> _tmp_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 23)) // token='.' ) { - D(fprintf(stderr, "%*c+ _tmp_183[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); + D(fprintf(stderr, "%*c+ _tmp_185[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_183[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_185[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'")); } { // '...' @@ -32127,18 +32391,18 @@ _tmp_183_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c> _tmp_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 52)) // token='...' ) { - D(fprintf(stderr, "%*c+ _tmp_183[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); + D(fprintf(stderr, "%*c+ _tmp_185[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_183[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_185[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'")); } _res = NULL; @@ -32147,9 +32411,9 @@ _tmp_183_rule(Parser *p) return _res; } -// _tmp_184: '@' named_expression NEWLINE +// _tmp_186: '@' named_expression NEWLINE static void * -_tmp_184_rule(Parser *p) +_tmp_186_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32163,7 +32427,7 @@ _tmp_184_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); + D(fprintf(stderr, "%*c> _tmp_186[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); Token * _literal; expr_ty f; Token * newline_var; @@ -32175,7 +32439,7 @@ _tmp_184_rule(Parser *p) (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) { - D(fprintf(stderr, "%*c+ _tmp_184[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); + D(fprintf(stderr, "%*c+ _tmp_186[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE")); _res = f; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32185,7 +32449,7 @@ _tmp_184_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_184[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_186[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@' named_expression NEWLINE")); } _res = NULL; @@ -32194,9 +32458,9 @@ _tmp_184_rule(Parser *p) return _res; } -// _tmp_185: ',' expression +// _tmp_187: ',' expression static void * -_tmp_185_rule(Parser *p) +_tmp_187_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32210,7 +32474,7 @@ _tmp_185_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c> _tmp_187[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression")); Token * _literal; expr_ty c; if ( @@ -32219,7 +32483,7 @@ _tmp_185_rule(Parser *p) (c = expression_rule(p)) // expression ) { - D(fprintf(stderr, "%*c+ _tmp_185[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression")); + D(fprintf(stderr, "%*c+ _tmp_187[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32229,7 +32493,7 @@ _tmp_185_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_185[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_187[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression")); } _res = NULL; @@ -32238,9 +32502,9 @@ _tmp_185_rule(Parser *p) return _res; } -// _tmp_186: ',' star_expression +// _tmp_188: ',' star_expression static void * -_tmp_186_rule(Parser *p) +_tmp_188_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32254,7 +32518,7 @@ _tmp_186_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_186[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression")); + D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression")); Token * _literal; expr_ty c; if ( @@ -32263,7 +32527,7 @@ _tmp_186_rule(Parser *p) (c = star_expression_rule(p)) // star_expression ) { - D(fprintf(stderr, "%*c+ _tmp_186[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression")); + D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32273,7 +32537,7 @@ _tmp_186_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_186[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression")); } _res = NULL; @@ -32282,9 +32546,9 @@ _tmp_186_rule(Parser *p) return _res; } -// _tmp_187: 'or' conjunction +// _tmp_189: 'or' conjunction static void * -_tmp_187_rule(Parser *p) +_tmp_189_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32298,16 +32562,16 @@ _tmp_187_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_187[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); + D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); Token * _keyword; expr_ty c; if ( - (_keyword = _PyPegen_expect_token(p, 571)) // token='or' + (_keyword = _PyPegen_expect_token(p, 572)) // token='or' && (c = conjunction_rule(p)) // conjunction ) { - D(fprintf(stderr, "%*c+ _tmp_187[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); + D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32317,7 +32581,7 @@ _tmp_187_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_187[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'or' conjunction")); } _res = NULL; @@ -32326,9 +32590,9 @@ _tmp_187_rule(Parser *p) return _res; } -// _tmp_188: 'and' inversion +// _tmp_190: 'and' inversion static void * -_tmp_188_rule(Parser *p) +_tmp_190_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32342,16 +32606,16 @@ _tmp_188_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion")); + D(fprintf(stderr, "%*c> _tmp_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion")); Token * _keyword; expr_ty c; if ( - (_keyword = _PyPegen_expect_token(p, 572)) // token='and' + (_keyword = _PyPegen_expect_token(p, 573)) // token='and' && (c = inversion_rule(p)) // inversion ) { - D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion")); + D(fprintf(stderr, "%*c+ _tmp_190[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32361,7 +32625,7 @@ _tmp_188_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_190[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'and' inversion")); } _res = NULL; @@ -32370,9 +32634,9 @@ _tmp_188_rule(Parser *p) return _res; } -// _tmp_189: 'if' disjunction +// _tmp_191: 'if' disjunction static void * -_tmp_189_rule(Parser *p) +_tmp_191_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32386,16 +32650,16 @@ _tmp_189_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); Token * _keyword; expr_ty z; if ( - (_keyword = _PyPegen_expect_token(p, 627)) // token='if' + (_keyword = _PyPegen_expect_token(p, 629)) // token='if' && (z = disjunction_rule(p)) // disjunction ) { - D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32405,7 +32669,7 @@ _tmp_189_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction")); } _res = NULL; @@ -32414,9 +32678,9 @@ _tmp_189_rule(Parser *p) return _res; } -// _tmp_190: 'if' disjunction +// _tmp_192: 'if' disjunction static void * -_tmp_190_rule(Parser *p) +_tmp_192_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32430,16 +32694,16 @@ _tmp_190_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c> _tmp_192[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); Token * _keyword; expr_ty z; if ( - (_keyword = _PyPegen_expect_token(p, 627)) // token='if' + (_keyword = _PyPegen_expect_token(p, 629)) // token='if' && (z = disjunction_rule(p)) // disjunction ) { - D(fprintf(stderr, "%*c+ _tmp_190[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); + D(fprintf(stderr, "%*c+ _tmp_192[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction")); _res = z; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32449,7 +32713,7 @@ _tmp_190_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_190[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_192[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction")); } _res = NULL; @@ -32458,9 +32722,9 @@ _tmp_190_rule(Parser *p) return _res; } -// _tmp_191: starred_expression | (assignment_expression | expression !':=') !'=' +// _tmp_193: starred_expression | (assignment_expression | expression !':=') !'=' static void * -_tmp_191_rule(Parser *p) +_tmp_193_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32474,18 +32738,18 @@ _tmp_191_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression")); + D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression")); expr_ty starred_expression_var; if ( (starred_expression_var = starred_expression_rule(p)) // starred_expression ) { - D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression")); + D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression")); _res = starred_expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression")); } { // (assignment_expression | expression !':=') !'=' @@ -32493,20 +32757,20 @@ _tmp_191_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='")); - void *_tmp_202_var; + D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='")); + void *_tmp_205_var; if ( - (_tmp_202_var = _tmp_202_rule(p)) // assignment_expression | expression !':=' + (_tmp_205_var = _tmp_205_rule(p)) // assignment_expression | expression !':=' && _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='")); - _res = _tmp_202_var; + D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='")); + _res = _tmp_205_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(assignment_expression | expression !':=') !'='")); } _res = NULL; @@ -32515,9 +32779,9 @@ _tmp_191_rule(Parser *p) return _res; } -// _tmp_192: ',' star_target +// _tmp_194: ',' star_target static void * -_tmp_192_rule(Parser *p) +_tmp_194_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32531,7 +32795,7 @@ _tmp_192_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_192[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); Token * _literal; expr_ty c; if ( @@ -32540,7 +32804,7 @@ _tmp_192_rule(Parser *p) (c = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_192[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32550,7 +32814,7 @@ _tmp_192_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_192[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target")); } _res = NULL; @@ -32559,9 +32823,9 @@ _tmp_192_rule(Parser *p) return _res; } -// _tmp_193: ',' star_target +// _tmp_195: ',' star_target static void * -_tmp_193_rule(Parser *p) +_tmp_195_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32575,7 +32839,7 @@ _tmp_193_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target")); Token * _literal; expr_ty c; if ( @@ -32584,7 +32848,7 @@ _tmp_193_rule(Parser *p) (c = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); + D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target")); _res = c; if (_res == NULL && PyErr_Occurred()) { p->error_indicator = 1; @@ -32594,7 +32858,7 @@ _tmp_193_rule(Parser *p) goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target")); } _res = NULL; @@ -32603,9 +32867,9 @@ _tmp_193_rule(Parser *p) return _res; } -// _tmp_194: star_targets '=' +// _tmp_196: star_targets '=' static void * -_tmp_194_rule(Parser *p) +_tmp_196_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32619,7 +32883,7 @@ _tmp_194_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty star_targets_var; if ( @@ -32628,12 +32892,12 @@ _tmp_194_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = _PyPegen_dummy_name(p, star_targets_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -32642,9 +32906,9 @@ _tmp_194_rule(Parser *p) return _res; } -// _tmp_195: star_targets '=' +// _tmp_197: star_targets '=' static void * -_tmp_195_rule(Parser *p) +_tmp_197_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32658,7 +32922,7 @@ _tmp_195_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c> _tmp_197[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='")); Token * _literal; expr_ty star_targets_var; if ( @@ -32667,12 +32931,12 @@ _tmp_195_rule(Parser *p) (_literal = _PyPegen_expect_token(p, 22)) // token='=' ) { - D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); + D(fprintf(stderr, "%*c+ _tmp_197[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='")); _res = _PyPegen_dummy_name(p, star_targets_var, _literal); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_197[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='")); } _res = NULL; @@ -32681,9 +32945,9 @@ _tmp_195_rule(Parser *p) return _res; } -// _tmp_196: ')' | '**' +// _tmp_198: ')' | '**' static void * -_tmp_196_rule(Parser *p) +_tmp_198_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32697,18 +32961,18 @@ _tmp_196_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c> _tmp_198[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 8)) // token=')' ) { - D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); + D(fprintf(stderr, "%*c+ _tmp_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_198[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'")); } { // '**' @@ -32716,18 +32980,18 @@ _tmp_196_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c> _tmp_198[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 35)) // token='**' ) { - D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c+ _tmp_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_198[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'")); } _res = NULL; @@ -32736,9 +33000,9 @@ _tmp_196_rule(Parser *p) return _res; } -// _tmp_197: ':' | '**' +// _tmp_199: ':' | '**' static void * -_tmp_197_rule(Parser *p) +_tmp_199_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32752,18 +33016,18 @@ _tmp_197_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_197[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 11)) // token=':' ) { - D(fprintf(stderr, "%*c+ _tmp_197[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); + D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_197[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'")); } { // '**' @@ -32771,18 +33035,18 @@ _tmp_197_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_197[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'")); Token * _literal; if ( (_literal = _PyPegen_expect_token(p, 35)) // token='**' ) { - D(fprintf(stderr, "%*c+ _tmp_197[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); + D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'")); _res = _literal; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_197[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'")); } _res = NULL; @@ -32791,9 +33055,9 @@ _tmp_197_rule(Parser *p) return _res; } -// _tmp_198: expression ['as' star_target] +// _tmp_200: expression ['as' star_target] static void * -_tmp_198_rule(Parser *p) +_tmp_200_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32807,22 +33071,22 @@ _tmp_198_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_198[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_203_rule(p), !p->error_indicator) // ['as' star_target] + (_opt_var = _tmp_206_rule(p), !p->error_indicator) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); _res = _PyPegen_dummy_name(p, expression_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_198[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]")); } _res = NULL; @@ -32831,9 +33095,9 @@ _tmp_198_rule(Parser *p) return _res; } -// _tmp_199: expressions ['as' star_target] +// _tmp_201: expressions ['as' star_target] static void * -_tmp_199_rule(Parser *p) +_tmp_201_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32847,22 +33111,22 @@ _tmp_199_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expressions_var; if ( (expressions_var = expressions_rule(p)) // expressions && - (_opt_var = _tmp_204_rule(p), !p->error_indicator) // ['as' star_target] + (_opt_var = _tmp_207_rule(p), !p->error_indicator) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_201[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); _res = _PyPegen_dummy_name(p, expressions_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_201[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]")); } _res = NULL; @@ -32871,9 +33135,9 @@ _tmp_199_rule(Parser *p) return _res; } -// _tmp_200: expression ['as' star_target] +// _tmp_202: expression ['as' star_target] static void * -_tmp_200_rule(Parser *p) +_tmp_202_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32887,22 +33151,22 @@ _tmp_200_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression && - (_opt_var = _tmp_205_rule(p), !p->error_indicator) // ['as' star_target] + (_opt_var = _tmp_208_rule(p), !p->error_indicator) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]")); _res = _PyPegen_dummy_name(p, expression_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_202[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]")); } _res = NULL; @@ -32911,9 +33175,9 @@ _tmp_200_rule(Parser *p) return _res; } -// _tmp_201: expressions ['as' star_target] +// _tmp_203: expressions ['as' star_target] static void * -_tmp_201_rule(Parser *p) +_tmp_203_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32927,22 +33191,22 @@ _tmp_201_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c> _tmp_203[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); void *_opt_var; UNUSED(_opt_var); // Silence compiler warnings expr_ty expressions_var; if ( (expressions_var = expressions_rule(p)) // expressions && - (_opt_var = _tmp_206_rule(p), !p->error_indicator) // ['as' star_target] + (_opt_var = _tmp_209_rule(p), !p->error_indicator) // ['as' star_target] ) { - D(fprintf(stderr, "%*c+ _tmp_201[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); + D(fprintf(stderr, "%*c+ _tmp_203[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]")); _res = _PyPegen_dummy_name(p, expressions_var, _opt_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_201[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_203[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]")); } _res = NULL; @@ -32951,9 +33215,64 @@ _tmp_201_rule(Parser *p) return _res; } -// _tmp_202: assignment_expression | expression !':=' +// _tmp_204: except_block | default_except_block static void * -_tmp_202_rule(Parser *p) +_tmp_204_rule(Parser *p) +{ + D(p->level++); + if (p->error_indicator) { + D(p->level--); + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // except_block + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_204[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_block")); + excepthandler_ty except_block_var; + if ( + (except_block_var = except_block_rule(p)) // except_block + ) + { + D(fprintf(stderr, "%*c+ _tmp_204[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "except_block")); + _res = except_block_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_204[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_block")); + } + { // default_except_block + if (p->error_indicator) { + D(p->level--); + return NULL; + } + D(fprintf(stderr, "%*c> _tmp_204[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "default_except_block")); + excepthandler_ty default_except_block_var; + if ( + (default_except_block_var = default_except_block_rule(p)) // default_except_block + ) + { + D(fprintf(stderr, "%*c+ _tmp_204[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "default_except_block")); + _res = default_except_block_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s _tmp_204[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "default_except_block")); + } + _res = NULL; + done: + D(p->level--); + return _res; +} + +// _tmp_205: assignment_expression | expression !':=' +static void * +_tmp_205_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -32967,18 +33286,18 @@ _tmp_202_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression")); + D(fprintf(stderr, "%*c> _tmp_205[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression")); expr_ty assignment_expression_var; if ( (assignment_expression_var = assignment_expression_rule(p)) // assignment_expression ) { - D(fprintf(stderr, "%*c+ _tmp_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression")); + D(fprintf(stderr, "%*c+ _tmp_205[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression")); _res = assignment_expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_202[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_205[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression")); } { // expression !':=' @@ -32986,7 +33305,7 @@ _tmp_202_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='")); + D(fprintf(stderr, "%*c> _tmp_205[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='")); expr_ty expression_var; if ( (expression_var = expression_rule(p)) // expression @@ -32994,12 +33313,12 @@ _tmp_202_rule(Parser *p) _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53) // token=':=' ) { - D(fprintf(stderr, "%*c+ _tmp_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='")); + D(fprintf(stderr, "%*c+ _tmp_205[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='")); _res = expression_var; goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_202[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_205[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='")); } _res = NULL; @@ -33008,9 +33327,9 @@ _tmp_202_rule(Parser *p) return _res; } -// _tmp_203: 'as' star_target +// _tmp_206: 'as' star_target static void * -_tmp_203_rule(Parser *p) +_tmp_206_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -33024,21 +33343,21 @@ _tmp_203_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_203[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_206[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( - (_keyword = _PyPegen_expect_token(p, 625)) // token='as' + (_keyword = _PyPegen_expect_token(p, 627)) // token='as' && (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_203[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_206[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_203[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_206[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -33047,9 +33366,9 @@ _tmp_203_rule(Parser *p) return _res; } -// _tmp_204: 'as' star_target +// _tmp_207: 'as' star_target static void * -_tmp_204_rule(Parser *p) +_tmp_207_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -33063,21 +33382,21 @@ _tmp_204_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_204[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_207[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( - (_keyword = _PyPegen_expect_token(p, 625)) // token='as' + (_keyword = _PyPegen_expect_token(p, 627)) // token='as' && (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_204[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_207[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_204[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_207[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -33086,9 +33405,9 @@ _tmp_204_rule(Parser *p) return _res; } -// _tmp_205: 'as' star_target +// _tmp_208: 'as' star_target static void * -_tmp_205_rule(Parser *p) +_tmp_208_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -33102,21 +33421,21 @@ _tmp_205_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_205[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_208[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( - (_keyword = _PyPegen_expect_token(p, 625)) // token='as' + (_keyword = _PyPegen_expect_token(p, 627)) // token='as' && (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_205[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_208[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_205[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_208[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; @@ -33125,9 +33444,9 @@ _tmp_205_rule(Parser *p) return _res; } -// _tmp_206: 'as' star_target +// _tmp_209: 'as' star_target static void * -_tmp_206_rule(Parser *p) +_tmp_209_rule(Parser *p) { D(p->level++); if (p->error_indicator) { @@ -33141,21 +33460,21 @@ _tmp_206_rule(Parser *p) D(p->level--); return NULL; } - D(fprintf(stderr, "%*c> _tmp_206[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c> _tmp_209[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target")); Token * _keyword; expr_ty star_target_var; if ( - (_keyword = _PyPegen_expect_token(p, 625)) // token='as' + (_keyword = _PyPegen_expect_token(p, 627)) // token='as' && (star_target_var = star_target_rule(p)) // star_target ) { - D(fprintf(stderr, "%*c+ _tmp_206[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); + D(fprintf(stderr, "%*c+ _tmp_209[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target")); _res = _PyPegen_dummy_name(p, _keyword, star_target_var); goto done; } p->mark = _mark; - D(fprintf(stderr, "%*c%s _tmp_206[%d-%d]: %s failed!\n", p->level, ' ', + D(fprintf(stderr, "%*c%s _tmp_209[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target")); } _res = NULL; diff --git a/Parser/pegen.c b/Parser/pegen.c index 8a3f740c359c0c..f6abec4ec0f131 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -492,7 +492,7 @@ _PyPegen_raise_error_known_location(Parser *p, PyObject *errtype, does not physically exist */ assert(p->tok->fp == NULL || p->tok->fp == stdin || p->tok->done == E_EOF || !uses_utf8_codec); - if (p->tok->lineno <= lineno && p->tok->inp > p->tok->buf) { + if (p->tok->lineno <= lineno && p->tok->inp >= p->tok->buf) { Py_ssize_t size = p->tok->inp - p->tok->buf; error_line = PyUnicode_DecodeUTF8(p->tok->buf, size, "replace"); } diff --git a/Python/compile.c b/Python/compile.c index 1ae4b6575a7f4c..95adf7d53541c1 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -3247,9 +3247,7 @@ compiler_try_except(struct compiler *c, stmt_ty s) excepthandler_ty handler = (excepthandler_ty)asdl_seq_GET( s->v.Try.handlers, i); SET_LOC(c, handler); - if (!handler->v.ExceptHandler.type && i < n-1) { - return compiler_error(c, "default 'except:' must be last"); - } + assert(handler->v.ExceptHandler.type || i >= n-1); except = compiler_new_block(c); if (except == NULL) return 0;