diff --git a/Grammar/python.gram b/Grammar/python.gram index 53288a5418c931..c1e76050cc54c3 100644 --- a/Grammar/python.gram +++ b/Grammar/python.gram @@ -129,6 +129,7 @@ simple_stmt[stmt_ty] (memo): compound_stmt[stmt_ty]: | &('def' | '@' | 'async') function_def | &'if' if_stmt + | &"maybe" maybe_stmt | &('class' | '@') class_def | &('with' | 'async') with_stmt | &('for' | 'async') for_stmt @@ -366,6 +367,11 @@ default[expr_ty]: '=' a=expression { a } | invalid_default # If statement # ------------ +maybe_stmt[stmt_ty]: + | invalid_maybe_stmt + | "maybe" a=named_expression ':' b=block c=elif_stmt { + _PyAST_If(a, b, CHECK(asdl_stmt_seq*, _PyPegen_singleton_seq(p, c)), EXTRA) } + | "maybe" a=named_expression ':' b=block c=[else_block] { _PyAST_If(a, b, c, EXTRA) } if_stmt[stmt_ty]: | invalid_if_stmt | 'if' a=named_expression ':' b=block c=elif_stmt { @@ -466,7 +472,9 @@ case_block[match_case_ty]: | "case" pattern=patterns guard=guard? ':' body=block { _PyAST_match_case(pattern, guard, body, p->arena) } -guard[expr_ty]: 'if' guard=named_expression { guard } +guard[expr_ty]: + | 'if' guard=named_expression { guard } + | "maybe" guard=named_expression { guard } patterns[pattern_ty]: | patterns[asdl_pattern_seq*]=open_sequence_pattern { @@ -681,6 +689,7 @@ expression[expr_ty] (memo): | invalid_expression | invalid_legacy_expression | a=disjunction 'if' b=disjunction 'else' c=expression { _PyAST_IfExp(b, a, c, EXTRA) } + | a=disjunction "maybe" b=disjunction 'else' c=expression { _PyAST_IfExp(b, a, c, EXTRA) } | disjunction | lambdef @@ -1401,6 +1410,10 @@ invalid_class_pattern: "positional patterns follow keyword patterns") } invalid_class_argument_pattern[asdl_pattern_seq*]: | [positional_patterns ','] keyword_patterns ',' a=positional_patterns { a } +invalid_maybe_stmt: + | "maybe" named_expression NEWLINE { RAISE_SYNTAX_ERROR("expected ':'") } + | a="maybe" a=named_expression ':' NEWLINE !INDENT { + RAISE_INDENTATION_ERROR("expected an indented block after 'if' statement on line %d", a->lineno) } invalid_if_stmt: | 'if' named_expression NEWLINE { RAISE_SYNTAX_ERROR("expected ':'") } | a='if' a=named_expression ':' NEWLINE !INDENT { diff --git a/Parser/parser.c b/Parser/parser.c index edebddc95f968e..bf83456813f279 100644 --- a/Parser/parser.c +++ b/Parser/parser.c @@ -21,54 +21,54 @@ static KeywordToken *reserved_keywords[] = { (KeywordToken[]) {{NULL, -1}}, (KeywordToken[]) {{NULL, -1}}, (KeywordToken[]) { - {"if", 675}, - {"as", 673}, - {"in", 686}, - {"or", 584}, - {"is", 592}, + {"if", 676}, + {"as", 674}, + {"in", 687}, + {"or", 585}, + {"is", 593}, {NULL, -1}, }, (KeywordToken[]) { - {"del", 620}, - {"def", 690}, - {"for", 685}, - {"try", 649}, - {"and", 585}, - {"not", 694}, + {"del", 621}, + {"def", 691}, + {"for", 686}, + {"try", 650}, + {"and", 586}, + {"not", 695}, {NULL, -1}, }, (KeywordToken[]) { - {"from", 628}, + {"from", 629}, {"pass", 526}, - {"with", 640}, - {"elif", 677}, - {"else", 678}, - {"None", 618}, - {"True", 617}, + {"with", 641}, + {"elif", 678}, + {"else", 679}, + {"None", 619}, + {"True", 618}, {NULL, -1}, }, (KeywordToken[]) { {"raise", 525}, - {"yield", 583}, + {"yield", 584}, {"break", 527}, - {"async", 689}, - {"class", 692}, - {"while", 680}, - {"False", 619}, - {"await", 593}, + {"async", 690}, + {"class", 693}, + {"while", 681}, + {"False", 620}, + {"await", 594}, {NULL, -1}, }, (KeywordToken[]) { {"return", 522}, - {"import", 629}, + {"import", 630}, {"assert", 532}, {"global", 529}, - {"except", 670}, - {"lambda", 616}, + {"except", 671}, + {"lambda", 617}, {NULL, -1}, }, (KeywordToken[]) { - {"finally", 666}, + {"finally", 667}, {NULL, -1}, }, (KeywordToken[]) { @@ -81,6 +81,7 @@ static char *soft_keywords[] = { "_", "case", "match", + "maybe", "type", NULL, }; @@ -137,381 +138,383 @@ static char *soft_keywords[] = { #define annotation_type 1050 #define star_annotation_type 1051 #define default_type 1052 -#define if_stmt_type 1053 -#define elif_stmt_type 1054 -#define else_block_type 1055 -#define while_stmt_type 1056 -#define for_stmt_type 1057 -#define with_stmt_type 1058 -#define with_item_type 1059 -#define try_stmt_type 1060 -#define except_block_type 1061 -#define except_star_block_type 1062 -#define finally_block_type 1063 -#define match_stmt_type 1064 -#define subject_expr_type 1065 -#define case_block_type 1066 -#define guard_type 1067 -#define patterns_type 1068 -#define pattern_type 1069 -#define as_pattern_type 1070 -#define or_pattern_type 1071 -#define closed_pattern_type 1072 -#define literal_pattern_type 1073 -#define literal_expr_type 1074 -#define complex_number_type 1075 -#define signed_number_type 1076 -#define signed_real_number_type 1077 -#define real_number_type 1078 -#define imaginary_number_type 1079 -#define capture_pattern_type 1080 -#define pattern_capture_target_type 1081 -#define wildcard_pattern_type 1082 -#define value_pattern_type 1083 -#define attr_type 1084 // Left-recursive -#define name_or_attr_type 1085 // Left-recursive -#define group_pattern_type 1086 -#define sequence_pattern_type 1087 -#define open_sequence_pattern_type 1088 -#define maybe_sequence_pattern_type 1089 -#define maybe_star_pattern_type 1090 -#define star_pattern_type 1091 -#define mapping_pattern_type 1092 -#define items_pattern_type 1093 -#define key_value_pattern_type 1094 -#define double_star_pattern_type 1095 -#define class_pattern_type 1096 -#define positional_patterns_type 1097 -#define keyword_patterns_type 1098 -#define keyword_pattern_type 1099 -#define type_alias_type 1100 -#define type_params_type 1101 -#define type_param_seq_type 1102 -#define type_param_type 1103 -#define type_param_bound_type 1104 -#define type_param_default_type 1105 -#define type_param_starred_default_type 1106 -#define expressions_type 1107 -#define expression_type 1108 -#define yield_expr_type 1109 -#define star_expressions_type 1110 -#define star_expression_type 1111 -#define star_named_expressions_type 1112 -#define star_named_expression_type 1113 -#define assignment_expression_type 1114 -#define named_expression_type 1115 -#define disjunction_type 1116 -#define conjunction_type 1117 -#define inversion_type 1118 -#define comparison_type 1119 -#define compare_op_bitwise_or_pair_type 1120 -#define eq_bitwise_or_type 1121 -#define noteq_bitwise_or_type 1122 -#define lte_bitwise_or_type 1123 -#define lt_bitwise_or_type 1124 -#define gte_bitwise_or_type 1125 -#define gt_bitwise_or_type 1126 -#define notin_bitwise_or_type 1127 -#define in_bitwise_or_type 1128 -#define isnot_bitwise_or_type 1129 -#define is_bitwise_or_type 1130 -#define bitwise_or_type 1131 // Left-recursive -#define bitwise_xor_type 1132 // Left-recursive -#define bitwise_and_type 1133 // Left-recursive -#define shift_expr_type 1134 // Left-recursive -#define sum_type 1135 // Left-recursive -#define term_type 1136 // Left-recursive -#define factor_type 1137 -#define power_type 1138 -#define await_primary_type 1139 -#define primary_type 1140 // Left-recursive -#define slices_type 1141 -#define slice_type 1142 -#define atom_type 1143 -#define group_type 1144 -#define lambdef_type 1145 -#define lambda_params_type 1146 -#define lambda_parameters_type 1147 -#define lambda_slash_no_default_type 1148 -#define lambda_slash_with_default_type 1149 -#define lambda_star_etc_type 1150 -#define lambda_kwds_type 1151 -#define lambda_param_no_default_type 1152 -#define lambda_param_with_default_type 1153 -#define lambda_param_maybe_default_type 1154 -#define lambda_param_type 1155 -#define fstring_middle_type 1156 -#define fstring_replacement_field_type 1157 -#define fstring_conversion_type 1158 -#define fstring_full_format_spec_type 1159 -#define fstring_format_spec_type 1160 -#define fstring_type 1161 -#define string_type 1162 -#define strings_type 1163 -#define list_type 1164 -#define tuple_type 1165 -#define set_type 1166 -#define dict_type 1167 -#define double_starred_kvpairs_type 1168 -#define double_starred_kvpair_type 1169 -#define kvpair_type 1170 -#define for_if_clauses_type 1171 -#define for_if_clause_type 1172 -#define listcomp_type 1173 -#define setcomp_type 1174 -#define genexp_type 1175 -#define dictcomp_type 1176 -#define arguments_type 1177 -#define args_type 1178 -#define kwargs_type 1179 -#define starred_expression_type 1180 -#define kwarg_or_starred_type 1181 -#define kwarg_or_double_starred_type 1182 -#define star_targets_type 1183 -#define star_targets_list_seq_type 1184 -#define star_targets_tuple_seq_type 1185 -#define star_target_type 1186 -#define target_with_star_atom_type 1187 -#define star_atom_type 1188 -#define single_target_type 1189 -#define single_subscript_attribute_target_type 1190 -#define t_primary_type 1191 // Left-recursive -#define t_lookahead_type 1192 -#define del_targets_type 1193 -#define del_target_type 1194 -#define del_t_atom_type 1195 -#define type_expressions_type 1196 -#define func_type_comment_type 1197 -#define invalid_arguments_type 1198 -#define invalid_kwarg_type 1199 -#define expression_without_invalid_type 1200 -#define invalid_legacy_expression_type 1201 -#define invalid_type_param_type 1202 -#define invalid_expression_type 1203 -#define invalid_named_expression_type 1204 -#define invalid_assignment_type 1205 -#define invalid_ann_assign_target_type 1206 -#define invalid_del_stmt_type 1207 -#define invalid_block_type 1208 -#define invalid_comprehension_type 1209 -#define invalid_dict_comprehension_type 1210 -#define invalid_parameters_type 1211 -#define invalid_default_type 1212 -#define invalid_star_etc_type 1213 -#define invalid_kwds_type 1214 -#define invalid_parameters_helper_type 1215 -#define invalid_lambda_parameters_type 1216 -#define invalid_lambda_parameters_helper_type 1217 -#define invalid_lambda_star_etc_type 1218 -#define invalid_lambda_kwds_type 1219 -#define invalid_double_type_comments_type 1220 -#define invalid_with_item_type 1221 -#define invalid_for_if_clause_type 1222 -#define invalid_for_target_type 1223 -#define invalid_group_type 1224 -#define invalid_import_type 1225 -#define invalid_import_from_targets_type 1226 -#define invalid_with_stmt_type 1227 -#define invalid_with_stmt_indent_type 1228 -#define invalid_try_stmt_type 1229 -#define invalid_except_stmt_type 1230 -#define invalid_except_star_stmt_type 1231 -#define invalid_finally_stmt_type 1232 -#define invalid_except_stmt_indent_type 1233 -#define invalid_except_star_stmt_indent_type 1234 -#define invalid_match_stmt_type 1235 -#define invalid_case_block_type 1236 -#define invalid_as_pattern_type 1237 -#define invalid_class_pattern_type 1238 -#define invalid_class_argument_pattern_type 1239 -#define invalid_if_stmt_type 1240 -#define invalid_elif_stmt_type 1241 -#define invalid_else_stmt_type 1242 -#define invalid_while_stmt_type 1243 -#define invalid_for_stmt_type 1244 -#define invalid_def_raw_type 1245 -#define invalid_class_def_raw_type 1246 -#define invalid_double_starred_kvpairs_type 1247 -#define invalid_kvpair_type 1248 -#define invalid_starred_expression_unpacking_type 1249 -#define invalid_starred_expression_type 1250 -#define invalid_replacement_field_type 1251 -#define invalid_conversion_character_type 1252 -#define invalid_arithmetic_type 1253 -#define invalid_factor_type 1254 -#define invalid_type_params_type 1255 -#define _loop0_1_type 1256 -#define _loop1_2_type 1257 -#define _loop0_3_type 1258 -#define _gather_4_type 1259 -#define _tmp_5_type 1260 -#define _tmp_6_type 1261 -#define _tmp_7_type 1262 -#define _tmp_8_type 1263 -#define _tmp_9_type 1264 -#define _tmp_10_type 1265 -#define _tmp_11_type 1266 -#define _loop1_12_type 1267 -#define _tmp_13_type 1268 -#define _loop0_14_type 1269 -#define _gather_15_type 1270 -#define _tmp_16_type 1271 -#define _tmp_17_type 1272 -#define _loop0_18_type 1273 -#define _loop1_19_type 1274 -#define _loop0_20_type 1275 -#define _gather_21_type 1276 -#define _tmp_22_type 1277 -#define _loop0_23_type 1278 -#define _gather_24_type 1279 -#define _loop1_25_type 1280 -#define _tmp_26_type 1281 -#define _tmp_27_type 1282 -#define _loop0_28_type 1283 -#define _loop0_29_type 1284 -#define _loop1_30_type 1285 -#define _loop1_31_type 1286 -#define _loop0_32_type 1287 -#define _loop1_33_type 1288 -#define _loop0_34_type 1289 -#define _gather_35_type 1290 -#define _tmp_36_type 1291 -#define _loop1_37_type 1292 -#define _loop1_38_type 1293 -#define _loop1_39_type 1294 -#define _loop0_40_type 1295 -#define _gather_41_type 1296 -#define _tmp_42_type 1297 -#define _tmp_43_type 1298 -#define _loop0_44_type 1299 -#define _gather_45_type 1300 -#define _loop0_46_type 1301 -#define _gather_47_type 1302 -#define _tmp_48_type 1303 -#define _loop0_49_type 1304 -#define _gather_50_type 1305 -#define _loop0_51_type 1306 -#define _gather_52_type 1307 -#define _loop0_53_type 1308 -#define _gather_54_type 1309 -#define _loop1_55_type 1310 -#define _loop1_56_type 1311 -#define _loop0_57_type 1312 -#define _gather_58_type 1313 -#define _loop1_59_type 1314 -#define _loop1_60_type 1315 -#define _loop1_61_type 1316 -#define _tmp_62_type 1317 -#define _loop0_63_type 1318 -#define _gather_64_type 1319 -#define _tmp_65_type 1320 -#define _tmp_66_type 1321 -#define _tmp_67_type 1322 -#define _tmp_68_type 1323 -#define _tmp_69_type 1324 -#define _tmp_70_type 1325 -#define _loop0_71_type 1326 -#define _loop0_72_type 1327 -#define _loop1_73_type 1328 -#define _loop1_74_type 1329 -#define _loop0_75_type 1330 -#define _loop1_76_type 1331 -#define _loop0_77_type 1332 -#define _loop0_78_type 1333 -#define _loop1_79_type 1334 -#define _tmp_80_type 1335 -#define _loop0_81_type 1336 -#define _gather_82_type 1337 -#define _loop1_83_type 1338 -#define _loop0_84_type 1339 -#define _tmp_85_type 1340 -#define _loop0_86_type 1341 -#define _gather_87_type 1342 -#define _tmp_88_type 1343 -#define _loop0_89_type 1344 -#define _gather_90_type 1345 -#define _loop0_91_type 1346 -#define _gather_92_type 1347 -#define _loop0_93_type 1348 -#define _loop0_94_type 1349 -#define _gather_95_type 1350 -#define _loop1_96_type 1351 -#define _tmp_97_type 1352 -#define _loop0_98_type 1353 -#define _gather_99_type 1354 -#define _loop0_100_type 1355 -#define _gather_101_type 1356 -#define _tmp_102_type 1357 -#define _tmp_103_type 1358 -#define _loop0_104_type 1359 -#define _gather_105_type 1360 -#define _tmp_106_type 1361 -#define _tmp_107_type 1362 -#define _tmp_108_type 1363 -#define _tmp_109_type 1364 -#define _tmp_110_type 1365 -#define _loop1_111_type 1366 -#define _tmp_112_type 1367 -#define _tmp_113_type 1368 -#define _tmp_114_type 1369 -#define _tmp_115_type 1370 -#define _tmp_116_type 1371 -#define _loop0_117_type 1372 -#define _loop0_118_type 1373 -#define _tmp_119_type 1374 -#define _tmp_120_type 1375 -#define _tmp_121_type 1376 -#define _tmp_122_type 1377 -#define _tmp_123_type 1378 -#define _tmp_124_type 1379 -#define _tmp_125_type 1380 -#define _tmp_126_type 1381 -#define _tmp_127_type 1382 -#define _loop0_128_type 1383 -#define _gather_129_type 1384 -#define _tmp_130_type 1385 -#define _tmp_131_type 1386 -#define _tmp_132_type 1387 -#define _tmp_133_type 1388 -#define _loop0_134_type 1389 -#define _gather_135_type 1390 -#define _loop0_136_type 1391 -#define _gather_137_type 1392 -#define _loop0_138_type 1393 -#define _gather_139_type 1394 -#define _tmp_140_type 1395 -#define _loop0_141_type 1396 -#define _tmp_142_type 1397 -#define _tmp_143_type 1398 -#define _tmp_144_type 1399 -#define _tmp_145_type 1400 -#define _tmp_146_type 1401 -#define _tmp_147_type 1402 -#define _tmp_148_type 1403 -#define _tmp_149_type 1404 -#define _tmp_150_type 1405 -#define _tmp_151_type 1406 -#define _tmp_152_type 1407 -#define _tmp_153_type 1408 -#define _tmp_154_type 1409 -#define _tmp_155_type 1410 -#define _tmp_156_type 1411 -#define _tmp_157_type 1412 -#define _tmp_158_type 1413 -#define _tmp_159_type 1414 -#define _tmp_160_type 1415 -#define _tmp_161_type 1416 -#define _tmp_162_type 1417 -#define _tmp_163_type 1418 -#define _tmp_164_type 1419 -#define _tmp_165_type 1420 -#define _tmp_166_type 1421 -#define _tmp_167_type 1422 -#define _loop0_168_type 1423 -#define _tmp_169_type 1424 -#define _tmp_170_type 1425 -#define _tmp_171_type 1426 -#define _tmp_172_type 1427 +#define maybe_stmt_type 1053 +#define if_stmt_type 1054 +#define elif_stmt_type 1055 +#define else_block_type 1056 +#define while_stmt_type 1057 +#define for_stmt_type 1058 +#define with_stmt_type 1059 +#define with_item_type 1060 +#define try_stmt_type 1061 +#define except_block_type 1062 +#define except_star_block_type 1063 +#define finally_block_type 1064 +#define match_stmt_type 1065 +#define subject_expr_type 1066 +#define case_block_type 1067 +#define guard_type 1068 +#define patterns_type 1069 +#define pattern_type 1070 +#define as_pattern_type 1071 +#define or_pattern_type 1072 +#define closed_pattern_type 1073 +#define literal_pattern_type 1074 +#define literal_expr_type 1075 +#define complex_number_type 1076 +#define signed_number_type 1077 +#define signed_real_number_type 1078 +#define real_number_type 1079 +#define imaginary_number_type 1080 +#define capture_pattern_type 1081 +#define pattern_capture_target_type 1082 +#define wildcard_pattern_type 1083 +#define value_pattern_type 1084 +#define attr_type 1085 // Left-recursive +#define name_or_attr_type 1086 // Left-recursive +#define group_pattern_type 1087 +#define sequence_pattern_type 1088 +#define open_sequence_pattern_type 1089 +#define maybe_sequence_pattern_type 1090 +#define maybe_star_pattern_type 1091 +#define star_pattern_type 1092 +#define mapping_pattern_type 1093 +#define items_pattern_type 1094 +#define key_value_pattern_type 1095 +#define double_star_pattern_type 1096 +#define class_pattern_type 1097 +#define positional_patterns_type 1098 +#define keyword_patterns_type 1099 +#define keyword_pattern_type 1100 +#define type_alias_type 1101 +#define type_params_type 1102 +#define type_param_seq_type 1103 +#define type_param_type 1104 +#define type_param_bound_type 1105 +#define type_param_default_type 1106 +#define type_param_starred_default_type 1107 +#define expressions_type 1108 +#define expression_type 1109 +#define yield_expr_type 1110 +#define star_expressions_type 1111 +#define star_expression_type 1112 +#define star_named_expressions_type 1113 +#define star_named_expression_type 1114 +#define assignment_expression_type 1115 +#define named_expression_type 1116 +#define disjunction_type 1117 +#define conjunction_type 1118 +#define inversion_type 1119 +#define comparison_type 1120 +#define compare_op_bitwise_or_pair_type 1121 +#define eq_bitwise_or_type 1122 +#define noteq_bitwise_or_type 1123 +#define lte_bitwise_or_type 1124 +#define lt_bitwise_or_type 1125 +#define gte_bitwise_or_type 1126 +#define gt_bitwise_or_type 1127 +#define notin_bitwise_or_type 1128 +#define in_bitwise_or_type 1129 +#define isnot_bitwise_or_type 1130 +#define is_bitwise_or_type 1131 +#define bitwise_or_type 1132 // Left-recursive +#define bitwise_xor_type 1133 // Left-recursive +#define bitwise_and_type 1134 // Left-recursive +#define shift_expr_type 1135 // Left-recursive +#define sum_type 1136 // Left-recursive +#define term_type 1137 // Left-recursive +#define factor_type 1138 +#define power_type 1139 +#define await_primary_type 1140 +#define primary_type 1141 // Left-recursive +#define slices_type 1142 +#define slice_type 1143 +#define atom_type 1144 +#define group_type 1145 +#define lambdef_type 1146 +#define lambda_params_type 1147 +#define lambda_parameters_type 1148 +#define lambda_slash_no_default_type 1149 +#define lambda_slash_with_default_type 1150 +#define lambda_star_etc_type 1151 +#define lambda_kwds_type 1152 +#define lambda_param_no_default_type 1153 +#define lambda_param_with_default_type 1154 +#define lambda_param_maybe_default_type 1155 +#define lambda_param_type 1156 +#define fstring_middle_type 1157 +#define fstring_replacement_field_type 1158 +#define fstring_conversion_type 1159 +#define fstring_full_format_spec_type 1160 +#define fstring_format_spec_type 1161 +#define fstring_type 1162 +#define string_type 1163 +#define strings_type 1164 +#define list_type 1165 +#define tuple_type 1166 +#define set_type 1167 +#define dict_type 1168 +#define double_starred_kvpairs_type 1169 +#define double_starred_kvpair_type 1170 +#define kvpair_type 1171 +#define for_if_clauses_type 1172 +#define for_if_clause_type 1173 +#define listcomp_type 1174 +#define setcomp_type 1175 +#define genexp_type 1176 +#define dictcomp_type 1177 +#define arguments_type 1178 +#define args_type 1179 +#define kwargs_type 1180 +#define starred_expression_type 1181 +#define kwarg_or_starred_type 1182 +#define kwarg_or_double_starred_type 1183 +#define star_targets_type 1184 +#define star_targets_list_seq_type 1185 +#define star_targets_tuple_seq_type 1186 +#define star_target_type 1187 +#define target_with_star_atom_type 1188 +#define star_atom_type 1189 +#define single_target_type 1190 +#define single_subscript_attribute_target_type 1191 +#define t_primary_type 1192 // Left-recursive +#define t_lookahead_type 1193 +#define del_targets_type 1194 +#define del_target_type 1195 +#define del_t_atom_type 1196 +#define type_expressions_type 1197 +#define func_type_comment_type 1198 +#define invalid_arguments_type 1199 +#define invalid_kwarg_type 1200 +#define expression_without_invalid_type 1201 +#define invalid_legacy_expression_type 1202 +#define invalid_type_param_type 1203 +#define invalid_expression_type 1204 +#define invalid_named_expression_type 1205 +#define invalid_assignment_type 1206 +#define invalid_ann_assign_target_type 1207 +#define invalid_del_stmt_type 1208 +#define invalid_block_type 1209 +#define invalid_comprehension_type 1210 +#define invalid_dict_comprehension_type 1211 +#define invalid_parameters_type 1212 +#define invalid_default_type 1213 +#define invalid_star_etc_type 1214 +#define invalid_kwds_type 1215 +#define invalid_parameters_helper_type 1216 +#define invalid_lambda_parameters_type 1217 +#define invalid_lambda_parameters_helper_type 1218 +#define invalid_lambda_star_etc_type 1219 +#define invalid_lambda_kwds_type 1220 +#define invalid_double_type_comments_type 1221 +#define invalid_with_item_type 1222 +#define invalid_for_if_clause_type 1223 +#define invalid_for_target_type 1224 +#define invalid_group_type 1225 +#define invalid_import_type 1226 +#define invalid_import_from_targets_type 1227 +#define invalid_with_stmt_type 1228 +#define invalid_with_stmt_indent_type 1229 +#define invalid_try_stmt_type 1230 +#define invalid_except_stmt_type 1231 +#define invalid_except_star_stmt_type 1232 +#define invalid_finally_stmt_type 1233 +#define invalid_except_stmt_indent_type 1234 +#define invalid_except_star_stmt_indent_type 1235 +#define invalid_match_stmt_type 1236 +#define invalid_case_block_type 1237 +#define invalid_as_pattern_type 1238 +#define invalid_class_pattern_type 1239 +#define invalid_class_argument_pattern_type 1240 +#define invalid_maybe_stmt_type 1241 +#define invalid_if_stmt_type 1242 +#define invalid_elif_stmt_type 1243 +#define invalid_else_stmt_type 1244 +#define invalid_while_stmt_type 1245 +#define invalid_for_stmt_type 1246 +#define invalid_def_raw_type 1247 +#define invalid_class_def_raw_type 1248 +#define invalid_double_starred_kvpairs_type 1249 +#define invalid_kvpair_type 1250 +#define invalid_starred_expression_unpacking_type 1251 +#define invalid_starred_expression_type 1252 +#define invalid_replacement_field_type 1253 +#define invalid_conversion_character_type 1254 +#define invalid_arithmetic_type 1255 +#define invalid_factor_type 1256 +#define invalid_type_params_type 1257 +#define _loop0_1_type 1258 +#define _loop1_2_type 1259 +#define _loop0_3_type 1260 +#define _gather_4_type 1261 +#define _tmp_5_type 1262 +#define _tmp_6_type 1263 +#define _tmp_7_type 1264 +#define _tmp_8_type 1265 +#define _tmp_9_type 1266 +#define _tmp_10_type 1267 +#define _tmp_11_type 1268 +#define _loop1_12_type 1269 +#define _tmp_13_type 1270 +#define _loop0_14_type 1271 +#define _gather_15_type 1272 +#define _tmp_16_type 1273 +#define _tmp_17_type 1274 +#define _loop0_18_type 1275 +#define _loop1_19_type 1276 +#define _loop0_20_type 1277 +#define _gather_21_type 1278 +#define _tmp_22_type 1279 +#define _loop0_23_type 1280 +#define _gather_24_type 1281 +#define _loop1_25_type 1282 +#define _tmp_26_type 1283 +#define _tmp_27_type 1284 +#define _loop0_28_type 1285 +#define _loop0_29_type 1286 +#define _loop1_30_type 1287 +#define _loop1_31_type 1288 +#define _loop0_32_type 1289 +#define _loop1_33_type 1290 +#define _loop0_34_type 1291 +#define _gather_35_type 1292 +#define _tmp_36_type 1293 +#define _loop1_37_type 1294 +#define _loop1_38_type 1295 +#define _loop1_39_type 1296 +#define _loop0_40_type 1297 +#define _gather_41_type 1298 +#define _tmp_42_type 1299 +#define _tmp_43_type 1300 +#define _loop0_44_type 1301 +#define _gather_45_type 1302 +#define _loop0_46_type 1303 +#define _gather_47_type 1304 +#define _tmp_48_type 1305 +#define _loop0_49_type 1306 +#define _gather_50_type 1307 +#define _loop0_51_type 1308 +#define _gather_52_type 1309 +#define _loop0_53_type 1310 +#define _gather_54_type 1311 +#define _loop1_55_type 1312 +#define _loop1_56_type 1313 +#define _loop0_57_type 1314 +#define _gather_58_type 1315 +#define _loop1_59_type 1316 +#define _loop1_60_type 1317 +#define _loop1_61_type 1318 +#define _tmp_62_type 1319 +#define _loop0_63_type 1320 +#define _gather_64_type 1321 +#define _tmp_65_type 1322 +#define _tmp_66_type 1323 +#define _tmp_67_type 1324 +#define _tmp_68_type 1325 +#define _tmp_69_type 1326 +#define _tmp_70_type 1327 +#define _loop0_71_type 1328 +#define _loop0_72_type 1329 +#define _loop1_73_type 1330 +#define _loop1_74_type 1331 +#define _loop0_75_type 1332 +#define _loop1_76_type 1333 +#define _loop0_77_type 1334 +#define _loop0_78_type 1335 +#define _loop1_79_type 1336 +#define _tmp_80_type 1337 +#define _loop0_81_type 1338 +#define _gather_82_type 1339 +#define _loop1_83_type 1340 +#define _loop0_84_type 1341 +#define _tmp_85_type 1342 +#define _loop0_86_type 1343 +#define _gather_87_type 1344 +#define _tmp_88_type 1345 +#define _loop0_89_type 1346 +#define _gather_90_type 1347 +#define _loop0_91_type 1348 +#define _gather_92_type 1349 +#define _loop0_93_type 1350 +#define _loop0_94_type 1351 +#define _gather_95_type 1352 +#define _loop1_96_type 1353 +#define _tmp_97_type 1354 +#define _loop0_98_type 1355 +#define _gather_99_type 1356 +#define _loop0_100_type 1357 +#define _gather_101_type 1358 +#define _tmp_102_type 1359 +#define _tmp_103_type 1360 +#define _loop0_104_type 1361 +#define _gather_105_type 1362 +#define _tmp_106_type 1363 +#define _tmp_107_type 1364 +#define _tmp_108_type 1365 +#define _tmp_109_type 1366 +#define _tmp_110_type 1367 +#define _loop1_111_type 1368 +#define _tmp_112_type 1369 +#define _tmp_113_type 1370 +#define _tmp_114_type 1371 +#define _tmp_115_type 1372 +#define _tmp_116_type 1373 +#define _loop0_117_type 1374 +#define _loop0_118_type 1375 +#define _tmp_119_type 1376 +#define _tmp_120_type 1377 +#define _tmp_121_type 1378 +#define _tmp_122_type 1379 +#define _tmp_123_type 1380 +#define _tmp_124_type 1381 +#define _tmp_125_type 1382 +#define _tmp_126_type 1383 +#define _tmp_127_type 1384 +#define _loop0_128_type 1385 +#define _gather_129_type 1386 +#define _tmp_130_type 1387 +#define _tmp_131_type 1388 +#define _tmp_132_type 1389 +#define _tmp_133_type 1390 +#define _loop0_134_type 1391 +#define _gather_135_type 1392 +#define _loop0_136_type 1393 +#define _gather_137_type 1394 +#define _loop0_138_type 1395 +#define _gather_139_type 1396 +#define _tmp_140_type 1397 +#define _loop0_141_type 1398 +#define _tmp_142_type 1399 +#define _tmp_143_type 1400 +#define _tmp_144_type 1401 +#define _tmp_145_type 1402 +#define _tmp_146_type 1403 +#define _tmp_147_type 1404 +#define _tmp_148_type 1405 +#define _tmp_149_type 1406 +#define _tmp_150_type 1407 +#define _tmp_151_type 1408 +#define _tmp_152_type 1409 +#define _tmp_153_type 1410 +#define _tmp_154_type 1411 +#define _tmp_155_type 1412 +#define _tmp_156_type 1413 +#define _tmp_157_type 1414 +#define _tmp_158_type 1415 +#define _tmp_159_type 1416 +#define _tmp_160_type 1417 +#define _tmp_161_type 1418 +#define _tmp_162_type 1419 +#define _tmp_163_type 1420 +#define _tmp_164_type 1421 +#define _tmp_165_type 1422 +#define _tmp_166_type 1423 +#define _tmp_167_type 1424 +#define _loop0_168_type 1425 +#define _tmp_169_type 1426 +#define _tmp_170_type 1427 +#define _tmp_171_type 1428 +#define _tmp_172_type 1429 static mod_ty file_rule(Parser *p); static mod_ty interactive_rule(Parser *p); @@ -566,6 +569,7 @@ static arg_ty param_star_annotation_rule(Parser *p); static expr_ty annotation_rule(Parser *p); static expr_ty star_annotation_rule(Parser *p); static expr_ty default_rule(Parser *p); +static stmt_ty maybe_stmt_rule(Parser *p); static stmt_ty if_stmt_rule(Parser *p); static stmt_ty elif_stmt_rule(Parser *p); static asdl_stmt_seq* else_block_rule(Parser *p); @@ -753,6 +757,7 @@ static void *invalid_case_block_rule(Parser *p); static void *invalid_as_pattern_rule(Parser *p); static void *invalid_class_pattern_rule(Parser *p); static asdl_pattern_seq* invalid_class_argument_pattern_rule(Parser *p); +static void *invalid_maybe_stmt_rule(Parser *p); static void *invalid_if_stmt_rule(Parser *p); static void *invalid_elif_stmt_rule(Parser *p); static void *invalid_else_stmt_rule(Parser *p); @@ -1667,7 +1672,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, 620) // token='del' + _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 621) // token='del' && (del_stmt_var = del_stmt_rule(p)) // del_stmt ) @@ -1688,7 +1693,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, 583) // token='yield' + _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 584) // token='yield' && (yield_stmt_var = yield_stmt_rule(p)) // yield_stmt ) @@ -1816,6 +1821,7 @@ simple_stmt_rule(Parser *p) // compound_stmt: // | &('def' | '@' | 'async') function_def // | &'if' if_stmt +// | &"maybe" maybe_stmt // | &('class' | '@') class_def // | &('with' | 'async') with_stmt // | &('for' | 'async') for_stmt @@ -1863,7 +1869,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, 675) // token='if' + _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 676) // token='if' && (if_stmt_var = if_stmt_rule(p)) // if_stmt ) @@ -1876,6 +1882,27 @@ compound_stmt_rule(Parser *p) D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'if' if_stmt")); } + { // &"maybe" maybe_stmt + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&\"maybe\" maybe_stmt")); + stmt_ty maybe_stmt_var; + if ( + _PyPegen_lookahead_with_string(1, _PyPegen_expect_soft_keyword, p, "maybe") + && + (maybe_stmt_var = maybe_stmt_rule(p)) // maybe_stmt + ) + { + D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&\"maybe\" maybe_stmt")); + _res = maybe_stmt_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&\"maybe\" maybe_stmt")); + } { // &('class' | '@') class_def if (p->error_indicator) { p->level--; @@ -1947,7 +1974,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, 649) // token='try' + _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 650) // token='try' && (try_stmt_var = try_stmt_rule(p)) // try_stmt ) @@ -1968,7 +1995,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, 680) // token='while' + _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 681) // token='while' && (while_stmt_var = while_stmt_rule(p)) // while_stmt ) @@ -3136,7 +3163,7 @@ del_stmt_rule(Parser *p) Token * _keyword; asdl_expr_seq* a; if ( - (_keyword = _PyPegen_expect_token(p, 620)) // token='del' + (_keyword = _PyPegen_expect_token(p, 621)) // token='del' && (a = del_targets_rule(p)) // del_targets && @@ -3425,7 +3452,7 @@ import_name_rule(Parser *p) Token * _keyword; asdl_alias_seq* a; if ( - (_keyword = _PyPegen_expect_token(p, 629)) // token='import' + (_keyword = _PyPegen_expect_token(p, 630)) // token='import' && (a = dotted_as_names_rule(p)) // dotted_as_names ) @@ -3494,13 +3521,13 @@ import_from_rule(Parser *p) expr_ty b; asdl_alias_seq* c; if ( - (_keyword = _PyPegen_expect_token(p, 628)) // token='from' + (_keyword = _PyPegen_expect_token(p, 629)) // token='from' && (a = _loop0_18_rule(p)) // (('.' | '...'))* && (b = dotted_name_rule(p)) // dotted_name && - (_keyword_1 = _PyPegen_expect_token(p, 629)) // token='import' + (_keyword_1 = _PyPegen_expect_token(p, 630)) // token='import' && (c = import_from_targets_rule(p)) // import_from_targets ) @@ -3538,11 +3565,11 @@ import_from_rule(Parser *p) asdl_seq * a; asdl_alias_seq* b; if ( - (_keyword = _PyPegen_expect_token(p, 628)) // token='from' + (_keyword = _PyPegen_expect_token(p, 629)) // token='from' && (a = _loop1_19_rule(p)) // (('.' | '...'))+ && - (_keyword_1 = _PyPegen_expect_token(p, 629)) // token='import' + (_keyword_1 = _PyPegen_expect_token(p, 630)) // token='import' && (b = import_from_targets_rule(p)) // import_from_targets ) @@ -4291,7 +4318,7 @@ class_def_raw_rule(Parser *p) asdl_stmt_seq* c; void *t; if ( - (_keyword = _PyPegen_expect_token(p, 692)) // token='class' + (_keyword = _PyPegen_expect_token(p, 693)) // token='class' && (a = _PyPegen_name_token(p)) // NAME && @@ -4458,7 +4485,7 @@ function_def_raw_rule(Parser *p) void *t; void *tc; if ( - (_keyword = _PyPegen_expect_token(p, 690)) // token='def' + (_keyword = _PyPegen_expect_token(p, 691)) // token='def' && (n = _PyPegen_name_token(p)) // NAME && @@ -4519,9 +4546,9 @@ function_def_raw_rule(Parser *p) void *t; void *tc; if ( - (_keyword = _PyPegen_expect_token(p, 689)) // token='async' + (_keyword = _PyPegen_expect_token(p, 690)) // token='async' && - (_keyword_1 = _PyPegen_expect_token(p, 690)) // token='def' + (_keyword_1 = _PyPegen_expect_token(p, 691)) // token='def' && (n = _PyPegen_name_token(p)) // NAME && @@ -5803,6 +5830,146 @@ default_rule(Parser *p) return _res; } +// maybe_stmt: +// | invalid_maybe_stmt +// | "maybe" named_expression ':' block elif_stmt +// | "maybe" named_expression ':' block else_block? +static stmt_ty +maybe_stmt_rule(Parser *p) +{ + if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) { + _Pypegen_stack_overflow(p); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + stmt_ty _res = NULL; + int _mark = p->mark; + if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) { + p->error_indicator = 1; + 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 + if (p->call_invalid_rules) { // invalid_maybe_stmt + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> maybe_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_maybe_stmt")); + void *invalid_maybe_stmt_var; + if ( + (invalid_maybe_stmt_var = invalid_maybe_stmt_rule(p)) // invalid_maybe_stmt + ) + { + D(fprintf(stderr, "%*c+ maybe_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_maybe_stmt")); + _res = invalid_maybe_stmt_var; + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s maybe_stmt[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_maybe_stmt")); + } + { // "maybe" named_expression ':' block elif_stmt + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> maybe_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"maybe\" named_expression ':' block elif_stmt")); + expr_ty _keyword; + Token * _literal; + expr_ty a; + asdl_stmt_seq* b; + stmt_ty c; + if ( + (_keyword = _PyPegen_expect_soft_keyword(p, "maybe")) // soft_keyword='"maybe"' + && + (a = named_expression_rule(p)) // named_expression + && + (_literal = _PyPegen_expect_token(p, 11)) // token=':' + && + (b = block_rule(p)) // block + && + (c = elif_stmt_rule(p)) // elif_stmt + ) + { + D(fprintf(stderr, "%*c+ maybe_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"maybe\" named_expression ':' block elif_stmt")); + Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); + if (_token == NULL) { + 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_If ( a , b , CHECK ( asdl_stmt_seq* , _PyPegen_singleton_seq ( p , c ) ) , EXTRA ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s maybe_stmt[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"maybe\" named_expression ':' block elif_stmt")); + } + { // "maybe" named_expression ':' block else_block? + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> maybe_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"maybe\" named_expression ':' block else_block?")); + expr_ty _keyword; + Token * _literal; + expr_ty a; + asdl_stmt_seq* b; + void *c; + if ( + (_keyword = _PyPegen_expect_soft_keyword(p, "maybe")) // soft_keyword='"maybe"' + && + (a = named_expression_rule(p)) // named_expression + && + (_literal = _PyPegen_expect_token(p, 11)) // token=':' + && + (b = block_rule(p)) // block + && + (c = else_block_rule(p), !p->error_indicator) // else_block? + ) + { + D(fprintf(stderr, "%*c+ maybe_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"maybe\" named_expression ':' block else_block?")); + Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); + if (_token == NULL) { + 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_If ( a , b , c , EXTRA ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s maybe_stmt[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"maybe\" named_expression ':' block else_block?")); + } + _res = NULL; + done: + p->level--; + return _res; +} + // if_stmt: // | invalid_if_stmt // | 'if' named_expression ':' block elif_stmt @@ -5859,7 +6026,7 @@ if_stmt_rule(Parser *p) asdl_stmt_seq* b; stmt_ty c; if ( - (_keyword = _PyPegen_expect_token(p, 675)) // token='if' + (_keyword = _PyPegen_expect_token(p, 676)) // token='if' && (a = named_expression_rule(p)) // named_expression && @@ -5904,7 +6071,7 @@ if_stmt_rule(Parser *p) asdl_stmt_seq* b; void *c; if ( - (_keyword = _PyPegen_expect_token(p, 675)) // token='if' + (_keyword = _PyPegen_expect_token(p, 676)) // token='if' && (a = named_expression_rule(p)) // named_expression && @@ -5999,7 +6166,7 @@ elif_stmt_rule(Parser *p) asdl_stmt_seq* b; stmt_ty c; if ( - (_keyword = _PyPegen_expect_token(p, 677)) // token='elif' + (_keyword = _PyPegen_expect_token(p, 678)) // token='elif' && (a = named_expression_rule(p)) // named_expression && @@ -6044,7 +6211,7 @@ elif_stmt_rule(Parser *p) asdl_stmt_seq* b; void *c; if ( - (_keyword = _PyPegen_expect_token(p, 677)) // token='elif' + (_keyword = _PyPegen_expect_token(p, 678)) // token='elif' && (a = named_expression_rule(p)) // named_expression && @@ -6125,7 +6292,7 @@ else_block_rule(Parser *p) Token * _literal; asdl_stmt_seq* b; if ( - (_keyword = _PyPegen_expect_token(p, 678)) // token='else' + (_keyword = _PyPegen_expect_token(p, 679)) // token='else' && (_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' && @@ -6204,7 +6371,7 @@ while_stmt_rule(Parser *p) asdl_stmt_seq* b; void *c; if ( - (_keyword = _PyPegen_expect_token(p, 680)) // token='while' + (_keyword = _PyPegen_expect_token(p, 681)) // token='while' && (a = named_expression_rule(p)) // named_expression && @@ -6304,11 +6471,11 @@ for_stmt_rule(Parser *p) expr_ty t; void *tc; if ( - (_keyword = _PyPegen_expect_token(p, 685)) // token='for' + (_keyword = _PyPegen_expect_token(p, 686)) // token='for' && (t = star_targets_rule(p)) // star_targets && - (_keyword_1 = _PyPegen_expect_token(p, 686)) // token='in' + (_keyword_1 = _PyPegen_expect_token(p, 687)) // token='in' && (_cut_var = 1) && @@ -6366,13 +6533,13 @@ for_stmt_rule(Parser *p) expr_ty t; void *tc; if ( - (_keyword = _PyPegen_expect_token(p, 689)) // token='async' + (_keyword = _PyPegen_expect_token(p, 690)) // token='async' && - (_keyword_1 = _PyPegen_expect_token(p, 685)) // token='for' + (_keyword_1 = _PyPegen_expect_token(p, 686)) // token='for' && (t = star_targets_rule(p)) // star_targets && - (_keyword_2 = _PyPegen_expect_token(p, 686)) // token='in' + (_keyword_2 = _PyPegen_expect_token(p, 687)) // token='in' && (_cut_var = 1) && @@ -6501,7 +6668,7 @@ with_stmt_rule(Parser *p) asdl_stmt_seq* b; void *tc; if ( - (_keyword = _PyPegen_expect_token(p, 640)) // token='with' + (_keyword = _PyPegen_expect_token(p, 641)) // token='with' && (_literal = _PyPegen_expect_token(p, 7)) // token='(' && @@ -6552,7 +6719,7 @@ with_stmt_rule(Parser *p) asdl_stmt_seq* b; void *tc; if ( - (_keyword = _PyPegen_expect_token(p, 640)) // token='with' + (_keyword = _PyPegen_expect_token(p, 641)) // token='with' && (a = (asdl_withitem_seq*)_gather_35_rule(p)) // ','.with_item+ && @@ -6601,9 +6768,9 @@ with_stmt_rule(Parser *p) asdl_withitem_seq* a; asdl_stmt_seq* b; if ( - (_keyword = _PyPegen_expect_token(p, 689)) // token='async' + (_keyword = _PyPegen_expect_token(p, 690)) // token='async' && - (_keyword_1 = _PyPegen_expect_token(p, 640)) // token='with' + (_keyword_1 = _PyPegen_expect_token(p, 641)) // token='with' && (_literal = _PyPegen_expect_token(p, 7)) // token='(' && @@ -6653,9 +6820,9 @@ with_stmt_rule(Parser *p) asdl_stmt_seq* b; void *tc; if ( - (_keyword = _PyPegen_expect_token(p, 689)) // token='async' + (_keyword = _PyPegen_expect_token(p, 690)) // token='async' && - (_keyword_1 = _PyPegen_expect_token(p, 640)) // token='with' + (_keyword_1 = _PyPegen_expect_token(p, 641)) // token='with' && (a = (asdl_withitem_seq*)_gather_35_rule(p)) // ','.with_item+ && @@ -6741,7 +6908,7 @@ with_item_rule(Parser *p) if ( (e = expression_rule(p)) // expression && - (_keyword = _PyPegen_expect_token(p, 673)) // token='as' + (_keyword = _PyPegen_expect_token(p, 674)) // token='as' && (t = star_target_rule(p)) // star_target && @@ -6866,7 +7033,7 @@ try_stmt_rule(Parser *p) asdl_stmt_seq* b; asdl_stmt_seq* f; if ( - (_keyword = _PyPegen_expect_token(p, 649)) // token='try' + (_keyword = _PyPegen_expect_token(p, 650)) // token='try' && (_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' && @@ -6910,7 +7077,7 @@ try_stmt_rule(Parser *p) asdl_excepthandler_seq* ex; void *f; if ( - (_keyword = _PyPegen_expect_token(p, 649)) // token='try' + (_keyword = _PyPegen_expect_token(p, 650)) // token='try' && (_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' && @@ -6958,7 +7125,7 @@ try_stmt_rule(Parser *p) asdl_excepthandler_seq* ex; void *f; if ( - (_keyword = _PyPegen_expect_token(p, 649)) // token='try' + (_keyword = _PyPegen_expect_token(p, 650)) // token='try' && (_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' && @@ -7056,7 +7223,7 @@ except_block_rule(Parser *p) expr_ty e; void *t; if ( - (_keyword = _PyPegen_expect_token(p, 670)) // token='except' + (_keyword = _PyPegen_expect_token(p, 671)) // token='except' && (e = expression_rule(p)) // expression && @@ -7099,7 +7266,7 @@ except_block_rule(Parser *p) Token * _literal; asdl_stmt_seq* b; if ( - (_keyword = _PyPegen_expect_token(p, 670)) // token='except' + (_keyword = _PyPegen_expect_token(p, 671)) // token='except' && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -7210,7 +7377,7 @@ except_star_block_rule(Parser *p) expr_ty e; void *t; if ( - (_keyword = _PyPegen_expect_token(p, 670)) // token='except' + (_keyword = _PyPegen_expect_token(p, 671)) // token='except' && (_literal = _PyPegen_expect_token(p, 16)) // token='*' && @@ -7312,7 +7479,7 @@ finally_block_rule(Parser *p) Token * _literal; asdl_stmt_seq* a; if ( - (_keyword = _PyPegen_expect_token(p, 666)) // token='finally' + (_keyword = _PyPegen_expect_token(p, 667)) // token='finally' && (_literal = _PyPegen_expect_forced_token(p, 11, ":")) // forced_token=':' && @@ -7598,7 +7765,7 @@ case_block_rule(Parser *p) return _res; } -// guard: 'if' named_expression +// guard: 'if' named_expression | "maybe" named_expression static expr_ty guard_rule(Parser *p) { @@ -7620,7 +7787,7 @@ guard_rule(Parser *p) Token * _keyword; expr_ty guard; if ( - (_keyword = _PyPegen_expect_token(p, 675)) // token='if' + (_keyword = _PyPegen_expect_token(p, 676)) // token='if' && (guard = named_expression_rule(p)) // named_expression ) @@ -7638,6 +7805,33 @@ guard_rule(Parser *p) D(fprintf(stderr, "%*c%s guard[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression")); } + { // "maybe" named_expression + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> guard[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"maybe\" named_expression")); + expr_ty _keyword; + expr_ty guard; + if ( + (_keyword = _PyPegen_expect_soft_keyword(p, "maybe")) // soft_keyword='"maybe"' + && + (guard = named_expression_rule(p)) // named_expression + ) + { + D(fprintf(stderr, "%*c+ guard[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"maybe\" named_expression")); + _res = guard; + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s guard[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"maybe\" named_expression")); + } _res = NULL; done: p->level--; @@ -7815,7 +8009,7 @@ as_pattern_rule(Parser *p) if ( (pattern = or_pattern_rule(p)) // or_pattern && - (_keyword = _PyPegen_expect_token(p, 673)) // token='as' + (_keyword = _PyPegen_expect_token(p, 674)) // token='as' && (target = pattern_capture_target_rule(p)) // pattern_capture_target ) @@ -8249,7 +8443,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, 618)) // token='None' + (_keyword = _PyPegen_expect_token(p, 619)) // token='None' ) { D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'")); @@ -8282,7 +8476,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, 617)) // token='True' + (_keyword = _PyPegen_expect_token(p, 618)) // token='True' ) { D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'")); @@ -8315,7 +8509,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, 619)) // token='False' + (_keyword = _PyPegen_expect_token(p, 620)) // token='False' ) { D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'")); @@ -8441,7 +8635,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, 618)) // token='None' + (_keyword = _PyPegen_expect_token(p, 619)) // token='None' ) { D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'")); @@ -8474,7 +8668,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, 617)) // token='True' + (_keyword = _PyPegen_expect_token(p, 618)) // token='True' ) { D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'")); @@ -8507,7 +8701,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, 619)) // token='False' + (_keyword = _PyPegen_expect_token(p, 620)) // token='False' ) { D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'")); @@ -11031,6 +11225,7 @@ expressions_rule(Parser *p) // | invalid_expression // | invalid_legacy_expression // | disjunction 'if' disjunction 'else' expression +// | disjunction "maybe" disjunction 'else' expression // | disjunction // | lambdef static expr_ty @@ -11110,11 +11305,11 @@ expression_rule(Parser *p) if ( (a = disjunction_rule(p)) // disjunction && - (_keyword = _PyPegen_expect_token(p, 675)) // token='if' + (_keyword = _PyPegen_expect_token(p, 676)) // token='if' && (b = disjunction_rule(p)) // disjunction && - (_keyword_1 = _PyPegen_expect_token(p, 678)) // token='else' + (_keyword_1 = _PyPegen_expect_token(p, 679)) // token='else' && (c = expression_rule(p)) // expression ) @@ -11141,6 +11336,51 @@ expression_rule(Parser *p) D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ', p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' expression")); } + { // disjunction "maybe" disjunction 'else' expression + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction \"maybe\" disjunction 'else' expression")); + expr_ty _keyword; + Token * _keyword_1; + expr_ty a; + expr_ty b; + expr_ty c; + if ( + (a = disjunction_rule(p)) // disjunction + && + (_keyword = _PyPegen_expect_soft_keyword(p, "maybe")) // soft_keyword='"maybe"' + && + (b = disjunction_rule(p)) // disjunction + && + (_keyword_1 = _PyPegen_expect_token(p, 679)) // token='else' + && + (c = expression_rule(p)) // expression + ) + { + D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction \"maybe\" disjunction 'else' expression")); + Token *_token = _PyPegen_get_last_nonnwhitespace_token(p); + if (_token == NULL) { + 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_IfExp ( b , a , c , EXTRA ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction \"maybe\" disjunction 'else' expression")); + } { // disjunction if (p->error_indicator) { p->level--; @@ -11218,9 +11458,9 @@ yield_expr_rule(Parser *p) Token * _keyword_1; expr_ty a; if ( - (_keyword = _PyPegen_expect_token(p, 583)) // token='yield' + (_keyword = _PyPegen_expect_token(p, 584)) // token='yield' && - (_keyword_1 = _PyPegen_expect_token(p, 628)) // token='from' + (_keyword_1 = _PyPegen_expect_token(p, 629)) // token='from' && (a = expression_rule(p)) // expression ) @@ -11256,7 +11496,7 @@ yield_expr_rule(Parser *p) Token * _keyword; void *a; if ( - (_keyword = _PyPegen_expect_token(p, 583)) // token='yield' + (_keyword = _PyPegen_expect_token(p, 584)) // token='yield' && (a = star_expressions_rule(p), !p->error_indicator) // star_expressions? ) @@ -11996,7 +12236,7 @@ inversion_rule(Parser *p) Token * _keyword; expr_ty a; if ( - (_keyword = _PyPegen_expect_token(p, 694)) // token='not' + (_keyword = _PyPegen_expect_token(p, 695)) // token='not' && (a = inversion_rule(p)) // inversion ) @@ -12650,9 +12890,9 @@ notin_bitwise_or_rule(Parser *p) Token * _keyword_1; expr_ty a; if ( - (_keyword = _PyPegen_expect_token(p, 694)) // token='not' + (_keyword = _PyPegen_expect_token(p, 695)) // token='not' && - (_keyword_1 = _PyPegen_expect_token(p, 686)) // token='in' + (_keyword_1 = _PyPegen_expect_token(p, 687)) // token='in' && (a = bitwise_or_rule(p)) // bitwise_or ) @@ -12698,7 +12938,7 @@ in_bitwise_or_rule(Parser *p) Token * _keyword; expr_ty a; if ( - (_keyword = _PyPegen_expect_token(p, 686)) // token='in' + (_keyword = _PyPegen_expect_token(p, 687)) // token='in' && (a = bitwise_or_rule(p)) // bitwise_or ) @@ -12745,9 +12985,9 @@ isnot_bitwise_or_rule(Parser *p) Token * _keyword_1; expr_ty a; if ( - (_keyword = _PyPegen_expect_token(p, 592)) // token='is' + (_keyword = _PyPegen_expect_token(p, 593)) // token='is' && - (_keyword_1 = _PyPegen_expect_token(p, 694)) // token='not' + (_keyword_1 = _PyPegen_expect_token(p, 695)) // token='not' && (a = bitwise_or_rule(p)) // bitwise_or ) @@ -12793,7 +13033,7 @@ is_bitwise_or_rule(Parser *p) Token * _keyword; expr_ty a; if ( - (_keyword = _PyPegen_expect_token(p, 592)) // token='is' + (_keyword = _PyPegen_expect_token(p, 593)) // token='is' && (a = bitwise_or_rule(p)) // bitwise_or ) @@ -14109,7 +14349,7 @@ await_primary_rule(Parser *p) Token * _keyword; expr_ty a; if ( - (_keyword = _PyPegen_expect_token(p, 593)) // token='await' + (_keyword = _PyPegen_expect_token(p, 594)) // token='await' && (a = primary_rule(p)) // primary ) @@ -14653,7 +14893,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, 617)) // token='True' + (_keyword = _PyPegen_expect_token(p, 618)) // token='True' ) { D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'")); @@ -14686,7 +14926,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, 619)) // token='False' + (_keyword = _PyPegen_expect_token(p, 620)) // token='False' ) { D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'")); @@ -14719,7 +14959,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, 618)) // token='None' + (_keyword = _PyPegen_expect_token(p, 619)) // token='None' ) { D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'")); @@ -14987,7 +15227,7 @@ lambdef_rule(Parser *p) void *a; expr_ty b; if ( - (_keyword = _PyPegen_expect_token(p, 616)) // token='lambda' + (_keyword = _PyPegen_expect_token(p, 617)) // token='lambda' && (a = lambda_params_rule(p), !p->error_indicator) // lambda_params? && @@ -16918,13 +17158,13 @@ for_if_clause_rule(Parser *p) expr_ty b; asdl_expr_seq* c; if ( - (_keyword = _PyPegen_expect_token(p, 689)) // token='async' + (_keyword = _PyPegen_expect_token(p, 690)) // token='async' && - (_keyword_1 = _PyPegen_expect_token(p, 685)) // token='for' + (_keyword_1 = _PyPegen_expect_token(p, 686)) // token='for' && (a = star_targets_rule(p)) // star_targets && - (_keyword_2 = _PyPegen_expect_token(p, 686)) // token='in' + (_keyword_2 = _PyPegen_expect_token(p, 687)) // token='in' && (_cut_var = 1) && @@ -16963,11 +17203,11 @@ for_if_clause_rule(Parser *p) expr_ty b; asdl_expr_seq* c; if ( - (_keyword = _PyPegen_expect_token(p, 685)) // token='for' + (_keyword = _PyPegen_expect_token(p, 686)) // token='for' && (a = star_targets_rule(p)) // star_targets && - (_keyword_1 = _PyPegen_expect_token(p, 686)) // token='in' + (_keyword_1 = _PyPegen_expect_token(p, 687)) // token='in' && (_cut_var = 1) && @@ -20268,11 +20508,11 @@ expression_without_invalid_rule(Parser *p) if ( (a = disjunction_rule(p)) // disjunction && - (_keyword = _PyPegen_expect_token(p, 675)) // token='if' + (_keyword = _PyPegen_expect_token(p, 676)) // token='if' && (b = disjunction_rule(p)) // disjunction && - (_keyword_1 = _PyPegen_expect_token(p, 678)) // token='else' + (_keyword_1 = _PyPegen_expect_token(p, 679)) // token='else' && (c = expression_rule(p)) // expression ) @@ -20571,7 +20811,7 @@ invalid_expression_rule(Parser *p) if ( (a = disjunction_rule(p)) // disjunction && - (_keyword = _PyPegen_expect_token(p, 675)) // token='if' + (_keyword = _PyPegen_expect_token(p, 676)) // token='if' && (b = disjunction_rule(p)) // disjunction && @@ -20604,11 +20844,11 @@ invalid_expression_rule(Parser *p) if ( (a = disjunction_rule(p)) // disjunction && - (_keyword = _PyPegen_expect_token(p, 675)) // token='if' + (_keyword = _PyPegen_expect_token(p, 676)) // token='if' && (b = disjunction_rule(p)) // disjunction && - (_keyword_1 = _PyPegen_expect_token(p, 678)) // token='else' + (_keyword_1 = _PyPegen_expect_token(p, 679)) // token='else' && _PyPegen_lookahead(0, (void *(*)(Parser *)) expression_rule, p) ) @@ -20640,11 +20880,11 @@ invalid_expression_rule(Parser *p) if ( (a = (stmt_ty)_tmp_114_rule(p)) // pass_stmt | break_stmt | continue_stmt && - (_keyword = _PyPegen_expect_token(p, 675)) // token='if' + (_keyword = _PyPegen_expect_token(p, 676)) // token='if' && (b = disjunction_rule(p)) // disjunction && - (_keyword_1 = _PyPegen_expect_token(p, 678)) // token='else' + (_keyword_1 = _PyPegen_expect_token(p, 679)) // token='else' && (c = simple_stmt_rule(p)) // simple_stmt ) @@ -20673,7 +20913,7 @@ invalid_expression_rule(Parser *p) Token * a; Token * b; if ( - (a = _PyPegen_expect_token(p, 616)) // token='lambda' + (a = _PyPegen_expect_token(p, 617)) // token='lambda' && (_opt_var = lambda_params_rule(p), !p->error_indicator) // lambda_params? && @@ -21144,7 +21384,7 @@ invalid_del_stmt_rule(Parser *p) Token * _keyword; expr_ty a; if ( - (_keyword = _PyPegen_expect_token(p, 620)) // token='del' + (_keyword = _PyPegen_expect_token(p, 621)) // token='del' && (a = star_expressions_rule(p)) // star_expressions ) @@ -22580,7 +22820,7 @@ invalid_with_item_rule(Parser *p) if ( (expression_var = expression_rule(p)) // expression && - (_keyword = _PyPegen_expect_token(p, 673)) // token='as' + (_keyword = _PyPegen_expect_token(p, 674)) // token='as' && (a = expression_rule(p)) // expression && @@ -22630,13 +22870,13 @@ invalid_for_if_clause_rule(Parser *p) UNUSED(_opt_var); // Silence compiler warnings void *_tmp_133_var; if ( - (_opt_var = _PyPegen_expect_token(p, 689), !p->error_indicator) // 'async'? + (_opt_var = _PyPegen_expect_token(p, 690), !p->error_indicator) // 'async'? && - (_keyword = _PyPegen_expect_token(p, 685)) // token='for' + (_keyword = _PyPegen_expect_token(p, 686)) // token='for' && (_tmp_133_var = _tmp_133_rule(p)) // bitwise_or ((',' bitwise_or))* ','? && - _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 686) // token='in' + _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 687) // token='in' ) { D(fprintf(stderr, "%*c+ invalid_for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'? 'for' (bitwise_or ((',' bitwise_or))* ','?) !'in'")); @@ -22682,9 +22922,9 @@ invalid_for_target_rule(Parser *p) UNUSED(_opt_var); // Silence compiler warnings expr_ty a; if ( - (_opt_var = _PyPegen_expect_token(p, 689), !p->error_indicator) // 'async'? + (_opt_var = _PyPegen_expect_token(p, 690), !p->error_indicator) // 'async'? && - (_keyword = _PyPegen_expect_token(p, 685)) // token='for' + (_keyword = _PyPegen_expect_token(p, 686)) // token='for' && (a = star_expressions_rule(p)) // star_expressions ) @@ -22814,11 +23054,11 @@ invalid_import_rule(Parser *p) Token * a; expr_ty dotted_name_var; if ( - (a = _PyPegen_expect_token(p, 629)) // token='import' + (a = _PyPegen_expect_token(p, 630)) // token='import' && (_gather_135_var = _gather_135_rule(p)) // ','.dotted_name+ && - (_keyword = _PyPegen_expect_token(p, 628)) // token='from' + (_keyword = _PyPegen_expect_token(p, 629)) // token='from' && (dotted_name_var = dotted_name_rule(p)) // dotted_name ) @@ -22845,7 +23085,7 @@ invalid_import_rule(Parser *p) Token * _keyword; Token * token; if ( - (_keyword = _PyPegen_expect_token(p, 629)) // token='import' + (_keyword = _PyPegen_expect_token(p, 630)) // token='import' && (token = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) @@ -22969,9 +23209,9 @@ invalid_with_stmt_rule(Parser *p) UNUSED(_opt_var); // Silence compiler warnings Token * newline_var; if ( - (_opt_var = _PyPegen_expect_token(p, 689), !p->error_indicator) // 'async'? + (_opt_var = _PyPegen_expect_token(p, 690), !p->error_indicator) // 'async'? && - (_keyword = _PyPegen_expect_token(p, 640)) // token='with' + (_keyword = _PyPegen_expect_token(p, 641)) // token='with' && (_gather_137_var = _gather_137_rule(p)) // ','.(expression ['as' star_target])+ && @@ -23007,9 +23247,9 @@ invalid_with_stmt_rule(Parser *p) UNUSED(_opt_var_1); // Silence compiler warnings Token * newline_var; if ( - (_opt_var = _PyPegen_expect_token(p, 689), !p->error_indicator) // 'async'? + (_opt_var = _PyPegen_expect_token(p, 690), !p->error_indicator) // 'async'? && - (_keyword = _PyPegen_expect_token(p, 640)) // token='with' + (_keyword = _PyPegen_expect_token(p, 641)) // token='with' && (_literal = _PyPegen_expect_token(p, 7)) // token='(' && @@ -23069,9 +23309,9 @@ invalid_with_stmt_indent_rule(Parser *p) Token * a; Token * newline_var; if ( - (_opt_var = _PyPegen_expect_token(p, 689), !p->error_indicator) // 'async'? + (_opt_var = _PyPegen_expect_token(p, 690), !p->error_indicator) // 'async'? && - (a = _PyPegen_expect_token(p, 640)) // token='with' + (a = _PyPegen_expect_token(p, 641)) // token='with' && (_gather_137_var = _gather_137_rule(p)) // ','.(expression ['as' star_target])+ && @@ -23112,9 +23352,9 @@ invalid_with_stmt_indent_rule(Parser *p) Token * a; Token * newline_var; if ( - (_opt_var = _PyPegen_expect_token(p, 689), !p->error_indicator) // 'async'? + (_opt_var = _PyPegen_expect_token(p, 690), !p->error_indicator) // 'async'? && - (a = _PyPegen_expect_token(p, 640)) // token='with' + (a = _PyPegen_expect_token(p, 641)) // token='with' && (_literal = _PyPegen_expect_token(p, 7)) // token='(' && @@ -23177,7 +23417,7 @@ invalid_try_stmt_rule(Parser *p) Token * a; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 649)) // token='try' + (a = _PyPegen_expect_token(p, 650)) // token='try' && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -23209,7 +23449,7 @@ invalid_try_stmt_rule(Parser *p) Token * _literal; asdl_stmt_seq* block_var; if ( - (_keyword = _PyPegen_expect_token(p, 649)) // token='try' + (_keyword = _PyPegen_expect_token(p, 650)) // token='try' && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -23248,7 +23488,7 @@ invalid_try_stmt_rule(Parser *p) Token * b; expr_ty expression_var; if ( - (_keyword = _PyPegen_expect_token(p, 649)) // token='try' + (_keyword = _PyPegen_expect_token(p, 650)) // token='try' && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -23256,7 +23496,7 @@ invalid_try_stmt_rule(Parser *p) && (_loop1_37_var = _loop1_37_rule(p)) // except_block+ && - (a = _PyPegen_expect_token(p, 670)) // token='except' + (a = _PyPegen_expect_token(p, 671)) // token='except' && (b = _PyPegen_expect_token(p, 16)) // token='*' && @@ -23295,7 +23535,7 @@ invalid_try_stmt_rule(Parser *p) UNUSED(_opt_var); // Silence compiler warnings Token * a; if ( - (_keyword = _PyPegen_expect_token(p, 649)) // token='try' + (_keyword = _PyPegen_expect_token(p, 650)) // token='try' && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -23303,7 +23543,7 @@ invalid_try_stmt_rule(Parser *p) && (_loop1_38_var = _loop1_38_rule(p)) // except_star_block+ && - (a = _PyPegen_expect_token(p, 670)) // token='except' + (a = _PyPegen_expect_token(p, 671)) // token='except' && (_opt_var = _tmp_142_rule(p), !p->error_indicator) // [expression ['as' NAME]] && @@ -23360,7 +23600,7 @@ invalid_except_stmt_rule(Parser *p) expr_ty a; expr_ty expressions_var; if ( - (_keyword = _PyPegen_expect_token(p, 670)) // token='except' + (_keyword = _PyPegen_expect_token(p, 671)) // token='except' && (a = expression_rule(p)) // expression && @@ -23398,7 +23638,7 @@ invalid_except_stmt_rule(Parser *p) expr_ty expression_var; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 670)) // token='except' + (a = _PyPegen_expect_token(p, 671)) // token='except' && (expression_var = expression_rule(p)) // expression && @@ -23429,7 +23669,7 @@ invalid_except_stmt_rule(Parser *p) Token * a; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 670)) // token='except' + (a = _PyPegen_expect_token(p, 671)) // token='except' && (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' ) @@ -23458,11 +23698,11 @@ invalid_except_stmt_rule(Parser *p) expr_ty a; expr_ty expression_var; if ( - (_keyword = _PyPegen_expect_token(p, 670)) // token='except' + (_keyword = _PyPegen_expect_token(p, 671)) // token='except' && (expression_var = expression_rule(p)) // expression && - (_keyword_1 = _PyPegen_expect_token(p, 673)) // token='as' + (_keyword_1 = _PyPegen_expect_token(p, 674)) // token='as' && (a = expression_rule(p)) // expression ) @@ -23518,7 +23758,7 @@ invalid_except_star_stmt_rule(Parser *p) expr_ty a; expr_ty expressions_var; if ( - (_keyword = _PyPegen_expect_token(p, 670)) // token='except' + (_keyword = _PyPegen_expect_token(p, 671)) // token='except' && (_literal = _PyPegen_expect_token(p, 16)) // token='*' && @@ -23559,7 +23799,7 @@ invalid_except_star_stmt_rule(Parser *p) expr_ty expression_var; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 670)) // token='except' + (a = _PyPegen_expect_token(p, 671)) // token='except' && (_literal = _PyPegen_expect_token(p, 16)) // token='*' && @@ -23593,7 +23833,7 @@ invalid_except_star_stmt_rule(Parser *p) void *_tmp_143_var; Token * a; if ( - (a = _PyPegen_expect_token(p, 670)) // token='except' + (a = _PyPegen_expect_token(p, 671)) // token='except' && (_literal = _PyPegen_expect_token(p, 16)) // token='*' && @@ -23625,13 +23865,13 @@ invalid_except_star_stmt_rule(Parser *p) expr_ty a; expr_ty expression_var; if ( - (_keyword = _PyPegen_expect_token(p, 670)) // token='except' + (_keyword = _PyPegen_expect_token(p, 671)) // token='except' && (_literal = _PyPegen_expect_token(p, 16)) // token='*' && (expression_var = expression_rule(p)) // expression && - (_keyword_1 = _PyPegen_expect_token(p, 673)) // token='as' + (_keyword_1 = _PyPegen_expect_token(p, 674)) // token='as' && (a = expression_rule(p)) // expression ) @@ -23678,7 +23918,7 @@ invalid_finally_stmt_rule(Parser *p) Token * a; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 666)) // token='finally' + (a = _PyPegen_expect_token(p, 667)) // token='finally' && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -23734,7 +23974,7 @@ invalid_except_stmt_indent_rule(Parser *p) expr_ty expression_var; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 670)) // token='except' + (a = _PyPegen_expect_token(p, 671)) // token='except' && (expression_var = expression_rule(p)) // expression && @@ -23770,7 +24010,7 @@ invalid_except_stmt_indent_rule(Parser *p) Token * a; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 670)) // token='except' + (a = _PyPegen_expect_token(p, 671)) // token='except' && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -23826,7 +24066,7 @@ invalid_except_star_stmt_indent_rule(Parser *p) expr_ty expression_var; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 670)) // token='except' + (a = _PyPegen_expect_token(p, 671)) // token='except' && (_literal = _PyPegen_expect_token(p, 16)) // token='*' && @@ -24065,7 +24305,7 @@ invalid_as_pattern_rule(Parser *p) if ( (or_pattern_var = or_pattern_rule(p)) // or_pattern && - (_keyword = _PyPegen_expect_token(p, 673)) // token='as' + (_keyword = _PyPegen_expect_token(p, 674)) // token='as' && (a = _PyPegen_expect_soft_keyword(p, "_")) // soft_keyword='"_"' ) @@ -24095,7 +24335,7 @@ invalid_as_pattern_rule(Parser *p) if ( (or_pattern_var = or_pattern_rule(p)) // or_pattern && - (_keyword = _PyPegen_expect_token(p, 673)) // token='as' + (_keyword = _PyPegen_expect_token(p, 674)) // token='as' && (a = expression_rule(p)) // expression ) @@ -24222,6 +24462,92 @@ invalid_class_argument_pattern_rule(Parser *p) return _res; } +// invalid_maybe_stmt: +// | "maybe" named_expression NEWLINE +// | "maybe" named_expression ':' NEWLINE !INDENT +static void * +invalid_maybe_stmt_rule(Parser *p) +{ + if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) { + _Pypegen_stack_overflow(p); + } + if (p->error_indicator) { + p->level--; + return NULL; + } + void * _res = NULL; + int _mark = p->mark; + { // "maybe" named_expression NEWLINE + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> invalid_maybe_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"maybe\" named_expression NEWLINE")); + expr_ty _keyword; + expr_ty named_expression_var; + Token * newline_var; + if ( + (_keyword = _PyPegen_expect_soft_keyword(p, "maybe")) // soft_keyword='"maybe"' + && + (named_expression_var = named_expression_rule(p)) // named_expression + && + (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' + ) + { + D(fprintf(stderr, "%*c+ invalid_maybe_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"maybe\" named_expression NEWLINE")); + _res = RAISE_SYNTAX_ERROR ( "expected ':'" ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_maybe_stmt[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"maybe\" named_expression NEWLINE")); + } + { // "maybe" named_expression ':' NEWLINE !INDENT + if (p->error_indicator) { + p->level--; + return NULL; + } + D(fprintf(stderr, "%*c> invalid_maybe_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"maybe\" named_expression ':' NEWLINE !INDENT")); + Token * _literal; + expr_ty a; + expr_ty a_1; + Token * newline_var; + if ( + (a = _PyPegen_expect_soft_keyword(p, "maybe")) // soft_keyword='"maybe"' + && + (a_1 = named_expression_rule(p)) // named_expression + && + (_literal = _PyPegen_expect_token(p, 11)) // token=':' + && + (newline_var = _PyPegen_expect_token(p, NEWLINE)) // token='NEWLINE' + && + _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT) // token=INDENT + ) + { + D(fprintf(stderr, "%*c+ invalid_maybe_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"maybe\" named_expression ':' NEWLINE !INDENT")); + _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'if' statement on line %d" , a -> lineno ); + if (_res == NULL && PyErr_Occurred()) { + p->error_indicator = 1; + p->level--; + return NULL; + } + goto done; + } + p->mark = _mark; + D(fprintf(stderr, "%*c%s invalid_maybe_stmt[%d-%d]: %s failed!\n", p->level, ' ', + p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"maybe\" named_expression ':' NEWLINE !INDENT")); + } + _res = NULL; + done: + p->level--; + return _res; +} + // invalid_if_stmt: // | 'if' named_expression NEWLINE // | 'if' named_expression ':' NEWLINE !INDENT @@ -24247,7 +24573,7 @@ invalid_if_stmt_rule(Parser *p) expr_ty named_expression_var; Token * newline_var; if ( - (_keyword = _PyPegen_expect_token(p, 675)) // token='if' + (_keyword = _PyPegen_expect_token(p, 676)) // token='if' && (named_expression_var = named_expression_rule(p)) // named_expression && @@ -24278,7 +24604,7 @@ invalid_if_stmt_rule(Parser *p) expr_ty a_1; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 675)) // token='if' + (a = _PyPegen_expect_token(p, 676)) // token='if' && (a_1 = named_expression_rule(p)) // named_expression && @@ -24333,7 +24659,7 @@ invalid_elif_stmt_rule(Parser *p) expr_ty named_expression_var; Token * newline_var; if ( - (_keyword = _PyPegen_expect_token(p, 677)) // token='elif' + (_keyword = _PyPegen_expect_token(p, 678)) // token='elif' && (named_expression_var = named_expression_rule(p)) // named_expression && @@ -24364,7 +24690,7 @@ invalid_elif_stmt_rule(Parser *p) expr_ty named_expression_var; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 677)) // token='elif' + (a = _PyPegen_expect_token(p, 678)) // token='elif' && (named_expression_var = named_expression_rule(p)) // named_expression && @@ -24417,7 +24743,7 @@ invalid_else_stmt_rule(Parser *p) Token * a; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 678)) // token='else' + (a = _PyPegen_expect_token(p, 679)) // token='else' && (_literal = _PyPegen_expect_token(p, 11)) // token=':' && @@ -24470,7 +24796,7 @@ invalid_while_stmt_rule(Parser *p) expr_ty named_expression_var; Token * newline_var; if ( - (_keyword = _PyPegen_expect_token(p, 680)) // token='while' + (_keyword = _PyPegen_expect_token(p, 681)) // token='while' && (named_expression_var = named_expression_rule(p)) // named_expression && @@ -24501,7 +24827,7 @@ invalid_while_stmt_rule(Parser *p) expr_ty named_expression_var; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 680)) // token='while' + (a = _PyPegen_expect_token(p, 681)) // token='while' && (named_expression_var = named_expression_rule(p)) // named_expression && @@ -24560,13 +24886,13 @@ invalid_for_stmt_rule(Parser *p) expr_ty star_expressions_var; expr_ty star_targets_var; if ( - (_opt_var = _PyPegen_expect_token(p, 689), !p->error_indicator) // 'async'? + (_opt_var = _PyPegen_expect_token(p, 690), !p->error_indicator) // 'async'? && - (_keyword = _PyPegen_expect_token(p, 685)) // token='for' + (_keyword = _PyPegen_expect_token(p, 686)) // token='for' && (star_targets_var = star_targets_rule(p)) // star_targets && - (_keyword_1 = _PyPegen_expect_token(p, 686)) // token='in' + (_keyword_1 = _PyPegen_expect_token(p, 687)) // token='in' && (star_expressions_var = star_expressions_rule(p)) // star_expressions && @@ -24601,13 +24927,13 @@ invalid_for_stmt_rule(Parser *p) expr_ty star_expressions_var; expr_ty star_targets_var; if ( - (_opt_var = _PyPegen_expect_token(p, 689), !p->error_indicator) // 'async'? + (_opt_var = _PyPegen_expect_token(p, 690), !p->error_indicator) // 'async'? && - (a = _PyPegen_expect_token(p, 685)) // token='for' + (a = _PyPegen_expect_token(p, 686)) // token='for' && (star_targets_var = star_targets_rule(p)) // star_targets && - (_keyword = _PyPegen_expect_token(p, 686)) // token='in' + (_keyword = _PyPegen_expect_token(p, 687)) // token='in' && (star_expressions_var = star_expressions_rule(p)) // star_expressions && @@ -24673,9 +24999,9 @@ invalid_def_raw_rule(Parser *p) expr_ty name_var; Token * newline_var; if ( - (_opt_var = _PyPegen_expect_token(p, 689), !p->error_indicator) // 'async'? + (_opt_var = _PyPegen_expect_token(p, 690), !p->error_indicator) // 'async'? && - (a = _PyPegen_expect_token(p, 690)) // token='def' + (a = _PyPegen_expect_token(p, 691)) // token='def' && (name_var = _PyPegen_name_token(p)) // NAME && @@ -24732,9 +25058,9 @@ invalid_def_raw_rule(Parser *p) asdl_stmt_seq* block_var; expr_ty name_var; if ( - (_opt_var = _PyPegen_expect_token(p, 689), !p->error_indicator) // 'async'? + (_opt_var = _PyPegen_expect_token(p, 690), !p->error_indicator) // 'async'? && - (_keyword = _PyPegen_expect_token(p, 690)) // token='def' + (_keyword = _PyPegen_expect_token(p, 691)) // token='def' && (name_var = _PyPegen_name_token(p)) // NAME && @@ -24798,7 +25124,7 @@ invalid_class_def_raw_rule(Parser *p) expr_ty name_var; Token * newline_var; if ( - (_keyword = _PyPegen_expect_token(p, 692)) // token='class' + (_keyword = _PyPegen_expect_token(p, 693)) // token='class' && (name_var = _PyPegen_name_token(p)) // NAME && @@ -24837,7 +25163,7 @@ invalid_class_def_raw_rule(Parser *p) expr_ty name_var; Token * newline_var; if ( - (a = _PyPegen_expect_token(p, 692)) // token='class' + (a = _PyPegen_expect_token(p, 693)) // token='class' && (name_var = _PyPegen_name_token(p)) // NAME && @@ -25655,7 +25981,7 @@ invalid_arithmetic_rule(Parser *p) && (_tmp_150_var = _tmp_150_rule(p)) // '+' | '-' | '*' | '/' | '%' | '//' | '@' && - (a = _PyPegen_expect_token(p, 694)) // token='not' + (a = _PyPegen_expect_token(p, 695)) // token='not' && (b = inversion_rule(p)) // inversion ) @@ -25704,7 +26030,7 @@ invalid_factor_rule(Parser *p) if ( (_tmp_151_var = _tmp_151_rule(p)) // '+' | '-' | '~' && - (a = _PyPegen_expect_token(p, 694)) // token='not' + (a = _PyPegen_expect_token(p, 695)) // token='not' && (b = factor_rule(p)) // factor ) @@ -26051,7 +26377,7 @@ _tmp_5_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_5[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 629)) // token='import' + (_keyword = _PyPegen_expect_token(p, 630)) // token='import' ) { D(fprintf(stderr, "%*c+ _tmp_5[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import'")); @@ -26070,7 +26396,7 @@ _tmp_5_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_5[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 628)) // token='from' + (_keyword = _PyPegen_expect_token(p, 629)) // token='from' ) { D(fprintf(stderr, "%*c+ _tmp_5[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from'")); @@ -26108,7 +26434,7 @@ _tmp_6_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'def'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 690)) // token='def' + (_keyword = _PyPegen_expect_token(p, 691)) // token='def' ) { D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'def'")); @@ -26146,7 +26472,7 @@ _tmp_6_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 689)) // token='async' + (_keyword = _PyPegen_expect_token(p, 690)) // token='async' ) { D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'")); @@ -26184,7 +26510,7 @@ _tmp_7_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 692)) // token='class' + (_keyword = _PyPegen_expect_token(p, 693)) // token='class' ) { D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class'")); @@ -26241,7 +26567,7 @@ _tmp_8_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 640)) // token='with' + (_keyword = _PyPegen_expect_token(p, 641)) // token='with' ) { D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with'")); @@ -26260,7 +26586,7 @@ _tmp_8_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 689)) // token='async' + (_keyword = _PyPegen_expect_token(p, 690)) // token='async' ) { D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'")); @@ -26298,7 +26624,7 @@ _tmp_9_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 685)) // token='for' + (_keyword = _PyPegen_expect_token(p, 686)) // token='for' ) { D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for'")); @@ -26317,7 +26643,7 @@ _tmp_9_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 689)) // token='async' + (_keyword = _PyPegen_expect_token(p, 690)) // token='async' ) { D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'")); @@ -26542,7 +26868,7 @@ _tmp_13_rule(Parser *p) Token * _keyword; expr_ty z; if ( - (_keyword = _PyPegen_expect_token(p, 628)) // token='from' + (_keyword = _PyPegen_expect_token(p, 629)) // token='from' && (z = expression_rule(p)) // expression ) @@ -27064,7 +27390,7 @@ _tmp_22_rule(Parser *p) Token * _keyword; expr_ty z; if ( - (_keyword = _PyPegen_expect_token(p, 673)) // token='as' + (_keyword = _PyPegen_expect_token(p, 674)) // token='as' && (z = _PyPegen_name_token(p)) // NAME ) @@ -32426,7 +32752,7 @@ _tmp_109_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_109[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 617)) // token='True' + (_keyword = _PyPegen_expect_token(p, 618)) // token='True' ) { D(fprintf(stderr, "%*c+ _tmp_109[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'")); @@ -32445,7 +32771,7 @@ _tmp_109_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_109[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 619)) // token='False' + (_keyword = _PyPegen_expect_token(p, 620)) // token='False' ) { D(fprintf(stderr, "%*c+ _tmp_109[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'")); @@ -32464,7 +32790,7 @@ _tmp_109_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_109[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 618)) // token='None' + (_keyword = _PyPegen_expect_token(p, 619)) // token='None' ) { D(fprintf(stderr, "%*c+ _tmp_109[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'")); @@ -32675,7 +33001,7 @@ _tmp_113_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 678)) // token='else' + (_keyword = _PyPegen_expect_token(p, 679)) // token='else' ) { D(fprintf(stderr, "%*c+ _tmp_113[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else'")); @@ -32922,7 +33248,7 @@ _tmp_116_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 617)) // token='True' + (_keyword = _PyPegen_expect_token(p, 618)) // token='True' ) { D(fprintf(stderr, "%*c+ _tmp_116[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'")); @@ -32941,7 +33267,7 @@ _tmp_116_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 618)) // token='None' + (_keyword = _PyPegen_expect_token(p, 619)) // token='None' ) { D(fprintf(stderr, "%*c+ _tmp_116[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'")); @@ -32960,7 +33286,7 @@ _tmp_116_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 619)) // token='False' + (_keyword = _PyPegen_expect_token(p, 620)) // token='False' ) { D(fprintf(stderr, "%*c+ _tmp_116[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'")); @@ -34373,7 +34699,7 @@ _tmp_140_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_140[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 670)) // token='except' + (_keyword = _PyPegen_expect_token(p, 671)) // token='except' ) { D(fprintf(stderr, "%*c+ _tmp_140[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except'")); @@ -34392,7 +34718,7 @@ _tmp_140_rule(Parser *p) D(fprintf(stderr, "%*c> _tmp_140[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally'")); Token * _keyword; if ( - (_keyword = _PyPegen_expect_token(p, 666)) // token='finally' + (_keyword = _PyPegen_expect_token(p, 667)) // token='finally' ) { D(fprintf(stderr, "%*c+ _tmp_140[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally'")); @@ -35390,7 +35716,7 @@ _tmp_156_rule(Parser *p) Token * _keyword; expr_ty c; if ( - (_keyword = _PyPegen_expect_token(p, 584)) // token='or' + (_keyword = _PyPegen_expect_token(p, 585)) // token='or' && (c = conjunction_rule(p)) // conjunction ) @@ -35436,7 +35762,7 @@ _tmp_157_rule(Parser *p) Token * _keyword; expr_ty c; if ( - (_keyword = _PyPegen_expect_token(p, 585)) // token='and' + (_keyword = _PyPegen_expect_token(p, 586)) // token='and' && (c = inversion_rule(p)) // inversion ) @@ -35596,7 +35922,7 @@ _tmp_160_rule(Parser *p) Token * _keyword; expr_ty z; if ( - (_keyword = _PyPegen_expect_token(p, 675)) // token='if' + (_keyword = _PyPegen_expect_token(p, 676)) // token='if' && (z = disjunction_rule(p)) // disjunction ) @@ -36178,7 +36504,7 @@ _tmp_172_rule(Parser *p) Token * _keyword; expr_ty star_target_var; if ( - (_keyword = _PyPegen_expect_token(p, 673)) // token='as' + (_keyword = _PyPegen_expect_token(p, 674)) // token='as' && (star_target_var = star_target_rule(p)) // star_target )