[svn:parrot] r36159 - in trunk: compilers/imcc src/gc t/op
chromatic at svn.parrot.org
chromatic at svn.parrot.org
Thu Jan 29 22:29:35 UTC 2009
Author: chromatic
Date: Thu Jan 29 21:04:34 2009
New Revision: 36159
URL: https://trac.parrot.org/parrot/log/branches?rev=36159
Log:
[IMCC] Allowed string registers as names for named parameters in PCC; see
Rakudo's RT #62730 for discussion.
Modified:
trunk/compilers/imcc/imcc.y
trunk/compilers/imcc/imcparser.c
trunk/compilers/imcc/imcparser.h
trunk/src/gc/mark_sweep.c
trunk/t/op/calling.t
Modified: trunk/compilers/imcc/imcc.y
==============================================================================
--- trunk/compilers/imcc/imcc.y Thu Jan 29 21:03:49 2009 (r36158)
+++ trunk/compilers/imcc/imcc.y Thu Jan 29 21:04:34 2009 (r36159)
@@ -52,6 +52,16 @@
__attribute__nonnull__(4)
FUNC_MODIFIES(*cur_call);
+static void add_pcc_named_arg_var(PARROT_INTERP,
+ ARGMOD(SymReg *cur_call),
+ ARGIN(SymReg *name),
+ ARGIN(SymReg *value))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*cur_call);
+
static void add_pcc_named_param(PARROT_INTERP,
ARGMOD(SymReg *cur_call),
ARGIN(const char *name),
@@ -233,6 +243,11 @@
|| PARROT_ASSERT_ARG(cur_call) \
|| PARROT_ASSERT_ARG(name) \
|| PARROT_ASSERT_ARG(value)
+#define ASSERT_ARGS_add_pcc_named_param_var __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp) \
+ || PARROT_ASSERT_ARG(cur_call) \
+ || PARROT_ASSERT_ARG(name) \
+ || PARROT_ASSERT_ARG(value)
#define ASSERT_ARGS_add_pcc_named_result __attribute__unused__ int _ASSERT_ARGS_CHECK = \
PARROT_ASSERT_ARG(interp) \
|| PARROT_ASSERT_ARG(cur_call) \
@@ -397,7 +412,7 @@
if (ascii) {
/* strip delimiters */
name = str_dup(constant + 1);
- name[strlen(name) - 1] = '\0';
+ name[strlen(name) - 1] = 0;
}
else {
name = str_dup(constant);
@@ -440,7 +455,7 @@
char *unquoted_name = str_dup(name + 1);
size_t name_length = strlen(unquoted_name) - 1;
- unquoted_name[name_length] = '\0';
+ unquoted_name[name_length] = 0;
if (left->type == VTADDRESS) { /* IDENTIFIER */
if (IMCC_INFO(interp)->state->pasm_file) {
@@ -455,7 +470,7 @@
if (ascii) {
/* strip delimiters */
const_name = str_dup(constant + 1);
- const_name[strlen(const_name) - 1] = '\0';
+ const_name[strlen(const_name) - 1] = 0;
}
else {
const_name = str_dup(constant);
@@ -632,7 +647,7 @@
/* name is a quoted sub name */
SymReg *r;
char *name_copy = str_dup(name + 1);
- name_copy[strlen(name_copy) - 1] = '\0';
+ name_copy[strlen(name_copy) - 1] = 0;
r = mk_sub_address(interp, name_copy);
mem_sys_free(name_copy);
@@ -721,6 +736,16 @@
}
static void
+add_pcc_named_arg_var(PARROT_INTERP, ARGMOD(SymReg *cur_call),
+ ARGIN(SymReg *name), ARGIN(SymReg *value))
+{
+ ASSERT_ARGS(add_pcc_named_param_var)
+ name->type |= VT_NAMED;
+ add_pcc_arg(cur_call, name);
+ add_pcc_arg(cur_call, value);
+}
+
+static void
add_pcc_named_result(PARROT_INTERP, ARGMOD(SymReg *cur_call), ARGIN(const char *name),
ARGIN(SymReg *value))
{
@@ -1679,7 +1704,10 @@
IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isTAIL_CALL;
IMCC_INFO(interp)->cur_call = NULL;
}
- | GOTO label_op { $$ = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, $2); }
+ | GOTO label_op
+ {
+ $$ = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, $2);
+ }
| PARROT_OP vars
{
$$ = INS(interp,
@@ -1913,6 +1941,11 @@
add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, $3, $5);
mem_sys_free($3);
}
+ | var ADV_ARROW var
+ {
+ $$ = 0;
+ add_pcc_named_arg_var(interp, IMCC_INFO(interp)->cur_call, $1, $3);
+ }
| STRINGC ADV_ARROW var
{
$$ = 0;
Modified: trunk/compilers/imcc/imcparser.c
==============================================================================
--- trunk/compilers/imcc/imcparser.c Thu Jan 29 21:03:49 2009 (r36158)
+++ trunk/compilers/imcc/imcparser.c Thu Jan 29 21:04:34 2009 (r36159)
@@ -378,6 +378,16 @@
__attribute__nonnull__(4)
FUNC_MODIFIES(*cur_call);
+static void add_pcc_named_arg_var(PARROT_INTERP,
+ ARGMOD(SymReg *cur_call),
+ ARGIN(SymReg *name),
+ ARGIN(SymReg *value))
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__nonnull__(3)
+ __attribute__nonnull__(4)
+ FUNC_MODIFIES(*cur_call);
+
static void add_pcc_named_param(PARROT_INTERP,
ARGMOD(SymReg *cur_call),
ARGIN(const char *name),
@@ -559,6 +569,11 @@
|| PARROT_ASSERT_ARG(cur_call) \
|| PARROT_ASSERT_ARG(name) \
|| PARROT_ASSERT_ARG(value)
+#define ASSERT_ARGS_add_pcc_named_param_var __attribute__unused__ int _ASSERT_ARGS_CHECK = \
+ PARROT_ASSERT_ARG(interp) \
+ || PARROT_ASSERT_ARG(cur_call) \
+ || PARROT_ASSERT_ARG(name) \
+ || PARROT_ASSERT_ARG(value)
#define ASSERT_ARGS_add_pcc_named_result __attribute__unused__ int _ASSERT_ARGS_CHECK = \
PARROT_ASSERT_ARG(interp) \
|| PARROT_ASSERT_ARG(cur_call) \
@@ -723,7 +738,7 @@
if (ascii) {
/* strip delimiters */
name = str_dup(constant + 1);
- name[strlen(name) - 1] = '\0';
+ name[strlen(name) - 1] = 0;
}
else {
name = str_dup(constant);
@@ -766,7 +781,7 @@
char *unquoted_name = str_dup(name + 1);
size_t name_length = strlen(unquoted_name) - 1;
- unquoted_name[name_length] = '\0';
+ unquoted_name[name_length] = 0;
if (left->type == VTADDRESS) { /* IDENTIFIER */
if (IMCC_INFO(interp)->state->pasm_file) {
@@ -781,7 +796,7 @@
if (ascii) {
/* strip delimiters */
const_name = str_dup(constant + 1);
- const_name[strlen(const_name) - 1] = '\0';
+ const_name[strlen(const_name) - 1] = 0;
}
else {
const_name = str_dup(constant);
@@ -958,7 +973,7 @@
/* name is a quoted sub name */
SymReg *r;
char *name_copy = str_dup(name + 1);
- name_copy[strlen(name_copy) - 1] = '\0';
+ name_copy[strlen(name_copy) - 1] = 0;
r = mk_sub_address(interp, name_copy);
mem_sys_free(name_copy);
@@ -1047,6 +1062,16 @@
}
static void
+add_pcc_named_arg_var(PARROT_INTERP, ARGMOD(SymReg *cur_call),
+ ARGIN(SymReg *name), ARGIN(SymReg *value))
+{
+ ASSERT_ARGS(add_pcc_named_param_var)
+ name->type |= VT_NAMED;
+ add_pcc_arg(cur_call, name);
+ add_pcc_arg(cur_call, value);
+}
+
+static void
add_pcc_named_result(PARROT_INTERP, ARGMOD(SymReg *cur_call), ARGIN(const char *name),
ARGIN(SymReg *value))
{
@@ -1128,7 +1153,7 @@
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
-#line 785 "compilers/imcc/imcc.y"
+#line 810 "compilers/imcc/imcc.y"
{
IdList * idlist;
int t;
@@ -1137,7 +1162,7 @@
Instruction *i;
}
/* Line 187 of yacc.c. */
-#line 1130 "compilers/imcc/imcparser.c"
+#line 1155 "compilers/imcc/imcparser.c"
YYSTYPE;
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
@@ -1150,7 +1175,7 @@
/* Line 216 of yacc.c. */
-#line 1143 "compilers/imcc/imcparser.c"
+#line 1168 "compilers/imcc/imcparser.c"
#ifdef short
# undef short
@@ -1365,16 +1390,16 @@
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 33
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 666
+#define YYLAST 641
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 139
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 126
/* YYNRULES -- Number of rules. */
-#define YYNRULES 333
+#define YYNRULES 334
/* YYNRULES -- Number of states. */
-#define YYNSTATES 536
+#define YYNSTATES 539
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
@@ -1458,13 +1483,13 @@
681, 687, 691, 693, 695, 697, 699, 701, 703, 705,
707, 709, 711, 713, 715, 717, 722, 724, 726, 728,
730, 734, 738, 742, 743, 749, 750, 754, 756, 762,
- 766, 769, 770, 773, 775, 777, 782, 785, 789, 795,
- 797, 801, 802, 804, 806, 813, 819, 824, 829, 836,
- 842, 844, 846, 848, 850, 852, 854, 856, 858, 860,
- 862, 863, 865, 869, 871, 873, 878, 882, 884, 886,
- 888, 890, 892, 894, 896, 898, 900, 902, 904, 905,
- 908, 909, 912, 914, 918, 920, 922, 924, 926, 928,
- 930, 932, 934, 936
+ 766, 770, 773, 774, 777, 779, 781, 786, 789, 793,
+ 799, 801, 805, 806, 808, 810, 817, 823, 828, 833,
+ 840, 846, 848, 850, 852, 854, 856, 858, 860, 862,
+ 864, 866, 867, 869, 873, 875, 877, 882, 886, 888,
+ 890, 892, 894, 896, 898, 900, 902, 904, 906, 908,
+ 909, 912, 913, 916, 918, 922, 924, 926, 928, 930,
+ 932, 934, 936, 938, 940
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
@@ -1546,63 +1571,64 @@
248, 121, 253, -1, 248, 121, 113, -1, 248, 121,
248, -1, -1, 234, 236, 126, 237, 127, -1, -1,
237, 72, 238, -1, 238, -1, 237, 72, 113, 22,
- 256, -1, 113, 22, 256, -1, 256, 239, -1, -1,
- 239, 240, -1, 17, -1, 21, -1, 21, 126, 113,
- 127, -1, 248, 195, -1, 242, 72, 241, -1, 242,
- 72, 113, 22, 248, -1, 241, -1, 113, 22, 248,
- -1, -1, 245, -1, 244, -1, 13, 256, 247, 256,
- 10, 254, -1, 13, 14, 256, 10, 254, -1, 13,
- 256, 246, 254, -1, 12, 256, 246, 254, -1, 12,
- 256, 247, 256, 10, 254, -1, 12, 14, 256, 10,
- 254, -1, 72, -1, 10, -1, 57, -1, 58, -1,
- 59, -1, 60, -1, 61, -1, 62, -1, 118, -1,
- 263, -1, -1, 250, -1, 250, 72, 251, -1, 251,
- -1, 255, -1, 248, 124, 257, 125, -1, 124, 259,
- 125, -1, 253, -1, 113, -1, 116, -1, 109, -1,
- 117, -1, 109, -1, 117, -1, 254, -1, 256, -1,
- 248, -1, 264, -1, -1, 258, 261, -1, -1, 260,
- 261, -1, 262, -1, 261, 138, 262, -1, 256, -1,
- 105, -1, 106, -1, 107, -1, 108, -1, 110, -1,
- 114, -1, 115, -1, 113, -1, 116, -1
+ 256, -1, 256, 22, 256, -1, 113, 22, 256, -1,
+ 256, 239, -1, -1, 239, 240, -1, 17, -1, 21,
+ -1, 21, 126, 113, 127, -1, 248, 195, -1, 242,
+ 72, 241, -1, 242, 72, 113, 22, 248, -1, 241,
+ -1, 113, 22, 248, -1, -1, 245, -1, 244, -1,
+ 13, 256, 247, 256, 10, 254, -1, 13, 14, 256,
+ 10, 254, -1, 13, 256, 246, 254, -1, 12, 256,
+ 246, 254, -1, 12, 256, 247, 256, 10, 254, -1,
+ 12, 14, 256, 10, 254, -1, 72, -1, 10, -1,
+ 57, -1, 58, -1, 59, -1, 60, -1, 61, -1,
+ 62, -1, 118, -1, 263, -1, -1, 250, -1, 250,
+ 72, 251, -1, 251, -1, 255, -1, 248, 124, 257,
+ 125, -1, 124, 259, 125, -1, 253, -1, 113, -1,
+ 116, -1, 109, -1, 117, -1, 109, -1, 117, -1,
+ 254, -1, 256, -1, 248, -1, 264, -1, -1, 258,
+ 261, -1, -1, 260, 261, -1, 262, -1, 261, 138,
+ 262, -1, 256, -1, 105, -1, 106, -1, 107, -1,
+ 108, -1, 110, -1, 114, -1, 115, -1, 113, -1,
+ 116, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 880, 880, 884, 885, 889, 890, 891, 897, 903,
- 904, 905, 906, 910, 911, 920, 925, 932, 944, 953,
- 971, 971, 980, 980, 986, 986, 993, 994, 998, 999,
- 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1012, 1012, 1021,
- 1020, 1032, 1036, 1044, 1048, 1052, 1052, 1064, 1066, 1070,
- 1085, 1093, 1098, 1102, 1106, 1097, 1118, 1119, 1120, 1133,
- 1133, 1137, 1151, 1155, 1161, 1170, 1176, 1185, 1191, 1200,
- 1206, 1215, 1223, 1228, 1239, 1242, 1247, 1255, 1256, 1257,
- 1258, 1259, 1270, 1281, 1284, 1286, 1291, 1290, 1323, 1324,
- 1328, 1329, 1333, 1334, 1338, 1339, 1343, 1344, 1345, 1346,
- 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356,
- 1360, 1365, 1369, 1374, 1378, 1382, 1387, 1396, 1397, 1401,
- 1406, 1407, 1415, 1416, 1416, 1431, 1432, 1436, 1437, 1438,
- 1439, 1440, 1441, 1446, 1446, 1449, 1457, 1457, 1463, 1464,
- 1469, 1477, 1478, 1483, 1491, 1495, 1500, 1499, 1512, 1513,
- 1517, 1518, 1528, 1532, 1542, 1550, 1551, 1563, 1567, 1569,
- 1570, 1571, 1572, 1573, 1577, 1578, 1582, 1583, 1587, 1596,
- 1597, 1608, 1615, 1624, 1634, 1635, 1640, 1641, 1642, 1642,
- 1658, 1662, 1662, 1669, 1670, 1670, 1676, 1682, 1683, 1695,
- 1696, 1697, 1698, 1699, 1700, 1704, 1705, 1706, 1707, 1711,
- 1724, 1726, 1728, 1730, 1732, 1737, 1740, 1747, 1746, 1755,
- 1756, 1757, 1758, 1766, 1767, 1768, 1772, 1773, 1774, 1775,
- 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785,
- 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1800,
- 1799, 1811, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825,
- 1826, 1827, 1828, 1829, 1830, 1835, 1846, 1847, 1848, 1849,
- 1855, 1869, 1875, 1881, 1880, 1889, 1890, 1900, 1910, 1916,
- 1925, 1929, 1930, 1934, 1935, 1938, 1942, 1946, 1956, 1961,
- 1971, 1976, 1980, 1981, 1985, 1989, 1993, 2000, 2004, 2008,
- 2015, 2016, 2020, 2021, 2022, 2023, 2024, 2025, 2029, 2030,
- 2034, 2035, 2039, 2040, 2044, 2045, 2052, 2059, 2060, 2061,
- 2065, 2066, 2070, 2071, 2075, 2076, 2080, 2081, 2085, 2085,
- 2098, 2098, 2111, 2112, 2120, 2129, 2130, 2131, 2132, 2133,
- 2137, 2138, 2139, 2140
+ 0, 905, 905, 909, 910, 914, 915, 916, 922, 928,
+ 929, 930, 931, 935, 936, 945, 950, 957, 969, 978,
+ 996, 996, 1005, 1005, 1011, 1011, 1018, 1019, 1023, 1024,
+ 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1037, 1037, 1046,
+ 1045, 1057, 1061, 1069, 1073, 1077, 1077, 1089, 1091, 1095,
+ 1110, 1118, 1123, 1127, 1131, 1122, 1143, 1144, 1145, 1158,
+ 1158, 1162, 1176, 1180, 1186, 1195, 1201, 1210, 1216, 1225,
+ 1231, 1240, 1248, 1253, 1264, 1267, 1272, 1280, 1281, 1282,
+ 1283, 1284, 1295, 1306, 1309, 1311, 1316, 1315, 1348, 1349,
+ 1353, 1354, 1358, 1359, 1363, 1364, 1368, 1369, 1370, 1371,
+ 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381,
+ 1385, 1390, 1394, 1399, 1403, 1407, 1412, 1421, 1422, 1426,
+ 1431, 1432, 1440, 1441, 1441, 1456, 1457, 1461, 1462, 1463,
+ 1464, 1465, 1466, 1471, 1471, 1474, 1482, 1482, 1488, 1489,
+ 1494, 1502, 1503, 1508, 1516, 1520, 1525, 1524, 1537, 1538,
+ 1542, 1543, 1553, 1557, 1567, 1575, 1576, 1588, 1592, 1594,
+ 1595, 1596, 1597, 1598, 1602, 1603, 1607, 1608, 1612, 1621,
+ 1622, 1633, 1640, 1649, 1659, 1660, 1665, 1666, 1667, 1667,
+ 1683, 1687, 1687, 1694, 1695, 1695, 1701, 1707, 1711, 1723,
+ 1724, 1725, 1726, 1727, 1728, 1732, 1733, 1734, 1735, 1739,
+ 1752, 1754, 1756, 1758, 1760, 1765, 1768, 1775, 1774, 1783,
+ 1784, 1785, 1786, 1794, 1795, 1796, 1800, 1801, 1802, 1803,
+ 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813,
+ 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1828,
+ 1827, 1839, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853,
+ 1854, 1855, 1856, 1857, 1858, 1863, 1874, 1875, 1876, 1877,
+ 1883, 1897, 1903, 1909, 1908, 1917, 1918, 1928, 1938, 1944,
+ 1949, 1958, 1962, 1963, 1967, 1968, 1971, 1975, 1979, 1989,
+ 1994, 2004, 2009, 2013, 2014, 2018, 2022, 2026, 2033, 2037,
+ 2041, 2048, 2049, 2053, 2054, 2055, 2056, 2057, 2058, 2062,
+ 2063, 2067, 2068, 2072, 2073, 2077, 2078, 2085, 2092, 2093,
+ 2094, 2098, 2099, 2103, 2104, 2108, 2109, 2113, 2114, 2118,
+ 2118, 2131, 2131, 2144, 2145, 2153, 2162, 2163, 2164, 2165,
+ 2166, 2170, 2171, 2172, 2173
};
#endif
@@ -1711,13 +1737,13 @@
229, 231, 232, 232, 232, 232, 232, 232, 232, 232,
232, 232, 232, 232, 232, 233, 234, 234, 234, 234,
234, 234, 234, 236, 235, 237, 237, 237, 237, 237,
- 238, 239, 239, 240, 240, 240, 241, 242, 242, 242,
- 242, 242, 243, 243, 244, 244, 244, 245, 245, 245,
- 246, 246, 247, 247, 247, 247, 247, 247, 248, 248,
- 249, 249, 250, 250, 251, 251, 251, 252, 252, 252,
- 253, 253, 254, 254, 255, 255, 256, 256, 258, 257,
- 260, 259, 261, 261, 262, 263, 263, 263, 263, 263,
- 264, 264, 264, 264
+ 237, 238, 239, 239, 240, 240, 240, 241, 242, 242,
+ 242, 242, 242, 243, 243, 244, 244, 244, 245, 245,
+ 245, 246, 246, 247, 247, 247, 247, 247, 247, 248,
+ 248, 249, 249, 250, 250, 251, 251, 251, 252, 252,
+ 252, 253, 253, 254, 254, 255, 255, 256, 256, 258,
+ 257, 260, 259, 261, 261, 262, 263, 263, 263, 263,
+ 263, 264, 264, 264, 264
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
@@ -1750,13 +1776,13 @@
5, 3, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 4, 1, 1, 1, 1,
3, 3, 3, 0, 5, 0, 3, 1, 5, 3,
- 2, 0, 2, 1, 1, 4, 2, 3, 5, 1,
- 3, 0, 1, 1, 6, 5, 4, 4, 6, 5,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 0, 1, 3, 1, 1, 4, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 0, 2,
- 0, 2, 1, 3, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1
+ 3, 2, 0, 2, 1, 1, 4, 2, 3, 5,
+ 1, 3, 0, 1, 1, 6, 5, 4, 4, 6,
+ 5, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 0, 1, 3, 1, 1, 4, 3, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+ 2, 0, 2, 1, 3, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1
};
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -1766,58 +1792,58 @@
{
0, 12, 0, 0, 0, 0, 0, 52, 20, 0,
45, 0, 0, 2, 3, 10, 11, 0, 6, 8,
- 5, 7, 18, 0, 0, 0, 318, 0, 0, 0,
+ 5, 7, 18, 0, 0, 0, 319, 0, 0, 0,
0, 164, 9, 1, 4, 13, 0, 0, 16, 51,
- 0, 0, 49, 310, 308, 309, 311, 53, 307, 195,
+ 0, 0, 49, 311, 309, 310, 312, 53, 308, 195,
196, 197, 198, 0, 14, 22, 168, 0, 33, 32,
36, 35, 164, 28, 0, 34, 37, 165, 167, 19,
- 0, 50, 325, 326, 327, 328, 329, 332, 330, 331,
- 333, 298, 316, 324, 319, 322, 299, 317, 92, 0,
+ 0, 50, 326, 327, 328, 329, 330, 333, 331, 332,
+ 334, 299, 317, 325, 320, 323, 300, 318, 92, 0,
0, 0, 31, 29, 46, 0, 0, 39, 0, 0,
166, 15, 0, 98, 96, 97, 99, 100, 67, 101,
0, 102, 0, 65, 0, 72, 69, 103, 104, 105,
106, 107, 108, 109, 0, 93, 94, 0, 0, 0,
- 41, 0, 92, 30, 300, 323, 0, 0, 74, 0,
- 0, 0, 0, 54, 95, 21, 312, 313, 314, 0,
- 315, 0, 0, 0, 320, 38, 316, 44, 301, 303,
- 304, 26, 27, 0, 0, 0, 77, 78, 80, 79,
- 81, 82, 318, 0, 76, 0, 0, 0, 0, 56,
- 0, 0, 42, 40, 0, 0, 318, 0, 68, 64,
+ 41, 0, 92, 30, 301, 324, 0, 0, 74, 0,
+ 0, 0, 0, 54, 95, 21, 313, 314, 315, 0,
+ 316, 0, 0, 0, 321, 38, 317, 44, 302, 304,
+ 305, 26, 27, 0, 0, 0, 77, 78, 80, 79,
+ 81, 82, 319, 0, 76, 0, 0, 0, 0, 56,
+ 0, 0, 42, 40, 0, 0, 319, 0, 68, 64,
63, 0, 0, 62, 66, 71, 73, 70, 57, 157,
- 23, 25, 306, 321, 0, 302, 83, 75, 59, 0,
+ 23, 25, 307, 322, 0, 303, 83, 75, 59, 0,
0, 161, 160, 162, 163, 0, 0, 157, 0, 155,
- 305, 0, 0, 159, 58, 55, 156, 0, 194, 158,
+ 306, 0, 0, 159, 58, 55, 156, 0, 194, 158,
60, 0, 0, 170, 0, 0, 0, 0, 178, 0,
181, 184, 148, 0, 149, 239, 0, 0, 0, 256,
- 257, 258, 300, 207, 183, 191, 192, 193, 135, 0,
- 0, 176, 209, 210, 211, 263, 190, 177, 283, 282,
+ 257, 258, 301, 207, 183, 191, 192, 193, 135, 0,
+ 0, 176, 209, 210, 211, 263, 190, 177, 284, 283,
259, 125, 17, 187, 0, 0, 0, 0, 189, 0,
0, 0, 0, 186, 259, 0, 86, 133, 136, 188,
- 281, 146, 169, 0, 242, 243, 244, 245, 248, 249,
- 250, 251, 247, 246, 252, 253, 254, 0, 0, 318,
- 0, 61, 0, 291, 292, 293, 294, 295, 296, 297,
- 290, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 281, 117, 138, 141, 0, 279, 0, 125, 150, 265,
- 261, 262, 260, 212, 332, 333, 300, 0, 213, 214,
- 215, 0, 206, 316, 200, 0, 241, 127, 128, 129,
- 130, 132, 126, 0, 287, 0, 0, 286, 0, 174,
+ 282, 146, 169, 0, 242, 243, 244, 245, 248, 249,
+ 250, 251, 247, 246, 252, 253, 254, 0, 0, 319,
+ 0, 61, 0, 292, 293, 294, 295, 296, 297, 298,
+ 291, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 282, 117, 138, 141, 0, 280, 0, 125, 150, 265,
+ 261, 262, 260, 212, 333, 334, 301, 0, 213, 214,
+ 215, 0, 206, 317, 200, 0, 241, 127, 128, 129,
+ 130, 132, 126, 0, 288, 0, 0, 287, 0, 174,
179, 171, 180, 0, 0, 0, 90, 0, 0, 0,
- 0, 0, 276, 332, 0, 151, 271, 332, 0, 267,
- 255, 199, 0, 201, 221, 230, 231, 235, 224, 225,
- 226, 227, 228, 229, 222, 232, 233, 234, 223, 318,
- 238, 216, 217, 218, 219, 220, 236, 237, 0, 0,
- 0, 289, 0, 285, 0, 175, 173, 0, 0, 0,
- 240, 0, 0, 0, 0, 139, 0, 134, 0, 142,
- 0, 137, 0, 280, 0, 277, 0, 0, 0, 147,
- 270, 0, 0, 264, 318, 0, 202, 0, 0, 288,
- 284, 172, 182, 185, 119, 0, 0, 0, 0, 88,
- 118, 271, 140, 271, 143, 0, 0, 152, 332, 153,
- 273, 274, 272, 269, 332, 266, 0, 203, 204, 131,
- 91, 0, 0, 0, 0, 120, 0, 144, 145, 278,
- 265, 0, 0, 0, 205, 111, 0, 112, 114, 0,
- 113, 0, 0, 89, 0, 154, 0, 268, 0, 0,
- 0, 123, 0, 87, 0, 208, 275, 110, 116, 115,
- 0, 125, 121, 0, 122, 124
+ 0, 0, 277, 333, 0, 151, 272, 333, 0, 267,
+ 272, 255, 199, 0, 201, 221, 230, 231, 235, 224,
+ 225, 226, 227, 228, 229, 222, 232, 233, 234, 223,
+ 319, 238, 216, 217, 218, 219, 220, 236, 237, 0,
+ 0, 0, 290, 0, 286, 0, 175, 173, 0, 0,
+ 0, 240, 0, 0, 0, 0, 139, 0, 134, 0,
+ 142, 0, 137, 0, 281, 0, 278, 0, 0, 0,
+ 147, 271, 0, 0, 264, 0, 319, 0, 202, 0,
+ 0, 289, 285, 172, 182, 185, 119, 0, 0, 0,
+ 0, 88, 118, 272, 140, 272, 143, 0, 0, 152,
+ 333, 153, 274, 275, 273, 270, 333, 266, 269, 0,
+ 203, 204, 131, 91, 0, 0, 0, 0, 120, 0,
+ 144, 145, 279, 265, 0, 0, 0, 205, 111, 0,
+ 112, 114, 0, 113, 0, 0, 89, 0, 154, 0,
+ 268, 0, 0, 0, 123, 0, 87, 0, 208, 276,
+ 110, 116, 115, 0, 125, 121, 0, 122, 124
};
/* YYDEFGOTO[NTERM-NUM]. */
@@ -1827,94 +1853,94 @@
61, 90, 91, 163, 62, 63, 98, 99, 132, 155,
19, 31, 64, 20, 27, 21, 28, 88, 179, 199,
215, 221, 230, 117, 118, 119, 120, 121, 122, 123,
- 173, 174, 216, 255, 331, 495, 433, 124, 125, 126,
- 469, 376, 434, 512, 524, 530, 311, 362, 256, 332,
- 257, 333, 377, 378, 438, 442, 258, 338, 259, 384,
- 217, 218, 219, 66, 67, 68, 229, 370, 371, 426,
- 260, 279, 281, 282, 53, 392, 261, 290, 351, 418,
+ 173, 174, 216, 255, 331, 498, 434, 124, 125, 126,
+ 471, 376, 435, 515, 527, 533, 311, 362, 256, 332,
+ 257, 333, 377, 378, 439, 443, 258, 338, 259, 384,
+ 217, 218, 219, 66, 67, 68, 229, 370, 371, 427,
+ 260, 279, 281, 282, 53, 393, 261, 290, 351, 419,
262, 285, 263, 310, 264, 265, 266, 293, 388, 389,
- 450, 482, 335, 336, 267, 268, 269, 321, 322, 82,
+ 451, 484, 335, 336, 267, 268, 269, 321, 322, 82,
157, 158, 159, 47, 48, 148, 160, 150, 40, 41,
184, 185, 84, 85, 86, 87
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-#define YYPACT_NINF -422
+#define YYPACT_NINF -403
static const yytype_int16 yypact[] =
{
- 358, -422, -75, -19, -67, 1, -71, -422, -422, 20,
- -422, 145, 150, 358, -422, -422, -422, 155, -422, -422,
- -422, -422, -422, 44, 96, 171, 51, 179, 2, 156,
- 184, 110, -422, -422, -422, -422, 76, 79, -422, -422,
- 68, 469, -422, -422, -422, -422, -422, -422, -422, -422,
- -422, -422, -422, 89, -422, 86, -422, 199, -422, -422,
- -422, -422, 216, -422, 101, -422, 54, 113, -422, -422,
- 202, -422, -422, -422, -422, -422, -422, -422, -422, -422,
- -422, -422, -422, -422, 87, -422, -422, -422, 436, 103,
- 114, 111, -422, -422, -422, 469, 118, -422, 223, 115,
- -422, -422, 469, -422, -422, -422, -422, -422, 108, -422,
- 112, -422, 117, 120, 122, 131, 132, -422, -422, -422,
- -422, -422, -422, -422, 233, 436, -422, 104, 455, 455,
- -422, 167, 436, -422, 389, -422, 42, 12, 127, 140,
- 146, 42, 42, -422, -422, -422, -422, -422, -422, 121,
- -422, 143, 135, 166, -422, -422, 152, -422, 198, -422,
- -422, -422, -422, 147, 151, 158, -422, -422, -422, -422,
- -422, -422, -422, -60, -422, 159, 168, 173, 175, 275,
- 42, 42, -422, -422, 157, 469, -422, 389, -422, -422,
- -422, 169, 127, -422, -422, -422, -422, -422, -422, 34,
- -422, -422, -422, 87, 178, -422, -422, -422, -422, 170,
- 308, -422, -422, -422, -422, 310, 246, 37, 21, -422,
- -422, 156, 243, -422, -422, -422, -422, 318, 242, -422,
- -422, 215, 104, -422, -69, 266, 314, 469, -422, 212,
- -49, -422, -422, 183, -422, -422, 322, 335, 336, -422,
- -422, -422, 389, -422, -422, -422, -422, -422, -422, 217,
- 340, -422, -422, -422, -422, -422, -422, -422, -422, -422,
- 397, -422, -422, -422, 469, 203, 469, 203, -422, 156,
- 274, 156, 156, -422, 232, 228, -422, -422, -422, -422,
- 432, -422, -422, 230, -422, -422, -422, -422, -422, -422,
- -422, -422, -422, -422, -422, -422, -422, 224, 56, -422,
- 469, 8, 347, -422, -422, -422, -422, -422, -422, -422,
- -422, -69, 469, 351, -69, 469, 254, 346, 260, 261,
- 432, -422, -422, -422, 353, -422, -56, -422, 483, 497,
- -422, -422, -422, -422, 252, 262, 389, 277, -422, -422,
- -422, 469, -422, -85, 422, 268, -422, -422, -422, -422,
- 270, -422, -422, -69, -422, 377, -69, -422, 384, 296,
- 326, -422, -422, 278, 279, -55, -3, 17, 7, 346,
- 539, 281, 8, 378, -54, -422, -422, 383, -52, -422,
- -422, -422, 284, -422, -422, -422, -422, -422, -422, -422,
- -422, -422, -422, -422, -422, -422, -422, -422, -422, -422,
- -422, -422, -422, -422, -422, -422, -422, -422, 469, 286,
- 299, -422, -69, -422, -69, -422, -422, 254, 104, 104,
- -422, 469, 469, 22, 409, -422, 469, -422, 410, -422,
- 469, -422, 411, -422, 395, -422, 183, 469, 511, -422,
- 119, 469, 525, -422, -422, 293, -422, 469, 304, -422,
- -422, -422, -422, -422, -422, 419, 469, 469, 548, 113,
- -422, -422, -422, -422, -422, 346, 315, -422, 425, -422,
- -422, 323, -422, -422, 426, -422, 325, -422, -422, -422,
- -422, 5, 453, 9, 11, -422, 454, 119, 119, -422,
- 497, 469, 350, 469, -422, -422, 469, -422, -422, 469,
- -422, 469, 15, -422, -48, -422, 344, -422, 463, 470,
- 471, -422, 346, -422, 472, -422, -422, -422, -422, -422,
- 156, -422, -422, 254, 8, -422
+ 40, -403, -98, -70, -63, -49, -34, -403, -403, -17,
+ -403, 98, 130, 40, -403, -403, -403, 128, -403, -403,
+ -403, -403, -403, 29, 78, 155, 66, 177, 170, 176,
+ 189, 104, -403, -403, -403, -403, 85, 91, -403, -403,
+ 88, 435, -403, -403, -403, -403, -403, -403, -403, -403,
+ -403, -403, -403, 108, -403, 107, -403, 217, -403, -403,
+ -403, -403, 151, -403, 132, -403, 23, 135, -403, -403,
+ 230, -403, -403, -403, -403, -403, -403, -403, -403, -403,
+ -403, -403, -403, -403, 94, -403, -403, -403, 425, 116,
+ 137, 139, -403, -403, -403, 435, 141, -403, 252, 143,
+ -403, -403, 435, -403, -403, -403, -403, -403, 140, -403,
+ 142, -403, 154, 156, 159, 164, 165, -403, -403, -403,
+ -403, -403, -403, -403, 257, 425, -403, 131, 421, 421,
+ -403, 193, 425, -403, 369, -403, 86, -21, 101, 183,
+ 195, 86, 86, -403, -403, -403, -403, -403, -403, 149,
+ -403, 188, 203, 214, -403, -403, 191, -403, 253, -403,
+ -403, -403, -403, 197, 205, 212, -403, -403, -403, -403,
+ -403, -403, -403, -55, -403, 215, 221, 222, 223, 318,
+ 86, 86, -403, -403, 218, 435, -403, 369, -403, -403,
+ -403, 226, 101, -403, -403, -403, -403, -403, -403, 20,
+ -403, -403, -403, 94, 227, -403, -403, -403, -403, 240,
+ 326, -403, -403, -403, -403, 355, 288, 27, 10, -403,
+ -403, 176, 290, -403, -403, -403, -403, 363, 228, -403,
+ -403, 260, 131, -403, -51, 213, 250, 435, -403, 271,
+ 54, -403, -403, 343, -403, -403, 390, 395, 397, -403,
+ -403, -403, 369, -403, -403, -403, -403, -403, -403, 276,
+ 399, -403, -403, -403, -403, -403, -403, -403, -403, -403,
+ 334, -403, -403, -403, 435, 216, 435, 216, -403, 176,
+ 332, 176, 176, -403, 285, 283, -403, -403, -403, -403,
+ 505, -403, -403, 284, -403, -403, -403, -403, -403, -403,
+ -403, -403, -403, -403, -403, -403, -403, 280, 56, -403,
+ 435, 13, 403, -403, -403, -403, -403, -403, -403, -403,
+ -403, -51, 435, 405, -51, 435, 307, 194, 310, 311,
+ 505, -403, -403, -403, 400, -403, -30, -403, 449, 463,
+ -403, -403, -403, -403, 295, 299, 369, 317, -403, -403,
+ -403, 435, -403, -42, 373, 312, -403, -403, -403, -403,
+ 313, -403, -403, -51, -403, 426, -51, -403, 428, 339,
+ 374, -403, -403, 322, 324, -22, -3, 3, 5, 194,
+ 514, 331, 13, 438, 6, -403, -403, 442, 14, -403,
+ 444, -403, -403, 345, -403, -403, -403, -403, -403, -403,
+ -403, -403, -403, -403, -403, -403, -403, -403, -403, -403,
+ -403, -403, -403, -403, -403, -403, -403, -403, -403, 435,
+ 344, 357, -403, -51, -403, -51, -403, -403, 307, 131,
+ 131, -403, 435, 435, 106, 468, -403, 435, -403, 476,
+ -403, 435, -403, 484, -403, 459, -403, 343, 435, 477,
+ -403, 171, 435, 491, -403, 435, -403, 364, -403, 435,
+ 365, -403, -403, -403, -403, -403, -403, 486, 435, 435,
+ 523, 135, -403, -403, -403, -403, -403, 194, 368, -403,
+ 469, -403, -403, 370, -403, -403, 478, -403, -403, 376,
+ -403, -403, -403, -403, 8, 494, 9, 52, -403, 495,
+ 171, 171, -403, 463, 435, 389, 435, -403, -403, 435,
+ -403, -403, 435, -403, 435, 146, -403, 22, -403, 406,
+ -403, 518, 528, 540, -403, 194, -403, 542, -403, -403,
+ -403, -403, -403, 176, -403, -403, 307, 13, -403
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -422, -422, -422, 464, 18, -162, -422, -422, -422, -422,
- 257, -422, -422, 10, -422, 424, -422, -422, -422, 141,
- -422, -422, -422, 28, -422, -422, -422, -422, -422, -422,
- -422, -422, -422, -422, -422, -422, -422, -422, -422, -422,
- -422, 297, -422, -422, -422, -422, -422, 356, -422, 375,
- -422, -422, -422, -422, -422, -422, -330, -422, -422, -422,
- -422, -422, -422, -422, -422, -422, -422, -422, -422, -422,
- -422, -422, 291, 283, -422, -66, -422, -422, -421, -422,
- -422, -422, -422, -422, -219, -422, -422, -422, -422, -422,
- -422, -422, -422, -422, -422, 63, -213, -422, 14, -328,
- -397, -422, 130, 181, -422, -422, -422, 235, 238, -130,
- 264, -422, 330, -422, 226, -220, -36, -41, -167, -422,
- -422, -422, 334, 439, -422, -124
+ -403, -403, -403, 534, 7, -144, -403, -403, -403, -403,
+ 330, -403, -403, 38, -403, 490, -403, -403, -403, 220,
+ -403, -403, -403, 37, -403, -403, -403, -403, -403, -403,
+ -403, -403, -403, -403, -403, -403, -403, -403, -403, -403,
+ -403, 380, -403, -403, -403, -403, -403, 429, -403, 450,
+ -403, -403, -403, -403, -403, -403, -331, -403, -403, -403,
+ -403, -403, -403, -403, -403, -403, -403, -403, -403, -403,
+ -403, -403, 371, 342, -403, -66, -403, -403, -402, -403,
+ -403, -403, -403, -403, -219, -403, -403, -403, -403, -403,
+ -403, -403, -403, -403, -403, 127, -213, -403, 77, -328,
+ -366, -403, 206, 259, -403, -403, -403, 323, 325, -130,
+ 351, -403, 407, -403, 301, -218, 83, -41, -167, -403,
+ -403, -403, 431, 512, -403, -124
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
@@ -1924,144 +1950,140 @@
#define YYTABLE_NINF -260
static const yytype_int16 yytable[] =
{
- 83, 100, 231, 145, 156, 191, 461, 382, 431, 505,
- 385, 439, 192, 508, 273, 510, 380, 380, 448, 204,
- 452, 435, 227, 440, 452, -164, 357, 358, 359, 360,
- 283, -164, 436, -164, -164, -164, 307, 213, 22, 208,
- 146, -259, 4, 5, 521, 4, 5, 24, 147, 60,
- -164, -164, -164, 26, 130, 213, -164, 156, -43, 65,
- 326, 83, 328, 329, -24, -22, 209, 193, 95, 209,
- 343, 381, 430, 449, 497, 453, 498, 506, 522, 525,
- 60, 509, 432, 511, 96, -164, -164, -164, -164, 441,
- 65, 523, 149, 151, 23, 352, -164, 437, 270, 466,
- -164, 364, -164, 464, 367, 467, 468, -84, 272, 361,
- -85, 43, 535, 284, 25, 44, 2, 3, 45, 46,
- 479, 164, 156, 56, 485, 165, -164, -164, -164, -164,
- -164, -164, 97, 30, -164, 6, 480, -164, -164, -164,
- 481, 55, 355, 421, 83, 210, 423, -164, 210, 32,
- 33, 177, 178, 211, 212, 161, 211, 212, 162, 35,
- 337, 72, 73, 74, 75, 249, 76, 36, 37, 344,
- 78, 79, 345, 346, 81, 38, 39, 341, 353, 166,
- 167, 168, 169, 42, 347, 348, 349, 350, 54, 69,
- 200, 201, 70, 71, 275, 277, 278, 372, 89, -24,
- 337, 534, 459, 92, 460, 94, 101, 9, 49, 50,
- 51, 52, 56, 313, -47, 56, 156, 77, 78, 79,
- 80, 57, 2, 3, 129, 102, 127, 133, 128, 58,
- 59, 131, 134, 312, 136, 323, 170, 143, 137, 152,
- 171, 6, 455, 138, 180, 182, 139, 55, 140, 443,
- 337, 172, 234, 175, 235, 236, 237, 141, 142, 176,
- 314, 315, 316, 317, 318, 319, 181, 354, 183, 356,
- 187, 238, 239, 240, 188, 320, 186, 241, 189, 198,
- 274, 365, 202, 222, 368, 190, 194, 486, 72, 73,
- 74, 75, 249, 76, 206, 195, 250, 386, 386, 251,
- 196, 81, 197, 220, 462, 463, 242, 243, 244, 245,
- 393, 533, 223, 9, 224, 232, 284, 246, 56, 225,
- -48, 247, 233, 248, 271, 280, 286, 57, 276, 72,
- 73, 74, 75, 43, 76, 58, 59, 340, 494, 287,
- 288, 46, 81, 291, 292, 499, 327, 72, 73, 74,
- 75, 249, 76, 307, 330, 250, 339, 363, 251, 252,
- 81, 366, 1, 369, 2, 3, 4, 5, 253, 373,
- 374, 72, 73, 74, 75, 379, 76, 456, -257, 77,
- 78, 79, 80, 6, 81, 7, 391, 422, -258, 8,
- 386, 465, 531, 419, 424, 471, 420, 425, 427, 473,
- 447, 428, 429, 496, 446, 451, 477, 386, 454, 457,
- 483, 386, 458, 470, 472, 474, 488, 475, 487, 72,
- 73, 74, 75, 490, 76, 491, 492, 77, 78, 79,
- 80, 489, 81, 294, 295, 296, 297, 298, 299, 300,
- 301, 500, 302, 303, 304, 305, 306, 501, 503, 502,
- 504, 72, 73, 74, 75, 9, 76, 507, 513, 386,
- 515, 10, 517, 516, 81, 518, 394, 527, 519, 11,
- 520, 526, 395, 396, 528, 529, 532, 34, 397, 398,
- 399, 400, 401, 402, 403, 254, 93, 390, 153, 207,
- 404, 405, 406, 407, 72, 73, 74, 75, 146, 76,
- 144, 228, 77, 78, 79, 80, 147, 81, 226, 476,
- 445, 375, 324, 154, 514, 325, 289, 205, 307, 203,
- 308, 309, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 112, 113, 342, 114, 115, 116, 72, 73, 74,
- 75, 135, 76, 0, 408, 334, 409, 0, 0, 0,
- 81, 0, 410, 411, 412, 413, 414, 415, 416, 417,
- 72, 73, 74, 75, 146, 76, 0, 0, 77, 78,
- 79, 80, 147, 81, 72, 73, 74, 75, 0, 76,
- 0, 0, 77, 78, 79, 80, 0, 81, 72, 73,
- 74, 75, 0, 76, 0, 0, 383, 78, 79, 80,
- 0, 81, 72, 73, 74, 75, 0, 76, 0, 0,
- 387, 78, 79, 80, 0, 81, 72, 73, 74, 75,
- 0, 76, 0, 0, 478, 78, 79, 80, 0, 81,
- 72, 73, 74, 75, 0, 76, 0, 0, 484, 78,
- 79, 80, 0, 81, 72, 73, 74, 75, 0, 76,
- 0, 0, 444, 72, 73, 74, 75, 81, 76, 0,
- 0, 493, 0, 0, 0, 0, 81
+ 83, 100, 231, 145, 156, 191, 382, 436, 432, 440,
+ 385, 227, 508, 511, -164, 22, 273, 192, 437, 204,
+ -164, 441, -164, -164, -164, 208, 463, -43, 4, 5,
+ 283, 357, 358, 359, 360, 4, 5, 95, 60, -164,
+ -164, -164, 380, 23, 1, -164, 2, 3, 4, 5,
+ 380, 24, 209, 96, 130, 213, 513, 156, 146, 209,
+ 326, 83, 328, 329, 25, 6, 147, 7, 65, 60,
+ 343, 8, 193, 213, -164, -164, -164, -164, 449, 307,
+ 509, 512, 433, 438, -259, -164, 453, 442, 164, -164,
+ 26, -164, 165, -84, 453, 352, 30, 381, 270, 65,
+ -85, 97, 32, 364, 466, 431, 367, 500, 272, 501,
+ 2, 3, 56, 284, 361, -164, -164, -164, -164, -164,
+ -164, 481, 156, -164, 514, 487, -164, -164, -164, 6,
+ 33, 210, 35, 450, 538, 55, -164, 9, 210, 211,
+ 212, 454, 355, 10, 83, 422, 211, 212, 424, 528,
+ 37, 11, 36, 166, 167, 168, 169, 2, 3, 38,
+ 337, 72, 73, 74, 75, 249, 76, -24, -22, 344,
+ 78, 79, 345, 346, 81, 524, 6, 341, 353, 177,
+ 178, 42, 55, 468, 347, 348, 349, 350, 482, 469,
+ 470, 39, 483, 54, 275, 277, 278, 372, 69, 161,
+ 337, 9, 162, 537, 70, 461, 56, 462, -47, 525,
+ 170, 149, 151, 71, 171, 57, 156, 89, 200, 201,
+ -24, 92, 526, 58, 59, 172, 313, 274, 49, 50,
+ 51, 52, 102, 312, 101, 323, 94, 56, 234, 127,
+ 235, 236, 237, 457, 77, 78, 79, 80, 9, 444,
+ 337, 128, 129, 56, 131, -48, 133, 238, 239, 240,
+ 134, 143, 57, 241, 276, 152, 136, 354, 137, 356,
+ 58, 59, 180, 314, 315, 316, 317, 318, 319, 43,
+ 138, 365, 139, 44, 368, 140, 45, 46, 320, 489,
+ 141, 142, 242, 243, 244, 245, 175, 386, 390, 72,
+ 73, 74, 75, 246, 76, 464, 465, 247, 176, 248,
+ 394, 181, 81, 182, 536, 186, 183, 284, 72, 73,
+ 74, 75, 198, 76, 188, 187, 77, 78, 79, 80,
+ 223, 81, 189, 72, 73, 74, 75, 249, 76, 190,
+ 497, 250, 194, 202, 251, 252, 81, 502, 195, 196,
+ 197, 206, 220, 222, 253, 72, 73, 74, 75, 224,
+ 76, 225, 232, 77, 78, 79, 80, 233, 81, 271,
+ 294, 295, 296, 297, 298, 299, 300, 301, 458, 302,
+ 303, 304, 305, 306, 280, 72, 73, 74, 75, 43,
+ 76, 386, 467, 340, 286, 534, 473, 46, 81, 287,
+ 475, 288, 291, 292, 327, 499, 307, 479, 386, 330,
+ 339, 485, 386, 363, 488, 366, 369, 395, 491, 373,
+ 374, -257, 379, 396, 397, -258, 392, 494, 495, 398,
+ 399, 400, 401, 402, 403, 404, 423, 420, 425, 421,
+ 426, 405, 406, 407, 408, 429, 428, 430, 72, 73,
+ 74, 75, 249, 76, 447, 307, 250, 308, 309, 251,
+ 448, 81, 390, 518, 452, 520, 455, 459, 521, 456,
+ 460, 522, 472, 523, 72, 73, 74, 75, 146, 76,
+ 474, 477, 77, 78, 79, 80, 147, 81, 476, 490,
+ 493, 504, 492, 154, 503, 409, 505, 410, 510, 516,
+ 506, 507, 519, 411, 412, 413, 414, 415, 416, 417,
+ 418, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 112, 113, 530, 114, 115, 116, 72, 73, 74, 75,
+ 146, 76, 531, 529, 77, 78, 79, 80, 147, 81,
+ 72, 73, 74, 75, 532, 76, 535, 34, 77, 78,
+ 79, 80, 93, 81, 72, 73, 74, 75, 254, 76,
+ 228, 153, 383, 78, 79, 80, 391, 81, 72, 73,
+ 74, 75, 207, 76, 478, 144, 387, 78, 79, 80,
+ 517, 81, 72, 73, 74, 75, 446, 76, 226, 375,
+ 480, 78, 79, 80, 205, 81, 72, 73, 74, 75,
+ 324, 76, 325, 289, 486, 78, 79, 80, 342, 81,
+ 72, 73, 74, 75, 135, 76, 203, 0, 334, 72,
+ 73, 74, 75, 81, 76, 0, 0, 445, 72, 73,
+ 74, 75, 81, 76, 0, 0, 496, 0, 0, 0,
+ 0, 81
};
static const yytype_int16 yycheck[] =
{
- 41, 67, 221, 127, 134, 172, 427, 337, 11, 4,
- 338, 4, 72, 4, 234, 4, 72, 72, 72, 186,
- 72, 4, 1, 16, 72, 4, 18, 19, 20, 21,
- 243, 10, 15, 12, 13, 14, 121, 199, 113, 5,
- 109, 126, 8, 9, 29, 8, 9, 114, 117, 31,
- 29, 30, 31, 124, 95, 217, 35, 187, 4, 31,
- 279, 102, 281, 282, 113, 114, 32, 127, 14, 32,
- 14, 127, 127, 127, 471, 127, 473, 72, 63, 127,
- 62, 72, 85, 72, 30, 64, 65, 66, 67, 82,
- 62, 76, 128, 129, 113, 308, 75, 80, 228, 77,
- 79, 321, 81, 431, 324, 83, 84, 73, 232, 101,
- 73, 109, 533, 243, 113, 113, 6, 7, 116, 117,
- 448, 109, 252, 102, 452, 113, 105, 106, 107, 108,
- 109, 110, 78, 113, 113, 25, 17, 116, 117, 118,
- 21, 31, 309, 363, 185, 111, 366, 126, 111, 4,
- 0, 141, 142, 119, 120, 113, 119, 120, 116, 4,
- 290, 105, 106, 107, 108, 109, 110, 123, 72, 113,
- 114, 115, 116, 117, 118, 4, 125, 307, 308, 52,
- 53, 54, 55, 4, 128, 129, 130, 131, 4, 113,
- 180, 181, 113, 125, 235, 236, 237, 327, 109, 113,
- 330, 531, 422, 4, 424, 104, 4, 97, 52, 53,
- 54, 55, 102, 10, 104, 102, 346, 113, 114, 115,
- 116, 111, 6, 7, 113, 138, 123, 4, 114, 119,
- 120, 113, 117, 274, 126, 276, 109, 4, 126, 72,
- 113, 25, 409, 126, 123, 110, 126, 31, 126, 379,
- 380, 124, 10, 113, 12, 13, 14, 126, 126, 113,
- 57, 58, 59, 60, 61, 62, 123, 308, 102, 310,
- 72, 29, 30, 31, 127, 72, 124, 35, 127, 4,
- 14, 322, 125, 113, 325, 127, 127, 454, 105, 106,
- 107, 108, 109, 110, 125, 127, 113, 338, 339, 116,
- 127, 118, 127, 125, 428, 429, 64, 65, 66, 67,
- 351, 530, 4, 97, 4, 72, 446, 75, 102, 73,
- 104, 79, 4, 81, 109, 113, 4, 111, 14, 105,
- 106, 107, 108, 109, 110, 119, 120, 113, 468, 4,
- 4, 117, 118, 126, 4, 475, 72, 105, 106, 107,
- 108, 109, 110, 121, 126, 113, 126, 10, 116, 117,
- 118, 10, 4, 109, 6, 7, 8, 9, 126, 109,
- 109, 105, 106, 107, 108, 22, 110, 418, 126, 113,
- 114, 115, 116, 25, 118, 27, 109, 10, 126, 31,
- 431, 432, 522, 125, 10, 436, 126, 101, 72, 440,
- 22, 123, 123, 469, 123, 22, 447, 448, 124, 123,
- 451, 452, 113, 4, 4, 4, 457, 22, 125, 105,
- 106, 107, 108, 4, 110, 466, 467, 113, 114, 115,
- 116, 127, 118, 36, 37, 38, 39, 40, 41, 42,
- 43, 126, 45, 46, 47, 48, 49, 22, 22, 126,
- 125, 105, 106, 107, 108, 97, 110, 4, 4, 500,
- 501, 103, 503, 113, 118, 506, 44, 4, 509, 111,
- 511, 127, 50, 51, 4, 4, 4, 13, 56, 57,
- 58, 59, 60, 61, 62, 228, 62, 346, 132, 192,
- 68, 69, 70, 71, 105, 106, 107, 108, 109, 110,
- 125, 218, 113, 114, 115, 116, 117, 118, 217, 446,
- 380, 330, 277, 124, 500, 277, 252, 187, 121, 185,
- 123, 124, 86, 87, 88, 89, 90, 91, 92, 93,
- 94, 95, 96, 307, 98, 99, 100, 105, 106, 107,
- 108, 102, 110, -1, 122, 113, 124, -1, -1, -1,
- 118, -1, 130, 131, 132, 133, 134, 135, 136, 137,
- 105, 106, 107, 108, 109, 110, -1, -1, 113, 114,
- 115, 116, 117, 118, 105, 106, 107, 108, -1, 110,
- -1, -1, 113, 114, 115, 116, -1, 118, 105, 106,
- 107, 108, -1, 110, -1, -1, 113, 114, 115, 116,
- -1, 118, 105, 106, 107, 108, -1, 110, -1, -1,
- 113, 114, 115, 116, -1, 118, 105, 106, 107, 108,
- -1, 110, -1, -1, 113, 114, 115, 116, -1, 118,
- 105, 106, 107, 108, -1, 110, -1, -1, 113, 114,
- 115, 116, -1, 118, 105, 106, 107, 108, -1, 110,
- -1, -1, 113, 105, 106, 107, 108, 118, 110, -1,
- -1, 113, -1, -1, -1, -1, 118
+ 41, 67, 221, 127, 134, 172, 337, 4, 11, 4,
+ 338, 1, 4, 4, 4, 113, 234, 72, 15, 186,
+ 10, 16, 12, 13, 14, 5, 428, 4, 8, 9,
+ 243, 18, 19, 20, 21, 8, 9, 14, 31, 29,
+ 30, 31, 72, 113, 4, 35, 6, 7, 8, 9,
+ 72, 114, 32, 30, 95, 199, 4, 187, 109, 32,
+ 279, 102, 281, 282, 113, 25, 117, 27, 31, 62,
+ 14, 31, 127, 217, 64, 65, 66, 67, 72, 121,
+ 72, 72, 85, 80, 126, 75, 72, 82, 109, 79,
+ 124, 81, 113, 73, 72, 308, 113, 127, 228, 62,
+ 73, 78, 4, 321, 432, 127, 324, 473, 232, 475,
+ 6, 7, 102, 243, 101, 105, 106, 107, 108, 109,
+ 110, 449, 252, 113, 72, 453, 116, 117, 118, 25,
+ 0, 111, 4, 127, 536, 31, 126, 97, 111, 119,
+ 120, 127, 309, 103, 185, 363, 119, 120, 366, 127,
+ 72, 111, 123, 52, 53, 54, 55, 6, 7, 4,
+ 290, 105, 106, 107, 108, 109, 110, 113, 114, 113,
+ 114, 115, 116, 117, 118, 29, 25, 307, 308, 141,
+ 142, 4, 31, 77, 128, 129, 130, 131, 17, 83,
+ 84, 125, 21, 4, 235, 236, 237, 327, 113, 113,
+ 330, 97, 116, 534, 113, 423, 102, 425, 104, 63,
+ 109, 128, 129, 125, 113, 111, 346, 109, 180, 181,
+ 113, 4, 76, 119, 120, 124, 10, 14, 52, 53,
+ 54, 55, 138, 274, 4, 276, 104, 102, 10, 123,
+ 12, 13, 14, 410, 113, 114, 115, 116, 97, 379,
+ 380, 114, 113, 102, 113, 104, 4, 29, 30, 31,
+ 117, 4, 111, 35, 14, 72, 126, 308, 126, 310,
+ 119, 120, 123, 57, 58, 59, 60, 61, 62, 109,
+ 126, 322, 126, 113, 325, 126, 116, 117, 72, 456,
+ 126, 126, 64, 65, 66, 67, 113, 338, 339, 105,
+ 106, 107, 108, 75, 110, 429, 430, 79, 113, 81,
+ 351, 123, 118, 110, 533, 124, 102, 447, 105, 106,
+ 107, 108, 4, 110, 127, 72, 113, 114, 115, 116,
+ 4, 118, 127, 105, 106, 107, 108, 109, 110, 127,
+ 470, 113, 127, 125, 116, 117, 118, 477, 127, 127,
+ 127, 125, 125, 113, 126, 105, 106, 107, 108, 4,
+ 110, 73, 72, 113, 114, 115, 116, 4, 118, 109,
+ 36, 37, 38, 39, 40, 41, 42, 43, 419, 45,
+ 46, 47, 48, 49, 113, 105, 106, 107, 108, 109,
+ 110, 432, 433, 113, 4, 525, 437, 117, 118, 4,
+ 441, 4, 126, 4, 72, 471, 121, 448, 449, 126,
+ 126, 452, 453, 10, 455, 10, 109, 44, 459, 109,
+ 109, 126, 22, 50, 51, 126, 109, 468, 469, 56,
+ 57, 58, 59, 60, 61, 62, 10, 125, 10, 126,
+ 101, 68, 69, 70, 71, 123, 72, 123, 105, 106,
+ 107, 108, 109, 110, 123, 121, 113, 123, 124, 116,
+ 22, 118, 503, 504, 22, 506, 22, 123, 509, 124,
+ 113, 512, 4, 514, 105, 106, 107, 108, 109, 110,
+ 4, 22, 113, 114, 115, 116, 117, 118, 4, 125,
+ 4, 22, 127, 124, 126, 122, 126, 124, 4, 4,
+ 22, 125, 113, 130, 131, 132, 133, 134, 135, 136,
+ 137, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 4, 98, 99, 100, 105, 106, 107, 108,
+ 109, 110, 4, 127, 113, 114, 115, 116, 117, 118,
+ 105, 106, 107, 108, 4, 110, 4, 13, 113, 114,
+ 115, 116, 62, 118, 105, 106, 107, 108, 228, 110,
+ 218, 132, 113, 114, 115, 116, 346, 118, 105, 106,
+ 107, 108, 192, 110, 447, 125, 113, 114, 115, 116,
+ 503, 118, 105, 106, 107, 108, 380, 110, 217, 330,
+ 113, 114, 115, 116, 187, 118, 105, 106, 107, 108,
+ 277, 110, 277, 252, 113, 114, 115, 116, 307, 118,
+ 105, 106, 107, 108, 102, 110, 185, -1, 113, 105,
+ 106, 107, 108, 118, 110, -1, -1, 113, 105, 106,
+ 107, 108, 118, 110, -1, -1, 113, -1, -1, -1,
+ -1, 118
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -2107,21 +2129,21 @@
21, 101, 196, 10, 254, 256, 10, 254, 256, 109,
216, 217, 248, 109, 109, 242, 190, 201, 202, 22,
72, 127, 195, 113, 208, 238, 256, 113, 237, 238,
- 158, 109, 224, 256, 44, 50, 51, 56, 57, 58,
- 59, 60, 61, 62, 68, 69, 70, 71, 122, 124,
- 130, 131, 132, 133, 134, 135, 136, 137, 228, 125,
- 126, 254, 10, 254, 10, 101, 218, 72, 123, 123,
- 127, 11, 85, 185, 191, 4, 15, 80, 203, 4,
- 16, 82, 204, 248, 113, 241, 123, 22, 72, 127,
- 239, 22, 72, 127, 124, 257, 256, 123, 113, 254,
- 254, 217, 264, 264, 238, 256, 77, 83, 84, 189,
- 4, 256, 4, 256, 4, 22, 234, 256, 113, 238,
- 17, 21, 240, 256, 113, 238, 257, 125, 256, 127,
- 4, 256, 256, 113, 248, 184, 214, 239, 239, 248,
- 126, 22, 126, 22, 125, 4, 72, 4, 4, 72,
- 4, 72, 192, 4, 237, 256, 113, 256, 256, 256,
- 256, 29, 63, 76, 193, 127, 127, 4, 4, 4,
- 194, 248, 4, 223, 195, 217
+ 256, 158, 109, 224, 256, 44, 50, 51, 56, 57,
+ 58, 59, 60, 61, 62, 68, 69, 70, 71, 122,
+ 124, 130, 131, 132, 133, 134, 135, 136, 137, 228,
+ 125, 126, 254, 10, 254, 10, 101, 218, 72, 123,
+ 123, 127, 11, 85, 185, 191, 4, 15, 80, 203,
+ 4, 16, 82, 204, 248, 113, 241, 123, 22, 72,
+ 127, 239, 22, 72, 127, 22, 124, 257, 256, 123,
+ 113, 254, 254, 217, 264, 264, 238, 256, 77, 83,
+ 84, 189, 4, 256, 4, 256, 4, 22, 234, 256,
+ 113, 238, 17, 21, 240, 256, 113, 238, 256, 257,
+ 125, 256, 127, 4, 256, 256, 113, 248, 184, 214,
+ 239, 239, 248, 126, 22, 126, 22, 125, 4, 72,
+ 4, 4, 72, 4, 72, 192, 4, 237, 256, 113,
+ 256, 256, 256, 256, 29, 63, 76, 193, 127, 127,
+ 4, 4, 4, 194, 248, 4, 223, 195, 217
};
#define yyerrok (yyerrstatus = 0)
@@ -2949,22 +2971,22 @@
switch (yyn)
{
case 2:
-#line 880 "compilers/imcc/imcc.y"
+#line 905 "compilers/imcc/imcc.y"
{ if (yynerrs) YYABORT; (yyval.i) = 0; }
break;
case 5:
-#line 889 "compilers/imcc/imcc.y"
+#line 914 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(1) - (1)].i); }
break;
case 6:
-#line 890 "compilers/imcc/imcc.y"
+#line 915 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(1) - (1)].i); }
break;
case 7:
-#line 892 "compilers/imcc/imcc.y"
+#line 917 "compilers/imcc/imcc.y"
{
(yyval.i) = (yyvsp[(1) - (1)].i);
imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -2973,7 +2995,7 @@
break;
case 8:
-#line 898 "compilers/imcc/imcc.y"
+#line 923 "compilers/imcc/imcc.y"
{
(yyval.i) = (yyvsp[(1) - (1)].i);
imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -2982,32 +3004,32 @@
break;
case 9:
-#line 903 "compilers/imcc/imcc.y"
+#line 928 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 10:
-#line 904 "compilers/imcc/imcc.y"
+#line 929 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 11:
-#line 905 "compilers/imcc/imcc.y"
+#line 930 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 12:
-#line 906 "compilers/imcc/imcc.y"
+#line 931 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 13:
-#line 910 "compilers/imcc/imcc.y"
+#line 935 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 14:
-#line 912 "compilers/imcc/imcc.y"
+#line 937 "compilers/imcc/imcc.y"
{
(yyval.i) = 0;
do_loadlib(interp, (yyvsp[(2) - (3)].s));
@@ -3016,7 +3038,7 @@
break;
case 15:
-#line 921 "compilers/imcc/imcc.y"
+#line 946 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->line = atoi((yyvsp[(2) - (5)].s));
set_filename(interp, (yyvsp[(4) - (5)].s));
@@ -3024,14 +3046,14 @@
break;
case 16:
-#line 926 "compilers/imcc/imcc.y"
+#line 951 "compilers/imcc/imcc.y"
{
set_filename(interp, (yyvsp[(2) - (3)].s));
}
break;
case 17:
-#line 933 "compilers/imcc/imcc.y"
+#line 958 "compilers/imcc/imcc.y"
{
/* We'll want to store an entry while emitting instructions, so just
* store annotation like it's an instruction. */
@@ -3042,7 +3064,7 @@
break;
case 18:
-#line 945 "compilers/imcc/imcc.y"
+#line 970 "compilers/imcc/imcc.y"
{
STRING * const hll_name = string_unescape_cstring(interp, (yyvsp[(2) - (2)].s) + 1, '"', NULL);
CONTEXT(interp)->current_HLL =
@@ -3054,7 +3076,7 @@
break;
case 19:
-#line 954 "compilers/imcc/imcc.y"
+#line 979 "compilers/imcc/imcc.y"
{
Parrot_Context *ctx = CONTEXT(interp);
STRING * const built_in_name =
@@ -3072,12 +3094,12 @@
break;
case 20:
-#line 971 "compilers/imcc/imcc.y"
+#line 996 "compilers/imcc/imcc.y"
{ is_def = 1; }
break;
case 21:
-#line 972 "compilers/imcc/imcc.y"
+#line 997 "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));
@@ -3086,12 +3108,12 @@
break;
case 22:
-#line 980 "compilers/imcc/imcc.y"
+#line 1005 "compilers/imcc/imcc.y"
{ is_def=1; }
break;
case 23:
-#line 981 "compilers/imcc/imcc.y"
+#line 1006 "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));
is_def = 0;
@@ -3099,12 +3121,12 @@
break;
case 24:
-#line 986 "compilers/imcc/imcc.y"
+#line 1011 "compilers/imcc/imcc.y"
{ is_def=1; }
break;
case 25:
-#line 987 "compilers/imcc/imcc.y"
+#line 1012 "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));
is_def = 0;
@@ -3112,37 +3134,37 @@
break;
case 30:
-#line 1003 "compilers/imcc/imcc.y"
+#line 1028 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 31:
-#line 1004 "compilers/imcc/imcc.y"
+#line 1029 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 32:
-#line 1005 "compilers/imcc/imcc.y"
+#line 1030 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 33:
-#line 1006 "compilers/imcc/imcc.y"
+#line 1031 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 34:
-#line 1007 "compilers/imcc/imcc.y"
+#line 1032 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(1) - (1)].i); }
break;
case 37:
-#line 1012 "compilers/imcc/imcc.y"
+#line 1037 "compilers/imcc/imcc.y"
{ clear_state(interp); }
break;
case 38:
-#line 1014 "compilers/imcc/imcc.y"
+#line 1039 "compilers/imcc/imcc.y"
{
(yyval.i) = INS(interp, IMCC_INFO(interp)->cur_unit,
(yyvsp[(2) - (3)].s), 0, IMCC_INFO(interp)->regs,
@@ -3152,7 +3174,7 @@
break;
case 39:
-#line 1021 "compilers/imcc/imcc.y"
+#line 1046 "compilers/imcc/imcc.y"
{
imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM);
@@ -3160,7 +3182,7 @@
break;
case 40:
-#line 1026 "compilers/imcc/imcc.y"
+#line 1051 "compilers/imcc/imcc.y"
{
(yyval.i) = iSUBROUTINE(interp,
IMCC_INFO(interp)->cur_unit,
@@ -3170,14 +3192,14 @@
break;
case 41:
-#line 1033 "compilers/imcc/imcc.y"
+#line 1058 "compilers/imcc/imcc.y"
{
(yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr));
}
break;
case 42:
-#line 1037 "compilers/imcc/imcc.y"
+#line 1062 "compilers/imcc/imcc.y"
{
SymReg *r = mk_pasm_reg(interp, (yyvsp[(4) - (4)].s));
set_lexical(interp, r, (yyvsp[(2) - (4)].s));
@@ -3188,17 +3210,17 @@
break;
case 43:
-#line 1044 "compilers/imcc/imcc.y"
+#line 1069 "compilers/imcc/imcc.y"
{ (yyval.i) = 0;}
break;
case 45:
-#line 1052 "compilers/imcc/imcc.y"
+#line 1077 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); }
break;
case 46:
-#line 1055 "compilers/imcc/imcc.y"
+#line 1080 "compilers/imcc/imcc.y"
{
/* if (optimizer_level & OPT_PASM)
imc_compile_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -3209,7 +3231,7 @@
break;
case 49:
-#line 1071 "compilers/imcc/imcc.y"
+#line 1096 "compilers/imcc/imcc.y"
{
int re_open = 0;
(yyval.i) = 0;
@@ -3224,7 +3246,7 @@
break;
case 50:
-#line 1086 "compilers/imcc/imcc.y"
+#line 1111 "compilers/imcc/imcc.y"
{
if (IMCC_INFO(interp)->in_slice)
IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
@@ -3235,26 +3257,26 @@
break;
case 51:
-#line 1093 "compilers/imcc/imcc.y"
+#line 1118 "compilers/imcc/imcc.y"
{ (yyval.sr) = NULL; }
break;
case 52:
-#line 1098 "compilers/imcc/imcc.y"
+#line 1123 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PCCSUB);
}
break;
case 53:
-#line 1102 "compilers/imcc/imcc.y"
+#line 1127 "compilers/imcc/imcc.y"
{
iSUBROUTINE(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (3)].sr));
}
break;
case 54:
-#line 1106 "compilers/imcc/imcc.y"
+#line 1131 "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) {
@@ -3265,22 +3287,22 @@
break;
case 55:
-#line 1114 "compilers/imcc/imcc.y"
+#line 1139 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
break;
case 56:
-#line 1118 "compilers/imcc/imcc.y"
+#line 1143 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 57:
-#line 1119 "compilers/imcc/imcc.y"
+#line 1144 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 58:
-#line 1121 "compilers/imcc/imcc.y"
+#line 1146 "compilers/imcc/imcc.y"
{
if (IMCC_INFO(interp)->adv_named_id) {
add_pcc_named_param(interp, IMCC_INFO(interp)->cur_call,
@@ -3293,17 +3315,17 @@
break;
case 59:
-#line 1133 "compilers/imcc/imcc.y"
+#line 1158 "compilers/imcc/imcc.y"
{ is_def=1; }
break;
case 60:
-#line 1133 "compilers/imcc/imcc.y"
+#line 1158 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(3) - (3)].sr); is_def=0; }
break;
case 61:
-#line 1138 "compilers/imcc/imcc.y"
+#line 1163 "compilers/imcc/imcc.y"
{
if ((yyvsp[(3) - (3)].t) & VT_UNIQUE_REG)
(yyval.sr) = mk_ident_ur(interp, (yyvsp[(2) - (3)].s), (yyvsp[(1) - (3)].t));
@@ -3315,12 +3337,12 @@
break;
case 62:
-#line 1151 "compilers/imcc/imcc.y"
+#line 1176 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 63:
-#line 1156 "compilers/imcc/imcc.y"
+#line 1181 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
IMCC_INFO(interp)->cur_unit->outer = mk_sub_address_fromc(interp, (yyvsp[(3) - (4)].s));
@@ -3329,7 +3351,7 @@
break;
case 64:
-#line 1162 "compilers/imcc/imcc.y"
+#line 1187 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
IMCC_INFO(interp)->cur_unit->outer = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
@@ -3338,7 +3360,7 @@
break;
case 65:
-#line 1171 "compilers/imcc/imcc.y"
+#line 1196 "compilers/imcc/imcc.y"
{
(yyval.t) = P_VTABLE;
IMCC_INFO(interp)->cur_unit->vtable_name = NULL;
@@ -3347,7 +3369,7 @@
break;
case 66:
-#line 1177 "compilers/imcc/imcc.y"
+#line 1202 "compilers/imcc/imcc.y"
{
(yyval.t) = P_VTABLE;
IMCC_INFO(interp)->cur_unit->vtable_name = (yyvsp[(3) - (4)].s);
@@ -3356,7 +3378,7 @@
break;
case 67:
-#line 1186 "compilers/imcc/imcc.y"
+#line 1211 "compilers/imcc/imcc.y"
{
(yyval.t) = P_METHOD;
IMCC_INFO(interp)->cur_unit->method_name = NULL;
@@ -3365,7 +3387,7 @@
break;
case 68:
-#line 1192 "compilers/imcc/imcc.y"
+#line 1217 "compilers/imcc/imcc.y"
{
(yyval.t) = P_METHOD;
IMCC_INFO(interp)->cur_unit->method_name = (yyvsp[(3) - (4)].s);
@@ -3374,7 +3396,7 @@
break;
case 69:
-#line 1201 "compilers/imcc/imcc.y"
+#line 1226 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
IMCC_INFO(interp)->cur_unit->ns_entry_name = NULL;
@@ -3383,7 +3405,7 @@
break;
case 70:
-#line 1207 "compilers/imcc/imcc.y"
+#line 1232 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
IMCC_INFO(interp)->cur_unit->ns_entry_name = (yyvsp[(3) - (4)].s);
@@ -3392,7 +3414,7 @@
break;
case 71:
-#line 1216 "compilers/imcc/imcc.y"
+#line 1241 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
IMCC_INFO(interp)->cur_unit->instance_of = (yyvsp[(3) - (4)].s);
@@ -3400,7 +3422,7 @@
break;
case 72:
-#line 1224 "compilers/imcc/imcc.y"
+#line 1249 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
IMCC_INFO(interp)->cur_unit->subid = NULL;
@@ -3408,7 +3430,7 @@
break;
case 73:
-#line 1229 "compilers/imcc/imcc.y"
+#line 1254 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
IMCC_INFO(interp)->cur_unit->subid = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
@@ -3418,14 +3440,14 @@
break;
case 74:
-#line 1239 "compilers/imcc/imcc.y"
+#line 1264 "compilers/imcc/imcc.y"
{
add_pcc_multi(IMCC_INFO(interp)->cur_call, NULL);
}
break;
case 75:
-#line 1243 "compilers/imcc/imcc.y"
+#line 1268 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr));
@@ -3433,7 +3455,7 @@
break;
case 76:
-#line 1248 "compilers/imcc/imcc.y"
+#line 1273 "compilers/imcc/imcc.y"
{
(yyval.t) = 0;
add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr));
@@ -3441,27 +3463,27 @@
break;
case 77:
-#line 1255 "compilers/imcc/imcc.y"
+#line 1280 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, "INTVAL", 'S'); }
break;
case 78:
-#line 1256 "compilers/imcc/imcc.y"
+#line 1281 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); }
break;
case 79:
-#line 1257 "compilers/imcc/imcc.y"
+#line 1282 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, "PMC", 'S'); }
break;
case 80:
-#line 1258 "compilers/imcc/imcc.y"
+#line 1283 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, "STRING", 'S'); }
break;
case 81:
-#line 1260 "compilers/imcc/imcc.y"
+#line 1285 "compilers/imcc/imcc.y"
{
SymReg *r;
if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3475,7 +3497,7 @@
break;
case 82:
-#line 1271 "compilers/imcc/imcc.y"
+#line 1296 "compilers/imcc/imcc.y"
{
SymReg *r;
if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3489,12 +3511,12 @@
break;
case 83:
-#line 1281 "compilers/imcc/imcc.y"
+#line 1306 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(2) - (3)].sr); }
break;
case 86:
-#line 1291 "compilers/imcc/imcc.y"
+#line 1316 "compilers/imcc/imcc.y"
{
char name[128];
SymReg *r, *r1;
@@ -3521,82 +3543,82 @@
break;
case 87:
-#line 1319 "compilers/imcc/imcc.y"
+#line 1344 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
break;
case 88:
-#line 1323 "compilers/imcc/imcc.y"
+#line 1348 "compilers/imcc/imcc.y"
{ (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; }
break;
case 89:
-#line 1324 "compilers/imcc/imcc.y"
+#line 1349 "compilers/imcc/imcc.y"
{ (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; }
break;
case 90:
-#line 1328 "compilers/imcc/imcc.y"
+#line 1353 "compilers/imcc/imcc.y"
{ (yyval.i) = NULL; }
break;
case 91:
-#line 1329 "compilers/imcc/imcc.y"
+#line 1354 "compilers/imcc/imcc.y"
{ (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->object = (yyvsp[(2) - (3)].sr); }
break;
case 92:
-#line 1333 "compilers/imcc/imcc.y"
+#line 1358 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 94:
-#line 1338 "compilers/imcc/imcc.y"
+#line 1363 "compilers/imcc/imcc.y"
{ (yyval.t) = (yyvsp[(1) - (1)].t); }
break;
case 95:
-#line 1339 "compilers/imcc/imcc.y"
+#line 1364 "compilers/imcc/imcc.y"
{ (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
break;
case 96:
-#line 1343 "compilers/imcc/imcc.y"
+#line 1368 "compilers/imcc/imcc.y"
{ (yyval.t) = P_LOAD; }
break;
case 97:
-#line 1344 "compilers/imcc/imcc.y"
+#line 1369 "compilers/imcc/imcc.y"
{ (yyval.t) = P_INIT; }
break;
case 98:
-#line 1345 "compilers/imcc/imcc.y"
+#line 1370 "compilers/imcc/imcc.y"
{ (yyval.t) = P_MAIN; }
break;
case 99:
-#line 1346 "compilers/imcc/imcc.y"
+#line 1371 "compilers/imcc/imcc.y"
{ (yyval.t) = P_IMMEDIATE; }
break;
case 100:
-#line 1347 "compilers/imcc/imcc.y"
+#line 1372 "compilers/imcc/imcc.y"
{ (yyval.t) = P_POSTCOMP; }
break;
case 101:
-#line 1348 "compilers/imcc/imcc.y"
+#line 1373 "compilers/imcc/imcc.y"
{ (yyval.t) = P_ANON; }
break;
case 102:
-#line 1349 "compilers/imcc/imcc.y"
+#line 1374 "compilers/imcc/imcc.y"
{ (yyval.t) = P_NEED_LEX; }
break;
case 110:
-#line 1361 "compilers/imcc/imcc.y"
+#line 1386 "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));
@@ -3604,14 +3626,14 @@
break;
case 111:
-#line 1366 "compilers/imcc/imcc.y"
+#line 1391 "compilers/imcc/imcc.y"
{
add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
}
break;
case 112:
-#line 1370 "compilers/imcc/imcc.y"
+#line 1395 "compilers/imcc/imcc.y"
{
add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isNCI;
@@ -3619,21 +3641,21 @@
break;
case 113:
-#line 1375 "compilers/imcc/imcc.y"
+#line 1400 "compilers/imcc/imcc.y"
{
add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
}
break;
case 114:
-#line 1379 "compilers/imcc/imcc.y"
+#line 1404 "compilers/imcc/imcc.y"
{
add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (3)].s), 'S'));
}
break;
case 115:
-#line 1383 "compilers/imcc/imcc.y"
+#line 1408 "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));
@@ -3641,7 +3663,7 @@
break;
case 116:
-#line 1388 "compilers/imcc/imcc.y"
+#line 1413 "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));
@@ -3649,27 +3671,27 @@
break;
case 117:
-#line 1396 "compilers/imcc/imcc.y"
+#line 1421 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 118:
-#line 1397 "compilers/imcc/imcc.y"
+#line 1422 "compilers/imcc/imcc.y"
{ add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); }
break;
case 119:
-#line 1401 "compilers/imcc/imcc.y"
+#line 1426 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(2) - (2)].sr); }
break;
case 120:
-#line 1406 "compilers/imcc/imcc.y"
+#line 1431 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 121:
-#line 1408 "compilers/imcc/imcc.y"
+#line 1433 "compilers/imcc/imcc.y"
{
if ((yyvsp[(2) - (3)].sr))
add_pcc_result(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
@@ -3677,17 +3699,17 @@
break;
case 122:
-#line 1415 "compilers/imcc/imcc.y"
+#line 1440 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
break;
case 123:
-#line 1416 "compilers/imcc/imcc.y"
+#line 1441 "compilers/imcc/imcc.y"
{ is_def=1; }
break;
case 124:
-#line 1417 "compilers/imcc/imcc.y"
+#line 1442 "compilers/imcc/imcc.y"
{
IdList *l = (yyvsp[(4) - (4)].idlist);
SymReg *ignored;
@@ -3702,57 +3724,57 @@
break;
case 125:
-#line 1431 "compilers/imcc/imcc.y"
+#line 1456 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 126:
-#line 1432 "compilers/imcc/imcc.y"
+#line 1457 "compilers/imcc/imcc.y"
{ (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
break;
case 127:
-#line 1436 "compilers/imcc/imcc.y"
+#line 1461 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_FLAT; }
break;
case 128:
-#line 1437 "compilers/imcc/imcc.y"
+#line 1462 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_OPTIONAL; }
break;
case 129:
-#line 1438 "compilers/imcc/imcc.y"
+#line 1463 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_OPT_FLAG; }
break;
case 130:
-#line 1439 "compilers/imcc/imcc.y"
+#line 1464 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_NAMED; }
break;
case 131:
-#line 1440 "compilers/imcc/imcc.y"
+#line 1465 "compilers/imcc/imcc.y"
{ adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
break;
case 132:
-#line 1441 "compilers/imcc/imcc.y"
+#line 1466 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_UNIQUE_REG; }
break;
case 133:
-#line 1446 "compilers/imcc/imcc.y"
+#line 1471 "compilers/imcc/imcc.y"
{ begin_return_or_yield(interp, 0); }
break;
case 134:
-#line 1448 "compilers/imcc/imcc.y"
+#line 1473 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
break;
case 135:
-#line 1450 "compilers/imcc/imcc.y"
+#line 1475 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->asm_state = AsmDefault;
(yyval.i) = 0;
@@ -3760,22 +3782,22 @@
break;
case 136:
-#line 1457 "compilers/imcc/imcc.y"
+#line 1482 "compilers/imcc/imcc.y"
{ begin_return_or_yield(interp, 1); }
break;
case 137:
-#line 1459 "compilers/imcc/imcc.y"
+#line 1484 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
break;
case 138:
-#line 1463 "compilers/imcc/imcc.y"
+#line 1488 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 139:
-#line 1465 "compilers/imcc/imcc.y"
+#line 1490 "compilers/imcc/imcc.y"
{
if ((yyvsp[(1) - (2)].sr))
add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
@@ -3783,7 +3805,7 @@
break;
case 140:
-#line 1470 "compilers/imcc/imcc.y"
+#line 1495 "compilers/imcc/imcc.y"
{
if ((yyvsp[(2) - (3)].sr))
add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
@@ -3791,12 +3813,12 @@
break;
case 141:
-#line 1477 "compilers/imcc/imcc.y"
+#line 1502 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 142:
-#line 1479 "compilers/imcc/imcc.y"
+#line 1504 "compilers/imcc/imcc.y"
{
if ((yyvsp[(1) - (2)].sr))
add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
@@ -3804,7 +3826,7 @@
break;
case 143:
-#line 1484 "compilers/imcc/imcc.y"
+#line 1509 "compilers/imcc/imcc.y"
{
if ((yyvsp[(2) - (3)].sr))
add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
@@ -3812,17 +3834,17 @@
break;
case 144:
-#line 1491 "compilers/imcc/imcc.y"
+#line 1516 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
break;
case 145:
-#line 1495 "compilers/imcc/imcc.y"
+#line 1520 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
break;
case 146:
-#line 1500 "compilers/imcc/imcc.y"
+#line 1525 "compilers/imcc/imcc.y"
{
if (IMCC_INFO(interp)->asm_state == AsmDefault)
begin_return_or_yield(interp, (yyvsp[(1) - (2)].t));
@@ -3830,7 +3852,7 @@
break;
case 147:
-#line 1505 "compilers/imcc/imcc.y"
+#line 1530 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->asm_state = AsmDefault;
(yyval.t) = 0;
@@ -3838,22 +3860,22 @@
break;
case 148:
-#line 1512 "compilers/imcc/imcc.y"
+#line 1537 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 149:
-#line 1513 "compilers/imcc/imcc.y"
+#line 1538 "compilers/imcc/imcc.y"
{ (yyval.t) = 1; }
break;
case 150:
-#line 1517 "compilers/imcc/imcc.y"
+#line 1542 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 151:
-#line 1519 "compilers/imcc/imcc.y"
+#line 1544 "compilers/imcc/imcc.y"
{
if (IMCC_INFO(interp)->adv_named_id) {
add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
@@ -3866,14 +3888,14 @@
break;
case 152:
-#line 1529 "compilers/imcc/imcc.y"
+#line 1554 "compilers/imcc/imcc.y"
{
add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].sr));
}
break;
case 153:
-#line 1533 "compilers/imcc/imcc.y"
+#line 1558 "compilers/imcc/imcc.y"
{
if (IMCC_INFO(interp)->adv_named_id) {
add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
@@ -3886,66 +3908,66 @@
break;
case 154:
-#line 1543 "compilers/imcc/imcc.y"
+#line 1568 "compilers/imcc/imcc.y"
{
add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr));
}
break;
case 157:
-#line 1563 "compilers/imcc/imcc.y"
+#line 1588 "compilers/imcc/imcc.y"
{ clear_state(interp); }
break;
case 158:
-#line 1568 "compilers/imcc/imcc.y"
+#line 1593 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(2) - (2)].i); }
break;
case 159:
-#line 1569 "compilers/imcc/imcc.y"
+#line 1594 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 160:
-#line 1570 "compilers/imcc/imcc.y"
+#line 1595 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 161:
-#line 1571 "compilers/imcc/imcc.y"
+#line 1596 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 162:
-#line 1572 "compilers/imcc/imcc.y"
+#line 1597 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 163:
-#line 1573 "compilers/imcc/imcc.y"
+#line 1598 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(1) - (1)].i); }
break;
case 164:
-#line 1577 "compilers/imcc/imcc.y"
+#line 1602 "compilers/imcc/imcc.y"
{ (yyval.i) = NULL; }
break;
case 168:
-#line 1588 "compilers/imcc/imcc.y"
+#line 1613 "compilers/imcc/imcc.y"
{
(yyval.i) = iLABEL(interp, IMCC_INFO(interp)->cur_unit, mk_local_label(interp, (yyvsp[(1) - (1)].s)));
}
break;
case 169:
-#line 1596 "compilers/imcc/imcc.y"
+#line 1621 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(2) - (3)].i); }
break;
case 170:
-#line 1598 "compilers/imcc/imcc.y"
+#line 1623 "compilers/imcc/imcc.y"
{
if (yynerrs >= PARROT_MAX_RECOVER_ERRORS) {
IMCC_warning(interp, "Too many errors. Correct some first.\n");
@@ -3956,7 +3978,7 @@
break;
case 171:
-#line 1609 "compilers/imcc/imcc.y"
+#line 1634 "compilers/imcc/imcc.y"
{
IdList* l = (yyvsp[(1) - (1)].idlist);
l->next = NULL;
@@ -3965,7 +3987,7 @@
break;
case 172:
-#line 1616 "compilers/imcc/imcc.y"
+#line 1641 "compilers/imcc/imcc.y"
{
IdList* l = (yyvsp[(3) - (3)].idlist);
l->next = (yyvsp[(1) - (3)].idlist);
@@ -3974,7 +3996,7 @@
break;
case 173:
-#line 1625 "compilers/imcc/imcc.y"
+#line 1650 "compilers/imcc/imcc.y"
{
IdList* const l = mem_allocate_n_zeroed_typed(1, IdList);
l->id = (yyvsp[(1) - (2)].s);
@@ -3984,22 +4006,22 @@
break;
case 174:
-#line 1634 "compilers/imcc/imcc.y"
+#line 1659 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
case 175:
-#line 1635 "compilers/imcc/imcc.y"
+#line 1660 "compilers/imcc/imcc.y"
{ (yyval.t) = 1; }
break;
case 178:
-#line 1642 "compilers/imcc/imcc.y"
+#line 1667 "compilers/imcc/imcc.y"
{ is_def=1; }
break;
case 179:
-#line 1643 "compilers/imcc/imcc.y"
+#line 1668 "compilers/imcc/imcc.y"
{
IdList *l = (yyvsp[(4) - (4)].idlist);
while (l) {
@@ -4018,19 +4040,19 @@
break;
case 180:
-#line 1659 "compilers/imcc/imcc.y"
+#line 1684 "compilers/imcc/imcc.y"
{
set_lexical(interp, (yyvsp[(4) - (4)].sr), (yyvsp[(2) - (4)].s)); (yyval.i) = 0;
}
break;
case 181:
-#line 1662 "compilers/imcc/imcc.y"
+#line 1687 "compilers/imcc/imcc.y"
{ is_def=1; }
break;
case 182:
-#line 1663 "compilers/imcc/imcc.y"
+#line 1688 "compilers/imcc/imcc.y"
{
mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 0);
is_def=0;
@@ -4039,12 +4061,12 @@
break;
case 184:
-#line 1670 "compilers/imcc/imcc.y"
+#line 1695 "compilers/imcc/imcc.y"
{ is_def=1; }
break;
case 185:
-#line 1671 "compilers/imcc/imcc.y"
+#line 1696 "compilers/imcc/imcc.y"
{
mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
is_def=0;
@@ -4053,7 +4075,7 @@
break;
case 186:
-#line 1677 "compilers/imcc/imcc.y"
+#line 1702 "compilers/imcc/imcc.y"
{
(yyval.i) = NULL;
IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isTAIL_CALL;
@@ -4062,12 +4084,14 @@
break;
case 187:
-#line 1682 "compilers/imcc/imcc.y"
- { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr)); }
+#line 1708 "compilers/imcc/imcc.y"
+ {
+ (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr));
+ }
break;
case 188:
-#line 1684 "compilers/imcc/imcc.y"
+#line 1712 "compilers/imcc/imcc.y"
{
(yyval.i) = INS(interp,
IMCC_INFO(interp)->cur_unit,
@@ -4082,47 +4106,47 @@
break;
case 189:
-#line 1695 "compilers/imcc/imcc.y"
+#line 1723 "compilers/imcc/imcc.y"
{ (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); }
break;
case 190:
-#line 1696 "compilers/imcc/imcc.y"
+#line 1724 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
break;
case 191:
-#line 1697 "compilers/imcc/imcc.y"
+#line 1725 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 194:
-#line 1700 "compilers/imcc/imcc.y"
+#line 1728 "compilers/imcc/imcc.y"
{ (yyval.i) = 0;}
break;
case 195:
-#line 1704 "compilers/imcc/imcc.y"
+#line 1732 "compilers/imcc/imcc.y"
{ (yyval.t) = 'I'; }
break;
case 196:
-#line 1705 "compilers/imcc/imcc.y"
+#line 1733 "compilers/imcc/imcc.y"
{ (yyval.t) = 'N'; }
break;
case 197:
-#line 1706 "compilers/imcc/imcc.y"
+#line 1734 "compilers/imcc/imcc.y"
{ (yyval.t) = 'S'; }
break;
case 198:
-#line 1707 "compilers/imcc/imcc.y"
+#line 1735 "compilers/imcc/imcc.y"
{ (yyval.t) = 'P'; }
break;
case 199:
-#line 1712 "compilers/imcc/imcc.y"
+#line 1740 "compilers/imcc/imcc.y"
{
/* there'd normally be a str_dup() here, but the lexer already
* copied the string, so it's safe to use directly */
@@ -4135,37 +4159,37 @@
break;
case 200:
-#line 1725 "compilers/imcc/imcc.y"
+#line 1753 "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 201:
-#line 1727 "compilers/imcc/imcc.y"
+#line 1755 "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 202:
-#line 1729 "compilers/imcc/imcc.y"
+#line 1757 "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 203:
-#line 1731 "compilers/imcc/imcc.y"
+#line 1759 "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 204:
-#line 1733 "compilers/imcc/imcc.y"
+#line 1761 "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 205:
-#line 1738 "compilers/imcc/imcc.y"
+#line 1766 "compilers/imcc/imcc.y"
{ (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (7)].sr), (yyvsp[(4) - (7)].s), (yyvsp[(6) - (7)].sr), 1); }
break;
case 206:
-#line 1741 "compilers/imcc/imcc.y"
+#line 1769 "compilers/imcc/imcc.y"
{
add_pcc_result((yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr));
IMCC_INFO(interp)->cur_call = NULL;
@@ -4174,14 +4198,14 @@
break;
case 207:
-#line 1747 "compilers/imcc/imcc.y"
+#line 1775 "compilers/imcc/imcc.y"
{
(yyval.i) = IMCC_create_itcall_label(interp);
}
break;
case 208:
-#line 1751 "compilers/imcc/imcc.y"
+#line 1779 "compilers/imcc/imcc.y"
{
IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr));
IMCC_INFO(interp)->cur_call = NULL;
@@ -4189,144 +4213,144 @@
break;
case 212:
-#line 1759 "compilers/imcc/imcc.y"
+#line 1787 "compilers/imcc/imcc.y"
{
(yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr));
}
break;
case 213:
-#line 1766 "compilers/imcc/imcc.y"
+#line 1794 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"not"; }
break;
case 214:
-#line 1767 "compilers/imcc/imcc.y"
+#line 1795 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"bnot"; }
break;
case 215:
-#line 1768 "compilers/imcc/imcc.y"
+#line 1796 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"neg"; }
break;
case 216:
-#line 1772 "compilers/imcc/imcc.y"
+#line 1800 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"sub"; }
break;
case 217:
-#line 1773 "compilers/imcc/imcc.y"
+#line 1801 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"add"; }
break;
case 218:
-#line 1774 "compilers/imcc/imcc.y"
+#line 1802 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"mul"; }
break;
case 219:
-#line 1775 "compilers/imcc/imcc.y"
+#line 1803 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"div"; }
break;
case 220:
-#line 1776 "compilers/imcc/imcc.y"
+#line 1804 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"mod"; }
break;
case 221:
-#line 1777 "compilers/imcc/imcc.y"
+#line 1805 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"fdiv"; }
break;
case 222:
-#line 1778 "compilers/imcc/imcc.y"
+#line 1806 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"pow"; }
break;
case 223:
-#line 1779 "compilers/imcc/imcc.y"
+#line 1807 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"concat"; }
break;
case 224:
-#line 1780 "compilers/imcc/imcc.y"
+#line 1808 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"iseq"; }
break;
case 225:
-#line 1781 "compilers/imcc/imcc.y"
+#line 1809 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"isne"; }
break;
case 226:
-#line 1782 "compilers/imcc/imcc.y"
+#line 1810 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"isgt"; }
break;
case 227:
-#line 1783 "compilers/imcc/imcc.y"
+#line 1811 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"isge"; }
break;
case 228:
-#line 1784 "compilers/imcc/imcc.y"
+#line 1812 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"islt"; }
break;
case 229:
-#line 1785 "compilers/imcc/imcc.y"
+#line 1813 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"isle"; }
break;
case 230:
-#line 1786 "compilers/imcc/imcc.y"
+#line 1814 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"shl"; }
break;
case 231:
-#line 1787 "compilers/imcc/imcc.y"
+#line 1815 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"shr"; }
break;
case 232:
-#line 1788 "compilers/imcc/imcc.y"
+#line 1816 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"lsr"; }
break;
case 233:
-#line 1789 "compilers/imcc/imcc.y"
+#line 1817 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"and"; }
break;
case 234:
-#line 1790 "compilers/imcc/imcc.y"
+#line 1818 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"or"; }
break;
case 235:
-#line 1791 "compilers/imcc/imcc.y"
+#line 1819 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"xor"; }
break;
case 236:
-#line 1792 "compilers/imcc/imcc.y"
+#line 1820 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"band"; }
break;
case 237:
-#line 1793 "compilers/imcc/imcc.y"
+#line 1821 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"bor"; }
break;
case 238:
-#line 1794 "compilers/imcc/imcc.y"
+#line 1822 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"bxor"; }
break;
case 239:
-#line 1800 "compilers/imcc/imcc.y"
+#line 1828 "compilers/imcc/imcc.y"
{
(yyval.i) = IMCC_create_itcall_label(interp);
(yyval.i)->type &= ~ITCALL;
@@ -4335,84 +4359,84 @@
break;
case 240:
-#line 1805 "compilers/imcc/imcc.y"
+#line 1833 "compilers/imcc/imcc.y"
{ (yyval.i) = 0; }
break;
case 241:
-#line 1812 "compilers/imcc/imcc.y"
+#line 1840 "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 242:
-#line 1818 "compilers/imcc/imcc.y"
+#line 1846 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"add"; }
break;
case 243:
-#line 1819 "compilers/imcc/imcc.y"
+#line 1847 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"sub"; }
break;
case 244:
-#line 1820 "compilers/imcc/imcc.y"
+#line 1848 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"mul"; }
break;
case 245:
-#line 1821 "compilers/imcc/imcc.y"
+#line 1849 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"div"; }
break;
case 246:
-#line 1822 "compilers/imcc/imcc.y"
+#line 1850 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"mod"; }
break;
case 247:
-#line 1823 "compilers/imcc/imcc.y"
+#line 1851 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"fdiv"; }
break;
case 248:
-#line 1824 "compilers/imcc/imcc.y"
+#line 1852 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"concat"; }
break;
case 249:
-#line 1825 "compilers/imcc/imcc.y"
+#line 1853 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"band"; }
break;
case 250:
-#line 1826 "compilers/imcc/imcc.y"
+#line 1854 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"bor"; }
break;
case 251:
-#line 1827 "compilers/imcc/imcc.y"
+#line 1855 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"bxor"; }
break;
case 252:
-#line 1828 "compilers/imcc/imcc.y"
+#line 1856 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"shr"; }
break;
case 253:
-#line 1829 "compilers/imcc/imcc.y"
+#line 1857 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"shl"; }
break;
case 254:
-#line 1830 "compilers/imcc/imcc.y"
+#line 1858 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"lsr"; }
break;
case 255:
-#line 1836 "compilers/imcc/imcc.y"
+#line 1864 "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,
@@ -4423,22 +4447,22 @@
break;
case 256:
-#line 1846 "compilers/imcc/imcc.y"
+#line 1874 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 257:
-#line 1847 "compilers/imcc/imcc.y"
+#line 1875 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 258:
-#line 1848 "compilers/imcc/imcc.y"
+#line 1876 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 259:
-#line 1850 "compilers/imcc/imcc.y"
+#line 1878 "compilers/imcc/imcc.y"
{
(yyval.sr) = (yyvsp[(1) - (1)].sr);
if ((yyvsp[(1) - (1)].sr)->set != 'P')
@@ -4447,7 +4471,7 @@
break;
case 260:
-#line 1856 "compilers/imcc/imcc.y"
+#line 1884 "compilers/imcc/imcc.y"
{
/* disallow bareword method names; SREG name constants are fine */
char *name = (yyvsp[(3) - (3)].sr)->name;
@@ -4464,7 +4488,7 @@
break;
case 261:
-#line 1870 "compilers/imcc/imcc.y"
+#line 1898 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
(yyval.sr) = mk_const(interp, (yyvsp[(3) - (3)].s), 'S');
@@ -4473,12 +4497,12 @@
break;
case 262:
-#line 1875 "compilers/imcc/imcc.y"
+#line 1903 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); }
break;
case 263:
-#line 1881 "compilers/imcc/imcc.y"
+#line 1909 "compilers/imcc/imcc.y"
{
(yyval.i) = IMCC_create_itcall_label(interp);
IMCC_itcall_sub(interp, (yyvsp[(1) - (1)].sr));
@@ -4486,17 +4510,17 @@
break;
case 264:
-#line 1885 "compilers/imcc/imcc.y"
+#line 1913 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(2) - (5)].i); }
break;
case 265:
-#line 1889 "compilers/imcc/imcc.y"
+#line 1917 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
case 266:
-#line 1891 "compilers/imcc/imcc.y"
+#line 1919 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
if (IMCC_INFO(interp)->adv_named_id) {
@@ -4509,7 +4533,7 @@
break;
case 267:
-#line 1901 "compilers/imcc/imcc.y"
+#line 1929 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
if (IMCC_INFO(interp)->adv_named_id) {
@@ -4522,7 +4546,7 @@
break;
case 268:
-#line 1911 "compilers/imcc/imcc.y"
+#line 1939 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr));
@@ -4531,7 +4555,15 @@
break;
case 269:
-#line 1917 "compilers/imcc/imcc.y"
+#line 1945 "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));
+ }
+ break;
+
+ case 270:
+#line 1950 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].sr));
@@ -4539,43 +4571,43 @@
}
break;
- case 270:
-#line 1925 "compilers/imcc/imcc.y"
+ case 271:
+#line 1958 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
break;
- case 271:
-#line 1929 "compilers/imcc/imcc.y"
+ case 272:
+#line 1962 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
- case 272:
-#line 1930 "compilers/imcc/imcc.y"
+ case 273:
+#line 1963 "compilers/imcc/imcc.y"
{ (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
break;
- case 273:
-#line 1934 "compilers/imcc/imcc.y"
+ case 274:
+#line 1967 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_FLAT; }
break;
- case 274:
-#line 1935 "compilers/imcc/imcc.y"
+ case 275:
+#line 1968 "compilers/imcc/imcc.y"
{ (yyval.t) = VT_NAMED; }
break;
- case 275:
-#line 1938 "compilers/imcc/imcc.y"
+ case 276:
+#line 1971 "compilers/imcc/imcc.y"
{ adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
break;
- case 276:
-#line 1942 "compilers/imcc/imcc.y"
+ case 277:
+#line 1975 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
break;
- case 277:
-#line 1947 "compilers/imcc/imcc.y"
+ case 278:
+#line 1980 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
if (IMCC_INFO(interp)->adv_named_id) {
@@ -4587,16 +4619,16 @@
}
break;
- case 278:
-#line 1957 "compilers/imcc/imcc.y"
+ case 279:
+#line 1990 "compilers/imcc/imcc.y"
{
add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr));
mem_sys_free((yyvsp[(3) - (5)].s));
}
break;
- case 279:
-#line 1962 "compilers/imcc/imcc.y"
+ case 280:
+#line 1995 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
if (IMCC_INFO(interp)->adv_named_id) {
@@ -4608,133 +4640,133 @@
}
break;
- case 280:
-#line 1972 "compilers/imcc/imcc.y"
+ case 281:
+#line 2005 "compilers/imcc/imcc.y"
{
add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].sr));
mem_sys_free((yyvsp[(1) - (3)].s));
}
break;
- case 281:
-#line 1976 "compilers/imcc/imcc.y"
+ case 282:
+#line 2009 "compilers/imcc/imcc.y"
{ (yyval.sr) = 0; }
break;
- case 282:
-#line 1980 "compilers/imcc/imcc.y"
+ case 283:
+#line 2013 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(1) - (1)].i); }
break;
- case 283:
-#line 1981 "compilers/imcc/imcc.y"
+ case 284:
+#line 2014 "compilers/imcc/imcc.y"
{ (yyval.i) = (yyvsp[(1) - (1)].i); }
break;
- case 284:
-#line 1986 "compilers/imcc/imcc.y"
+ case 285:
+#line 2019 "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));
}
break;
- case 285:
-#line 1990 "compilers/imcc/imcc.y"
+ case 286:
+#line 2023 "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));
}
break;
- case 286:
-#line 1994 "compilers/imcc/imcc.y"
+ case 287:
+#line 2027 "compilers/imcc/imcc.y"
{
(yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
}
break;
- case 287:
-#line 2001 "compilers/imcc/imcc.y"
+ case 288:
+#line 2034 "compilers/imcc/imcc.y"
{
(yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
}
break;
- case 288:
-#line 2005 "compilers/imcc/imcc.y"
+ case 289:
+#line 2038 "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));
}
break;
- case 289:
-#line 2009 "compilers/imcc/imcc.y"
+ case 290:
+#line 2042 "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));
}
break;
- case 290:
-#line 2015 "compilers/imcc/imcc.y"
+ case 291:
+#line 2048 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
- case 291:
-#line 2016 "compilers/imcc/imcc.y"
+ case 292:
+#line 2049 "compilers/imcc/imcc.y"
{ (yyval.t) = 0; }
break;
- case 292:
-#line 2020 "compilers/imcc/imcc.y"
+ case 293:
+#line 2053 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"eq"; }
break;
- case 293:
-#line 2021 "compilers/imcc/imcc.y"
+ case 294:
+#line 2054 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"ne"; }
break;
- case 294:
-#line 2022 "compilers/imcc/imcc.y"
+ case 295:
+#line 2055 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"gt"; }
break;
- case 295:
-#line 2023 "compilers/imcc/imcc.y"
+ case 296:
+#line 2056 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"ge"; }
break;
- case 296:
-#line 2024 "compilers/imcc/imcc.y"
+ case 297:
+#line 2057 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"lt"; }
break;
- case 297:
-#line 2025 "compilers/imcc/imcc.y"
+ case 298:
+#line 2058 "compilers/imcc/imcc.y"
{ (yyval.s) = (char *)"le"; }
break;
- case 300:
-#line 2034 "compilers/imcc/imcc.y"
+ case 301:
+#line 2067 "compilers/imcc/imcc.y"
{ (yyval.sr) = NULL; }
break;
- case 301:
-#line 2035 "compilers/imcc/imcc.y"
+ case 302:
+#line 2068 "compilers/imcc/imcc.y"
{ (yyval.sr) = (yyvsp[(1) - (1)].sr); }
break;
- case 302:
-#line 2039 "compilers/imcc/imcc.y"
+ case 303:
+#line 2072 "compilers/imcc/imcc.y"
{ (yyval.sr) = IMCC_INFO(interp)->regs[0]; }
break;
- case 304:
-#line 2044 "compilers/imcc/imcc.y"
+ case 305:
+#line 2077 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); }
break;
- case 305:
-#line 2046 "compilers/imcc/imcc.y"
+ case 306:
+#line 2079 "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);
@@ -4743,54 +4775,54 @@
}
break;
- case 306:
-#line 2053 "compilers/imcc/imcc.y"
+ case 307:
+#line 2086 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr);
(yyval.sr) = (yyvsp[(2) - (3)].sr);
}
break;
- case 308:
-#line 2060 "compilers/imcc/imcc.y"
+ case 309:
+#line 2093 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
- case 309:
-#line 2061 "compilers/imcc/imcc.y"
+ case 310:
+#line 2094 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
- case 310:
-#line 2065 "compilers/imcc/imcc.y"
+ case 311:
+#line 2098 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
- case 311:
-#line 2066 "compilers/imcc/imcc.y"
+ case 312:
+#line 2099 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
- case 312:
-#line 2070 "compilers/imcc/imcc.y"
+ case 313:
+#line 2103 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
- case 313:
-#line 2071 "compilers/imcc/imcc.y"
+ case 314:
+#line 2104 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
- case 318:
-#line 2085 "compilers/imcc/imcc.y"
+ case 319:
+#line 2118 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->nkeys = 0;
IMCC_INFO(interp)->in_slice = 0;
}
break;
- case 319:
-#line 2090 "compilers/imcc/imcc.y"
+ case 320:
+#line 2123 "compilers/imcc/imcc.y"
{
(yyval.sr) = link_keys(interp,
IMCC_INFO(interp)->nkeys,
@@ -4798,16 +4830,16 @@
}
break;
- case 320:
-#line 2098 "compilers/imcc/imcc.y"
+ case 321:
+#line 2131 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->nkeys = 0;
IMCC_INFO(interp)->in_slice = 0;
}
break;
- case 321:
-#line 2103 "compilers/imcc/imcc.y"
+ case 322:
+#line 2136 "compilers/imcc/imcc.y"
{
(yyval.sr) = link_keys(interp,
IMCC_INFO(interp)->nkeys,
@@ -4815,21 +4847,21 @@
}
break;
- case 322:
-#line 2111 "compilers/imcc/imcc.y"
+ case 323:
+#line 2144 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }
break;
- case 323:
-#line 2113 "compilers/imcc/imcc.y"
+ case 324:
+#line 2146 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr);
(yyval.sr) = IMCC_INFO(interp)->keys[0];
}
break;
- case 324:
-#line 2121 "compilers/imcc/imcc.y"
+ case 325:
+#line 2154 "compilers/imcc/imcc.y"
{
if (IMCC_INFO(interp)->in_slice)
(yyvsp[(1) - (1)].sr)->type |= VT_START_SLICE | VT_END_SLICE;
@@ -4837,54 +4869,54 @@
}
break;
- case 325:
-#line 2129 "compilers/imcc/imcc.y"
+ case 326:
+#line 2162 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }
break;
- case 326:
-#line 2130 "compilers/imcc/imcc.y"
+ case 327:
+#line 2163 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }
break;
- case 327:
-#line 2131 "compilers/imcc/imcc.y"
+ case 328:
+#line 2164 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
break;
- case 328:
-#line 2132 "compilers/imcc/imcc.y"
+ case 329:
+#line 2165 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }
break;
- case 329:
-#line 2133 "compilers/imcc/imcc.y"
+ case 330:
+#line 2166 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
- case 330:
-#line 2137 "compilers/imcc/imcc.y"
+ case 331:
+#line 2170 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
- case 331:
-#line 2138 "compilers/imcc/imcc.y"
+ case 332:
+#line 2171 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
- case 332:
-#line 2139 "compilers/imcc/imcc.y"
+ case 333:
+#line 2172 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
- case 333:
-#line 2140 "compilers/imcc/imcc.y"
+ case 334:
+#line 2173 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
/* Line 1267 of yacc.c. */
-#line 4877 "compilers/imcc/imcparser.c"
+#line 4909 "compilers/imcc/imcparser.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5098,7 +5130,7 @@
}
-#line 2146 "compilers/imcc/imcc.y"
+#line 2179 "compilers/imcc/imcc.y"
/* I need this prototype somewhere... */
Modified: trunk/compilers/imcc/imcparser.h
==============================================================================
--- trunk/compilers/imcc/imcparser.h Thu Jan 29 21:03:49 2009 (r36158)
+++ trunk/compilers/imcc/imcparser.h Thu Jan 29 21:04:34 2009 (r36159)
@@ -297,7 +297,7 @@
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
-#line 785 "compilers/imcc/imcc.y"
+#line 810 "compilers/imcc/imcc.y"
{
IdList * idlist;
int t;
Modified: trunk/src/gc/mark_sweep.c
==============================================================================
--- trunk/src/gc/mark_sweep.c Thu Jan 29 21:03:49 2009 (r36158)
+++ trunk/src/gc/mark_sweep.c Thu Jan 29 21:04:34 2009 (r36159)
@@ -669,7 +669,9 @@
}
if (PObj_custom_mark_TEST(obj)) {
PObj_get_FLAGS(obj) |= PObj_custom_GC_FLAG;
- VTABLE_mark(interp, obj);
+
+ if (!PObj_constant_TEST(obj))
+ VTABLE_mark(interp, obj);
}
}
Modified: trunk/t/op/calling.t
==============================================================================
--- trunk/t/op/calling.t Thu Jan 29 21:03:49 2009 (r36158)
+++ trunk/t/op/calling.t Thu Jan 29 21:04:34 2009 (r36159)
@@ -1,5 +1,5 @@
#!perl
-# Copyright (C) 2001-2008, The Perl Foundation.
+# Copyright (C) 2001-2009, The Perl Foundation.
# $Id$
use strict;
@@ -7,7 +7,7 @@
use lib qw( . lib ../lib ../../lib );
use Test::More;
-use Parrot::Test tests => 93;
+use Parrot::Test tests => 94;
=head1 NAME
@@ -2405,6 +2405,34 @@
/too many arguments passed\(1\) - 0 params expected/
OUTPUT
+# See Rakudo RT #62730
+pir_output_is( <<'CODE', <<'OUTPUT', "named from register, not constant" );
+.sub 'main'
+ $S0 = 'foo'
+ example('foo' => 42) # normal named parameter
+ example( $S0 => 42) # parameter named by non-const register
+ just_a_string( $S0, 'foo' => 42 ) # nameyness should not stick on register
+.end
+
+.sub 'example'
+ .param pmc foo :named('foo')
+ say foo
+.end
+
+.sub 'just_a_string'
+ .param pmc bar
+ .param int baz :named( 'foo' )
+ say bar
+ say baz
+.end
+CODE
+42
+42
+foo
+42
+OUTPUT
+
+
# Local Variables:
# mode: cperl
# cperl-indent-level: 4
More information about the parrot-commits
mailing list