Index: compilers/imcc/imcc.y =================================================================== --- compilers/imcc/imcc.y (revision 46484) +++ compilers/imcc/imcc.y (working copy) @@ -20,6 +20,7 @@ #define _PARSER #define PARSER_MAIN #include "imc.h" +#include "parrot/parrot.h" #include "parrot/dynext.h" #include "pmc/pmc_callcontext.h" #include "pbc.h" @@ -2495,32 +2496,17 @@ * outside the bison buffer, and thus, not "accessible" by * us. This means it may segfault. */ const char * const chr = yyget_text((yyscan_t)yyscanner); + PMC * err_msgs = IMCC_INFO(interp)->error_messages; - /* IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR, s); */ - /* --- This was called before, not sure if I should call some - similar function that does not die like this one. */ + IMCC_INFO(interp)->error_code = IMCC_PARSEFAIL_EXCEPTION; - /* Basically, if current token is a newline, it mean the error was - * before the newline, and thus, line is the line *after* the - * error. Instead of duplicating code for both cases (the 'newline' and - * non-newline case, do the test twice; efficiency is not important when - * we have an error anyway. */ - if (!at_eof(yyscanner)) { - IMCC_warning(interp, "error:imcc:%s", s); + /* don't bother printing the current token if it is either a newline or EOF */ + VTABLE_push_string(interp, err_msgs, + at_eof(yyscanner) || *chr == '\n' ? + Parrot_str_new(interp, s, 0) : + Parrot_sprintf_c(interp, "%s ('%s')", s, chr)); + VTABLE_push_string(interp, err_msgs, IMCC_inc_str(interp)); - /* don't print the current token if it is a newline */ - if (*chr != '\n') - IMCC_warning(interp, " ('%s')", chr); - - IMCC_print_inc(interp); - } - - /* scanner is at EOF; just to be sure, don't print "current" token */ - else { - IMCC_warning(interp, "error:imcc:%s", s); - IMCC_print_inc(interp); - } - return 0; } Index: compilers/imcc/imclexer.c =================================================================== --- compilers/imcc/imclexer.c (revision 46491) +++ compilers/imcc/imclexer.c (working copy) @@ -5847,12 +5847,12 @@ void imcc_run_compilation(PARROT_INTERP, void *yyscanner) { + IMCC_INFO(interp)->error_messages = + Parrot_pmc_new(interp, enum_class_ResizableStringArray); + IMCC_TRY(IMCC_INFO(interp)->jump_buf, IMCC_INFO(interp)->error_code) { - if (yyparse(yyscanner, interp)) { - IMCC_INFO(interp)->error_code = IMCC_PARSEFAIL_EXCEPTION; - IMCC_INFO(interp)->error_message = string_from_literal(interp, "syntax error ... somewhere"); - return; - } + if (yyparse(yyscanner, interp)) + return; /* error reporting handled in yyerror */ imc_compile_all_units(interp); } @@ -5868,28 +5868,43 @@ IMCC_END_TRY; } -void -IMCC_print_inc(PARROT_INTERP) +STRING * +IMCC_inc_str(PARROT_INTERP) { + return Parrot_str_join(interp, string_from_literal(interp, "\n"), + IMCC_inc_stack(interp)); +} + +PMC * +IMCC_inc_stack(PARROT_INTERP) +{ macro_frame_t *f; - const char *old = IMCC_INFO(interp)->frames->s.file; + PMC *inc_stack = Parrot_pmc_new(interp, enum_class_ResizableStringArray); + char *old; + if (IMCC_INFO(interp)->frames && IMCC_INFO(interp)->frames->is_macro) - fprintf(stderr, "\n\tin macro '.%s' line %d\n", - IMCC_INFO(interp)->frames->s.file, IMCC_INFO(interp)->line); + VTABLE_push_string(interp, inc_stack, + Parrot_sprintf_c(interp, "\tin macro '.%s' line %d", + IMCC_INFO(interp)->frames->s.file, IMCC_INFO(interp)->line)); else - fprintf(stderr, "\n\tin file '%s' line %d\n", - IMCC_INFO(interp)->frames->s.file, IMCC_INFO(interp)->line); + VTABLE_push_string(interp, inc_stack, + Parrot_sprintf_c(interp, "\tin file '%s' line %d", + IMCC_INFO(interp)->frames->s.file, IMCC_INFO(interp)->line)); - + old = IMCC_INFO(interp)->frames->s.file; for (f = IMCC_INFO(interp)->frames; f; f = (macro_frame_t *)f->s.next) { if (!STREQ(f->s.file, old)) { - fprintf(stderr, "\tincluded from '%s' line %d\n", - f->s.file, f->s.line); + VTABLE_push_string(interp, inc_stack, + Parrot_sprintf_c(interp, "\tincluded from '%s' line %d", + f->s.file, f->s.line)); } old = f->s.file; } + + + return inc_stack; } /* Index: compilers/imcc/imc.h =================================================================== --- compilers/imcc/imc.h (revision 46491) +++ compilers/imcc/imc.h (working copy) @@ -416,7 +416,8 @@ /* HEADERIZER END: compilers/imcc/parser_util.c */ /* imclexer.c */ -void IMCC_print_inc(PARROT_INTERP); +STRING *IMCC_inc_str(PARROT_INTERP); +PMC *IMCC_inc_stack(PARROT_INTERP); /* Call convention independent API */ @@ -554,7 +555,7 @@ SymReg *cur_namespace; struct nodeType_t *top_node; struct parser_state_t *state; - STRING *error_message; /* The Error message */ + PMC *error_messages; /* error messages (eg: syntax errors) */ /* some values that were global... */ Namespace *namespace_stack; Index: compilers/imcc/main.c =================================================================== --- compilers/imcc/main.c (revision 46491) +++ compilers/imcc/main.c (working copy) @@ -636,12 +636,16 @@ imcc_run_compilation(interp, yyscanner); if (IMCC_INFO(interp)->error_code) { - char * const error_str = Parrot_str_to_cstring(interp, - IMCC_INFO(interp)->error_message); + char *error_str; + PMC *err_msgs = IMCC_INFO(interp)->error_messages; + VTABLE_push_string(interp, err_msgs, IMCC_inc_str(interp)); + error_str = Parrot_str_to_cstring(interp, + Parrot_str_join(interp, + string_from_literal(interp, "\n"), + err_msgs)); IMCC_INFO(interp)->error_code=IMCC_FATAL_EXCEPTION; - fprintf(stderr, "error:imcc:%s", error_str); - IMCC_print_inc(interp); + fprintf(stderr, "error:imcc:%s\n", error_str); Parrot_str_free_cstring(error_str); Parrot_exit(interp, IMCC_FATAL_EXCEPTION); } Index: compilers/imcc/imcc.l =================================================================== --- compilers/imcc/imcc.l (revision 46491) +++ compilers/imcc/imcc.l (working copy) @@ -1359,12 +1359,12 @@ void imcc_run_compilation(PARROT_INTERP, void *yyscanner) { + IMCC_INFO(interp)->error_messages = + Parrot_pmc_new(interp, enum_class_ResizableStringArray); + IMCC_TRY(IMCC_INFO(interp)->jump_buf, IMCC_INFO(interp)->error_code) { - if (yyparse(yyscanner, interp)) { - IMCC_INFO(interp)->error_code = IMCC_PARSEFAIL_EXCEPTION; - IMCC_INFO(interp)->error_message = string_from_literal(interp, "syntax error ... somewhere"); - return; - } + if (yyparse(yyscanner, interp)) + return; /* error reporting handled in yyerror */ imc_compile_all_units(interp); } @@ -1380,28 +1380,43 @@ IMCC_END_TRY; } -void -IMCC_print_inc(PARROT_INTERP) +STRING * +IMCC_inc_str(PARROT_INTERP) { + return Parrot_str_join(interp, string_from_literal(interp, "\n"), + IMCC_inc_stack(interp)); +} + +PMC * +IMCC_inc_stack(PARROT_INTERP) +{ macro_frame_t *f; - const char *old = IMCC_INFO(interp)->frames->s.file; + PMC *inc_stack = Parrot_pmc_new(interp, enum_class_ResizableStringArray); + char *old; + if (IMCC_INFO(interp)->frames && IMCC_INFO(interp)->frames->is_macro) - fprintf(stderr, "\n\tin macro '.%s' line %d\n", - IMCC_INFO(interp)->frames->s.file, IMCC_INFO(interp)->line); + VTABLE_push_string(interp, inc_stack, + Parrot_sprintf_c(interp, "\tin macro '.%s' line %d", + IMCC_INFO(interp)->frames->s.file, IMCC_INFO(interp)->line)); else - fprintf(stderr, "\n\tin file '%s' line %d\n", - IMCC_INFO(interp)->frames->s.file, IMCC_INFO(interp)->line); + VTABLE_push_string(interp, inc_stack, + Parrot_sprintf_c(interp, "\tin file '%s' line %d", + IMCC_INFO(interp)->frames->s.file, IMCC_INFO(interp)->line)); - + old = IMCC_INFO(interp)->frames->s.file; for (f = IMCC_INFO(interp)->frames; f; f = (macro_frame_t *)f->s.next) { if (!STREQ(f->s.file, old)) { - fprintf(stderr, "\tincluded from '%s' line %d\n", - f->s.file, f->s.line); + VTABLE_push_string(interp, inc_stack, + Parrot_sprintf_c(interp, "\tincluded from '%s' line %d", + f->s.file, f->s.line)); } old = f->s.file; } + + + return inc_stack; } /* Index: compilers/imcc/imcparser.c =================================================================== --- compilers/imcc/imcparser.c (revision 46484) +++ compilers/imcc/imcparser.c (working copy) @@ -101,6 +101,7 @@ #define _PARSER #define PARSER_MAIN #include "imc.h" +#include "parrot/parrot.h" #include "parrot/dynext.h" #include "pmc/pmc_callcontext.h" #include "pbc.h" @@ -1147,7 +1148,7 @@ /* Line 189 of yacc.c */ -#line 1140 "compilers/imcc/imcparser.c" +#line 1141 "compilers/imcc/imcparser.c" /* Enabling traces. */ #ifndef YYDEBUG @@ -1420,7 +1421,7 @@ { /* Line 214 of yacc.c */ -#line 1068 "compilers/imcc/imcc.y" +#line 1069 "compilers/imcc/imcc.y" IdList * idlist; int t; @@ -1431,7 +1432,7 @@ /* Line 214 of yacc.c */ -#line 1424 "compilers/imcc/imcparser.c" +#line 1425 "compilers/imcc/imcparser.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -1443,7 +1444,7 @@ /* Line 264 of yacc.c */ -#line 1436 "compilers/imcc/imcparser.c" +#line 1437 "compilers/imcc/imcparser.c" #ifdef short # undef short @@ -1866,41 +1867,41 @@ /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 1163, 1163, 1167, 1168, 1172, 1173, 1174, 1180, 1186, - 1187, 1188, 1189, 1193, 1194, 1203, 1209, 1217, 1229, 1242, - 1242, 1251, 1251, 1258, 1258, 1267, 1268, 1272, 1273, 1277, - 1278, 1279, 1280, 1281, 1282, 1283, 1286, 1286, 1295, 1294, - 1307, 1311, 1324, 1328, 1332, 1332, 1344, 1346, 1350, 1365, - 1366, 1370, 1370, 1382, 1383, 1392, 1396, 1400, 1391, 1412, - 1413, 1414, 1427, 1427, 1431, 1456, 1460, 1466, 1475, 1481, - 1490, 1496, 1505, 1511, 1520, 1528, 1533, 1544, 1547, 1552, - 1560, 1561, 1562, 1563, 1564, 1575, 1586, 1589, 1591, 1596, - 1595, 1626, 1627, 1631, 1632, 1636, 1637, 1641, 1642, 1646, - 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, - 1657, 1658, 1659, 1663, 1668, 1672, 1676, 1680, 1684, 1689, - 1698, 1699, 1711, 1716, 1717, 1725, 1726, 1726, 1738, 1739, - 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1755, 1755, - 1758, 1766, 1766, 1772, 1773, 1778, 1786, 1787, 1792, 1800, - 1804, 1809, 1808, 1821, 1822, 1826, 1827, 1837, 1842, 1852, - 1861, 1862, 1874, 1878, 1880, 1881, 1882, 1883, 1884, 1888, - 1889, 1893, 1894, 1898, 1909, 1910, 1921, 1928, 1937, 1945, - 1947, 1952, 1953, 1954, 1954, 1967, 1984, 1997, 1997, 2004, - 2005, 2005, 2011, 2017, 2021, 2033, 2034, 2035, 2036, 2037, - 2038, 2042, 2043, 2044, 2045, 2049, 2051, 2053, 2055, 2057, - 2060, 2067, 2066, 2075, 2076, 2077, 2078, 2086, 2087, 2088, - 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, - 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2109, 2110, 2111, - 2112, 2113, 2114, 2120, 2119, 2131, 2136, 2137, 2138, 2139, - 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2153, - 2164, 2165, 2166, 2167, 2173, 2187, 2193, 2199, 2205, 2204, - 2213, 2214, 2224, 2234, 2241, 2246, 2256, 2260, 2261, 2265, - 2266, 2267, 2270, 2271, 2275, 2279, 2289, 2295, 2305, 2310, - 2314, 2315, 2319, 2323, 2327, 2334, 2338, 2342, 2349, 2350, - 2354, 2355, 2356, 2357, 2358, 2359, 2363, 2364, 2368, 2369, - 2373, 2374, 2378, 2379, 2386, 2393, 2394, 2395, 2399, 2400, - 2404, 2405, 2409, 2410, 2414, 2415, 2419, 2419, 2431, 2431, - 2443, 2444, 2452, 2459, 2460, 2461, 2462, 2463, 2467, 2468, - 2472, 2473, 2474 + 0, 1164, 1164, 1168, 1169, 1173, 1174, 1175, 1181, 1187, + 1188, 1189, 1190, 1194, 1195, 1204, 1210, 1218, 1230, 1243, + 1243, 1252, 1252, 1259, 1259, 1268, 1269, 1273, 1274, 1278, + 1279, 1280, 1281, 1282, 1283, 1284, 1287, 1287, 1296, 1295, + 1308, 1312, 1325, 1329, 1333, 1333, 1345, 1347, 1351, 1366, + 1367, 1371, 1371, 1383, 1384, 1393, 1397, 1401, 1392, 1413, + 1414, 1415, 1428, 1428, 1432, 1457, 1461, 1467, 1476, 1482, + 1491, 1497, 1506, 1512, 1521, 1529, 1534, 1545, 1548, 1553, + 1561, 1562, 1563, 1564, 1565, 1576, 1587, 1590, 1592, 1597, + 1596, 1627, 1628, 1632, 1633, 1637, 1638, 1642, 1643, 1647, + 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, + 1658, 1659, 1660, 1664, 1669, 1673, 1677, 1681, 1685, 1690, + 1699, 1700, 1712, 1717, 1718, 1726, 1727, 1727, 1739, 1740, + 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1756, 1756, + 1759, 1767, 1767, 1773, 1774, 1779, 1787, 1788, 1793, 1801, + 1805, 1810, 1809, 1822, 1823, 1827, 1828, 1838, 1843, 1853, + 1862, 1863, 1875, 1879, 1881, 1882, 1883, 1884, 1885, 1889, + 1890, 1894, 1895, 1899, 1910, 1911, 1922, 1929, 1938, 1946, + 1948, 1953, 1954, 1955, 1955, 1968, 1985, 1998, 1998, 2005, + 2006, 2006, 2012, 2018, 2022, 2034, 2035, 2036, 2037, 2038, + 2039, 2043, 2044, 2045, 2046, 2050, 2052, 2054, 2056, 2058, + 2061, 2068, 2067, 2076, 2077, 2078, 2079, 2087, 2088, 2089, + 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102, + 2103, 2104, 2105, 2106, 2107, 2108, 2109, 2110, 2111, 2112, + 2113, 2114, 2115, 2121, 2120, 2132, 2137, 2138, 2139, 2140, + 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2154, + 2165, 2166, 2167, 2168, 2174, 2188, 2194, 2200, 2206, 2205, + 2214, 2215, 2225, 2235, 2242, 2247, 2257, 2261, 2262, 2266, + 2267, 2268, 2271, 2272, 2276, 2280, 2290, 2296, 2306, 2311, + 2315, 2316, 2320, 2324, 2328, 2335, 2339, 2343, 2350, 2351, + 2355, 2356, 2357, 2358, 2359, 2360, 2364, 2365, 2369, 2370, + 2374, 2375, 2379, 2380, 2387, 2394, 2395, 2396, 2400, 2401, + 2405, 2406, 2410, 2411, 2415, 2416, 2420, 2420, 2432, 2432, + 2444, 2445, 2453, 2460, 2461, 2462, 2463, 2464, 2468, 2469, + 2473, 2474, 2475 }; #endif @@ -3260,28 +3261,28 @@ case 2: /* Line 1464 of yacc.c */ -#line 1163 "compilers/imcc/imcc.y" +#line 1164 "compilers/imcc/imcc.y" { if (yynerrs) YYABORT; (yyval.i) = 0; } break; case 5: /* Line 1464 of yacc.c */ -#line 1172 "compilers/imcc/imcc.y" +#line 1173 "compilers/imcc/imcc.y" { (yyval.i) = (yyvsp[(1) - (1)].i); } break; case 6: /* Line 1464 of yacc.c */ -#line 1173 "compilers/imcc/imcc.y" +#line 1174 "compilers/imcc/imcc.y" { (yyval.i) = (yyvsp[(1) - (1)].i); } break; case 7: /* Line 1464 of yacc.c */ -#line 1175 "compilers/imcc/imcc.y" +#line 1176 "compilers/imcc/imcc.y" { (yyval.i) = (yyvsp[(1) - (1)].i); imc_close_unit(interp, IMCC_INFO(interp)->cur_unit); @@ -3292,7 +3293,7 @@ case 8: /* Line 1464 of yacc.c */ -#line 1181 "compilers/imcc/imcc.y" +#line 1182 "compilers/imcc/imcc.y" { (yyval.i) = (yyvsp[(1) - (1)].i); imc_close_unit(interp, IMCC_INFO(interp)->cur_unit); @@ -3303,42 +3304,42 @@ case 9: /* Line 1464 of yacc.c */ -#line 1186 "compilers/imcc/imcc.y" +#line 1187 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 10: /* Line 1464 of yacc.c */ -#line 1187 "compilers/imcc/imcc.y" +#line 1188 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 11: /* Line 1464 of yacc.c */ -#line 1188 "compilers/imcc/imcc.y" +#line 1189 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 12: /* Line 1464 of yacc.c */ -#line 1189 "compilers/imcc/imcc.y" +#line 1190 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 13: /* Line 1464 of yacc.c */ -#line 1193 "compilers/imcc/imcc.y" +#line 1194 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 14: /* Line 1464 of yacc.c */ -#line 1195 "compilers/imcc/imcc.y" +#line 1196 "compilers/imcc/imcc.y" { (yyval.i) = 0; do_loadlib(interp, (yyvsp[(2) - (3)].s)); @@ -3349,7 +3350,7 @@ case 15: /* Line 1464 of yacc.c */ -#line 1204 "compilers/imcc/imcc.y" +#line 1205 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->line = atoi((yyvsp[(2) - (5)].s)); /* set_filename() frees the STRINGC */ @@ -3360,7 +3361,7 @@ case 16: /* Line 1464 of yacc.c */ -#line 1210 "compilers/imcc/imcc.y" +#line 1211 "compilers/imcc/imcc.y" { /* set_filename() frees the STRINGC */ set_filename(interp, (yyvsp[(2) - (3)].s)); @@ -3370,7 +3371,7 @@ case 17: /* Line 1464 of yacc.c */ -#line 1218 "compilers/imcc/imcc.y" +#line 1219 "compilers/imcc/imcc.y" { /* We'll want to store an entry while emitting instructions, so just * store annotation like it's an instruction. */ @@ -3383,7 +3384,7 @@ case 18: /* Line 1464 of yacc.c */ -#line 1230 "compilers/imcc/imcc.y" +#line 1231 "compilers/imcc/imcc.y" { STRING * const hll_name = Parrot_str_unescape(interp, (yyvsp[(2) - (2)].s) + 1, '"', NULL); Parrot_pcc_set_HLL(interp, CURRENT_CONTEXT(interp), @@ -3398,14 +3399,14 @@ case 19: /* Line 1464 of yacc.c */ -#line 1242 "compilers/imcc/imcc.y" +#line 1243 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->is_def = 1; } break; case 20: /* Line 1464 of yacc.c */ -#line 1243 "compilers/imcc/imcc.y" +#line 1244 "compilers/imcc/imcc.y" { mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1); mem_sys_free((yyvsp[(4) - (6)].s)); @@ -3416,14 +3417,14 @@ case 21: /* Line 1464 of yacc.c */ -#line 1251 "compilers/imcc/imcc.y" +#line 1252 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->is_def = 1; } break; case 22: /* Line 1464 of yacc.c */ -#line 1252 "compilers/imcc/imcc.y" +#line 1253 "compilers/imcc/imcc.y" { (yyval.i) = mk_pmc_const(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s)); mem_sys_free((yyvsp[(6) - (6)].s)); @@ -3434,14 +3435,14 @@ case 23: /* Line 1464 of yacc.c */ -#line 1258 "compilers/imcc/imcc.y" +#line 1259 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->is_def = 1; } break; case 24: /* Line 1464 of yacc.c */ -#line 1259 "compilers/imcc/imcc.y" +#line 1260 "compilers/imcc/imcc.y" { (yyval.i) = mk_pmc_const_named(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s)); mem_sys_free((yyvsp[(3) - (6)].s)); @@ -3453,49 +3454,49 @@ case 29: /* Line 1464 of yacc.c */ -#line 1277 "compilers/imcc/imcc.y" +#line 1278 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 30: /* Line 1464 of yacc.c */ -#line 1278 "compilers/imcc/imcc.y" +#line 1279 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 31: /* Line 1464 of yacc.c */ -#line 1279 "compilers/imcc/imcc.y" +#line 1280 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 32: /* Line 1464 of yacc.c */ -#line 1280 "compilers/imcc/imcc.y" +#line 1281 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 33: /* Line 1464 of yacc.c */ -#line 1281 "compilers/imcc/imcc.y" +#line 1282 "compilers/imcc/imcc.y" { (yyval.i) = (yyvsp[(1) - (1)].i); } break; case 36: /* Line 1464 of yacc.c */ -#line 1286 "compilers/imcc/imcc.y" +#line 1287 "compilers/imcc/imcc.y" { clear_state(interp); } break; case 37: /* Line 1464 of yacc.c */ -#line 1288 "compilers/imcc/imcc.y" +#line 1289 "compilers/imcc/imcc.y" { (yyval.i) = INS(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(2) - (3)].s), 0, IMCC_INFO(interp)->regs, @@ -3507,7 +3508,7 @@ case 38: /* Line 1464 of yacc.c */ -#line 1295 "compilers/imcc/imcc.y" +#line 1296 "compilers/imcc/imcc.y" { imc_close_unit(interp, IMCC_INFO(interp)->cur_unit); IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); @@ -3517,7 +3518,7 @@ case 39: /* Line 1464 of yacc.c */ -#line 1300 "compilers/imcc/imcc.y" +#line 1301 "compilers/imcc/imcc.y" { (yyval.i) = iSUBROUTINE(interp, IMCC_INFO(interp)->cur_unit, @@ -3530,7 +3531,7 @@ case 40: /* Line 1464 of yacc.c */ -#line 1308 "compilers/imcc/imcc.y" +#line 1309 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); } @@ -3539,7 +3540,7 @@ case 41: /* Line 1464 of yacc.c */ -#line 1312 "compilers/imcc/imcc.y" +#line 1313 "compilers/imcc/imcc.y" { char *name = mem_sys_strdup((yyvsp[(2) - (4)].s) + 1); SymReg *r = mk_pasm_reg(interp, (yyvsp[(4) - (4)].s)); @@ -3557,21 +3558,21 @@ case 42: /* Line 1464 of yacc.c */ -#line 1324 "compilers/imcc/imcc.y" +#line 1325 "compilers/imcc/imcc.y" { (yyval.i) = 0;} break; case 44: /* Line 1464 of yacc.c */ -#line 1332 "compilers/imcc/imcc.y" +#line 1333 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); } break; case 45: /* Line 1464 of yacc.c */ -#line 1335 "compilers/imcc/imcc.y" +#line 1336 "compilers/imcc/imcc.y" { /* if (optimizer_level & OPT_PASM) imc_compile_unit(interp, IMCC_INFO(interp)->cur_unit); @@ -3584,7 +3585,7 @@ case 48: /* Line 1464 of yacc.c */ -#line 1351 "compilers/imcc/imcc.y" +#line 1352 "compilers/imcc/imcc.y" { int re_open = 0; (yyval.i) = 0; @@ -3601,21 +3602,21 @@ case 49: /* Line 1464 of yacc.c */ -#line 1365 "compilers/imcc/imcc.y" +#line 1366 "compilers/imcc/imcc.y" { (yyval.sr) = (yyvsp[(2) - (3)].sr); } break; case 50: /* Line 1464 of yacc.c */ -#line 1366 "compilers/imcc/imcc.y" +#line 1367 "compilers/imcc/imcc.y" { (yyval.sr) = NULL; } break; case 51: /* Line 1464 of yacc.c */ -#line 1370 "compilers/imcc/imcc.y" +#line 1371 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->nkeys = 0; } @@ -3624,7 +3625,7 @@ case 52: /* Line 1464 of yacc.c */ -#line 1374 "compilers/imcc/imcc.y" +#line 1375 "compilers/imcc/imcc.y" { (yyval.sr) = link_keys(interp, IMCC_INFO(interp)->nkeys, @@ -3635,14 +3636,14 @@ case 53: /* Line 1464 of yacc.c */ -#line 1382 "compilers/imcc/imcc.y" +#line 1383 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); } break; case 54: /* Line 1464 of yacc.c */ -#line 1384 "compilers/imcc/imcc.y" +#line 1385 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr); (yyval.sr) = IMCC_INFO(interp)->keys[0]; @@ -3652,7 +3653,7 @@ case 55: /* Line 1464 of yacc.c */ -#line 1392 "compilers/imcc/imcc.y" +#line 1393 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PCCSUB); } @@ -3661,7 +3662,7 @@ case 56: /* Line 1464 of yacc.c */ -#line 1396 "compilers/imcc/imcc.y" +#line 1397 "compilers/imcc/imcc.y" { iSUBROUTINE(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (3)].sr)); } @@ -3670,7 +3671,7 @@ case 57: /* Line 1464 of yacc.c */ -#line 1400 "compilers/imcc/imcc.y" +#line 1401 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->cur_call->pcc_sub->pragma = (yyvsp[(5) - (6)].t); if (!IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->subid) { @@ -3683,28 +3684,28 @@ case 58: /* Line 1464 of yacc.c */ -#line 1408 "compilers/imcc/imcc.y" +#line 1409 "compilers/imcc/imcc.y" { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; } break; case 59: /* Line 1464 of yacc.c */ -#line 1412 "compilers/imcc/imcc.y" +#line 1413 "compilers/imcc/imcc.y" { (yyval.sr) = 0; } break; case 60: /* Line 1464 of yacc.c */ -#line 1413 "compilers/imcc/imcc.y" +#line 1414 "compilers/imcc/imcc.y" { (yyval.sr) = 0; } break; case 61: /* Line 1464 of yacc.c */ -#line 1415 "compilers/imcc/imcc.y" +#line 1416 "compilers/imcc/imcc.y" { if (IMCC_INFO(interp)->adv_named_id) { add_pcc_named_param(interp, IMCC_INFO(interp)->cur_call, @@ -3719,21 +3720,21 @@ case 62: /* Line 1464 of yacc.c */ -#line 1427 "compilers/imcc/imcc.y" +#line 1428 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->is_def = 1; } break; case 63: /* Line 1464 of yacc.c */ -#line 1427 "compilers/imcc/imcc.y" +#line 1428 "compilers/imcc/imcc.y" { (yyval.sr) = (yyvsp[(3) - (3)].sr); IMCC_INFO(interp)->is_def = 0; } break; case 64: /* Line 1464 of yacc.c */ -#line 1432 "compilers/imcc/imcc.y" +#line 1433 "compilers/imcc/imcc.y" { if ((yyvsp[(3) - (3)].t) & VT_OPT_FLAG && (yyvsp[(1) - (3)].t) != 'I') { const char *type; @@ -3758,14 +3759,14 @@ case 65: /* Line 1464 of yacc.c */ -#line 1456 "compilers/imcc/imcc.y" +#line 1457 "compilers/imcc/imcc.y" { (yyval.t) = 0; } break; case 66: /* Line 1464 of yacc.c */ -#line 1461 "compilers/imcc/imcc.y" +#line 1462 "compilers/imcc/imcc.y" { (yyval.t) = 0; IMCC_INFO(interp)->cur_unit->outer = mk_sub_address_fromc(interp, (yyvsp[(3) - (4)].s)); @@ -3776,7 +3777,7 @@ case 67: /* Line 1464 of yacc.c */ -#line 1467 "compilers/imcc/imcc.y" +#line 1468 "compilers/imcc/imcc.y" { (yyval.t) = 0; IMCC_INFO(interp)->cur_unit->outer = mk_const(interp, (yyvsp[(3) - (4)].s), 'S'); @@ -3787,7 +3788,7 @@ case 68: /* Line 1464 of yacc.c */ -#line 1476 "compilers/imcc/imcc.y" +#line 1477 "compilers/imcc/imcc.y" { (yyval.t) = P_VTABLE; IMCC_INFO(interp)->cur_unit->vtable_name = NULL; @@ -3798,7 +3799,7 @@ case 69: /* Line 1464 of yacc.c */ -#line 1482 "compilers/imcc/imcc.y" +#line 1483 "compilers/imcc/imcc.y" { (yyval.t) = P_VTABLE; IMCC_INFO(interp)->cur_unit->vtable_name = (yyvsp[(3) - (4)].s); @@ -3809,7 +3810,7 @@ case 70: /* Line 1464 of yacc.c */ -#line 1491 "compilers/imcc/imcc.y" +#line 1492 "compilers/imcc/imcc.y" { (yyval.t) = P_METHOD; IMCC_INFO(interp)->cur_unit->method_name = NULL; @@ -3820,7 +3821,7 @@ case 71: /* Line 1464 of yacc.c */ -#line 1497 "compilers/imcc/imcc.y" +#line 1498 "compilers/imcc/imcc.y" { (yyval.t) = P_METHOD; IMCC_INFO(interp)->cur_unit->method_name = (yyvsp[(3) - (4)].s); @@ -3831,7 +3832,7 @@ case 72: /* Line 1464 of yacc.c */ -#line 1506 "compilers/imcc/imcc.y" +#line 1507 "compilers/imcc/imcc.y" { (yyval.t) = P_NSENTRY; IMCC_INFO(interp)->cur_unit->ns_entry_name = NULL; @@ -3842,7 +3843,7 @@ case 73: /* Line 1464 of yacc.c */ -#line 1512 "compilers/imcc/imcc.y" +#line 1513 "compilers/imcc/imcc.y" { (yyval.t) = P_NSENTRY; IMCC_INFO(interp)->cur_unit->ns_entry_name = (yyvsp[(3) - (4)].s); @@ -3853,7 +3854,7 @@ case 74: /* Line 1464 of yacc.c */ -#line 1521 "compilers/imcc/imcc.y" +#line 1522 "compilers/imcc/imcc.y" { (yyval.t) = 0; IMCC_INFO(interp)->cur_unit->instance_of = (yyvsp[(3) - (4)].s); @@ -3863,7 +3864,7 @@ case 75: /* Line 1464 of yacc.c */ -#line 1529 "compilers/imcc/imcc.y" +#line 1530 "compilers/imcc/imcc.y" { (yyval.t) = 0; IMCC_INFO(interp)->cur_unit->subid = NULL; @@ -3873,7 +3874,7 @@ case 76: /* Line 1464 of yacc.c */ -#line 1534 "compilers/imcc/imcc.y" +#line 1535 "compilers/imcc/imcc.y" { (yyval.t) = 0; IMCC_INFO(interp)->cur_unit->subid = mk_const(interp, (yyvsp[(3) - (4)].s), 'S'); @@ -3885,7 +3886,7 @@ case 77: /* Line 1464 of yacc.c */ -#line 1544 "compilers/imcc/imcc.y" +#line 1545 "compilers/imcc/imcc.y" { add_pcc_multi(interp, IMCC_INFO(interp)->cur_call, NULL); } @@ -3894,7 +3895,7 @@ case 78: /* Line 1464 of yacc.c */ -#line 1548 "compilers/imcc/imcc.y" +#line 1549 "compilers/imcc/imcc.y" { (yyval.t) = 0; add_pcc_multi(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr)); @@ -3904,7 +3905,7 @@ case 79: /* Line 1464 of yacc.c */ -#line 1553 "compilers/imcc/imcc.y" +#line 1554 "compilers/imcc/imcc.y" { (yyval.t) = 0; add_pcc_multi(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr)); @@ -3914,35 +3915,35 @@ case 80: /* Line 1464 of yacc.c */ -#line 1560 "compilers/imcc/imcc.y" +#line 1561 "compilers/imcc/imcc.y" { (yyval.sr) = mk_const(interp, "INTVAL", 'S'); } break; case 81: /* Line 1464 of yacc.c */ -#line 1561 "compilers/imcc/imcc.y" +#line 1562 "compilers/imcc/imcc.y" { (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); } break; case 82: /* Line 1464 of yacc.c */ -#line 1562 "compilers/imcc/imcc.y" +#line 1563 "compilers/imcc/imcc.y" { (yyval.sr) = mk_const(interp, "PMC", 'S'); } break; case 83: /* Line 1464 of yacc.c */ -#line 1563 "compilers/imcc/imcc.y" +#line 1564 "compilers/imcc/imcc.y" { (yyval.sr) = mk_const(interp, "STRING", 'S'); } break; case 84: /* Line 1464 of yacc.c */ -#line 1565 "compilers/imcc/imcc.y" +#line 1566 "compilers/imcc/imcc.y" { SymReg *r; if (strcmp((yyvsp[(1) - (1)].s), "_") != 0) @@ -3958,7 +3959,7 @@ case 85: /* Line 1464 of yacc.c */ -#line 1576 "compilers/imcc/imcc.y" +#line 1577 "compilers/imcc/imcc.y" { SymReg *r; if (strcmp((yyvsp[(1) - (1)].s), "_") != 0) @@ -3974,14 +3975,14 @@ case 86: /* Line 1464 of yacc.c */ -#line 1586 "compilers/imcc/imcc.y" +#line 1587 "compilers/imcc/imcc.y" { (yyval.sr) = (yyvsp[(2) - (3)].sr); } break; case 89: /* Line 1464 of yacc.c */ -#line 1596 "compilers/imcc/imcc.y" +#line 1597 "compilers/imcc/imcc.y" { char name[128]; SymReg *r, *r1; @@ -4008,112 +4009,112 @@ case 90: /* Line 1464 of yacc.c */ -#line 1622 "compilers/imcc/imcc.y" +#line 1623 "compilers/imcc/imcc.y" { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; } break; case 91: /* Line 1464 of yacc.c */ -#line 1626 "compilers/imcc/imcc.y" +#line 1627 "compilers/imcc/imcc.y" { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; } break; case 92: /* Line 1464 of yacc.c */ -#line 1627 "compilers/imcc/imcc.y" +#line 1628 "compilers/imcc/imcc.y" { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; } break; case 93: /* Line 1464 of yacc.c */ -#line 1631 "compilers/imcc/imcc.y" +#line 1632 "compilers/imcc/imcc.y" { (yyval.i) = NULL; } break; case 94: /* Line 1464 of yacc.c */ -#line 1632 "compilers/imcc/imcc.y" +#line 1633 "compilers/imcc/imcc.y" { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->object = (yyvsp[(2) - (3)].sr); } break; case 95: /* Line 1464 of yacc.c */ -#line 1636 "compilers/imcc/imcc.y" +#line 1637 "compilers/imcc/imcc.y" { (yyval.t) = 0; } break; case 97: /* Line 1464 of yacc.c */ -#line 1641 "compilers/imcc/imcc.y" +#line 1642 "compilers/imcc/imcc.y" { (yyval.t) = (yyvsp[(1) - (1)].t); } break; case 98: /* Line 1464 of yacc.c */ -#line 1642 "compilers/imcc/imcc.y" +#line 1643 "compilers/imcc/imcc.y" { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); } break; case 99: /* Line 1464 of yacc.c */ -#line 1646 "compilers/imcc/imcc.y" +#line 1647 "compilers/imcc/imcc.y" { (yyval.t) = P_LOAD; } break; case 100: /* Line 1464 of yacc.c */ -#line 1647 "compilers/imcc/imcc.y" +#line 1648 "compilers/imcc/imcc.y" { (yyval.t) = P_INIT; } break; case 101: /* Line 1464 of yacc.c */ -#line 1648 "compilers/imcc/imcc.y" +#line 1649 "compilers/imcc/imcc.y" { (yyval.t) = P_MAIN; } break; case 102: /* Line 1464 of yacc.c */ -#line 1649 "compilers/imcc/imcc.y" +#line 1650 "compilers/imcc/imcc.y" { (yyval.t) = P_IMMEDIATE; } break; case 103: /* Line 1464 of yacc.c */ -#line 1650 "compilers/imcc/imcc.y" +#line 1651 "compilers/imcc/imcc.y" { (yyval.t) = P_POSTCOMP; } break; case 104: /* Line 1464 of yacc.c */ -#line 1651 "compilers/imcc/imcc.y" +#line 1652 "compilers/imcc/imcc.y" { (yyval.t) = P_ANON; } break; case 105: /* Line 1464 of yacc.c */ -#line 1652 "compilers/imcc/imcc.y" +#line 1653 "compilers/imcc/imcc.y" { (yyval.t) = P_NEED_LEX; } break; case 113: /* Line 1464 of yacc.c */ -#line 1664 "compilers/imcc/imcc.y" +#line 1665 "compilers/imcc/imcc.y" { add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr)); add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr)); @@ -4123,7 +4124,7 @@ case 114: /* Line 1464 of yacc.c */ -#line 1669 "compilers/imcc/imcc.y" +#line 1670 "compilers/imcc/imcc.y" { add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); } @@ -4132,7 +4133,7 @@ case 115: /* Line 1464 of yacc.c */ -#line 1673 "compilers/imcc/imcc.y" +#line 1674 "compilers/imcc/imcc.y" { add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); } @@ -4141,7 +4142,7 @@ case 116: /* Line 1464 of yacc.c */ -#line 1677 "compilers/imcc/imcc.y" +#line 1678 "compilers/imcc/imcc.y" { add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); } @@ -4150,7 +4151,7 @@ case 117: /* Line 1464 of yacc.c */ -#line 1681 "compilers/imcc/imcc.y" +#line 1682 "compilers/imcc/imcc.y" { add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (3)].s), 'S')); } @@ -4159,7 +4160,7 @@ case 118: /* Line 1464 of yacc.c */ -#line 1685 "compilers/imcc/imcc.y" +#line 1686 "compilers/imcc/imcc.y" { add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr)); add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr)); @@ -4169,7 +4170,7 @@ case 119: /* Line 1464 of yacc.c */ -#line 1690 "compilers/imcc/imcc.y" +#line 1691 "compilers/imcc/imcc.y" { add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (5)].s), 'S')); add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr)); @@ -4179,14 +4180,14 @@ case 120: /* Line 1464 of yacc.c */ -#line 1698 "compilers/imcc/imcc.y" +#line 1699 "compilers/imcc/imcc.y" { (yyval.sr) = 0; } break; case 121: /* Line 1464 of yacc.c */ -#line 1699 "compilers/imcc/imcc.y" +#line 1700 "compilers/imcc/imcc.y" { if (IMCC_INFO(interp)->adv_named_id) { add_pcc_named_param(interp, IMCC_INFO(interp)->cur_call, @@ -4201,21 +4202,21 @@ case 122: /* Line 1464 of yacc.c */ -#line 1711 "compilers/imcc/imcc.y" +#line 1712 "compilers/imcc/imcc.y" { (yyval.sr) = (yyvsp[(2) - (2)].sr); } break; case 123: /* Line 1464 of yacc.c */ -#line 1716 "compilers/imcc/imcc.y" +#line 1717 "compilers/imcc/imcc.y" { (yyval.sr) = 0; } break; case 124: /* Line 1464 of yacc.c */ -#line 1718 "compilers/imcc/imcc.y" +#line 1719 "compilers/imcc/imcc.y" { if ((yyvsp[(2) - (3)].sr)) add_pcc_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); @@ -4225,21 +4226,21 @@ case 125: /* Line 1464 of yacc.c */ -#line 1725 "compilers/imcc/imcc.y" +#line 1726 "compilers/imcc/imcc.y" { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); } break; case 126: /* Line 1464 of yacc.c */ -#line 1726 "compilers/imcc/imcc.y" +#line 1727 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->is_def = 1; } break; case 127: /* Line 1464 of yacc.c */ -#line 1727 "compilers/imcc/imcc.y" +#line 1728 "compilers/imcc/imcc.y" { IdList * const l = (yyvsp[(4) - (4)].idlist); SymReg *ignored; @@ -4253,91 +4254,91 @@ case 128: /* Line 1464 of yacc.c */ -#line 1738 "compilers/imcc/imcc.y" +#line 1739 "compilers/imcc/imcc.y" { (yyval.t) = 0; } break; case 129: /* Line 1464 of yacc.c */ -#line 1739 "compilers/imcc/imcc.y" +#line 1740 "compilers/imcc/imcc.y" { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); } break; case 130: /* Line 1464 of yacc.c */ -#line 1743 "compilers/imcc/imcc.y" +#line 1744 "compilers/imcc/imcc.y" { (yyval.t) = VT_FLAT; } break; case 131: /* Line 1464 of yacc.c */ -#line 1744 "compilers/imcc/imcc.y" +#line 1745 "compilers/imcc/imcc.y" { (yyval.t) = VT_OPTIONAL; } break; case 132: /* Line 1464 of yacc.c */ -#line 1745 "compilers/imcc/imcc.y" +#line 1746 "compilers/imcc/imcc.y" { (yyval.t) = VT_OPT_FLAG; } break; case 133: /* Line 1464 of yacc.c */ -#line 1746 "compilers/imcc/imcc.y" +#line 1747 "compilers/imcc/imcc.y" { (yyval.t) = VT_NAMED; } break; case 134: /* Line 1464 of yacc.c */ -#line 1747 "compilers/imcc/imcc.y" +#line 1748 "compilers/imcc/imcc.y" { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = VT_NAMED; mem_sys_free((yyvsp[(3) - (4)].s)); } break; case 135: /* Line 1464 of yacc.c */ -#line 1748 "compilers/imcc/imcc.y" +#line 1749 "compilers/imcc/imcc.y" { adv_named_set_u(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = VT_NAMED; mem_sys_free((yyvsp[(3) - (4)].s)); } break; case 136: /* Line 1464 of yacc.c */ -#line 1749 "compilers/imcc/imcc.y" +#line 1750 "compilers/imcc/imcc.y" { (yyval.t) = 0; } break; case 137: /* Line 1464 of yacc.c */ -#line 1750 "compilers/imcc/imcc.y" +#line 1751 "compilers/imcc/imcc.y" { (yyval.t) = VT_CALL_SIG; } break; case 138: /* Line 1464 of yacc.c */ -#line 1755 "compilers/imcc/imcc.y" +#line 1756 "compilers/imcc/imcc.y" { begin_return_or_yield(interp, 0); } break; case 139: /* Line 1464 of yacc.c */ -#line 1757 "compilers/imcc/imcc.y" +#line 1758 "compilers/imcc/imcc.y" { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; } break; case 140: /* Line 1464 of yacc.c */ -#line 1759 "compilers/imcc/imcc.y" +#line 1760 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->asm_state = AsmDefault; (yyval.i) = 0; @@ -4347,28 +4348,28 @@ case 141: /* Line 1464 of yacc.c */ -#line 1766 "compilers/imcc/imcc.y" +#line 1767 "compilers/imcc/imcc.y" { begin_return_or_yield(interp, 1); } break; case 142: /* Line 1464 of yacc.c */ -#line 1768 "compilers/imcc/imcc.y" +#line 1769 "compilers/imcc/imcc.y" { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; } break; case 143: /* Line 1464 of yacc.c */ -#line 1772 "compilers/imcc/imcc.y" +#line 1773 "compilers/imcc/imcc.y" { (yyval.sr) = 0; } break; case 144: /* Line 1464 of yacc.c */ -#line 1774 "compilers/imcc/imcc.y" +#line 1775 "compilers/imcc/imcc.y" { if ((yyvsp[(1) - (2)].sr)) add_pcc_result(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr)); @@ -4378,7 +4379,7 @@ case 145: /* Line 1464 of yacc.c */ -#line 1779 "compilers/imcc/imcc.y" +#line 1780 "compilers/imcc/imcc.y" { if ((yyvsp[(2) - (3)].sr)) add_pcc_result(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr)); @@ -4388,14 +4389,14 @@ case 146: /* Line 1464 of yacc.c */ -#line 1786 "compilers/imcc/imcc.y" +#line 1787 "compilers/imcc/imcc.y" { (yyval.sr) = 0; } break; case 147: /* Line 1464 of yacc.c */ -#line 1788 "compilers/imcc/imcc.y" +#line 1789 "compilers/imcc/imcc.y" { if ((yyvsp[(1) - (2)].sr)) add_pcc_result(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr)); @@ -4405,7 +4406,7 @@ case 148: /* Line 1464 of yacc.c */ -#line 1793 "compilers/imcc/imcc.y" +#line 1794 "compilers/imcc/imcc.y" { if ((yyvsp[(2) - (3)].sr)) add_pcc_result(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr)); @@ -4415,21 +4416,21 @@ case 149: /* Line 1464 of yacc.c */ -#line 1800 "compilers/imcc/imcc.y" +#line 1801 "compilers/imcc/imcc.y" { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); } break; case 150: /* Line 1464 of yacc.c */ -#line 1804 "compilers/imcc/imcc.y" +#line 1805 "compilers/imcc/imcc.y" { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); } break; case 151: /* Line 1464 of yacc.c */ -#line 1809 "compilers/imcc/imcc.y" +#line 1810 "compilers/imcc/imcc.y" { if (IMCC_INFO(interp)->asm_state == AsmDefault) begin_return_or_yield(interp, (yyvsp[(1) - (2)].t)); @@ -4439,7 +4440,7 @@ case 152: /* Line 1464 of yacc.c */ -#line 1814 "compilers/imcc/imcc.y" +#line 1815 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->asm_state = AsmDefault; (yyval.t) = 0; @@ -4449,28 +4450,28 @@ case 153: /* Line 1464 of yacc.c */ -#line 1821 "compilers/imcc/imcc.y" +#line 1822 "compilers/imcc/imcc.y" { (yyval.t) = 0; } break; case 154: /* Line 1464 of yacc.c */ -#line 1822 "compilers/imcc/imcc.y" +#line 1823 "compilers/imcc/imcc.y" { (yyval.t) = 1; } break; case 155: /* Line 1464 of yacc.c */ -#line 1826 "compilers/imcc/imcc.y" +#line 1827 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 156: /* Line 1464 of yacc.c */ -#line 1828 "compilers/imcc/imcc.y" +#line 1829 "compilers/imcc/imcc.y" { if (IMCC_INFO(interp)->adv_named_id) { add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, @@ -4485,7 +4486,7 @@ case 157: /* Line 1464 of yacc.c */ -#line 1838 "compilers/imcc/imcc.y" +#line 1839 "compilers/imcc/imcc.y" { SymReg * const name = mk_const(interp, (yyvsp[(1) - (3)].s), 'S'); add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, name, (yyvsp[(3) - (3)].sr)); @@ -4495,7 +4496,7 @@ case 158: /* Line 1464 of yacc.c */ -#line 1843 "compilers/imcc/imcc.y" +#line 1844 "compilers/imcc/imcc.y" { if (IMCC_INFO(interp)->adv_named_id) { add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, @@ -4510,7 +4511,7 @@ case 159: /* Line 1464 of yacc.c */ -#line 1853 "compilers/imcc/imcc.y" +#line 1854 "compilers/imcc/imcc.y" { SymReg * const name = mk_const(interp, (yyvsp[(3) - (5)].s), 'S'); add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, name, (yyvsp[(5) - (5)].sr)); @@ -4520,63 +4521,63 @@ case 162: /* Line 1464 of yacc.c */ -#line 1874 "compilers/imcc/imcc.y" +#line 1875 "compilers/imcc/imcc.y" { clear_state(interp); } break; case 163: /* Line 1464 of yacc.c */ -#line 1879 "compilers/imcc/imcc.y" +#line 1880 "compilers/imcc/imcc.y" { (yyval.i) = (yyvsp[(2) - (2)].i); } break; case 164: /* Line 1464 of yacc.c */ -#line 1880 "compilers/imcc/imcc.y" +#line 1881 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 165: /* Line 1464 of yacc.c */ -#line 1881 "compilers/imcc/imcc.y" +#line 1882 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 166: /* Line 1464 of yacc.c */ -#line 1882 "compilers/imcc/imcc.y" +#line 1883 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 167: /* Line 1464 of yacc.c */ -#line 1883 "compilers/imcc/imcc.y" +#line 1884 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 168: /* Line 1464 of yacc.c */ -#line 1884 "compilers/imcc/imcc.y" +#line 1885 "compilers/imcc/imcc.y" { (yyval.i) = (yyvsp[(1) - (1)].i); } break; case 169: /* Line 1464 of yacc.c */ -#line 1888 "compilers/imcc/imcc.y" +#line 1889 "compilers/imcc/imcc.y" { (yyval.i) = NULL; } break; case 173: /* Line 1464 of yacc.c */ -#line 1899 "compilers/imcc/imcc.y" +#line 1900 "compilers/imcc/imcc.y" { Instruction * const i = iLABEL(interp, IMCC_INFO(interp)->cur_unit, mk_local_label(interp, (yyvsp[(1) - (1)].s))); mem_sys_free((yyvsp[(1) - (1)].s)); @@ -4587,14 +4588,14 @@ case 174: /* Line 1464 of yacc.c */ -#line 1909 "compilers/imcc/imcc.y" +#line 1910 "compilers/imcc/imcc.y" { (yyval.i) = (yyvsp[(2) - (3)].i); } break; case 175: /* Line 1464 of yacc.c */ -#line 1911 "compilers/imcc/imcc.y" +#line 1912 "compilers/imcc/imcc.y" { if (yynerrs >= PARROT_MAX_RECOVER_ERRORS) { IMCC_warning(interp, "Too many errors. Correct some first.\n"); @@ -4607,7 +4608,7 @@ case 176: /* Line 1464 of yacc.c */ -#line 1922 "compilers/imcc/imcc.y" +#line 1923 "compilers/imcc/imcc.y" { IdList* const l = (yyvsp[(1) - (1)].idlist); l->next = NULL; @@ -4618,7 +4619,7 @@ case 177: /* Line 1464 of yacc.c */ -#line 1929 "compilers/imcc/imcc.y" +#line 1930 "compilers/imcc/imcc.y" { IdList* const l = (yyvsp[(3) - (3)].idlist); l->next = (yyvsp[(1) - (3)].idlist); @@ -4629,7 +4630,7 @@ case 178: /* Line 1464 of yacc.c */ -#line 1938 "compilers/imcc/imcc.y" +#line 1939 "compilers/imcc/imcc.y" { IdList* const l = mem_gc_allocate_n_zeroed_typed(interp, 1, IdList); l->id = (yyvsp[(1) - (2)].s); @@ -4640,14 +4641,14 @@ case 183: /* Line 1464 of yacc.c */ -#line 1954 "compilers/imcc/imcc.y" +#line 1955 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->is_def = 1; } break; case 184: /* Line 1464 of yacc.c */ -#line 1955 "compilers/imcc/imcc.y" +#line 1956 "compilers/imcc/imcc.y" { IdList *l = (yyvsp[(4) - (4)].idlist); while (l) { @@ -4665,7 +4666,7 @@ case 185: /* Line 1464 of yacc.c */ -#line 1968 "compilers/imcc/imcc.y" +#line 1969 "compilers/imcc/imcc.y" { if ((yyvsp[(4) - (4)].sr)->set != 'P') { mem_sys_free((yyvsp[(2) - (4)].s)); @@ -4687,7 +4688,7 @@ case 186: /* Line 1464 of yacc.c */ -#line 1985 "compilers/imcc/imcc.y" +#line 1986 "compilers/imcc/imcc.y" { if ((yyvsp[(4) - (4)].sr)->set != 'P') { mem_sys_free((yyvsp[(2) - (4)].s)); @@ -4705,14 +4706,14 @@ case 187: /* Line 1464 of yacc.c */ -#line 1997 "compilers/imcc/imcc.y" +#line 1998 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->is_def = 1; } break; case 188: /* Line 1464 of yacc.c */ -#line 1998 "compilers/imcc/imcc.y" +#line 1999 "compilers/imcc/imcc.y" { mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 0); IMCC_INFO(interp)->is_def = 0; @@ -4723,14 +4724,14 @@ case 190: /* Line 1464 of yacc.c */ -#line 2005 "compilers/imcc/imcc.y" +#line 2006 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->is_def = 1; } break; case 191: /* Line 1464 of yacc.c */ -#line 2006 "compilers/imcc/imcc.y" +#line 2007 "compilers/imcc/imcc.y" { mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1); IMCC_INFO(interp)->is_def = 0; @@ -4741,7 +4742,7 @@ case 192: /* Line 1464 of yacc.c */ -#line 2012 "compilers/imcc/imcc.y" +#line 2013 "compilers/imcc/imcc.y" { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->tailcall = 1; @@ -4752,7 +4753,7 @@ case 193: /* Line 1464 of yacc.c */ -#line 2018 "compilers/imcc/imcc.y" +#line 2019 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr)); } @@ -4761,7 +4762,7 @@ case 194: /* Line 1464 of yacc.c */ -#line 2022 "compilers/imcc/imcc.y" +#line 2023 "compilers/imcc/imcc.y" { (yyval.i) = INS(interp, IMCC_INFO(interp)->cur_unit, @@ -4778,98 +4779,98 @@ case 195: /* Line 1464 of yacc.c */ -#line 2033 "compilers/imcc/imcc.y" +#line 2034 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); } break; case 196: /* Line 1464 of yacc.c */ -#line 2034 "compilers/imcc/imcc.y" +#line 2035 "compilers/imcc/imcc.y" { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; } break; case 197: /* Line 1464 of yacc.c */ -#line 2035 "compilers/imcc/imcc.y" +#line 2036 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 200: /* Line 1464 of yacc.c */ -#line 2038 "compilers/imcc/imcc.y" +#line 2039 "compilers/imcc/imcc.y" { (yyval.i) = 0;} break; case 201: /* Line 1464 of yacc.c */ -#line 2042 "compilers/imcc/imcc.y" +#line 2043 "compilers/imcc/imcc.y" { (yyval.t) = 'I'; } break; case 202: /* Line 1464 of yacc.c */ -#line 2043 "compilers/imcc/imcc.y" +#line 2044 "compilers/imcc/imcc.y" { (yyval.t) = 'N'; } break; case 203: /* Line 1464 of yacc.c */ -#line 2044 "compilers/imcc/imcc.y" +#line 2045 "compilers/imcc/imcc.y" { (yyval.t) = 'S'; } break; case 204: /* Line 1464 of yacc.c */ -#line 2045 "compilers/imcc/imcc.y" +#line 2046 "compilers/imcc/imcc.y" { (yyval.t) = 'P'; } break; case 205: /* Line 1464 of yacc.c */ -#line 2050 "compilers/imcc/imcc.y" +#line 2051 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "set", 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr)); } break; case 206: /* Line 1464 of yacc.c */ -#line 2052 "compilers/imcc/imcc.y" +#line 2053 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (4)].s), 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr)); } break; case 207: /* Line 1464 of yacc.c */ -#line 2054 "compilers/imcc/imcc.y" +#line 2055 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(4) - (5)].s), 3, (yyvsp[(1) - (5)].sr), (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr)); } break; case 208: /* Line 1464 of yacc.c */ -#line 2056 "compilers/imcc/imcc.y" +#line 2057 "compilers/imcc/imcc.y" { (yyval.i) = iINDEXFETCH(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(5) - (6)].sr)); } break; case 209: /* Line 1464 of yacc.c */ -#line 2058 "compilers/imcc/imcc.y" +#line 2059 "compilers/imcc/imcc.y" { (yyval.i) = iINDEXSET(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(6) - (6)].sr)); } break; case 210: /* Line 1464 of yacc.c */ -#line 2061 "compilers/imcc/imcc.y" +#line 2062 "compilers/imcc/imcc.y" { add_pcc_result(interp, (yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr)); IMCC_INFO(interp)->cur_call = NULL; @@ -4880,7 +4881,7 @@ case 211: /* Line 1464 of yacc.c */ -#line 2067 "compilers/imcc/imcc.y" +#line 2068 "compilers/imcc/imcc.y" { (yyval.i) = IMCC_create_itcall_label(interp); } @@ -4889,7 +4890,7 @@ case 212: /* Line 1464 of yacc.c */ -#line 2071 "compilers/imcc/imcc.y" +#line 2072 "compilers/imcc/imcc.y" { IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr)); IMCC_INFO(interp)->cur_call = NULL; @@ -4899,7 +4900,7 @@ case 216: /* Line 1464 of yacc.c */ -#line 2079 "compilers/imcc/imcc.y" +#line 2080 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr)); } @@ -4908,189 +4909,189 @@ case 217: /* Line 1464 of yacc.c */ -#line 2086 "compilers/imcc/imcc.y" +#line 2087 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"not"; } break; case 218: /* Line 1464 of yacc.c */ -#line 2087 "compilers/imcc/imcc.y" +#line 2088 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"bnot"; } break; case 219: /* Line 1464 of yacc.c */ -#line 2088 "compilers/imcc/imcc.y" +#line 2089 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"neg"; } break; case 220: /* Line 1464 of yacc.c */ -#line 2092 "compilers/imcc/imcc.y" +#line 2093 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"sub"; } break; case 221: /* Line 1464 of yacc.c */ -#line 2093 "compilers/imcc/imcc.y" +#line 2094 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"add"; } break; case 222: /* Line 1464 of yacc.c */ -#line 2094 "compilers/imcc/imcc.y" +#line 2095 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"mul"; } break; case 223: /* Line 1464 of yacc.c */ -#line 2095 "compilers/imcc/imcc.y" +#line 2096 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"div"; } break; case 224: /* Line 1464 of yacc.c */ -#line 2096 "compilers/imcc/imcc.y" +#line 2097 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"mod"; } break; case 225: /* Line 1464 of yacc.c */ -#line 2097 "compilers/imcc/imcc.y" +#line 2098 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"fdiv"; } break; case 226: /* Line 1464 of yacc.c */ -#line 2098 "compilers/imcc/imcc.y" +#line 2099 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"pow"; } break; case 227: /* Line 1464 of yacc.c */ -#line 2099 "compilers/imcc/imcc.y" +#line 2100 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"concat"; } break; case 228: /* Line 1464 of yacc.c */ -#line 2100 "compilers/imcc/imcc.y" +#line 2101 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"iseq"; } break; case 229: /* Line 1464 of yacc.c */ -#line 2101 "compilers/imcc/imcc.y" +#line 2102 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"isne"; } break; case 230: /* Line 1464 of yacc.c */ -#line 2102 "compilers/imcc/imcc.y" +#line 2103 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"isgt"; } break; case 231: /* Line 1464 of yacc.c */ -#line 2103 "compilers/imcc/imcc.y" +#line 2104 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"isge"; } break; case 232: /* Line 1464 of yacc.c */ -#line 2104 "compilers/imcc/imcc.y" +#line 2105 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"islt"; } break; case 233: /* Line 1464 of yacc.c */ -#line 2105 "compilers/imcc/imcc.y" +#line 2106 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"isle"; } break; case 234: /* Line 1464 of yacc.c */ -#line 2106 "compilers/imcc/imcc.y" +#line 2107 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"shl"; } break; case 235: /* Line 1464 of yacc.c */ -#line 2107 "compilers/imcc/imcc.y" +#line 2108 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"shr"; } break; case 236: /* Line 1464 of yacc.c */ -#line 2108 "compilers/imcc/imcc.y" +#line 2109 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"lsr"; } break; case 237: /* Line 1464 of yacc.c */ -#line 2109 "compilers/imcc/imcc.y" +#line 2110 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"and"; } break; case 238: /* Line 1464 of yacc.c */ -#line 2110 "compilers/imcc/imcc.y" +#line 2111 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"or"; } break; case 239: /* Line 1464 of yacc.c */ -#line 2111 "compilers/imcc/imcc.y" +#line 2112 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"xor"; } break; case 240: /* Line 1464 of yacc.c */ -#line 2112 "compilers/imcc/imcc.y" +#line 2113 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"band"; } break; case 241: /* Line 1464 of yacc.c */ -#line 2113 "compilers/imcc/imcc.y" +#line 2114 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"bor"; } break; case 242: /* Line 1464 of yacc.c */ -#line 2114 "compilers/imcc/imcc.y" +#line 2115 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"bxor"; } break; case 243: /* Line 1464 of yacc.c */ -#line 2120 "compilers/imcc/imcc.y" +#line 2121 "compilers/imcc/imcc.y" { (yyval.i) = IMCC_create_itcall_label(interp); (yyval.i)->type &= ~ITCALL; @@ -5101,112 +5102,112 @@ case 244: /* Line 1464 of yacc.c */ -#line 2125 "compilers/imcc/imcc.y" +#line 2126 "compilers/imcc/imcc.y" { (yyval.i) = 0; } break; case 245: /* Line 1464 of yacc.c */ -#line 2132 "compilers/imcc/imcc.y" +#line 2133 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(2) - (3)].s), 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr)); } break; case 246: /* Line 1464 of yacc.c */ -#line 2136 "compilers/imcc/imcc.y" +#line 2137 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"add"; } break; case 247: /* Line 1464 of yacc.c */ -#line 2137 "compilers/imcc/imcc.y" +#line 2138 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"sub"; } break; case 248: /* Line 1464 of yacc.c */ -#line 2138 "compilers/imcc/imcc.y" +#line 2139 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"mul"; } break; case 249: /* Line 1464 of yacc.c */ -#line 2139 "compilers/imcc/imcc.y" +#line 2140 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"div"; } break; case 250: /* Line 1464 of yacc.c */ -#line 2140 "compilers/imcc/imcc.y" +#line 2141 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"mod"; } break; case 251: /* Line 1464 of yacc.c */ -#line 2141 "compilers/imcc/imcc.y" +#line 2142 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"fdiv"; } break; case 252: /* Line 1464 of yacc.c */ -#line 2142 "compilers/imcc/imcc.y" +#line 2143 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"concat"; } break; case 253: /* Line 1464 of yacc.c */ -#line 2143 "compilers/imcc/imcc.y" +#line 2144 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"band"; } break; case 254: /* Line 1464 of yacc.c */ -#line 2144 "compilers/imcc/imcc.y" +#line 2145 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"bor"; } break; case 255: /* Line 1464 of yacc.c */ -#line 2145 "compilers/imcc/imcc.y" +#line 2146 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"bxor"; } break; case 256: /* Line 1464 of yacc.c */ -#line 2146 "compilers/imcc/imcc.y" +#line 2147 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"shr"; } break; case 257: /* Line 1464 of yacc.c */ -#line 2147 "compilers/imcc/imcc.y" +#line 2148 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"shl"; } break; case 258: /* Line 1464 of yacc.c */ -#line 2148 "compilers/imcc/imcc.y" +#line 2149 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"lsr"; } break; case 259: /* Line 1464 of yacc.c */ -#line 2154 "compilers/imcc/imcc.y" +#line 2155 "compilers/imcc/imcc.y" { (yyval.i) = func_ins(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (4)].sr), (yyvsp[(3) - (4)].s), IMCC_INFO(interp) -> regs, @@ -5219,28 +5220,28 @@ case 260: /* Line 1464 of yacc.c */ -#line 2164 "compilers/imcc/imcc.y" +#line 2165 "compilers/imcc/imcc.y" { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 261: /* Line 1464 of yacc.c */ -#line 2165 "compilers/imcc/imcc.y" +#line 2166 "compilers/imcc/imcc.y" { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 262: /* Line 1464 of yacc.c */ -#line 2166 "compilers/imcc/imcc.y" +#line 2167 "compilers/imcc/imcc.y" { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 263: /* Line 1464 of yacc.c */ -#line 2168 "compilers/imcc/imcc.y" +#line 2169 "compilers/imcc/imcc.y" { (yyval.sr) = (yyvsp[(1) - (1)].sr); if ((yyvsp[(1) - (1)].sr)->set != 'P') @@ -5251,7 +5252,7 @@ case 264: /* Line 1464 of yacc.c */ -#line 2174 "compilers/imcc/imcc.y" +#line 2175 "compilers/imcc/imcc.y" { /* disallow bareword method names; SREG name constants are fine */ const char * const name = (yyvsp[(3) - (3)].sr)->name; @@ -5270,7 +5271,7 @@ case 265: /* Line 1464 of yacc.c */ -#line 2188 "compilers/imcc/imcc.y" +#line 2189 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = mk_const(interp, (yyvsp[(3) - (3)].s), 'U'); @@ -5281,7 +5282,7 @@ case 266: /* Line 1464 of yacc.c */ -#line 2194 "compilers/imcc/imcc.y" +#line 2195 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = mk_const(interp, (yyvsp[(3) - (3)].s), 'S'); @@ -5292,14 +5293,14 @@ case 267: /* Line 1464 of yacc.c */ -#line 2199 "compilers/imcc/imcc.y" +#line 2200 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); } break; case 268: /* Line 1464 of yacc.c */ -#line 2205 "compilers/imcc/imcc.y" +#line 2206 "compilers/imcc/imcc.y" { (yyval.i) = IMCC_create_itcall_label(interp); IMCC_itcall_sub(interp, (yyvsp[(1) - (1)].sr)); @@ -5309,21 +5310,21 @@ case 269: /* Line 1464 of yacc.c */ -#line 2209 "compilers/imcc/imcc.y" +#line 2210 "compilers/imcc/imcc.y" { (yyval.i) = (yyvsp[(2) - (5)].i); } break; case 270: /* Line 1464 of yacc.c */ -#line 2213 "compilers/imcc/imcc.y" +#line 2214 "compilers/imcc/imcc.y" { (yyval.sr) = 0; } break; case 271: /* Line 1464 of yacc.c */ -#line 2215 "compilers/imcc/imcc.y" +#line 2216 "compilers/imcc/imcc.y" { (yyval.sr) = 0; if (IMCC_INFO(interp)->adv_named_id) { @@ -5338,7 +5339,7 @@ case 272: /* Line 1464 of yacc.c */ -#line 2225 "compilers/imcc/imcc.y" +#line 2226 "compilers/imcc/imcc.y" { (yyval.sr) = 0; if (IMCC_INFO(interp)->adv_named_id) { @@ -5353,7 +5354,7 @@ case 273: /* Line 1464 of yacc.c */ -#line 2235 "compilers/imcc/imcc.y" +#line 2236 "compilers/imcc/imcc.y" { (yyval.sr) = 0; add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, @@ -5365,7 +5366,7 @@ case 274: /* Line 1464 of yacc.c */ -#line 2242 "compilers/imcc/imcc.y" +#line 2243 "compilers/imcc/imcc.y" { (yyval.sr) = 0; add_pcc_named_arg_var(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr)); @@ -5375,7 +5376,7 @@ case 275: /* Line 1464 of yacc.c */ -#line 2247 "compilers/imcc/imcc.y" +#line 2248 "compilers/imcc/imcc.y" { (yyval.sr) = 0; add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, @@ -5387,70 +5388,70 @@ case 276: /* Line 1464 of yacc.c */ -#line 2256 "compilers/imcc/imcc.y" +#line 2257 "compilers/imcc/imcc.y" { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); } break; case 277: /* Line 1464 of yacc.c */ -#line 2260 "compilers/imcc/imcc.y" +#line 2261 "compilers/imcc/imcc.y" { (yyval.t) = 0; } break; case 278: /* Line 1464 of yacc.c */ -#line 2261 "compilers/imcc/imcc.y" +#line 2262 "compilers/imcc/imcc.y" { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); } break; case 279: /* Line 1464 of yacc.c */ -#line 2265 "compilers/imcc/imcc.y" +#line 2266 "compilers/imcc/imcc.y" { (yyval.t) = VT_FLAT; } break; case 280: /* Line 1464 of yacc.c */ -#line 2266 "compilers/imcc/imcc.y" +#line 2267 "compilers/imcc/imcc.y" { (yyval.t) = VT_NAMED; } break; case 281: /* Line 1464 of yacc.c */ -#line 2267 "compilers/imcc/imcc.y" +#line 2268 "compilers/imcc/imcc.y" { (yyval.t) = VT_CALL_SIG; } break; case 282: /* Line 1464 of yacc.c */ -#line 2270 "compilers/imcc/imcc.y" +#line 2271 "compilers/imcc/imcc.y" { adv_named_set_u(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; } break; case 283: /* Line 1464 of yacc.c */ -#line 2271 "compilers/imcc/imcc.y" +#line 2272 "compilers/imcc/imcc.y" { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; } break; case 284: /* Line 1464 of yacc.c */ -#line 2275 "compilers/imcc/imcc.y" +#line 2276 "compilers/imcc/imcc.y" { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); } break; case 285: /* Line 1464 of yacc.c */ -#line 2280 "compilers/imcc/imcc.y" +#line 2281 "compilers/imcc/imcc.y" { (yyval.sr) = 0; if (IMCC_INFO(interp)->adv_named_id) { @@ -5465,7 +5466,7 @@ case 286: /* Line 1464 of yacc.c */ -#line 2290 "compilers/imcc/imcc.y" +#line 2291 "compilers/imcc/imcc.y" { add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(3) - (5)].s), 'S'), (yyvsp[(5) - (5)].sr)); @@ -5476,7 +5477,7 @@ case 287: /* Line 1464 of yacc.c */ -#line 2296 "compilers/imcc/imcc.y" +#line 2297 "compilers/imcc/imcc.y" { (yyval.sr) = 0; if (IMCC_INFO(interp)->adv_named_id) { @@ -5491,7 +5492,7 @@ case 288: /* Line 1464 of yacc.c */ -#line 2306 "compilers/imcc/imcc.y" +#line 2307 "compilers/imcc/imcc.y" { add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(1) - (3)].s), 'S'), (yyvsp[(3) - (3)].sr)); mem_sys_free((yyvsp[(1) - (3)].s)); @@ -5501,28 +5502,28 @@ case 289: /* Line 1464 of yacc.c */ -#line 2310 "compilers/imcc/imcc.y" +#line 2311 "compilers/imcc/imcc.y" { (yyval.sr) = 0; } break; case 290: /* Line 1464 of yacc.c */ -#line 2314 "compilers/imcc/imcc.y" +#line 2315 "compilers/imcc/imcc.y" { (yyval.i) = (yyvsp[(1) - (1)].i); } break; case 291: /* Line 1464 of yacc.c */ -#line 2315 "compilers/imcc/imcc.y" +#line 2316 "compilers/imcc/imcc.y" { (yyval.i) = (yyvsp[(1) - (1)].i); } break; case 292: /* Line 1464 of yacc.c */ -#line 2320 "compilers/imcc/imcc.y" +#line 2321 "compilers/imcc/imcc.y" { (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, inv_op((yyvsp[(3) - (6)].s)), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); } @@ -5531,7 +5532,7 @@ case 293: /* Line 1464 of yacc.c */ -#line 2324 "compilers/imcc/imcc.y" +#line 2325 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr)); } @@ -5540,7 +5541,7 @@ case 294: /* Line 1464 of yacc.c */ -#line 2328 "compilers/imcc/imcc.y" +#line 2329 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr)); } @@ -5549,7 +5550,7 @@ case 295: /* Line 1464 of yacc.c */ -#line 2335 "compilers/imcc/imcc.y" +#line 2336 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr)); } @@ -5558,7 +5559,7 @@ case 296: /* Line 1464 of yacc.c */ -#line 2339 "compilers/imcc/imcc.y" +#line 2340 "compilers/imcc/imcc.y" { (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr)); } @@ -5567,7 +5568,7 @@ case 297: /* Line 1464 of yacc.c */ -#line 2343 "compilers/imcc/imcc.y" +#line 2344 "compilers/imcc/imcc.y" { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr)); } @@ -5576,91 +5577,91 @@ case 298: /* Line 1464 of yacc.c */ -#line 2349 "compilers/imcc/imcc.y" +#line 2350 "compilers/imcc/imcc.y" { (yyval.t) = 0; } break; case 299: /* Line 1464 of yacc.c */ -#line 2350 "compilers/imcc/imcc.y" +#line 2351 "compilers/imcc/imcc.y" { (yyval.t) = 0; } break; case 300: /* Line 1464 of yacc.c */ -#line 2354 "compilers/imcc/imcc.y" +#line 2355 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"eq"; } break; case 301: /* Line 1464 of yacc.c */ -#line 2355 "compilers/imcc/imcc.y" +#line 2356 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"ne"; } break; case 302: /* Line 1464 of yacc.c */ -#line 2356 "compilers/imcc/imcc.y" +#line 2357 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"gt"; } break; case 303: /* Line 1464 of yacc.c */ -#line 2357 "compilers/imcc/imcc.y" +#line 2358 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"ge"; } break; case 304: /* Line 1464 of yacc.c */ -#line 2358 "compilers/imcc/imcc.y" +#line 2359 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"lt"; } break; case 305: /* Line 1464 of yacc.c */ -#line 2359 "compilers/imcc/imcc.y" +#line 2360 "compilers/imcc/imcc.y" { (yyval.s) = (char *)"le"; } break; case 308: /* Line 1464 of yacc.c */ -#line 2368 "compilers/imcc/imcc.y" +#line 2369 "compilers/imcc/imcc.y" { (yyval.sr) = NULL; } break; case 309: /* Line 1464 of yacc.c */ -#line 2369 "compilers/imcc/imcc.y" +#line 2370 "compilers/imcc/imcc.y" { (yyval.sr) = (yyvsp[(1) - (1)].sr); } break; case 310: /* Line 1464 of yacc.c */ -#line 2373 "compilers/imcc/imcc.y" +#line 2374 "compilers/imcc/imcc.y" { (yyval.sr) = IMCC_INFO(interp)->regs[0]; } break; case 312: /* Line 1464 of yacc.c */ -#line 2378 "compilers/imcc/imcc.y" +#line 2379 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); } break; case 313: /* Line 1464 of yacc.c */ -#line 2380 "compilers/imcc/imcc.y" +#line 2381 "compilers/imcc/imcc.y" { IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (4)].sr); IMCC_INFO(interp) -> keyvec |= KEY_BIT(IMCC_INFO(interp)->nargs); @@ -5672,7 +5673,7 @@ case 314: /* Line 1464 of yacc.c */ -#line 2387 "compilers/imcc/imcc.y" +#line 2388 "compilers/imcc/imcc.y" { IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr); (yyval.sr) = (yyvsp[(2) - (3)].sr); @@ -5682,49 +5683,49 @@ case 316: /* Line 1464 of yacc.c */ -#line 2394 "compilers/imcc/imcc.y" +#line 2395 "compilers/imcc/imcc.y" { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 317: /* Line 1464 of yacc.c */ -#line 2395 "compilers/imcc/imcc.y" +#line 2396 "compilers/imcc/imcc.y" { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 318: /* Line 1464 of yacc.c */ -#line 2399 "compilers/imcc/imcc.y" +#line 2400 "compilers/imcc/imcc.y" { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 319: /* Line 1464 of yacc.c */ -#line 2400 "compilers/imcc/imcc.y" +#line 2401 "compilers/imcc/imcc.y" { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 320: /* Line 1464 of yacc.c */ -#line 2404 "compilers/imcc/imcc.y" +#line 2405 "compilers/imcc/imcc.y" { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 321: /* Line 1464 of yacc.c */ -#line 2405 "compilers/imcc/imcc.y" +#line 2406 "compilers/imcc/imcc.y" { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 326: /* Line 1464 of yacc.c */ -#line 2419 "compilers/imcc/imcc.y" +#line 2420 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->nkeys = 0; } @@ -5733,7 +5734,7 @@ case 327: /* Line 1464 of yacc.c */ -#line 2423 "compilers/imcc/imcc.y" +#line 2424 "compilers/imcc/imcc.y" { (yyval.sr) = link_keys(interp, IMCC_INFO(interp)->nkeys, @@ -5744,7 +5745,7 @@ case 328: /* Line 1464 of yacc.c */ -#line 2431 "compilers/imcc/imcc.y" +#line 2432 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->nkeys = 0; } @@ -5753,7 +5754,7 @@ case 329: /* Line 1464 of yacc.c */ -#line 2435 "compilers/imcc/imcc.y" +#line 2436 "compilers/imcc/imcc.y" { (yyval.sr) = link_keys(interp, IMCC_INFO(interp)->nkeys, @@ -5764,14 +5765,14 @@ case 330: /* Line 1464 of yacc.c */ -#line 2443 "compilers/imcc/imcc.y" +#line 2444 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); } break; case 331: /* Line 1464 of yacc.c */ -#line 2445 "compilers/imcc/imcc.y" +#line 2446 "compilers/imcc/imcc.y" { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr); (yyval.sr) = IMCC_INFO(interp)->keys[0]; @@ -5781,7 +5782,7 @@ case 332: /* Line 1464 of yacc.c */ -#line 2453 "compilers/imcc/imcc.y" +#line 2454 "compilers/imcc/imcc.y" { (yyval.sr) = (yyvsp[(1) - (1)].sr); } @@ -5790,77 +5791,77 @@ case 333: /* Line 1464 of yacc.c */ -#line 2459 "compilers/imcc/imcc.y" +#line 2460 "compilers/imcc/imcc.y" { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); } break; case 334: /* Line 1464 of yacc.c */ -#line 2460 "compilers/imcc/imcc.y" +#line 2461 "compilers/imcc/imcc.y" { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); } break; case 335: /* Line 1464 of yacc.c */ -#line 2461 "compilers/imcc/imcc.y" +#line 2462 "compilers/imcc/imcc.y" { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); } break; case 336: /* Line 1464 of yacc.c */ -#line 2462 "compilers/imcc/imcc.y" +#line 2463 "compilers/imcc/imcc.y" { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); } break; case 337: /* Line 1464 of yacc.c */ -#line 2463 "compilers/imcc/imcc.y" +#line 2464 "compilers/imcc/imcc.y" { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 338: /* Line 1464 of yacc.c */ -#line 2467 "compilers/imcc/imcc.y" +#line 2468 "compilers/imcc/imcc.y" { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 339: /* Line 1464 of yacc.c */ -#line 2468 "compilers/imcc/imcc.y" +#line 2469 "compilers/imcc/imcc.y" { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 340: /* Line 1464 of yacc.c */ -#line 2472 "compilers/imcc/imcc.y" +#line 2473 "compilers/imcc/imcc.y" { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 341: /* Line 1464 of yacc.c */ -#line 2473 "compilers/imcc/imcc.y" +#line 2474 "compilers/imcc/imcc.y" { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); } break; case 342: /* Line 1464 of yacc.c */ -#line 2474 "compilers/imcc/imcc.y" +#line 2475 "compilers/imcc/imcc.y" { (yyval.sr) = (yyvsp[(1) - (1)].sr); } break; /* Line 1464 of yacc.c */ -#line 5853 "compilers/imcc/imcparser.c" +#line 5854 "compilers/imcc/imcparser.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -6072,7 +6073,7 @@ /* Line 1684 of yacc.c */ -#line 2480 "compilers/imcc/imcc.y" +#line 2481 "compilers/imcc/imcc.y" /* I need this prototype somewhere... */ @@ -6091,32 +6092,17 @@ * outside the bison buffer, and thus, not "accessible" by * us. This means it may segfault. */ const char * const chr = yyget_text((yyscan_t)yyscanner); + PMC * err_msgs = IMCC_INFO(interp)->error_messages; - /* IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR, s); */ - /* --- This was called before, not sure if I should call some - similar function that does not die like this one. */ + IMCC_INFO(interp)->error_code = IMCC_PARSEFAIL_EXCEPTION; - /* Basically, if current token is a newline, it mean the error was - * before the newline, and thus, line is the line *after* the - * error. Instead of duplicating code for both cases (the 'newline' and - * non-newline case, do the test twice; efficiency is not important when - * we have an error anyway. */ - if (!at_eof(yyscanner)) { - IMCC_warning(interp, "error:imcc:%s", s); + /* don't bother printing the current token if it is either a newline or EOF */ + VTABLE_push_string(interp, err_msgs, + at_eof(yyscanner) || *chr == '\n' ? + Parrot_str_new(interp, s, 0) : + Parrot_sprintf_c(interp, "%s ('%s')", s, chr)); + VTABLE_push_string(interp, err_msgs, IMCC_inc_str(interp)); - /* don't print the current token if it is a newline */ - if (*chr != '\n') - IMCC_warning(interp, " ('%s')", chr); - - IMCC_print_inc(interp); - } - - /* scanner is at EOF; just to be sure, don't print "current" token */ - else { - IMCC_warning(interp, "error:imcc:%s", s); - IMCC_print_inc(interp); - } - return 0; } Index: compilers/imcc/debug.c =================================================================== --- compilers/imcc/debug.c (revision 46485) +++ compilers/imcc/debug.c (working copy) @@ -46,10 +46,13 @@ { ASSERT_ARGS(IMCC_fatal) va_list ap; + STRING *msg; va_start(ap, fmt); - IMCC_INFO(interp)->error_message = Parrot_vsprintf_c(interp, fmt, ap); + msg = Parrot_vsprintf_c(interp, fmt, ap); va_end(ap); + + VTABLE_push_string(interp, IMCC_INFO(interp)->error_messages, msg); IMCC_THROW(IMCC_INFO(interp)->jump_buf, IMCC_FATAL_EXCEPTION); } @@ -70,10 +73,13 @@ { ASSERT_ARGS(IMCC_fataly) va_list ap; + STRING *msg; va_start(ap, fmt); - IMCC_INFO(interp)->error_message = Parrot_vsprintf_c(interp, fmt, ap); + msg = Parrot_vsprintf_c(interp, fmt, ap); va_end(ap); + + VTABLE_push_string(interp, IMCC_INFO(interp)->error_messages, msg); IMCC_THROW(IMCC_INFO(interp)->jump_buf, IMCC_FATALY_EXCEPTION); } Index: compilers/imcc/parser_util.c =================================================================== --- compilers/imcc/parser_util.c (revision 46488) +++ compilers/imcc/parser_util.c (working copy) @@ -630,7 +630,9 @@ } else { PackFile_Segment_destroy(interp, (PackFile_Segment *)new_cs); - *error_message = IMCC_INFO(interp)->error_message; + *error_message = Parrot_str_join(interp, + string_from_literal(interp, "\n"), + IMCC_INFO(interp)->error_messages); } if (imc_info) { @@ -892,7 +894,9 @@ if (!IMCC_INFO(interp)->error_code) cs = interp->code; else - *error_message = IMCC_INFO(interp)->error_message; + *error_message = Parrot_str_join(interp, + string_from_literal(interp, "\n"), + IMCC_INFO(interp)->error_messages); if (cs_save) (void)Parrot_switch_to_cs(interp, cs_save, 0); Index: compilers/imcc/imcparser.h =================================================================== --- compilers/imcc/imcparser.h (revision 46484) +++ compilers/imcc/imcparser.h (working copy) @@ -295,7 +295,7 @@ { /* Line 1685 of yacc.c */ -#line 1068 "compilers/imcc/imcc.y" +#line 1069 "compilers/imcc/imcc.y" IdList * idlist; int t;