diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2021-06-08 20:38:37 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2021-06-08 20:38:37 -0700 |
commit | 3783930365c3e91aae780f4f8728f1a029012539 (patch) | |
tree | 7e45be134ae816114c5f41fb38c3f3faa1a79b16 | |
parent | f791ed11cf3a801990f26a0ed7c0455c05df59df (diff) | |
download | txr-3783930365c3e91aae780f4f8728f1a029012539.tar.gz txr-3783930365c3e91aae780f4f8728f1a029012539.tar.bz2 txr-3783930365c3e91aae780f4f8728f1a029012539.zip |
parser: new *read-unknown-structs* variable.
* parser.c (read_unknown_structs_s): New symbol variable.
(parser_common_init): Initialize read_unknown_structs flag
member of the parser structure from the new special variable.
(parse_init): Initialize read_unknown_struct_s variable.
Register the *read-unknown-structs* dynamic variable.
* parser.h (struct parser): New member, read_unknown_structs.
(read_unknown_structs_s): Declared.
* parser.y (struct): Generate the struct literal syntax not
only for quasiquoted structures, but for structures with an
unknown type name, if the read_unkonwn_structs flag is set.
* txr.1: Documented.
* share/txr/stdlib/doc-syms.tl: Regenerated.
* y.tab.c.shipped: Regenerated.
-rw-r--r-- | parser.c | 6 | ||||
-rw-r--r-- | parser.h | 3 | ||||
-rw-r--r-- | parser.y | 7 | ||||
-rw-r--r-- | share/txr/stdlib/doc-syms.tl | 1 | ||||
-rw-r--r-- | txr.1 | 19 | ||||
-rw-r--r-- | y.tab.c.shipped | 557 |
6 files changed, 310 insertions, 283 deletions
@@ -72,7 +72,7 @@ val parser_s, unique_s, circref_s; val listener_hist_len_s, listener_multi_line_p_s, listener_sel_inclusive_p_s; val listener_pprint_s, listener_greedy_eval_s; -val rec_source_loc_s; +val rec_source_loc_s, read_unknown_structs_s; val json_s; val intr_s; static lino_t *lino_ctx; @@ -120,6 +120,7 @@ void parser_common_init(parser_t *p) int i; yyscan_t yyscan; val rec_source_loc_var = lookup_var(nil, rec_source_loc_s); + val read_unknown_structs_var = lookup_var(nil, read_unknown_structs_s); p->parser = nil; p->lineno = 1; @@ -146,6 +147,7 @@ void parser_common_init(parser_t *p) } p->tok_idx = 0; p->rec_source_loc = !nilp(cdr(rec_source_loc_var)); + p->read_unknown_structs = !nilp(cdr(read_unknown_structs_var)); } void parser_cleanup(parser_t *p) @@ -1850,6 +1852,7 @@ void parse_init(void) listener_pprint_s = intern(lit("*listener-pprint-p*"), user_package); listener_greedy_eval_s = intern(lit("*listener-greedy-eval-p*"), user_package); rec_source_loc_s = intern(lit("*rec-source-loc*"), user_package); + read_unknown_structs_s = intern(lit("*read-unknown-structs*"), user_package); json_s = intern(lit("json"), user_package); unique_s = gensym(nil); protect(&stream_parser_hash, &unique_s, &catch_all, convert(val *, 0)); @@ -1863,6 +1866,7 @@ void parse_init(void) reg_var(listener_pprint_s, nil); reg_var(listener_greedy_eval_s, nil); reg_var(rec_source_loc_s, nil); + reg_var(read_unknown_structs_s, nil); reg_fun(circref_s, func_n1(circref)); reg_fun(intern(lit("parse-errors"), user_package), func_n1(parse_errors)); reg_fun(intern(lit("repl"), system_package), func_n4(repl)); @@ -65,6 +65,7 @@ struct parser { struct yy_token tok_pushback[4]; int tok_idx; int rec_source_loc; + int read_unknown_structs; }; #endif @@ -74,7 +75,7 @@ extern const int have_yydebug; extern const wchar_t *spec_file; extern val form_to_ln_hash; extern val parser_s, unique_s, circref_s; -extern val rec_source_loc_s; +extern val rec_source_loc_s, read_unknown_structs_s; extern val json_s; void yydebug_onoff(int); void yyerror(scanner_t *scanner, parser_t *, const char *s); @@ -903,9 +903,10 @@ hash : HASH_H list { if (parser->quasi_level > 0 && unquotes_occur( yybadtok(yychar, lit("hash literal")); } ; -struct : HASH_S list { if (parser->quasi_level > 0 && unquotes_occur($2, 0)) - $$ = rl(cons(struct_lit_s, $2), - num($1)); +struct : HASH_S list { if ((parser->quasi_level > 0 && unquotes_occur($2, 0)) || + (parser->read_unknown_structs && + !find_struct_type(first($2)))) + { $$ = rl(cons(struct_lit_s, $2), num($1)); } else { val strct = make_struct_lit(first($2), rest($2)); diff --git a/share/txr/stdlib/doc-syms.tl b/share/txr/stdlib/doc-syms.tl index 7c065945..fef65fc6 100644 --- a/share/txr/stdlib/doc-syms.tl +++ b/share/txr/stdlib/doc-syms.tl @@ -44,6 +44,7 @@ ("*r" "N-03A7AE5A") ("*random-state*" "N-033875AD") ("*random-warmup*" "N-010348CD") + ("*read-unknown-structs*" "N-0174F337") ("*rec-source-loc*" "N-014AFEA9") ("*stddebug*" "N-006566FB") ("*stderr*" "N-006566FB") @@ -54351,6 +54351,25 @@ circle notation label. The "ordinary structure that is reachable from the slots" denotes structure that is directly reachable by traversing conses, ranges, vectors, hashes and struct slots: all printable aggregate objects. +.coNP Special variable @ *read-unknown-structs* +.desc +The +.code *read-unknown-structs* +variable controls the behavior of the parser upon encountering +structure literal +.code #S +syntax which specifies an unknown structure type. + +If this variable's value is +.code nil +then such a literal is erroneous; an exception is thrown. Otherwise, such +a structure is converted not into a structure object, which is impossible, +but into a list object whose first element is the symbol +.codn sys:struct-lit . +The remaining elements are taken from the +.code #S +syntax. + .coNP Function @ format .synb .mets (format < stream-designator < format-string << format-arg *) diff --git a/y.tab.c.shipped b/y.tab.c.shipped index 0babc8e1..59ad07a0 100644 --- a/y.tab.c.shipped +++ b/y.tab.c.shipped @@ -851,32 +851,32 @@ static const yytype_uint16 yyrline[] = 779, 780, 782, 785, 788, 792, 795, 798, 806, 809, 815, 821, 828, 829, 830, 831, 832, 833, 837, 842, 845, 849, 852, 853, 855, 857, 860, 865, 874, 879, - 882, 887, 892, 896, 902, 906, 913, 917, 921, 925, - 930, 934, 947, 951, 953, 953, 957, 958, 959, 960, - 962, 963, 968, 969, 974, 974, 979, 979, 984, 984, - 987, 988, 990, 992, 996, 1000, 1009, 1011, 1015, 1022, - 1033, 1034, 1036, 1039, 1043, 1047, 1048, 1054, 1055, 1056, - 1057, 1061, 1066, 1070, 1075, 1079, 1083, 1084, 1085, 1089, - 1090, 1091, 1094, 1097, 1098, 1101, 1103, 1108, 1111, 1111, - 1115, 1115, 1119, 1119, 1122, 1122, 1125, 1128, 1130, 1134, - 1136, 1142, 1143, 1145, 1146, 1147, 1148, 1149, 1150, 1151, - 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, - 1163, 1163, 1167, 1167, 1171, 1171, 1175, 1175, 1178, 1181, - 1182, 1184, 1185, 1187, 1188, 1189, 1190, 1191, 1192, 1193, - 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, - 1205, 1205, 1209, 1209, 1213, 1213, 1217, 1220, 1226, 1230, - 1236, 1237, 1240, 1241, 1242, 1242, 1245, 1248, 1249, 1252, - 1253, 1254, 1257, 1260, 1265, 1269, 1275, 1278, 1279, 1280, - 1281, 1284, 1285, 1286, 1289, 1290, 1291, 1292, 1293, 1300, - 1301, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1314, - 1315, 1318, 1319, 1320, 1323, 1325, 1326, 1327, 1328, 1329, - 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1339, 1353, 1354, - 1358, 1359, 1361, 1365, 1378, 1380, 1384, 1389, 1390, 1393, - 1397, 1399, 1403, 1404, 1405, 1407, 1414, 1415, 1417, 1418, - 1421, 1422, 1423, 1424, 1427, 1428, 1429, 1431, 1435, 1436, - 1437, 1439, 1445, 1447, 1450, 1455, 1457, 1461, 1462, 1469, - 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1480, - 1482, 1484, 1486, 1488, 1490, 1492, 1497 + 882, 887, 892, 896, 902, 906, 914, 918, 922, 926, + 931, 935, 948, 952, 954, 954, 958, 959, 960, 961, + 963, 964, 969, 970, 975, 975, 980, 980, 985, 985, + 988, 989, 991, 993, 997, 1001, 1010, 1012, 1016, 1023, + 1034, 1035, 1037, 1040, 1044, 1048, 1049, 1055, 1056, 1057, + 1058, 1062, 1067, 1071, 1076, 1080, 1084, 1085, 1086, 1090, + 1091, 1092, 1095, 1098, 1099, 1102, 1104, 1109, 1112, 1112, + 1116, 1116, 1120, 1120, 1123, 1123, 1126, 1129, 1131, 1135, + 1137, 1143, 1144, 1146, 1147, 1148, 1149, 1150, 1151, 1152, + 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, + 1164, 1164, 1168, 1168, 1172, 1172, 1176, 1176, 1179, 1182, + 1183, 1185, 1186, 1188, 1189, 1190, 1191, 1192, 1193, 1194, + 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, + 1206, 1206, 1210, 1210, 1214, 1214, 1218, 1221, 1227, 1231, + 1237, 1238, 1241, 1242, 1243, 1243, 1246, 1249, 1250, 1253, + 1254, 1255, 1258, 1261, 1266, 1270, 1276, 1279, 1280, 1281, + 1282, 1285, 1286, 1287, 1290, 1291, 1292, 1293, 1294, 1301, + 1302, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1315, + 1316, 1319, 1320, 1321, 1324, 1326, 1327, 1328, 1329, 1330, + 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1340, 1354, 1355, + 1359, 1360, 1362, 1366, 1379, 1381, 1385, 1390, 1391, 1394, + 1398, 1400, 1404, 1405, 1406, 1408, 1415, 1416, 1418, 1419, + 1422, 1423, 1424, 1425, 1428, 1429, 1430, 1432, 1436, 1437, + 1438, 1440, 1446, 1448, 1451, 1456, 1458, 1462, 1463, 1470, + 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1481, + 1483, 1485, 1487, 1489, 1491, 1493, 1498 }; #endif @@ -4987,9 +4987,10 @@ yyreduce: /* Line 1806 of yacc.c */ #line 906 "parser.y" - { if (parser->quasi_level > 0 && unquotes_occur((yyvsp[(2) - (2)].val), 0)) - (yyval.val) = rl(cons(struct_lit_s, (yyvsp[(2) - (2)].val)), - num((yyvsp[(1) - (2)].lineno))); + { if ((parser->quasi_level > 0 && unquotes_occur((yyvsp[(2) - (2)].val), 0)) || + (parser->read_unknown_structs && + !find_struct_type(first((yyvsp[(2) - (2)].val))))) + { (yyval.val) = rl(cons(struct_lit_s, (yyvsp[(2) - (2)].val)), num((yyvsp[(1) - (2)].lineno))); } else { val strct = make_struct_lit(first((yyvsp[(2) - (2)].val)), rest((yyvsp[(2) - (2)].val))); @@ -4999,7 +5000,7 @@ yyreduce: case 216: /* Line 1806 of yacc.c */ -#line 913 "parser.y" +#line 914 "parser.y" { (yyval.val) = nil; yybadtok(yychar, lit("struct literal")); } break; @@ -5007,7 +5008,7 @@ yyreduce: case 217: /* Line 1806 of yacc.c */ -#line 917 "parser.y" +#line 918 "parser.y" { if (length((yyvsp[(2) - (2)].val)) != two) yyerr("range literal needs two elements"); { val range = rcons(first((yyvsp[(2) - (2)].val)), second((yyvsp[(2) - (2)].val))); @@ -5017,7 +5018,7 @@ yyreduce: case 218: /* Line 1806 of yacc.c */ -#line 921 "parser.y" +#line 922 "parser.y" { (yyval.val) = nil; yybadtok(yychar, lit("range literal")); } break; @@ -5025,7 +5026,7 @@ yyreduce: case 219: /* Line 1806 of yacc.c */ -#line 925 "parser.y" +#line 926 "parser.y" { if (gt(length((yyvsp[(2) - (2)].val)), three)) yyerr("excess elements in tree node"); { val tn = tnode(first((yyvsp[(2) - (2)].val)), second((yyvsp[(2) - (2)].val)), @@ -5036,7 +5037,7 @@ yyreduce: case 220: /* Line 1806 of yacc.c */ -#line 930 "parser.y" +#line 931 "parser.y" { (yyval.val) = nil; yybadtok(yychar, lit("tree node literal")); } break; @@ -5044,7 +5045,7 @@ yyreduce: case 221: /* Line 1806 of yacc.c */ -#line 934 "parser.y" +#line 935 "parser.y" { if (parser->quasi_level > 0 && unquotes_occur((yyvsp[(2) - (2)].val), 0)) (yyval.val) = rl(cons(tree_lit_s, (yyvsp[(2) - (2)].val)), num((yyvsp[(1) - (2)].lineno))); else @@ -5063,7 +5064,7 @@ yyreduce: case 222: /* Line 1806 of yacc.c */ -#line 947 "parser.y" +#line 948 "parser.y" { (yyval.val) = nil; yybadtok(yychar, lit("tree node literal")); } break; @@ -5071,7 +5072,7 @@ yyreduce: case 223: /* Line 1806 of yacc.c */ -#line 951 "parser.y" +#line 952 "parser.y" { (yyval.val) = list(json_s, quote_s, (yyvsp[(2) - (2)].val), nao); end_of_json(scnr); } break; @@ -5079,14 +5080,14 @@ yyreduce: case 224: /* Line 1806 of yacc.c */ -#line 953 "parser.y" +#line 954 "parser.y" { parser->quasi_level++; } break; case 225: /* Line 1806 of yacc.c */ -#line 954 "parser.y" +#line 955 "parser.y" { parser->quasi_level--; end_of_json(scnr); (yyval.val) = list(json_s, sys_qquote_s, (yyvsp[(4) - (4)].val), nao); } @@ -5095,28 +5096,28 @@ yyreduce: case 226: /* Line 1806 of yacc.c */ -#line 957 "parser.y" +#line 958 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 227: /* Line 1806 of yacc.c */ -#line 958 "parser.y" +#line 959 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 228: /* Line 1806 of yacc.c */ -#line 959 "parser.y" +#line 960 "parser.y" { (yyval.val) = null_string; } break; case 229: /* Line 1806 of yacc.c */ -#line 960 "parser.y" +#line 961 "parser.y" { (yyval.val) = (yyvsp[(2) - (3)].val); rl((yyval.val), num(parser->lineno)); } break; @@ -5124,14 +5125,14 @@ yyreduce: case 230: /* Line 1806 of yacc.c */ -#line 962 "parser.y" +#line 963 "parser.y" { (yyval.val) = vector(zero, nil); } break; case 231: /* Line 1806 of yacc.c */ -#line 963 "parser.y" +#line 964 "parser.y" { (yyval.val) = if3(vectorp((yyvsp[(2) - (3)].val)), (yyvsp[(2) - (3)].val), rl(cons(vector_lit_s, @@ -5142,14 +5143,14 @@ yyreduce: case 232: /* Line 1806 of yacc.c */ -#line 968 "parser.y" +#line 969 "parser.y" { (yyval.val) = make_hash(nil, nil, t); } break; case 233: /* Line 1806 of yacc.c */ -#line 969 "parser.y" +#line 970 "parser.y" { (yyval.val) = if3(hashp((yyvsp[(2) - (3)].val)), (yyvsp[(2) - (3)].val), rl(cons(hash_lit_s, @@ -5160,14 +5161,14 @@ yyreduce: case 234: /* Line 1806 of yacc.c */ -#line 974 "parser.y" +#line 975 "parser.y" { parser->quasi_level--; } break; case 235: /* Line 1806 of yacc.c */ -#line 975 "parser.y" +#line 976 "parser.y" { parser->quasi_level++; end_of_json_unquote(scnr); (yyval.val) = rl(rlc(list(sys_unquote_s, (yyvsp[(3) - (3)].val), nao), (yyvsp[(3) - (3)].val)), @@ -5177,14 +5178,14 @@ yyreduce: case 236: /* Line 1806 of yacc.c */ -#line 979 "parser.y" +#line 980 "parser.y" { parser->quasi_level--; } break; case 237: /* Line 1806 of yacc.c */ -#line 980 "parser.y" +#line 981 "parser.y" { parser->quasi_level++; end_of_json_unquote(scnr); (yyval.val) = rl(rlc(list(sys_splice_s, (yyvsp[(3) - (3)].val), nao), (yyvsp[(3) - (3)].val)), @@ -5194,14 +5195,14 @@ yyreduce: case 238: /* Line 1806 of yacc.c */ -#line 984 "parser.y" +#line 985 "parser.y" { parser_circ_def(parser, (yyvsp[(1) - (1)].val), unique_s); } break; case 239: /* Line 1806 of yacc.c */ -#line 985 "parser.y" +#line 986 "parser.y" { parser_circ_def(parser, (yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val)); (yyval.val) = (yyvsp[(3) - (3)].val); } break; @@ -5209,14 +5210,14 @@ yyreduce: case 240: /* Line 1806 of yacc.c */ -#line 987 "parser.y" +#line 988 "parser.y" { (yyval.val) = parser_circ_ref(parser, (yyvsp[(1) - (1)].val)); } break; case 241: /* Line 1806 of yacc.c */ -#line 988 "parser.y" +#line 989 "parser.y" { (yyval.val) = nil; yybadtok(yychar, lit("JSON string")); } break; @@ -5224,7 +5225,7 @@ yyreduce: case 242: /* Line 1806 of yacc.c */ -#line 990 "parser.y" +#line 991 "parser.y" { (yyval.val) = nil; yybadtok(yychar, lit("JSON array")); } break; @@ -5232,7 +5233,7 @@ yyreduce: case 243: /* Line 1806 of yacc.c */ -#line 992 "parser.y" +#line 993 "parser.y" { (yyval.val) = nil; yybadtok(yychar, lit("JSON hash")); } break; @@ -5240,7 +5241,7 @@ yyreduce: case 244: /* Line 1806 of yacc.c */ -#line 996 "parser.y" +#line 997 "parser.y" { (yyval.val) = if3(parser->quasi_level > 0 && unquotes_occur((yyvsp[(1) - (1)].val), 0), cons((yyvsp[(1) - (1)].val), nil), @@ -5250,7 +5251,7 @@ yyreduce: case 245: /* Line 1806 of yacc.c */ -#line 1000 "parser.y" +#line 1001 "parser.y" { if (consp((yyvsp[(1) - (3)].val))) { (yyval.val) = cons((yyvsp[(3) - (3)].val), (yyvsp[(1) - (3)].val)); } else if (parser->quasi_level > 0 && @@ -5265,7 +5266,7 @@ yyreduce: case 246: /* Line 1806 of yacc.c */ -#line 1009 "parser.y" +#line 1010 "parser.y" { yyerr("missing comma in JSON array"); (yyval.val) = (yyvsp[(1) - (2)].val); } break; @@ -5273,7 +5274,7 @@ yyreduce: case 247: /* Line 1806 of yacc.c */ -#line 1011 "parser.y" +#line 1012 "parser.y" { yybadtok(yychar, lit("JSON array")); (yyval.val) = (yyvsp[(1) - (2)].val); } break; @@ -5281,7 +5282,7 @@ yyreduce: case 248: /* Line 1806 of yacc.c */ -#line 1015 "parser.y" +#line 1016 "parser.y" { if (parser->quasi_level > 0 && (unquotes_occur((yyvsp[(1) - (3)].val), 0) || unquotes_occur((yyvsp[(3) - (3)].val), 0))) @@ -5294,7 +5295,7 @@ yyreduce: case 249: /* Line 1806 of yacc.c */ -#line 1023 "parser.y" +#line 1024 "parser.y" { if (consp((yyvsp[(1) - (5)].val))) { (yyval.val) = cons(list((yyvsp[(3) - (5)].val), (yyvsp[(5) - (5)].val), nao), (yyvsp[(1) - (5)].val)); } else if (parser->quasi_level > 0 && @@ -5310,28 +5311,28 @@ yyreduce: case 250: /* Line 1806 of yacc.c */ -#line 1033 "parser.y" +#line 1034 "parser.y" { yyerr("missing colon in JSON hash"); } break; case 251: /* Line 1806 of yacc.c */ -#line 1035 "parser.y" +#line 1036 "parser.y" { yyerr("missing comma in JSON hash"); } break; case 252: /* Line 1806 of yacc.c */ -#line 1036 "parser.y" +#line 1037 "parser.y" { yybadtok(yychar, lit("JSON hash")); } break; case 253: /* Line 1806 of yacc.c */ -#line 1039 "parser.y" +#line 1040 "parser.y" { if ((yyvsp[(1) - (1)].lexeme)[0] == ':' && (yyvsp[(1) - (1)].lexeme)[1] == 0) { (yyval.val) = nil; } else @@ -5341,21 +5342,21 @@ yyreduce: case 254: /* Line 1806 of yacc.c */ -#line 1043 "parser.y" +#line 1044 "parser.y" { (yyval.val) = nil; } break; case 255: /* Line 1806 of yacc.c */ -#line 1047 "parser.y" +#line 1048 "parser.y" { (yyval.val) = rl((yyvsp[(2) - (3)].val), num((yyvsp[(1) - (3)].lineno))); } break; case 256: /* Line 1806 of yacc.c */ -#line 1048 "parser.y" +#line 1049 "parser.y" { val a = car((yyvsp[(3) - (4)].val)); val ur = uref_helper(parser, a); if (ur == a) @@ -5367,28 +5368,28 @@ yyreduce: case 257: /* Line 1806 of yacc.c */ -#line 1054 "parser.y" +#line 1055 "parser.y" { (yyval.val) = nil; } break; case 258: /* Line 1806 of yacc.c */ -#line 1055 "parser.y" +#line 1056 "parser.y" { (yyval.val) = (yyvsp[(3) - (4)].val); } break; case 259: /* Line 1806 of yacc.c */ -#line 1056 "parser.y" +#line 1057 "parser.y" { (yyval.val) = (yyvsp[(3) - (4)].val); } break; case 260: /* Line 1806 of yacc.c */ -#line 1057 "parser.y" +#line 1058 "parser.y" { (yyval.val) = nil; yybadtok(yychar, lit("expression")); } break; @@ -5396,7 +5397,7 @@ yyreduce: case 261: /* Line 1806 of yacc.c */ -#line 1061 "parser.y" +#line 1062 "parser.y" { if (consp((yyvsp[(2) - (2)].val))) (yyval.val) = rl(cons(expr_s, cons((yyvsp[(2) - (2)].val), nil)), num((yyvsp[(1) - (2)].lineno))); else @@ -5407,7 +5408,7 @@ yyreduce: case 262: /* Line 1806 of yacc.c */ -#line 1066 "parser.y" +#line 1067 "parser.y" { (yyval.val) = nil; yybadtok(yychar, lit("meta expression")); } break; @@ -5415,7 +5416,7 @@ yyreduce: case 263: /* Line 1806 of yacc.c */ -#line 1070 "parser.y" +#line 1071 "parser.y" { if (consp((yyvsp[(2) - (2)].val))) (yyval.val) = rl(cons(expr_s, cons((yyvsp[(2) - (2)].val), nil)), num((yyvsp[(1) - (2)].chr))); else @@ -5426,7 +5427,7 @@ yyreduce: case 264: /* Line 1806 of yacc.c */ -#line 1075 "parser.y" +#line 1076 "parser.y" { (yyval.val) = nil; yybadtok(yychar, lit("meta expression")); } break; @@ -5434,7 +5435,7 @@ yyreduce: case 265: /* Line 1806 of yacc.c */ -#line 1079 "parser.y" +#line 1080 "parser.y" { val a = car((yyvsp[(3) - (4)].val)); val ur = uref_helper(parser, a); (yyval.val) = rlcp_tree(cons(dwim_s, @@ -5444,21 +5445,21 @@ yyreduce: case 266: /* Line 1806 of yacc.c */ -#line 1083 "parser.y" +#line 1084 "parser.y" { (yyval.val) = rl(cons(dwim_s, (yyvsp[(2) - (3)].val)), num((yyvsp[(1) - (3)].lineno))); } break; case 267: /* Line 1806 of yacc.c */ -#line 1084 "parser.y" +#line 1085 "parser.y" { (yyval.val) = rl(cons(dwim_s, nil), num((yyvsp[(1) - (2)].lineno))); } break; case 268: /* Line 1806 of yacc.c */ -#line 1085 "parser.y" +#line 1086 "parser.y" { (yyval.val) = nil; yybadtok(yychar, lit("DWIM expression")); } break; @@ -5466,28 +5467,28 @@ yyreduce: case 272: /* Line 1806 of yacc.c */ -#line 1094 "parser.y" +#line 1095 "parser.y" { (yyval.val) = rlc(expand_meta((yyvsp[(1) - (1)].val), nil), (yyvsp[(1) - (1)].val)); } break; case 273: /* Line 1806 of yacc.c */ -#line 1097 "parser.y" +#line 1098 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 274: /* Line 1806 of yacc.c */ -#line 1098 "parser.y" +#line 1099 "parser.y" { (yyval.val) = nil; } break; case 275: /* Line 1806 of yacc.c */ -#line 1101 "parser.y" +#line 1102 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val)->c.cdr; (yyvsp[(1) - (1)].val)->c.cdr = nil; } break; @@ -5495,7 +5496,7 @@ yyreduce: case 276: /* Line 1806 of yacc.c */ -#line 1104 "parser.y" +#line 1105 "parser.y" { (yyval.val) = (yyvsp[(1) - (3)].val)->c.cdr; (yyvsp[(1) - (3)].val)->c.cdr = (yyvsp[(3) - (3)].val); } break; @@ -5503,7 +5504,7 @@ yyreduce: case 277: /* Line 1806 of yacc.c */ -#line 1108 "parser.y" +#line 1109 "parser.y" { (yyval.val) = cons((yyvsp[(1) - (1)].val), nil); rlc((yyval.val), (yyvsp[(1) - (1)].val)); (yyval.val)->c.cdr = (yyval.val); } @@ -5512,14 +5513,14 @@ yyreduce: case 278: /* Line 1806 of yacc.c */ -#line 1111 "parser.y" +#line 1112 "parser.y" { parser->ignore = 1; } break; case 279: /* Line 1806 of yacc.c */ -#line 1112 "parser.y" +#line 1113 "parser.y" { parser->ignore = 0; (yyval.val) = cons(nil, nil); (yyval.val)->c.cdr = (yyval.val); } @@ -5528,14 +5529,14 @@ yyreduce: case 280: /* Line 1806 of yacc.c */ -#line 1115 "parser.y" +#line 1116 "parser.y" { parser->ignore = 1; } break; case 281: /* Line 1806 of yacc.c */ -#line 1116 "parser.y" +#line 1117 "parser.y" { parser->ignore = 0; (yyval.val) = cons(nil, nil); (yyval.val)->c.cdr = (yyval.val); } @@ -5544,14 +5545,14 @@ yyreduce: case 282: /* Line 1806 of yacc.c */ -#line 1119 "parser.y" +#line 1120 "parser.y" { parser->ignore = 1; } break; case 283: /* Line 1806 of yacc.c */ -#line 1120 "parser.y" +#line 1121 "parser.y" { parser->ignore = 0; (yyval.val) = (yyvsp[(1) - (4)].val); } break; @@ -5559,14 +5560,14 @@ yyreduce: case 284: /* Line 1806 of yacc.c */ -#line 1122 "parser.y" +#line 1123 "parser.y" { parser->ignore = 1; } break; case 285: /* Line 1806 of yacc.c */ -#line 1123 "parser.y" +#line 1124 "parser.y" { parser->ignore = 0; (yyval.val) = (yyvsp[(1) - (5)].val); } break; @@ -5574,7 +5575,7 @@ yyreduce: case 286: /* Line 1806 of yacc.c */ -#line 1125 "parser.y" +#line 1126 "parser.y" { uses_or2; (yyval.val) = rlc(cons((yyvsp[(2) - (2)].val), (yyvsp[(1) - (2)].val)->c.cdr), or2((yyvsp[(2) - (2)].val), (yyvsp[(1) - (2)].val)->c.cdr)); (yyvsp[(1) - (2)].val)->c.cdr = (yyval.val); } @@ -5583,7 +5584,7 @@ yyreduce: case 287: /* Line 1806 of yacc.c */ -#line 1128 "parser.y" +#line 1129 "parser.y" { (yyval.val) = lastcons(rl((yyvsp[(2) - (2)].val), num((yyvsp[(1) - (2)].lineno)))); (yyval.val)->c.cdr = (yyvsp[(2) - (2)].val); } break; @@ -5591,7 +5592,7 @@ yyreduce: case 288: /* Line 1806 of yacc.c */ -#line 1131 "parser.y" +#line 1132 "parser.y" { (yyval.val) = lastcons(rl((yyvsp[(3) - (3)].val), num((yyvsp[(2) - (3)].lineno)))); (yyval.val)->c.cdr = (yyvsp[(1) - (3)].val)->c.cdr; (yyvsp[(1) - (3)].val)->c.cdr = (yyvsp[(3) - (3)].val); } @@ -5600,7 +5601,7 @@ yyreduce: case 289: /* Line 1806 of yacc.c */ -#line 1134 "parser.y" +#line 1135 "parser.y" { (yyval.val) = lastcons(rl((yyvsp[(2) - (2)].val), num((yyvsp[(1) - (2)].lineno)))); (yyval.val)->c.cdr = (yyvsp[(2) - (2)].val); } break; @@ -5608,7 +5609,7 @@ yyreduce: case 290: /* Line 1806 of yacc.c */ -#line 1137 "parser.y" +#line 1138 "parser.y" { (yyval.val) = lastcons(rl((yyvsp[(3) - (3)].val), num((yyvsp[(2) - (3)].lineno)))); (yyval.val)->c.cdr = (yyvsp[(1) - (3)].val)->c.cdr; (yyvsp[(1) - (3)].val)->c.cdr = (yyvsp[(3) - (3)].val); } @@ -5617,14 +5618,14 @@ yyreduce: case 291: /* Line 1806 of yacc.c */ -#line 1142 "parser.y" +#line 1143 "parser.y" { (yyval.val) = ifnign(symhlpr((yyvsp[(1) - (1)].lexeme), t)); } break; case 292: /* Line 1806 of yacc.c */ -#line 1143 "parser.y" +#line 1144 "parser.y" { (yyval.val) = cons(var_s, cons((yyvsp[(1) - (1)].val), nil)); rl((yyval.val), num(parser->lineno)); } break; @@ -5632,119 +5633,119 @@ yyreduce: case 293: /* Line 1806 of yacc.c */ -#line 1145 "parser.y" +#line 1146 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 294: /* Line 1806 of yacc.c */ -#line 1146 "parser.y" +#line 1147 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 295: /* Line 1806 of yacc.c */ -#line 1147 "parser.y" +#line 1148 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 296: /* Line 1806 of yacc.c */ -#line 1148 "parser.y" +#line 1149 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 297: /* Line 1806 of yacc.c */ -#line 1149 "parser.y" +#line 1150 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 298: /* Line 1806 of yacc.c */ -#line 1150 "parser.y" +#line 1151 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 299: /* Line 1806 of yacc.c */ -#line 1151 "parser.y" +#line 1152 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 300: /* Line 1806 of yacc.c */ -#line 1152 "parser.y" +#line 1153 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 301: /* Line 1806 of yacc.c */ -#line 1153 "parser.y" +#line 1154 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 302: /* Line 1806 of yacc.c */ -#line 1154 "parser.y" +#line 1155 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 303: /* Line 1806 of yacc.c */ -#line 1155 "parser.y" +#line 1156 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 304: /* Line 1806 of yacc.c */ -#line 1156 "parser.y" +#line 1157 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 305: /* Line 1806 of yacc.c */ -#line 1157 "parser.y" +#line 1158 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 306: /* Line 1806 of yacc.c */ -#line 1158 "parser.y" +#line 1159 "parser.y" { (yyval.val) = rl((yyvsp[(2) - (2)].val), num((yyvsp[(1) - (2)].lineno))); } break; case 307: /* Line 1806 of yacc.c */ -#line 1159 "parser.y" +#line 1160 "parser.y" { (yyval.val) = rl(cons(quasilist_s, (yyvsp[(2) - (2)].val)), num((yyvsp[(1) - (2)].lineno))); } break; case 308: /* Line 1806 of yacc.c */ -#line 1160 "parser.y" +#line 1161 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 309: /* Line 1806 of yacc.c */ -#line 1161 "parser.y" +#line 1162 "parser.y" { (yyval.val) = rl(rlc(list(quote_s, (yyvsp[(2) - (2)].val), nao), (yyvsp[(2) - (2)].val)), num(parser->lineno)); } break; @@ -5752,14 +5753,14 @@ yyreduce: case 310: /* Line 1806 of yacc.c */ -#line 1163 "parser.y" +#line 1164 "parser.y" { parser->quasi_level++; } break; case 311: /* Line 1806 of yacc.c */ -#line 1164 "parser.y" +#line 1165 "parser.y" { parser->quasi_level--; (yyval.val) = rl(rlc(list(sys_qquote_s, (yyvsp[(3) - (3)].val), nao), (yyvsp[(3) - (3)].val)), num(parser->lineno)); } @@ -5768,14 +5769,14 @@ yyreduce: case 312: /* Line 1806 of yacc.c */ -#line 1167 "parser.y" +#line 1168 "parser.y" { parser->quasi_level--; } break; case 313: /* Line 1806 of yacc.c */ -#line 1168 "parser.y" +#line 1169 "parser.y" { parser->quasi_level++; (yyval.val) = rl(rlc(list(sys_unquote_s, (yyvsp[(3) - (3)].val), nao), (yyvsp[(3) - (3)].val)), num(parser->lineno)); } @@ -5784,14 +5785,14 @@ yyreduce: case 314: /* Line 1806 of yacc.c */ -#line 1171 "parser.y" +#line 1172 "parser.y" { parser->quasi_level--; } break; case 315: /* Line 1806 of yacc.c */ -#line 1172 "parser.y" +#line 1173 "parser.y" { parser->quasi_level++; (yyval.val) = rl(rlc(list(sys_splice_s, (yyvsp[(3) - (3)].val), nao), (yyvsp[(3) - (3)].val)), num(parser->lineno)); } @@ -5800,14 +5801,14 @@ yyreduce: case 316: /* Line 1806 of yacc.c */ -#line 1175 "parser.y" +#line 1176 "parser.y" { parser_circ_def(parser, (yyvsp[(1) - (1)].val), unique_s); } break; case 317: /* Line 1806 of yacc.c */ -#line 1176 "parser.y" +#line 1177 "parser.y" { parser_circ_def(parser, (yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val)); (yyval.val) = (yyvsp[(3) - (3)].val); } break; @@ -5815,35 +5816,35 @@ yyreduce: case 318: /* Line 1806 of yacc.c */ -#line 1178 "parser.y" +#line 1179 "parser.y" { (yyval.val) = parser_circ_ref(parser, (yyvsp[(1) - (1)].val)); } break; case 319: /* Line 1806 of yacc.c */ -#line 1181 "parser.y" +#line 1182 "parser.y" { (yyval.val) = uref_helper(parser, (yyvsp[(2) - (2)].val)); } break; case 320: /* Line 1806 of yacc.c */ -#line 1182 "parser.y" +#line 1183 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 321: /* Line 1806 of yacc.c */ -#line 1184 "parser.y" +#line 1185 "parser.y" { (yyval.val) = ifnign(symhlpr((yyvsp[(1) - (1)].lexeme), t)); } break; case 322: /* Line 1806 of yacc.c */ -#line 1185 "parser.y" +#line 1186 "parser.y" { (yyval.val) = cons(var_s, cons((yyvsp[(1) - (1)].val), nil)); rl((yyval.val), num(parser->lineno)); } break; @@ -5851,119 +5852,119 @@ yyreduce: case 323: /* Line 1806 of yacc.c */ -#line 1187 "parser.y" +#line 1188 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 324: /* Line 1806 of yacc.c */ -#line 1188 "parser.y" +#line 1189 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 325: /* Line 1806 of yacc.c */ -#line 1189 "parser.y" +#line 1190 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 326: /* Line 1806 of yacc.c */ -#line 1190 "parser.y" +#line 1191 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 327: /* Line 1806 of yacc.c */ -#line 1191 "parser.y" +#line 1192 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 328: /* Line 1806 of yacc.c */ -#line 1192 "parser.y" +#line 1193 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 329: /* Line 1806 of yacc.c */ -#line 1193 "parser.y" +#line 1194 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 330: /* Line 1806 of yacc.c */ -#line 1194 "parser.y" +#line 1195 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 331: /* Line 1806 of yacc.c */ -#line 1195 "parser.y" +#line 1196 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 332: /* Line 1806 of yacc.c */ -#line 1196 "parser.y" +#line 1197 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 333: /* Line 1806 of yacc.c */ -#line 1197 "parser.y" +#line 1198 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 334: /* Line 1806 of yacc.c */ -#line 1198 "parser.y" +#line 1199 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 335: /* Line 1806 of yacc.c */ -#line 1199 "parser.y" +#line 1200 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 336: /* Line 1806 of yacc.c */ -#line 1200 "parser.y" +#line 1201 "parser.y" { (yyval.val) = rl((yyvsp[(2) - (2)].val), num((yyvsp[(1) - (2)].lineno))); } break; case 337: /* Line 1806 of yacc.c */ -#line 1201 "parser.y" +#line 1202 "parser.y" { (yyval.val) = rl(cons(quasilist_s, (yyvsp[(2) - (2)].val)), num((yyvsp[(1) - (2)].lineno))); } break; case 338: /* Line 1806 of yacc.c */ -#line 1202 "parser.y" +#line 1203 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 339: /* Line 1806 of yacc.c */ -#line 1203 "parser.y" +#line 1204 "parser.y" { (yyval.val) = rl(rlc(list(quote_s, (yyvsp[(2) - (2)].val), nao), (yyvsp[(2) - (2)].val)), num(parser->lineno)); } break; @@ -5971,14 +5972,14 @@ yyreduce: case 340: /* Line 1806 of yacc.c */ -#line 1205 "parser.y" +#line 1206 "parser.y" { parser->quasi_level++; } break; case 341: /* Line 1806 of yacc.c */ -#line 1206 "parser.y" +#line 1207 "parser.y" { parser->quasi_level--; (yyval.val) = rl(rlc(list(sys_qquote_s, (yyvsp[(3) - (3)].val), nao), (yyvsp[(3) - (3)].val)), num(parser->lineno)); } @@ -5987,14 +5988,14 @@ yyreduce: case 342: /* Line 1806 of yacc.c */ -#line 1209 "parser.y" +#line 1210 "parser.y" { parser->quasi_level--; } break; case 343: /* Line 1806 of yacc.c */ -#line 1210 "parser.y" +#line 1211 "parser.y" { parser->quasi_level++; (yyval.val) = rl(rlc(list(sys_unquote_s, (yyvsp[(3) - (3)].val), nao), (yyvsp[(3) - (3)].val)), num(parser->lineno)); } @@ -6003,14 +6004,14 @@ yyreduce: case 344: /* Line 1806 of yacc.c */ -#line 1213 "parser.y" +#line 1214 "parser.y" { parser->quasi_level--; } break; case 345: /* Line 1806 of yacc.c */ -#line 1214 "parser.y" +#line 1215 "parser.y" { parser->quasi_level++; (yyval.val) = rl(rlc(list(sys_splice_s, (yyvsp[(3) - (3)].val), nao), (yyvsp[(3) - (3)].val)), num(parser->lineno)); } @@ -6019,7 +6020,7 @@ yyreduce: case 346: /* Line 1806 of yacc.c */ -#line 1217 "parser.y" +#line 1218 "parser.y" { uses_or2; (yyval.val) = rlc(list(rcons_s, (yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val), nao), or2((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val))); } @@ -6028,7 +6029,7 @@ yyreduce: case 347: /* Line 1806 of yacc.c */ -#line 1221 "parser.y" +#line 1222 "parser.y" { uses_or2; (yyval.val) = rlc(list(rcons_s, (yyvsp[(1) - (4)].val), uref_helper(parser, (yyvsp[(4) - (4)].val)), @@ -6039,7 +6040,7 @@ yyreduce: case 348: /* Line 1806 of yacc.c */ -#line 1227 "parser.y" +#line 1228 "parser.y" { uses_or2; (yyval.val) = rlc(list(rcons_s, (yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val), nao), or2((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val))); } @@ -6048,7 +6049,7 @@ yyreduce: case 349: /* Line 1806 of yacc.c */ -#line 1231 "parser.y" +#line 1232 "parser.y" { uses_or2; (yyval.val) = rlc(list(rcons_s, (yyvsp[(1) - (4)].val), uref_helper(parser, (yyvsp[(4) - (4)].val)), @@ -6059,14 +6060,14 @@ yyreduce: case 350: /* Line 1806 of yacc.c */ -#line 1236 "parser.y" +#line 1237 "parser.y" { (yyval.val) = qref_helper(parser, (yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val)); } break; case 351: /* Line 1806 of yacc.c */ -#line 1237 "parser.y" +#line 1238 "parser.y" { (yyval.val) = qref_helper(parser, cons(t, cons((yyvsp[(1) - (3)].val), nil)), (yyvsp[(3) - (3)].val)); } @@ -6075,28 +6076,28 @@ yyreduce: case 352: /* Line 1806 of yacc.c */ -#line 1240 "parser.y" +#line 1241 "parser.y" { (yyval.val) = uref_helper(parser, (yyvsp[(2) - (2)].val)); } break; case 353: /* Line 1806 of yacc.c */ -#line 1241 "parser.y" +#line 1242 "parser.y" { (yyval.val) = uoref_helper(parser, (yyvsp[(2) - (2)].val)); } break; case 354: /* Line 1806 of yacc.c */ -#line 1242 "parser.y" +#line 1243 "parser.y" { parser_circ_def(parser, (yyvsp[(1) - (1)].val), unique_s); } break; case 355: /* Line 1806 of yacc.c */ -#line 1243 "parser.y" +#line 1244 "parser.y" { parser_circ_def(parser, (yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val)); (yyval.val) = (yyvsp[(3) - (3)].val); } break; @@ -6104,49 +6105,49 @@ yyreduce: case 356: /* Line 1806 of yacc.c */ -#line 1245 "parser.y" +#line 1246 "parser.y" { (yyval.val) = parser_circ_ref(parser, (yyvsp[(1) - (1)].val)); } break; case 357: /* Line 1806 of yacc.c */ -#line 1248 "parser.y" +#line 1249 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 358: /* Line 1806 of yacc.c */ -#line 1249 "parser.y" +#line 1250 "parser.y" { (yyval.val) = nil; } break; case 359: /* Line 1806 of yacc.c */ -#line 1252 "parser.y" +#line 1253 "parser.y" { (yyval.val) = uref_helper(parser, (yyvsp[(2) - (2)].val)); } break; case 360: /* Line 1806 of yacc.c */ -#line 1253 "parser.y" +#line 1254 "parser.y" { (yyval.val) = uoref_helper(parser, (yyvsp[(2) - (2)].val)); } break; case 361: /* Line 1806 of yacc.c */ -#line 1254 "parser.y" +#line 1255 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 362: /* Line 1806 of yacc.c */ -#line 1257 "parser.y" +#line 1258 "parser.y" { (yyval.val) = regex_compile((yyvsp[(2) - (3)].val), nil); end_of_regex(scnr); rl((yyval.val), num(parser->lineno)); } @@ -6155,7 +6156,7 @@ yyreduce: case 363: /* Line 1806 of yacc.c */ -#line 1260 "parser.y" +#line 1261 "parser.y" { (yyval.val) = nil; yybadtok(yychar, lit("regex")); end_of_regex(scnr); } @@ -6164,7 +6165,7 @@ yyreduce: case 364: /* Line 1806 of yacc.c */ -#line 1266 "parser.y" +#line 1267 "parser.y" { (yyval.val) = regex_compile((yyvsp[(2) - (3)].val), nil); end_of_regex(scnr); rl((yyval.val), num(parser->lineno)); } @@ -6173,7 +6174,7 @@ yyreduce: case 365: /* Line 1806 of yacc.c */ -#line 1270 "parser.y" +#line 1271 "parser.y" { (yyval.val) = nil; yybadtok(yychar, lit("regex")); end_of_regex(scnr); } @@ -6182,7 +6183,7 @@ yyreduce: case 366: /* Line 1806 of yacc.c */ -#line 1275 "parser.y" +#line 1276 "parser.y" { (yyval.val) = if3(cdr((yyvsp[(1) - (1)].val)), cons(compound_s, (yyvsp[(1) - (1)].val)), car((yyvsp[(1) - (1)].val))); } @@ -6191,84 +6192,84 @@ yyreduce: case 367: /* Line 1806 of yacc.c */ -#line 1278 "parser.y" +#line 1279 "parser.y" { (yyval.val) = list(or_s, (yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val), nao); } break; case 368: /* Line 1806 of yacc.c */ -#line 1279 "parser.y" +#line 1280 "parser.y" { (yyval.val) = list(and_s, (yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val), nao); } break; case 369: /* Line 1806 of yacc.c */ -#line 1280 "parser.y" +#line 1281 "parser.y" { (yyval.val) = list(compl_s, (yyvsp[(2) - (2)].val), nao); } break; case 370: /* Line 1806 of yacc.c */ -#line 1281 "parser.y" +#line 1282 "parser.y" { (yyval.val) = nil; } break; case 371: /* Line 1806 of yacc.c */ -#line 1284 "parser.y" +#line 1285 "parser.y" { (yyval.val) = cons((yyvsp[(1) - (1)].val), nil); } break; case 372: /* Line 1806 of yacc.c */ -#line 1285 "parser.y" +#line 1286 "parser.y" { (yyval.val) = cons((yyvsp[(1) - (2)].val), (yyvsp[(2) - (2)].val)); } break; case 373: /* Line 1806 of yacc.c */ -#line 1286 "parser.y" +#line 1287 "parser.y" { (yyval.val) = list((yyvsp[(1) - (3)].val), list(compl_s, (yyvsp[(3) - (3)].val), nao), nao); } break; case 374: /* Line 1806 of yacc.c */ -#line 1289 "parser.y" +#line 1290 "parser.y" { (yyval.val) = list(zeroplus_s, (yyvsp[(1) - (2)].val), nao); } break; case 375: /* Line 1806 of yacc.c */ -#line 1290 "parser.y" +#line 1291 "parser.y" { (yyval.val) = list(oneplus_s, (yyvsp[(1) - (2)].val), nao); } break; case 376: /* Line 1806 of yacc.c */ -#line 1291 "parser.y" +#line 1292 "parser.y" { (yyval.val) = list(optional_s, (yyvsp[(1) - (2)].val), nao); } break; case 377: /* Line 1806 of yacc.c */ -#line 1292 "parser.y" +#line 1293 "parser.y" { (yyval.val) = list(nongreedy_s, (yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val), nao); } break; case 378: /* Line 1806 of yacc.c */ -#line 1293 "parser.y" +#line 1294 "parser.y" { if (first((yyvsp[(2) - (3)].val)) == chr('^')) { if (rest((yyvsp[(2) - (3)].val))) (yyval.val) = cons(cset_s, rest((yyvsp[(2) - (3)].val))); @@ -6281,14 +6282,14 @@ yyreduce: case 379: /* Line 1806 of yacc.c */ -#line 1300 "parser.y" +#line 1301 "parser.y" { (yyval.val) = cons(set_s, nil); } break; case 380: /* Line 1806 of yacc.c */ -#line 1301 "parser.y" +#line 1302 "parser.y" { (yyval.val) = nil; yybadtok(yychar, lit("regex character class")); } break; @@ -6296,56 +6297,56 @@ yyreduce: case 381: /* Line 1806 of yacc.c */ -#line 1303 "parser.y" +#line 1304 "parser.y" { (yyval.val) = wild_s; } break; case 382: /* Line 1806 of yacc.c */ -#line 1304 "parser.y" +#line 1305 "parser.y" { (yyval.val) = chr(']'); } break; case 383: /* Line 1806 of yacc.c */ -#line 1305 "parser.y" +#line 1306 "parser.y" { (yyval.val) = chr('-'); } break; case 384: /* Line 1806 of yacc.c */ -#line 1306 "parser.y" +#line 1307 "parser.y" { (yyval.val) = chr((yyvsp[(1) - (1)].chr)); } break; case 385: /* Line 1806 of yacc.c */ -#line 1307 "parser.y" +#line 1308 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 386: /* Line 1806 of yacc.c */ -#line 1308 "parser.y" +#line 1309 "parser.y" { (yyval.val) = list(compound_s, string_own((yyvsp[(1) - (1)].lexeme)), nao); } break; case 387: /* Line 1806 of yacc.c */ -#line 1309 "parser.y" +#line 1310 "parser.y" { (yyval.val) = (yyvsp[(2) - (3)].val); } break; case 388: /* Line 1806 of yacc.c */ -#line 1310 "parser.y" +#line 1311 "parser.y" { (yyval.val) = nil; yybadtok(yychar, lit("regex subexpression")); } break; @@ -6353,133 +6354,133 @@ yyreduce: case 389: /* Line 1806 of yacc.c */ -#line 1314 "parser.y" +#line 1315 "parser.y" { (yyval.val) = cons((yyvsp[(1) - (1)].val), nil); } break; case 390: /* Line 1806 of yacc.c */ -#line 1315 "parser.y" +#line 1316 "parser.y" { (yyval.val) = cons((yyvsp[(1) - (2)].val), (yyvsp[(2) - (2)].val)); } break; case 391: /* Line 1806 of yacc.c */ -#line 1318 "parser.y" +#line 1319 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 392: /* Line 1806 of yacc.c */ -#line 1319 "parser.y" +#line 1320 "parser.y" { (yyval.val) = chr((yyvsp[(1) - (1)].chr)); } break; case 393: /* Line 1806 of yacc.c */ -#line 1320 "parser.y" +#line 1321 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 394: /* Line 1806 of yacc.c */ -#line 1323 "parser.y" +#line 1324 "parser.y" { (yyval.val) = cons(chr((yyvsp[(1) - (3)].chr)), chr((yyvsp[(3) - (3)].chr))); } break; case 395: /* Line 1806 of yacc.c */ -#line 1325 "parser.y" +#line 1326 "parser.y" { (yyval.chr) = '?'; } break; case 396: /* Line 1806 of yacc.c */ -#line 1326 "parser.y" +#line 1327 "parser.y" { (yyval.chr) = '.'; } break; case 397: /* Line 1806 of yacc.c */ -#line 1327 "parser.y" +#line 1328 "parser.y" { (yyval.chr) = '*'; } break; case 398: /* Line 1806 of yacc.c */ -#line 1328 "parser.y" +#line 1329 "parser.y" { (yyval.chr) = '+'; } break; case 399: /* Line 1806 of yacc.c */ -#line 1329 "parser.y" +#line 1330 "parser.y" { (yyval.chr) = '('; } break; case 400: /* Line 1806 of yacc.c */ -#line 1330 "parser.y" +#line 1331 "parser.y" { (yyval.chr) = ')'; } break; case 401: /* Line 1806 of yacc.c */ -#line 1331 "parser.y" +#line 1332 "parser.y" { (yyval.chr) = '|'; } break; case 402: /* Line 1806 of yacc.c */ -#line 1332 "parser.y" +#line 1333 "parser.y" { (yyval.chr) = '~'; } break; case 403: /* Line 1806 of yacc.c */ -#line 1333 "parser.y" +#line 1334 "parser.y" { (yyval.chr) = '&'; } break; case 404: /* Line 1806 of yacc.c */ -#line 1334 "parser.y" +#line 1335 "parser.y" { (yyval.chr) = '%'; } break; case 405: /* Line 1806 of yacc.c */ -#line 1335 "parser.y" +#line 1336 "parser.y" { (yyval.chr) = '/'; } break; case 406: /* Line 1806 of yacc.c */ -#line 1336 "parser.y" +#line 1337 "parser.y" { (yyval.chr) = (yyvsp[(1) - (1)].chr); } break; case 407: /* Line 1806 of yacc.c */ -#line 1339 "parser.y" +#line 1340 "parser.y" { switch ((yyvsp[(1) - (1)].chr)) { case 's': (yyval.val) = space_k; break; @@ -6498,7 +6499,7 @@ yyreduce: case 409: /* Line 1806 of yacc.c */ -#line 1354 "parser.y" +#line 1355 "parser.y" { yyerr("newline expected after directive"); yyerrok; } break; @@ -6506,14 +6507,14 @@ yyreduce: case 410: /* Line 1806 of yacc.c */ -#line 1358 "parser.y" +#line 1359 "parser.y" { (yyval.val) = null_string; } break; case 411: /* Line 1806 of yacc.c */ -#line 1359 "parser.y" +#line 1360 "parser.y" { (yyval.val) = (yyvsp[(2) - (3)].val); rl((yyval.val), num(parser->lineno)); } break; @@ -6521,7 +6522,7 @@ yyreduce: case 412: /* Line 1806 of yacc.c */ -#line 1361 "parser.y" +#line 1362 "parser.y" { (yyval.val) = nil; yybadtok(yychar, lit("string literal")); } break; @@ -6529,7 +6530,7 @@ yyreduce: case 413: /* Line 1806 of yacc.c */ -#line 1365 "parser.y" +#line 1366 "parser.y" { wchar_t ch; val str = string_own((yyvsp[(2) - (2)].lexeme)); const wchar_t *cstr = c_str(str); @@ -6548,7 +6549,7 @@ yyreduce: case 414: /* Line 1806 of yacc.c */ -#line 1378 "parser.y" +#line 1379 "parser.y" { (yyval.val) = chr((yyvsp[(2) - (2)].chr)); end_of_char(scnr); } break; @@ -6556,7 +6557,7 @@ yyreduce: case 415: /* Line 1806 of yacc.c */ -#line 1380 "parser.y" +#line 1381 "parser.y" { free((yyvsp[(2) - (2)].lexeme)); yyerrorf(scnr, lit("invalid UTF-8 used as character name"), @@ -6566,7 +6567,7 @@ yyreduce: case 416: /* Line 1806 of yacc.c */ -#line 1384 "parser.y" +#line 1385 "parser.y" { (yyval.val) = nil; yybadtok(yychar, lit("character literal")); } @@ -6575,14 +6576,14 @@ yyreduce: case 417: /* Line 1806 of yacc.c */ -#line 1389 "parser.y" +#line 1390 "parser.y" { (yyval.val) = null_string; } break; case 418: /* Line 1806 of yacc.c */ -#line 1390 "parser.y" +#line 1391 "parser.y" { (yyval.val) = cons(quasi_s, (yyvsp[(2) - (3)].val)); rlc((yyval.val), (yyvsp[(2) - (3)].val)); rl((yyval.val), num(parser->lineno)); } @@ -6591,7 +6592,7 @@ yyreduce: case 419: /* Line 1806 of yacc.c */ -#line 1393 "parser.y" +#line 1394 "parser.y" { (yyval.val) = nil; yybadtok(yychar, lit("quasistring")); } break; @@ -6599,7 +6600,7 @@ yyreduce: case 420: /* Line 1806 of yacc.c */ -#line 1397 "parser.y" +#line 1398 "parser.y" { (yyval.val) = cons((yyvsp[(1) - (1)].val), nil); rl((yyval.val), num(parser->lineno)); } break; @@ -6607,7 +6608,7 @@ yyreduce: case 421: /* Line 1806 of yacc.c */ -#line 1399 "parser.y" +#line 1400 "parser.y" { (yyval.val) = cons((yyvsp[(1) - (2)].val), (yyvsp[(2) - (2)].val)); rl((yyval.val), num(parser->lineno)); } break; @@ -6615,21 +6616,21 @@ yyreduce: case 422: /* Line 1806 of yacc.c */ -#line 1403 "parser.y" +#line 1404 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 423: /* Line 1806 of yacc.c */ -#line 1404 "parser.y" +#line 1405 "parser.y" { (yyval.val) = (yyvsp[(1) - (1)].val); } break; case 424: /* Line 1806 of yacc.c */ -#line 1405 "parser.y" +#line 1406 "parser.y" { (yyval.val) = cons(var_s, cons((yyvsp[(1) - (1)].val), nil)); rl((yyval.val), num(parser->lineno)); } break; @@ -6637,7 +6638,7 @@ yyreduce: case 425: /* Line 1806 of yacc.c */ -#line 1407 "parser.y" +#line 1408 "parser.y" { if (integerp((yyvsp[(2) - (2)].val)) || symbolp((yyvsp[(2) - (2)].val))) (yyval.val) = rlcp_tree(cons(var_s, cons((yyvsp[(2) - (2)].val), nil)), (yyvsp[(2) - (2)].val)); @@ -6648,14 +6649,14 @@ yyreduce: case 426: /* Line 1806 of yacc.c */ -#line 1414 "parser.y" +#line 1415 "parser.y" { (yyval.val) = mkstring(one, chr((yyvsp[(1) - (1)].chr))); } break; case 427: /* Line 1806 of yacc.c */ -#line 1415 "parser.y" +#line 1416 "parser.y" { val ch = mkstring(one, chr((yyvsp[(1) - (2)].chr))); (yyval.val) = string_extend(ch, (yyvsp[(2) - (2)].val)); } break; @@ -6663,63 +6664,63 @@ yyreduce: case 428: /* Line 1806 of yacc.c */ -#line 1417 "parser.y" +#line 1418 "parser.y" { (yyval.val) = string_own((yyvsp[(1) - (1)].lexeme)); } break; case 429: /* Line 1806 of yacc.c */ -#line 1418 "parser.y" +#line 1419 "parser.y" { (yyval.val) = string_extend(string_own((yyvsp[(1) - (2)].lexeme)), (yyvsp[(2) - (2)].val)); } break; case 430: /* Line 1806 of yacc.c */ -#line 1421 "parser.y" +#line 1422 "parser.y" { (yyval.val) = mkstring(one, chr((yyvsp[(1) - (1)].chr))); } break; case 431: /* Line 1806 of yacc.c */ -#line 1422 "parser.y" +#line 1423 "parser.y" { (yyval.val) = string_extend((yyvsp[(1) - (2)].val), chr((yyvsp[(2) - (2)].chr))); } break; case 432: /* Line 1806 of yacc.c */ -#line 1423 "parser.y" +#line 1424 "parser.y" { (yyval.val) = string_own((yyvsp[(1) - (1)].lexeme)); } break; case 433: /* Line 1806 of yacc.c */ -#line 1424 "parser.y" +#line 1425 "parser.y" { (yyval.val) = string_extend((yyvsp[(1) - (2)].val), string_own((yyvsp[(2) - (2)].lexeme))); } break; case 434: /* Line 1806 of yacc.c */ -#line 1427 "parser.y" +#line 1428 "parser.y" { (yyval.val) = nil; } break; case 435: /* Line 1806 of yacc.c */ -#line 1428 "parser.y" +#line 1429 "parser.y" { (yyval.val) = (yyvsp[(2) - (2)].val); } break; case 436: /* Line 1806 of yacc.c */ -#line 1429 "parser.y" +#line 1430 "parser.y" { val word = (yyvsp[(1) - (2)].val); (yyval.val) = rlc(cons(word, (yyvsp[(2) - (2)].val)), (yyvsp[(1) - (2)].val)); } break; @@ -6727,7 +6728,7 @@ yyreduce: case 437: /* Line 1806 of yacc.c */ -#line 1431 "parser.y" +#line 1432 "parser.y" { (yyval.val) = nil; yybadtok(yychar, lit("word list")); } break; @@ -6735,21 +6736,21 @@ yyreduce: case 438: /* Line 1806 of yacc.c */ -#line 1435 "parser.y" +#line 1436 "parser.y" { (yyval.val) = nil; } break; case 439: /* Line 1806 of yacc.c */ -#line 1436 "parser.y" +#line 1437 "parser.y" { (yyval.val) = (yyvsp[(2) - (2)].val); } break; case 440: /* Line 1806 of yacc.c */ -#line 1437 "parser.y" +#line 1438 "parser.y" { val qword = cons(quasi_s, (yyvsp[(1) - (2)].val)); (yyval.val) = rlc(cons(qword, nil), (yyvsp[(1) - (2)].val)); } break; @@ -6757,7 +6758,7 @@ yyreduce: case 441: /* Line 1806 of yacc.c */ -#line 1441 "parser.y" +#line 1442 "parser.y" { val qword = cons(quasi_s, (yyvsp[(1) - (3)].val)); (yyval.val) = rlc(cons(qword, (yyvsp[(3) - (3)].val)), (yyvsp[(1) - (3)].val)); } break; @@ -6765,7 +6766,7 @@ yyreduce: case 442: /* Line 1806 of yacc.c */ -#line 1445 "parser.y" +#line 1446 "parser.y" { (yyval.val) = make_buf(zero, nil, nil); end_of_buflit(scnr); } break; @@ -6773,7 +6774,7 @@ yyreduce: case 443: /* Line 1806 of yacc.c */ -#line 1447 "parser.y" +#line 1448 "parser.y" { end_of_buflit(scnr); buf_trim((yyvsp[(2) - (3)].val)); (yyval.val) = (yyvsp[(2) - (3)].val); } @@ -6782,7 +6783,7 @@ yyreduce: case 444: /* Line 1806 of yacc.c */ -#line 1450 "parser.y" +#line 1451 "parser.y" { yyerr("unterminated buffer literal"); end_of_buflit(scnr); yyerrok; } @@ -6791,7 +6792,7 @@ yyreduce: case 445: /* Line 1806 of yacc.c */ -#line 1455 "parser.y" +#line 1456 "parser.y" { buf_put_u8((yyvsp[(1) - (2)].val), length_buf((yyval.val)), (yyvsp[(2) - (2)].val)); (yyval.val) = (yyvsp[(1) - (2)].val); } break; @@ -6799,7 +6800,7 @@ yyreduce: case 446: /* Line 1806 of yacc.c */ -#line 1457 "parser.y" +#line 1458 "parser.y" { (yyval.val) = make_buf(zero, nil, num_fast(512)); buf_put_u8((yyval.val), zero, (yyvsp[(1) - (1)].val)); } break; @@ -6807,14 +6808,14 @@ yyreduce: case 447: /* Line 1806 of yacc.c */ -#line 1461 "parser.y" +#line 1462 "parser.y" { (yyval.val) = num((yyvsp[(1) - (2)].chr) << 4 | (yyvsp[(2) - (2)].chr)); } break; case 448: /* Line 1806 of yacc.c */ -#line 1462 "parser.y" +#line 1463 "parser.y" { (yyval.val) = zero; yyerr("unpaired digit in buffer literal"); yyerrok; } @@ -6823,119 +6824,119 @@ yyreduce: case 449: /* Line 1806 of yacc.c */ -#line 1469 "parser.y" +#line 1470 "parser.y" { (yyval.val) = mkexp(all_s, nil, num(parser->lineno)); } break; case 450: /* Line 1806 of yacc.c */ -#line 1470 "parser.y" +#line 1471 "parser.y" { (yyval.val) = mkexp(some_s, nil, num(parser->lineno)); } break; case 451: /* Line 1806 of yacc.c */ -#line 1471 "parser.y" +#line 1472 "parser.y" { (yyval.val) = mkexp(none_s, nil, num(parser->lineno)); } break; case 452: /* Line 1806 of yacc.c */ -#line 1472 "parser.y" +#line 1473 "parser.y" { (yyval.val) = mkexp(maybe_s, nil, num(parser->lineno)); } break; case 453: /* Line 1806 of yacc.c */ -#line 1473 "parser.y" +#line 1474 "parser.y" { (yyval.val) = mkexp(cases_s, nil, num(parser->lineno)); } break; case 454: /* Line 1806 of yacc.c */ -#line 1474 "parser.y" +#line 1475 "parser.y" { (yyval.val) = mkexp(and_s, nil, num(parser->lineno)); } break; case 455: /* Line 1806 of yacc.c */ -#line 1475 "parser.y" +#line 1476 "parser.y" { (yyval.val) = mkexp(or_s, nil, num(parser->lineno)); } break; case 456: /* Line 1806 of yacc.c */ -#line 1476 "parser.y" +#line 1477 "parser.y" { (yyval.val) = mkexp(try_s, nil, num(parser->lineno)); } break; case 457: /* Line 1806 of yacc.c */ -#line 1477 "parser.y" +#line 1478 "parser.y" { (yyval.val) = mkexp(finally_s, nil, num(parser->lineno)); } break; case 458: /* Line 1806 of yacc.c */ -#line 1479 "parser.y" +#line 1480 "parser.y" { (yyval.val) = mkexp(block_s, (yyvsp[(2) - (3)].val), nil); } break; case 459: /* Line 1806 of yacc.c */ -#line 1481 "parser.y" +#line 1482 "parser.y" { (yyval.val) = mkexp(choose_s, (yyvsp[(2) - (3)].val), nil); } break; case 460: /* Line 1806 of yacc.c */ -#line 1483 "parser.y" +#line 1484 "parser.y" { (yyval.val) = mkexp(collect_s, (yyvsp[(2) - (3)].val), nil); } break; case 461: /* Line 1806 of yacc.c */ -#line 1485 "parser.y" +#line 1486 "parser.y" { (yyval.val) = mkexp(coll_s, (yyvsp[(2) - (3)].val), nil); } break; case 462: /* Line 1806 of yacc.c */ -#line 1487 "parser.y" +#line 1488 "parser.y" { (yyval.val) = mkexp(gather_s, (yyvsp[(2) - (3)].val), nil); } break; case 463: /* Line 1806 of yacc.c */ -#line 1489 "parser.y" +#line 1490 "parser.y" { (yyval.val) = mkexp(define_s, (yyvsp[(2) - (3)].val), nil); } break; case 464: /* Line 1806 of yacc.c */ -#line 1491 "parser.y" +#line 1492 "parser.y" { (yyval.val) = mkexp(catch_s, (yyvsp[(2) - (3)].val), nil); } break; case 465: /* Line 1806 of yacc.c */ -#line 1493 "parser.y" +#line 1494 "parser.y" { (yyval.val) = mkexp(if_s, cons((yyvsp[(2) - (5)].val), cons((yyvsp[(3) - (5)].val), (yyvsp[(4) - (5)].val))), @@ -6945,14 +6946,14 @@ yyreduce: case 466: /* Line 1806 of yacc.c */ -#line 1498 "parser.y" +#line 1499 "parser.y" { yyerr("@(output) doesn't nest"); } break; /* Line 1806 of yacc.c */ -#line 6986 "y.tab.c" +#line 6987 "y.tab.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -7183,7 +7184,7 @@ yyreturn: /* Line 2067 of yacc.c */ -#line 1502 "parser.y" +#line 1503 "parser.y" const int have_yydebug = YYDEBUG; |