compiler/libec: (#307, #70) Warning on undeclared class; Overriding namespaces
[sdk] / compiler / libec / src / grammar.ec
index cff9733..5c82b2f 100644 (file)
@@ -1231,137 +1231,137 @@ static const yytype_int16 yyrhs[] =
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   282,   282,   311,   370,   371,   481,   485,   488,   489,
-     490,   539,   541,   546,   551,   556,   558,   563,   565,   570,
-     572,   577,   579,   581,   583,   585,   589,   593,   606,   608,
-     610,   612,   614,   620,   622,   627,   632,   637,   639,   641,
-     646,   647,   651,   652,   663,   667,   668,   670,   675,   676,
-     678,   681,   693,   704,   723,   725,   730,   731,   732,   733,
-     734,   735,   736,   737,   750,   754,   755,   756,   757,   761,
-     762,   763,   764,   765,   766,   767,   771,   773,   778,   780,
-     782,   784,   786,   816,   818,   823,   825,   827,   829,   831,
-     860,   862,   864,   869,   871,   876,   878,   882,   884,   886,
-     888,   893,   896,   899,   902,   967,   969,   974,   976,   978,
-     980,   982,  1013,  1017,  1018,  1019,  1023,  1024,  1025,  1029,
-    1030,  1031,  1032,  1036,  1039,  1042,  1045,  1048,  1053,  1054,
-    1056,  1058,  1060,  1062,  1067,  1071,  1074,  1077,  1080,  1083,
-    1088,  1089,  1091,  1096,  1100,  1102,  1107,  1109,  1114,  1116,
-    1121,  1126,  1128,  1133,  1135,  1137,  1139,  1144,  1146,  1148,
-    1150,  1155,  1156,  1157,  1158,  1159,  1160,  1161,  1162,  1163,
-    1164,  1165,  1167,  1168,  1170,  1174,  1177,  1178,  1179,  1180,
-    1181,  1182,  1183,  1184,  1185,  1186,  1187,  1188,  1189,  1190,
-    1192,  1193,  1197,  1198,  1199,  1203,  1207,  1208,  1209,  1213,
-    1214,  1215,  1216,  1217,  1221,  1222,  1234,  1235,  1239,  1240,
-    1241,  1242,  1243,  1244,  1245,  1246,  1250,  1254,  1255,  1259,
-    1267,  1268,  1272,  1273,  1274,  1278,  1279,  1283,  1284,  1285,
-    1286,  1287,  1288,  1328,  1329,  1333,  1341,  1342,  1350,  1351,
-    1353,  1354,  1363,  1364,  1368,  1375,  1382,  1388,  1395,  1401,
-    1410,  1417,  1423,  1429,  1435,  1441,  1447,  1458,  1463,  1464,
-    1469,  1470,  1471,  1475,  1479,  1480,  1481,  1482,  1483,  1484,
-    1485,  1498,  1499,  1500,  1501,  1502,  1503,  1504,  1505,  1506,
-    1507,  1508,  1509,  1510,  1511,  1512,  1513,  1514,  1515,  1516,
-    1517,  1518,  1519,  1520,  1521,  1523,  1524,  1525,  1526,  1527,
-    1529,  1530,  1534,  1538,  1542,  1543,  1547,  1549,  1550,  1551,
-    1552,  1553,  1554,  1555,  1556,  1557,  1559,  1560,  1561,  1562,
-    1563,  1564,  1565,  1566,  1593,  1594,  1595,  1596,  1600,  1601,
-    1602,  1603,  1604,  1608,  1609,  1610,  1611,  1613,  1614,  1615,
-    1616,  1619,  1620,  1624,  1625,  1634,  1635,  1636,  1637,  1638,
-    1639,  1640,  1641,  1645,  1646,  1650,  1651,  1652,  1653,  1654,
-    1655,  1656,  1660,  1661,  1662,  1663,  1664,  1668,  1669,  1670,
-    1671,  1672,  1676,  1684,  1685,  1686,  1687,  1688,  1689,  1690,
-    1691,  1692,  1696,  1697,  1698,  1699,  1700,  1702,  1703,  1704,
-    1705,  1709,  1710,  1711,  1713,  1714,  1718,  1719,  1720,  1722,
-    1723,  1727,  1728,  1729,  1731,  1732,  1736,  1737,  1738,  1742,
-    1743,  1744,  1748,  1749,  1750,  1751,  1752,  1754,  1755,  1756,
-    1757,  1759,  1760,  1761,  1762,  1764,  1765,  1766,  1767,  1771,
-    1772,  1773,  1774,  1775,  1777,  1778,  1779,  1780,  1784,  1785,
-    1786,  1787,  1788,  1789,  1790,  1791,  1792,  1793,  1794,  1798,
-    1799,  1800,  1801,  1805,  1806,  1807,  1811,  1812,  1813,  1814,
-    1816,  1817,  1819,  1820,  1825,  1827,  1832,  1860,  1861,  1862,
-    1863,  1865,  1866,  1867,  1868,  1870,  1871,  1875,  1876,  1885,
-    1886,  1890,  1891,  1892,  1893,  1894,  1895,  1896,  1900,  1901,
-    1905,  1909,  1913,  1920,  1921,  1922,  1923,  1924,  1928,  1929,
-    1980,  1981,  1982,  1983,  1984,  1985,  1986,  1990,  1991,  1992,
-    1993,  1994,  2001,  2002,  2003,  2004,  2008,  2009,  2010,  2012,
-    2013,  2017,  2018,  2019,  2021,  2022,  2026,  2027,  2028,  2030,
-    2031,  2035,  2036,  2037,  2041,  2042,  2043,  2047,  2048,  2049,
-    2050,  2051,  2052,  2053,  2054,  2055,  2057,  2058,  2059,  2060,
-    2061,  2062,  2063,  2064,  2066,  2067,  2068,  2069,  2071,  2072,
-    2073,  2074,  2076,  2084,  2088,  2093,  2100,  2101,  2105,  2110,
-    2111,  2115,  2116,  2117,  2118,  2124,  2125,  2126,  2130,  2131,
-    2132,  2133,  2137,  2139,  2143,  2144,  2145,  2146,  2147,  2148,
-    2149,  2153,  2154,  2155,  2156,  2157,  2158,  2159,  2163,  2164,
-    2165,  2169,  2170,  2171,  2175,  2179,  2180,  2184,  2185,  2186,
-    2190,  2191,  2193,  2194,  2195,  2196,  2197,  2199,  2200,  2201,
-    2202,  2203,  2205,  2206,  2210,  2211,  2215,  2216,  2217,  2221,
-    2222,  2223,  2224,  2225,  2226,  2227,  2228,  2229,  2231,  2232,
-    2234,  2235,  2236,  2237,  2238,  2240,  2241,  2242,  2243,  2247,
-    2248,  2252,  2253,  2257,  2261,  2262,  2263,  2268,  2269,  2273,
-    2274,  2275,  2276,  2277,  2278,  2279,  2280,  2281,  2282,  2283,
-    2284,  2285,  2286,  2287,  2288,  2289,  2290,  2291,  2292,  2293,
-    2294,  2295,  2296,  2297,  2298,  2302,  2303,  2304,  2305,  2306,
-    2307,  2308,  2309,  2310,  2311,  2312,  2313,  2314,  2315,  2316,
-    2317,  2318,  2319,  2320,  2321,  2322,  2323,  2324,  2325,  2331,
-    2333,  2335,  2337,  2339,  2341,  2343,  2345,  2347,  2349,  2354,
-    2355,  2359,  2365,  2371,  2378,  2388,  2389,  2390,  2391,  2395,
-    2396,  2397,  2399,  2400,  2401,  2403,  2404,  2405,  2409,  2413,
-    2421,  2430,  2439,  2440,  2442,  2443,  2447,  2454,  2461,  2464,
-    2477,  2491,  2494,  2496,  2498,  2503,  2504,  2508,  2509,  2510,
-    2511,  2512,  2513,  2514,  2515,  2519,  2520,  2521,  2522,  2523,
-    2524,  2525,  2526,  2527,  2528,  2532,  2533,  2534,  2535,  2536,
-    2537,  2538,  2539,  2540,  2541,  2545,  2546,  2547,  2548,  2549,
-    2550,  2551,  2552,  2553,  2554,  2555,  2556,  2560,  2561,  2562,
-    2563,  2564,  2565,  2566,  2567,  2568,  2569,  2573,  2574,  2578,
-    2579,  2580,  2581,  2582,  2583,  2584,  2585,  2586,  2588,  2590,
-    2608,  2626,  2627,  2631,  2632,  2633,  2634,  2635,  2636,  2637,
-    2638,  2639,  2657,  2674,  2675,  2676,  2677,  2678,  2679,  2680,
-    2681,  2682,  2683,  2684,  2685,  2686,  2704,  2721,  2722,  2723,
-    2724,  2725,  2726,  2727,  2728,  2729,  2730,  2731,  2732,  2733,
-    2751,  2768,  2769,  2773,  2774,  2775,  2776,  2777,  2781,  2782,
-    2789,  2791,  2800,  2809,  2818,  2827,  2828,  2829,  2830,  2834,
-    2835,  2836,  2837,  2838,  2839,  2840,  2841,  2842,  2846,  2850,
-    2851,  2852,  2853,  2854,  2859,  2868,  2877,  2886,  2900,  2901,
-    2906,  2910,  2911,  2912,  2913,  2914,  2919,  2928,  2937,  2946,
-    2960,  2961,  3010,  3011,  3012,  3013,  3025,  3026,  3027,  3032,
-    3033,  3034,  3035,  3036,  3040,  3041,  3045,  3046,  3047,  3051,
-    3052,  3056,  3057,  3058,  3059,  3060,  3061,  3062,  3063,  3064,
-    3065,  3066,  3067,  3068,  3069,  3070,  3071,  3075,  3076,  3077,
-    3078,  3079,  3080,  3081,  3082,  3086,  3087,  3088,  3089,  3093,
-    3094,  3095,  3096,  3097,  3101,  3102,  3103,  3104,  3105,  3109,
-    3110,  3112,  3114,  3116,  3121,  3122,  3124,  3126,  3131,  3132,
-    3133,  3134,  3138,  3139,  3140,  3141,  3145,  3146,  3147,  3148,
-    3152,  3153,  3154,  3155,  3159,  3160,  3161,  3162,  3166,  3167,
-    3168,  3185,  3186,  3187,  3188,  3201,  3218,  3219,  3224,  3225,
-    3229,  3230,  3231,  3232,  3235,  3236,  3240,  3241,  3242,  3246,
-    3250,  3254,  3255,  3256,  3257,  3258,  3267,  3276,  3277,  3278,
-    3279,  3283,  3284,  3288,  3289,  3294,  3295,  3296,  3297,  3298,
-    3299,  3318,  3319,  3323,  3324,  3325,  3326,  3327,  3328,  3330,
-    3331,  3332,  3333,  3337,  3338,  3339,  3340,  3341,  3343,  3344,
-    3345,  3349,  3350,  3351,  3352,  3353,  3354,  3358,  3359,  3360,
-    3365,  3366,  3367,  3368,  3369,  3370,  3371,  3372,  3373,  3374,
-    3375,  3376,  3377,  3381,  3382,  3383,  3384,  3385,  3386,  3387,
-    3391,  3392,  3393,  3397,  3398,  3399,  3403,  3404,  3405,  3406,
-    3408,  3409,  3410,  3412,  3413,  3414,  3415,  3417,  3418,  3419,
-    3423,  3424,  3425,  3426,  3427,  3429,  3430,  3431,  3432,  3433,
-    3437,  3438,  3439,  3440,  3441,  3442,  3443,  3445,  3446,  3447,
-    3448,  3449,  3453,  3454,  3455,  3459,  3460,  3464,  3465,  3466,
-    3467,  3471,  3472,  3473,  3475,  3476,  3477,  3481,  3485,  3486,
-    3488,  3489,  3490,  3494,  3495,  3496,  3497,  3501,  3502,  3506,
-    3507,  3508,  3512,  3513,  3514,  3515,  3516,  3517,  3518,  3522,
-    3523,  3524,  3525,  3529,  3530,  3531,  3532,  3536,  3540,  3544,
-    3546,  3549,  3555,  3556,  3557,  3561,  3562,  3563,  3564,  3565,
-    3566,  3570,  3571,  3575,  3576,  3577,  3579,  3580,  3582,  3583,
-    3584,  3585,  3586,  3588,  3589,  3593,  3594,  3595,  3596,  3600,
-    3601,  3602,  3603,  3605,  3606,  3607,  3608,  3609,  3610,  3611,
-    3614,  3618,  3619,  3623,  3624,  3628,  3629,  3630,  3631,  3632,
-    3633,  3634,  3635,  3639,  3640,  3641,  3642,  3648,  3649,  3651,
-    3652,  3655,  3656,  3659,  3660,  3661,  3662,  3663,  3664,  3668,
-    3669,  3681,  3682,  3685,  3688,  3690,  3691,  3692,  3702,  3704,
-    3705,  3707,  3708,  3709,  3710,  3720,  3721,  3722,  3723,  3724,
-    3725,  3729,  3730,  3739,  3741,  3742,  3744,  3746,  3750,  3751,
-    3752,  3753,  3754,  3758,  3759,  3760,  3762,  3767,  3768,  3769,
-    3773,  3774,  3775,  3779,  3783,  3784,  3785,  3789,  3790,  3794,
-    3795,  3799,  3800,  3801,  3802,  3806,  3810,  3814,  3818
+       0,   282,   282,   301,   340,   341,   421,   425,   428,   429,
+     430,   469,   471,   476,   481,   486,   488,   493,   495,   500,
+     502,   507,   509,   511,   513,   515,   519,   523,   536,   538,
+     540,   542,   544,   550,   552,   557,   562,   567,   569,   571,
+     576,   577,   581,   582,   593,   597,   598,   600,   605,   606,
+     608,   611,   623,   634,   653,   655,   660,   661,   662,   663,
+     664,   665,   666,   667,   680,   684,   685,   686,   687,   691,
+     692,   693,   694,   695,   696,   697,   701,   703,   708,   710,
+     712,   714,   716,   746,   748,   753,   755,   757,   759,   761,
+     790,   792,   794,   799,   801,   806,   808,   812,   814,   816,
+     818,   823,   826,   829,   832,   897,   899,   904,   906,   908,
+     910,   912,   943,   947,   948,   949,   953,   954,   955,   959,
+     960,   961,   962,   966,   969,   972,   975,   978,   983,   984,
+     986,   988,   990,   992,   997,  1001,  1004,  1007,  1010,  1013,
+    1018,  1019,  1021,  1026,  1030,  1032,  1037,  1039,  1044,  1046,
+    1051,  1056,  1058,  1063,  1065,  1067,  1069,  1074,  1076,  1078,
+    1080,  1085,  1086,  1087,  1088,  1089,  1090,  1091,  1092,  1093,
+    1094,  1095,  1097,  1098,  1100,  1104,  1107,  1108,  1109,  1110,
+    1111,  1112,  1113,  1114,  1115,  1116,  1117,  1118,  1119,  1120,
+    1122,  1123,  1127,  1128,  1129,  1133,  1137,  1138,  1139,  1143,
+    1144,  1145,  1146,  1147,  1151,  1152,  1164,  1165,  1169,  1170,
+    1171,  1172,  1173,  1174,  1175,  1176,  1180,  1184,  1185,  1189,
+    1197,  1198,  1202,  1203,  1204,  1208,  1209,  1213,  1214,  1215,
+    1216,  1217,  1218,  1258,  1259,  1263,  1271,  1272,  1280,  1281,
+    1283,  1284,  1293,  1294,  1298,  1305,  1312,  1318,  1325,  1331,
+    1340,  1347,  1353,  1359,  1365,  1371,  1377,  1388,  1393,  1394,
+    1399,  1400,  1401,  1405,  1409,  1410,  1411,  1412,  1413,  1414,
+    1415,  1428,  1429,  1430,  1431,  1432,  1433,  1434,  1435,  1436,
+    1437,  1438,  1439,  1440,  1441,  1442,  1443,  1444,  1445,  1446,
+    1447,  1448,  1449,  1450,  1451,  1453,  1454,  1455,  1456,  1457,
+    1459,  1460,  1464,  1468,  1472,  1473,  1477,  1479,  1480,  1481,
+    1482,  1483,  1484,  1485,  1486,  1487,  1489,  1490,  1491,  1492,
+    1493,  1494,  1495,  1496,  1523,  1524,  1525,  1526,  1530,  1531,
+    1532,  1533,  1534,  1538,  1539,  1540,  1541,  1543,  1544,  1545,
+    1546,  1549,  1550,  1554,  1555,  1564,  1565,  1566,  1567,  1568,
+    1569,  1570,  1571,  1575,  1576,  1580,  1581,  1582,  1583,  1584,
+    1585,  1586,  1590,  1591,  1592,  1593,  1594,  1598,  1599,  1600,
+    1601,  1602,  1606,  1614,  1615,  1616,  1617,  1618,  1619,  1620,
+    1621,  1622,  1626,  1627,  1628,  1629,  1630,  1632,  1633,  1634,
+    1635,  1639,  1640,  1641,  1643,  1644,  1648,  1649,  1650,  1652,
+    1653,  1657,  1658,  1659,  1661,  1662,  1666,  1667,  1668,  1672,
+    1673,  1674,  1678,  1679,  1680,  1681,  1682,  1684,  1685,  1686,
+    1687,  1689,  1690,  1691,  1692,  1694,  1695,  1696,  1697,  1701,
+    1702,  1703,  1704,  1705,  1707,  1708,  1709,  1710,  1714,  1715,
+    1716,  1717,  1718,  1719,  1720,  1721,  1722,  1723,  1724,  1728,
+    1729,  1730,  1731,  1735,  1736,  1737,  1741,  1742,  1743,  1744,
+    1746,  1747,  1749,  1750,  1755,  1757,  1762,  1790,  1791,  1792,
+    1793,  1795,  1796,  1797,  1798,  1800,  1801,  1805,  1806,  1815,
+    1816,  1820,  1821,  1822,  1823,  1824,  1825,  1826,  1830,  1831,
+    1835,  1839,  1843,  1850,  1851,  1852,  1853,  1854,  1858,  1859,
+    1902,  1903,  1904,  1905,  1906,  1907,  1908,  1912,  1913,  1914,
+    1915,  1916,  1923,  1924,  1925,  1926,  1930,  1931,  1932,  1934,
+    1935,  1939,  1940,  1941,  1943,  1944,  1948,  1949,  1950,  1952,
+    1953,  1957,  1958,  1959,  1963,  1964,  1965,  1969,  1970,  1971,
+    1972,  1973,  1974,  1975,  1976,  1977,  1979,  1980,  1981,  1982,
+    1983,  1984,  1985,  1986,  1988,  1989,  1990,  1991,  1993,  1994,
+    1995,  1996,  1998,  2006,  2010,  2015,  2022,  2023,  2027,  2032,
+    2033,  2037,  2038,  2039,  2040,  2046,  2047,  2048,  2052,  2053,
+    2054,  2055,  2059,  2061,  2065,  2066,  2067,  2068,  2069,  2070,
+    2071,  2075,  2076,  2077,  2078,  2079,  2080,  2081,  2085,  2086,
+    2087,  2091,  2092,  2093,  2097,  2101,  2102,  2106,  2107,  2108,
+    2112,  2113,  2115,  2116,  2117,  2118,  2119,  2121,  2122,  2123,
+    2124,  2125,  2127,  2128,  2132,  2133,  2137,  2138,  2139,  2143,
+    2144,  2145,  2146,  2147,  2148,  2149,  2150,  2151,  2153,  2154,
+    2156,  2157,  2158,  2159,  2160,  2162,  2163,  2164,  2165,  2169,
+    2170,  2174,  2175,  2179,  2183,  2184,  2185,  2190,  2191,  2195,
+    2196,  2197,  2198,  2199,  2200,  2201,  2202,  2203,  2204,  2205,
+    2206,  2207,  2208,  2209,  2210,  2211,  2212,  2213,  2214,  2215,
+    2216,  2217,  2218,  2219,  2220,  2224,  2225,  2226,  2227,  2228,
+    2229,  2230,  2231,  2232,  2233,  2234,  2235,  2236,  2237,  2238,
+    2239,  2240,  2241,  2242,  2243,  2244,  2245,  2246,  2247,  2253,
+    2255,  2257,  2259,  2261,  2263,  2265,  2267,  2269,  2271,  2276,
+    2277,  2281,  2287,  2293,  2300,  2310,  2311,  2312,  2313,  2317,
+    2318,  2319,  2321,  2322,  2323,  2325,  2326,  2327,  2331,  2335,
+    2343,  2352,  2361,  2362,  2364,  2365,  2369,  2376,  2383,  2386,
+    2399,  2413,  2416,  2418,  2420,  2425,  2426,  2430,  2431,  2432,
+    2433,  2434,  2435,  2436,  2437,  2441,  2442,  2443,  2444,  2445,
+    2446,  2447,  2448,  2449,  2450,  2454,  2455,  2456,  2457,  2458,
+    2459,  2460,  2461,  2462,  2463,  2467,  2468,  2469,  2470,  2471,
+    2472,  2473,  2474,  2475,  2476,  2477,  2478,  2482,  2483,  2484,
+    2485,  2486,  2487,  2488,  2489,  2490,  2491,  2495,  2496,  2500,
+    2501,  2502,  2503,  2504,  2505,  2506,  2507,  2508,  2510,  2512,
+    2520,  2530,  2531,  2535,  2536,  2537,  2538,  2539,  2540,  2541,
+    2542,  2543,  2551,  2560,  2561,  2562,  2563,  2564,  2565,  2566,
+    2567,  2568,  2569,  2570,  2571,  2572,  2580,  2589,  2590,  2591,
+    2592,  2593,  2594,  2595,  2596,  2597,  2598,  2599,  2600,  2601,
+    2609,  2618,  2619,  2623,  2624,  2625,  2626,  2627,  2631,  2632,
+    2639,  2641,  2650,  2659,  2668,  2677,  2678,  2679,  2680,  2684,
+    2685,  2686,  2687,  2688,  2689,  2690,  2691,  2692,  2696,  2700,
+    2701,  2702,  2703,  2704,  2709,  2718,  2727,  2736,  2750,  2751,
+    2756,  2760,  2761,  2762,  2763,  2764,  2769,  2778,  2787,  2796,
+    2810,  2811,  2860,  2861,  2862,  2863,  2875,  2876,  2877,  2882,
+    2883,  2884,  2885,  2886,  2890,  2891,  2895,  2896,  2897,  2901,
+    2902,  2906,  2907,  2908,  2909,  2910,  2911,  2912,  2913,  2914,
+    2915,  2916,  2917,  2918,  2919,  2920,  2921,  2925,  2926,  2927,
+    2928,  2929,  2930,  2931,  2932,  2936,  2937,  2938,  2939,  2943,
+    2944,  2945,  2946,  2947,  2951,  2952,  2953,  2954,  2955,  2959,
+    2960,  2962,  2964,  2966,  2971,  2972,  2974,  2976,  2981,  2982,
+    2983,  2984,  2988,  2989,  2990,  2991,  2995,  2996,  2997,  2998,
+    3002,  3003,  3004,  3005,  3009,  3010,  3011,  3012,  3016,  3017,
+    3018,  3035,  3036,  3037,  3038,  3051,  3068,  3069,  3074,  3075,
+    3079,  3080,  3081,  3082,  3085,  3086,  3090,  3091,  3092,  3096,
+    3100,  3104,  3105,  3106,  3107,  3108,  3117,  3126,  3127,  3128,
+    3129,  3133,  3134,  3138,  3139,  3144,  3145,  3146,  3147,  3148,
+    3149,  3168,  3169,  3173,  3174,  3175,  3176,  3177,  3178,  3180,
+    3181,  3182,  3183,  3187,  3188,  3189,  3190,  3191,  3193,  3194,
+    3195,  3199,  3200,  3201,  3202,  3203,  3204,  3208,  3209,  3210,
+    3215,  3216,  3217,  3218,  3219,  3220,  3221,  3222,  3223,  3224,
+    3225,  3226,  3227,  3231,  3232,  3233,  3234,  3235,  3236,  3237,
+    3241,  3242,  3243,  3247,  3248,  3249,  3253,  3254,  3255,  3256,
+    3258,  3259,  3260,  3262,  3263,  3264,  3265,  3267,  3268,  3269,
+    3273,  3274,  3275,  3276,  3277,  3279,  3280,  3281,  3282,  3283,
+    3287,  3288,  3289,  3290,  3291,  3292,  3293,  3295,  3296,  3297,
+    3298,  3299,  3303,  3304,  3305,  3309,  3310,  3314,  3315,  3316,
+    3317,  3321,  3322,  3323,  3325,  3326,  3327,  3331,  3335,  3336,
+    3338,  3339,  3340,  3344,  3345,  3346,  3347,  3351,  3352,  3356,
+    3357,  3358,  3362,  3363,  3364,  3365,  3366,  3367,  3368,  3372,
+    3373,  3374,  3375,  3379,  3380,  3381,  3382,  3386,  3390,  3394,
+    3396,  3399,  3405,  3406,  3407,  3411,  3412,  3413,  3414,  3415,
+    3416,  3420,  3421,  3425,  3426,  3427,  3429,  3430,  3432,  3433,
+    3434,  3435,  3436,  3438,  3439,  3443,  3444,  3445,  3446,  3450,
+    3451,  3452,  3453,  3455,  3456,  3457,  3458,  3459,  3460,  3461,
+    3464,  3468,  3469,  3473,  3474,  3478,  3479,  3480,  3481,  3482,
+    3483,  3484,  3485,  3489,  3490,  3491,  3492,  3498,  3499,  3501,
+    3502,  3505,  3506,  3509,  3510,  3511,  3512,  3513,  3514,  3518,
+    3519,  3531,  3532,  3535,  3538,  3540,  3541,  3542,  3552,  3554,
+    3555,  3557,  3558,  3559,  3560,  3570,  3571,  3572,  3573,  3574,
+    3575,  3579,  3580,  3589,  3591,  3592,  3594,  3596,  3600,  3601,
+    3602,  3603,  3604,  3608,  3609,  3610,  3612,  3617,  3618,  3619,
+    3623,  3624,  3625,  3629,  3633,  3634,  3635,  3639,  3640,  3644,
+    3645,  3649,  3650,  3651,  3652,  3656,  3660,  3664,  3668
 };
 #endif
 
@@ -13484,17 +13484,7 @@ yyreduce:
 #line 283 "grammar.y"
     {
       (yyval.specifier) = null;
-      // if($1._class && !$1._class.name)
-      if((yyvsp[(1) - (2)].id)._class)
-      {
-         char name[1024];
-         strcpy(name,  (yyvsp[(1) - (2)].id)._class.name ? (yyvsp[(1) - (2)].id)._class.name : "");
-         strcat(name, "::");
-         strcat(name, (yyvsp[(1) - (2)].id).string);
-         _DeclClass(name);
-      }
-      else
-         _DeclClass((yyvsp[(1) - (2)].id).string);
+      _DeclClass((yyvsp[(1) - (2)].id)._class, (yyvsp[(1) - (2)].id).string);
 
       FreeIdentifier((yyvsp[(1) - (2)].id));
 
@@ -13515,21 +13505,11 @@ yyreduce:
   case 3:
 
 /* Line 1464 of yacc.c  */
-#line 312 "grammar.y"
+#line 302 "grammar.y"
     {
       (yyval.specifier) = null;
    #ifdef PRECOMPILER
-      // if($1._class && !$1._class.name)
-      if((yyvsp[(1) - (2)].id)._class)
-      {
-         char name[1024];
-         strcpy(name,  (yyvsp[(1) - (2)].id)._class.name ? (yyvsp[(1) - (2)].id)._class.name : "");
-         strcat(name, "::");
-         strcat(name, (yyvsp[(1) - (2)].id).string);
-         _DeclClass(name);
-      }
-      else
-         _DeclClass((yyvsp[(1) - (2)].id).string);
+      _DeclClass((yyvsp[(1) - (2)].id)._class, (yyvsp[(1) - (2)].id).string);
 
       FreeIdentifier((yyvsp[(1) - (2)].id));
 
@@ -13551,14 +13531,14 @@ yyreduce:
   case 4:
 
 /* Line 1464 of yacc.c  */
-#line 370 "grammar.y"
+#line 340 "grammar.y"
     { (yyval.specifier) = (yyvsp[(1) - (1)].specifier); ;}
     break;
 
   case 5:
 
 /* Line 1464 of yacc.c  */
-#line 372 "grammar.y"
+#line 342 "grammar.y"
     {
    #ifdef PRECOMPILER
       if(!(yyvsp[(1) - (2)].id).string[0])
@@ -13569,17 +13549,7 @@ yyreduce:
       }
       else
       {
-         // if($1._class && !$1._class.name)
-         if((yyvsp[(1) - (2)].id)._class)
-         {
-            char name[1024];
-            strcpy(name,  (yyvsp[(1) - (2)].id)._class.name ? (yyvsp[(1) - (2)].id)._class.name : "");
-            strcat(name, "::");
-            strcat(name, (yyvsp[(1) - (2)].id).string);
-            _DeclClass(name);
-         }
-         else
-            _DeclClass((yyvsp[(1) - (2)].id).string);
+         _DeclClass((yyvsp[(1) - (2)].id)._class, (yyvsp[(1) - (2)].id).string);
 
          FreeIdentifier((yyvsp[(1) - (2)].id));
          FreeIdentifier((yyvsp[(2) - (2)].id));
@@ -13607,28 +13577,28 @@ yyreduce:
   case 6:
 
 /* Line 1464 of yacc.c  */
-#line 481 "grammar.y"
+#line 421 "grammar.y"
     { (yyval.specifier) = MkSpecifierName(yytext); ;}
     break;
 
   case 7:
 
 /* Line 1464 of yacc.c  */
-#line 485 "grammar.y"
+#line 425 "grammar.y"
     { (yyval.string) = CopyString(yytext); ;}
     break;
 
   case 9:
 
 /* Line 1464 of yacc.c  */
-#line 489 "grammar.y"
+#line 429 "grammar.y"
     { (yyval.specifier) = (yyvsp[(1) - (4)].specifier); SetClassTemplateArgs((yyval.specifier), (yyvsp[(3) - (4)].list)); (yyval.specifier).loc = (yyloc); ;}
     break;
 
   case 10:
 
 /* Line 1464 of yacc.c  */
-#line 491 "grammar.y"
+#line 431 "grammar.y"
     {
       (yyval.specifier) = (yyvsp[(1) - (4)].specifier);
       SetClassTemplateArgs((yyval.specifier), (yyvsp[(3) - (4)].list));
@@ -13644,119 +13614,119 @@ yyreduce:
   case 11:
 
 /* Line 1464 of yacc.c  */
-#line 540 "grammar.y"
+#line 470 "grammar.y"
     { (yyval.classFunction) = MkClassFunction((yyvsp[(1) - (2)].list), null, (yyvsp[(2) - (2)].declarator), null); (yyval.classFunction).loc = (yyloc); ;}
     break;
 
   case 12:
 
 /* Line 1464 of yacc.c  */
-#line 542 "grammar.y"
+#line 472 "grammar.y"
     { (yyval.classFunction) = MkClassFunction(null, null, (yyvsp[(1) - (1)].declarator), null); (yyval.classFunction).loc = (yyloc); ;}
     break;
 
   case 13:
 
 /* Line 1464 of yacc.c  */
-#line 547 "grammar.y"
+#line 477 "grammar.y"
     { (yyval.classFunction) = MkClassFunction((yyvsp[(1) - (3)].list), null, null, null); (yyval.classFunction).isConstructor = true; (yyval.classFunction).loc = (yyloc); ;}
     break;
 
   case 14:
 
 /* Line 1464 of yacc.c  */
-#line 552 "grammar.y"
+#line 482 "grammar.y"
     { (yyval.classFunction) = MkClassFunction((yyvsp[(2) - (4)].list), null, null, null); (yyval.classFunction).isDestructor = true; (yyval.classFunction).loc = (yyloc); ;}
     break;
 
   case 15:
 
 /* Line 1464 of yacc.c  */
-#line 557 "grammar.y"
+#line 487 "grammar.y"
     { (yyval.classFunction) = MkClassFunction((yyvsp[(2) - (3)].list), null, (yyvsp[(3) - (3)].declarator), null); (yyval.classFunction).isVirtual = true; (yyval.classFunction).loc = (yyloc); ;}
     break;
 
   case 16:
 
 /* Line 1464 of yacc.c  */
-#line 559 "grammar.y"
+#line 489 "grammar.y"
     { (yyval.classFunction) = MkClassFunction(null, null, (yyvsp[(2) - (2)].declarator), null); (yyval.classFunction).isVirtual = true; (yyval.classFunction).loc = (yyloc); ;}
     break;
 
   case 17:
 
 /* Line 1464 of yacc.c  */
-#line 564 "grammar.y"
+#line 494 "grammar.y"
     { (yyval.classFunction) = MkClassFunction((yyvsp[(1) - (2)].list), null, (yyvsp[(2) - (2)].declarator), null); (yyval.classFunction).loc = (yyloc); ;}
     break;
 
   case 18:
 
 /* Line 1464 of yacc.c  */
-#line 566 "grammar.y"
+#line 496 "grammar.y"
     { (yyval.classFunction) = MkClassFunction(null, null, (yyvsp[(1) - (1)].declarator), null); (yyval.classFunction).loc = (yyloc); ;}
     break;
 
   case 19:
 
 /* Line 1464 of yacc.c  */
-#line 571 "grammar.y"
+#line 501 "grammar.y"
     { (yyval.classFunction) = MkClassFunction((yyvsp[(2) - (3)].list), null, (yyvsp[(3) - (3)].declarator), null); (yyval.classFunction).isVirtual = true; (yyval.classFunction).loc = (yyloc); ;}
     break;
 
   case 20:
 
 /* Line 1464 of yacc.c  */
-#line 573 "grammar.y"
+#line 503 "grammar.y"
     { (yyval.classFunction) = MkClassFunction(null, null, (yyvsp[(2) - (2)].declarator), null); (yyval.classFunction).isVirtual = true; (yyval.classFunction).loc = (yyloc); ;}
     break;
 
   case 21:
 
 /* Line 1464 of yacc.c  */
-#line 578 "grammar.y"
+#line 508 "grammar.y"
     { ProcessClassFunctionBody((yyvsp[(1) - (2)].classFunction), (yyvsp[(2) - (2)].stmt)); (yyval.classFunction).loc = (yyloc); ;}
     break;
 
   case 22:
 
 /* Line 1464 of yacc.c  */
-#line 580 "grammar.y"
+#line 510 "grammar.y"
     { ProcessClassFunctionBody((yyvsp[(1) - (2)].classFunction), (yyvsp[(2) - (2)].stmt)); (yyval.classFunction).loc = (yyloc); ;}
     break;
 
   case 23:
 
 /* Line 1464 of yacc.c  */
-#line 582 "grammar.y"
+#line 512 "grammar.y"
     { ProcessClassFunctionBody((yyvsp[(1) - (2)].classFunction), null); (yyval.classFunction).loc = (yyloc); ;}
     break;
 
   case 24:
 
 /* Line 1464 of yacc.c  */
-#line 584 "grammar.y"
+#line 514 "grammar.y"
     { ProcessClassFunctionBody((yyvsp[(1) - (2)].classFunction), (yyvsp[(2) - (2)].stmt)); (yyval.classFunction).loc = (yyloc); ;}
     break;
 
   case 25:
 
 /* Line 1464 of yacc.c  */
-#line 586 "grammar.y"
+#line 516 "grammar.y"
     { ProcessClassFunctionBody((yyvsp[(1) - (2)].classFunction), (yyvsp[(2) - (2)].stmt)); (yyval.classFunction).loc = (yyloc); ;}
     break;
 
   case 26:
 
 /* Line 1464 of yacc.c  */
-#line 590 "grammar.y"
+#line 520 "grammar.y"
     { ProcessClassFunctionBody((yyvsp[(1) - (2)].classFunction), null); (yyval.classFunction).loc = (yyloc); ;}
     break;
 
   case 27:
 
 /* Line 1464 of yacc.c  */
-#line 594 "grammar.y"
+#line 524 "grammar.y"
     {
          if((yyvsp[(1) - (3)].classFunction).declarator)
          {
@@ -13771,112 +13741,112 @@ yyreduce:
   case 28:
 
 /* Line 1464 of yacc.c  */
-#line 607 "grammar.y"
+#line 537 "grammar.y"
     { ProcessClassFunctionBody((yyvsp[(1) - (2)].classFunction), (yyvsp[(2) - (2)].stmt)); (yyval.classFunction).loc = (yyloc); (yyval.classFunction).loc.end = (yyvsp[(2) - (2)].stmt).loc.end; ;}
     break;
 
   case 29:
 
 /* Line 1464 of yacc.c  */
-#line 609 "grammar.y"
+#line 539 "grammar.y"
     { ProcessClassFunctionBody((yyvsp[(1) - (1)].classFunction), null); (yyval.classFunction).loc = (yyloc); (yyval.classFunction).loc.end.charPos++; (yyval.classFunction).loc.end.pos++;;}
     break;
 
   case 30:
 
 /* Line 1464 of yacc.c  */
-#line 611 "grammar.y"
+#line 541 "grammar.y"
     { ProcessClassFunctionBody((yyvsp[(1) - (2)].classFunction), (yyvsp[(2) - (2)].stmt)); (yyval.classFunction).loc = (yyloc); (yyval.classFunction).loc.end = (yyvsp[(2) - (2)].stmt).loc.end; ;}
     break;
 
   case 31:
 
 /* Line 1464 of yacc.c  */
-#line 613 "grammar.y"
+#line 543 "grammar.y"
     { ProcessClassFunctionBody((yyvsp[(1) - (1)].classFunction), null); (yyval.classFunction).loc = (yyloc); (yyval.classFunction).loc.end.charPos++; (yyval.classFunction).loc.end.pos++;;}
     break;
 
   case 32:
 
 /* Line 1464 of yacc.c  */
-#line 615 "grammar.y"
+#line 545 "grammar.y"
     { ProcessClassFunctionBody((yyvsp[(1) - (2)].classFunction), null); (yyval.classFunction).loc = (yyloc); (yyval.classFunction).loc.end.charPos++; (yyval.classFunction).loc.end.pos++;;}
     break;
 
   case 33:
 
 /* Line 1464 of yacc.c  */
-#line 621 "grammar.y"
+#line 551 "grammar.y"
     { (yyval.classFunction) = MkClassFunction((yyvsp[(1) - (2)].list), null, (yyvsp[(2) - (2)].declarator), null); (yyval.classFunction).loc = (yyloc); ;}
     break;
 
   case 34:
 
 /* Line 1464 of yacc.c  */
-#line 623 "grammar.y"
+#line 553 "grammar.y"
     { (yyval.classFunction) = MkClassFunction((yyvsp[(1) - (2)].list), null, MkDeclaratorFunction((yyvsp[(2) - (2)].declarator), null), null); (yyval.classFunction).loc = (yyloc); ;}
     break;
 
   case 35:
 
 /* Line 1464 of yacc.c  */
-#line 628 "grammar.y"
+#line 558 "grammar.y"
     { (yyval.classFunction) = MkClassFunction((yyvsp[(1) - (2)].list), null, (yyvsp[(2) - (2)].declarator), null); (yyval.classFunction).loc = (yyloc); ;}
     break;
 
   case 36:
 
 /* Line 1464 of yacc.c  */
-#line 633 "grammar.y"
+#line 563 "grammar.y"
     { ProcessClassFunctionBody((yyvsp[(1) - (2)].classFunction), (yyvsp[(2) - (2)].stmt)); (yyval.classFunction).loc = (yyloc); ;}
     break;
 
   case 37:
 
 /* Line 1464 of yacc.c  */
-#line 638 "grammar.y"
+#line 568 "grammar.y"
     { ProcessClassFunctionBody((yyvsp[(1) - (2)].classFunction), (yyvsp[(2) - (2)].stmt)); (yyval.classFunction).loc = (yyloc); (yyval.classFunction).loc.end = (yyvsp[(2) - (2)].stmt).loc.end; (yyval.classFunction).loc.end.charPos++; (yyval.classFunction).loc.end.pos++;;}
     break;
 
   case 38:
 
 /* Line 1464 of yacc.c  */
-#line 640 "grammar.y"
+#line 570 "grammar.y"
     { ProcessClassFunctionBody((yyvsp[(1) - (1)].classFunction), null); (yyval.classFunction).loc = (yyloc); (yyval.classFunction).loc.end.charPos++; (yyval.classFunction).loc.end.pos++;;}
     break;
 
   case 39:
 
 /* Line 1464 of yacc.c  */
-#line 642 "grammar.y"
+#line 572 "grammar.y"
     { ProcessClassFunctionBody((yyvsp[(1) - (1)].classFunction), null); (yyval.classFunction).loc = (yyloc); (yyval.classFunction).loc.end.charPos++; (yyval.classFunction).loc.end.pos++;;}
     break;
 
   case 40:
 
 /* Line 1464 of yacc.c  */
-#line 646 "grammar.y"
+#line 576 "grammar.y"
     { (yyval.memberInit) = MkMemberInitExp((yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].initializer)); (yyval.memberInit).loc = (yyloc); (yyval.memberInit).realLoc = (yyloc); (yyval.memberInit).initializer.loc.start = (yylsp[(2) - (3)]).end;;}
     break;
 
   case 41:
 
 /* Line 1464 of yacc.c  */
-#line 647 "grammar.y"
+#line 577 "grammar.y"
     { (yyval.memberInit) = MkMemberInit(null, (yyvsp[(1) - (1)].initializer)); (yyval.memberInit).loc = (yyloc); (yyval.memberInit).realLoc = (yyloc);;}
     break;
 
   case 42:
 
 /* Line 1464 of yacc.c  */
-#line 651 "grammar.y"
+#line 581 "grammar.y"
     { (yyval.memberInit) = MkMemberInitExp((yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].initializer)); (yyval.memberInit).loc = (yyloc); (yyval.memberInit).realLoc = (yyloc); (yyval.memberInit).initializer.loc.start = (yylsp[(2) - (3)]).end;;}
     break;
 
   case 43:
 
 /* Line 1464 of yacc.c  */
-#line 653 "grammar.y"
+#line 583 "grammar.y"
     {
          (yyval.memberInit) = MkMemberInitExp((yyvsp[(1) - (3)].exp), MkInitializerAssignment(MkExpDummy()));
          (yyval.memberInit).loc = (yyloc); (yyval.memberInit).realLoc = (yyloc); (yyval.memberInit).initializer.loc.start = (yyval.memberInit).initializer.loc.end = (yylsp[(2) - (3)]).end;
@@ -13892,56 +13862,56 @@ yyreduce:
   case 44:
 
 /* Line 1464 of yacc.c  */
-#line 663 "grammar.y"
+#line 593 "grammar.y"
     { (yyval.memberInit) = MkMemberInit(null, (yyvsp[(1) - (1)].initializer)); (yyval.memberInit).loc = (yyloc); (yyval.memberInit).realLoc = (yyloc);;}
     break;
 
   case 45:
 
 /* Line 1464 of yacc.c  */
-#line 667 "grammar.y"
+#line 597 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].memberInit)); ;}
     break;
 
   case 46:
 
 /* Line 1464 of yacc.c  */
-#line 669 "grammar.y"
+#line 599 "grammar.y"
     { ((MemberInit)(yyvsp[(1) - (3)].list)->last).loc.end = (yylsp[(3) - (3)]).start; ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].memberInit)); (yyval.list) = (yyvsp[(1) - (3)].list); ;}
     break;
 
   case 47:
 
 /* Line 1464 of yacc.c  */
-#line 671 "grammar.y"
+#line 601 "grammar.y"
     { ((MemberInit)(yyvsp[(1) - (3)].list)->last).loc.end = (yylsp[(3) - (3)]).start; ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].memberInit)); (yyval.list) = (yyvsp[(1) - (3)].list); ;}
     break;
 
   case 48:
 
 /* Line 1464 of yacc.c  */
-#line 675 "grammar.y"
+#line 605 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].memberInit)); ;}
     break;
 
   case 49:
 
 /* Line 1464 of yacc.c  */
-#line 677 "grammar.y"
+#line 607 "grammar.y"
     { ((MemberInit)(yyvsp[(1) - (3)].list)->last).loc.end = (yylsp[(3) - (3)]).start; ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].memberInit)); (yyval.list) = (yyvsp[(1) - (3)].list); ;}
     break;
 
   case 50:
 
 /* Line 1464 of yacc.c  */
-#line 679 "grammar.y"
+#line 609 "grammar.y"
     { ((MemberInit)(yyvsp[(1) - (3)].list)->last).loc.end = (yylsp[(3) - (3)]).start; ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].memberInit)); (yyval.list) = (yyvsp[(1) - (3)].list); ;}
     break;
 
   case 51:
 
 /* Line 1464 of yacc.c  */
-#line 682 "grammar.y"
+#line 612 "grammar.y"
     { ((MemberInit)(yyvsp[(1) - (3)].list)->last).loc.end = (yylsp[(2) - (3)]).end;
          {
             Initializer dummy = MkInitializerAssignment(MkExpDummy());
@@ -13957,7 +13927,7 @@ yyreduce:
   case 52:
 
 /* Line 1464 of yacc.c  */
-#line 694 "grammar.y"
+#line 624 "grammar.y"
     { ((MemberInit)(yyvsp[(1) - (3)].list)->last).loc.end = (yylsp[(2) - (3)]).end;
          {
             Initializer dummy = MkInitializerAssignment(MkExpDummy());
@@ -13973,7 +13943,7 @@ yyreduce:
   case 53:
 
 /* Line 1464 of yacc.c  */
-#line 705 "grammar.y"
+#line 635 "grammar.y"
     {
          Initializer dummy = MkInitializerAssignment(MkExpDummy());
          MemberInit memberInit = MkMemberInit(null, dummy);
@@ -13994,63 +13964,63 @@ yyreduce:
   case 54:
 
 /* Line 1464 of yacc.c  */
-#line 724 "grammar.y"
+#line 654 "grammar.y"
     { if((yyvsp[(1) - (2)].list)->last) ((MemberInit)(yyvsp[(1) - (2)].list)->last).loc.end = (yylsp[(2) - (2)]).end; (yyval.list) = (yyvsp[(1) - (2)].list); ;}
     break;
 
   case 55:
 
 /* Line 1464 of yacc.c  */
-#line 726 "grammar.y"
+#line 656 "grammar.y"
     { if((yyvsp[(1) - (2)].list)->last) ((MemberInit)(yyvsp[(1) - (2)].list)->last).loc.end = (yylsp[(2) - (2)]).end; (yyval.list) = (yyvsp[(1) - (2)].list); ;}
     break;
 
   case 56:
 
 /* Line 1464 of yacc.c  */
-#line 730 "grammar.y"
+#line 660 "grammar.y"
     { MembersInit members = MkMembersInitList((yyvsp[(1) - (1)].list)); (yyval.list) = MkList(); ListAdd((yyval.list), members); members.loc = (yylsp[(1) - (1)]); ;}
     break;
 
   case 57:
 
 /* Line 1464 of yacc.c  */
-#line 731 "grammar.y"
+#line 661 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), MkMembersInitMethod((yyvsp[(1) - (1)].classFunction))); ((MembersInit)(yyval.list)->last).loc = (yylsp[(1) - (1)]); ;}
     break;
 
   case 58:
 
 /* Line 1464 of yacc.c  */
-#line 732 "grammar.y"
+#line 662 "grammar.y"
     { MembersInit members = MkMembersInitList((yyvsp[(2) - (2)].list)); ListAdd((yyval.list), members);  members.loc = (yylsp[(2) - (2)]); (yyval.list) = (yyvsp[(1) - (2)].list); ;}
     break;
 
   case 59:
 
 /* Line 1464 of yacc.c  */
-#line 733 "grammar.y"
+#line 663 "grammar.y"
     { ListAdd((yyval.list), MkMembersInitMethod((yyvsp[(2) - (2)].classFunction))); ((MembersInit)(yyval.list)->last).loc = (yylsp[(2) - (2)]); (yyval.list) = (yyvsp[(1) - (2)].list); ;}
     break;
 
   case 60:
 
 /* Line 1464 of yacc.c  */
-#line 734 "grammar.y"
+#line 664 "grammar.y"
     { MembersInit members = MkMembersInitList((yyvsp[(2) - (2)].list)); ListAdd((yyval.list), members); members.loc = (yylsp[(2) - (2)]); (yyval.list) = (yyvsp[(1) - (2)].list); ;}
     break;
 
   case 61:
 
 /* Line 1464 of yacc.c  */
-#line 735 "grammar.y"
+#line 665 "grammar.y"
     { ListAdd((yyval.list), MkMembersInitMethod((yyvsp[(2) - (2)].classFunction))); ((MembersInit)(yyval.list)->last).loc = (yylsp[(2) - (2)]); (yyval.list) = (yyvsp[(1) - (2)].list); ;}
     break;
 
   case 63:
 
 /* Line 1464 of yacc.c  */
-#line 738 "grammar.y"
+#line 668 "grammar.y"
     {
       MembersInit members = (MembersInit)(yyval.list)->last;
       if(members.type == dataMembersInit)
@@ -14068,224 +14038,224 @@ yyreduce:
   case 64:
 
 /* Line 1464 of yacc.c  */
-#line 750 "grammar.y"
+#line 680 "grammar.y"
     { MembersInit members = MkMembersInitList(MkList()); (yyval.list) = MkList(); ListAdd((yyval.list), members); members.loc = (yylsp[(1) - (1)]);  ;}
     break;
 
   case 66:
 
 /* Line 1464 of yacc.c  */
-#line 755 "grammar.y"
+#line 685 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), MkMembersInitList((yyvsp[(1) - (1)].list))); ((MembersInit)(yyval.list)->last).loc = (yylsp[(1) - (1)]); ;}
     break;
 
   case 67:
 
 /* Line 1464 of yacc.c  */
-#line 756 "grammar.y"
+#line 686 "grammar.y"
     { ListAdd((yyvsp[(1) - (2)].list), MkMembersInitList((yyvsp[(2) - (2)].list)));   ((MembersInit)(yyval.list)->last).loc = (yylsp[(2) - (2)]); ;}
     break;
 
   case 68:
 
 /* Line 1464 of yacc.c  */
-#line 757 "grammar.y"
+#line 687 "grammar.y"
     { ListAdd((yyvsp[(1) - (2)].list), MkMembersInitList((yyvsp[(2) - (2)].list)));   ((MembersInit)(yyval.list)->last).loc = (yylsp[(2) - (2)]); ;}
     break;
 
   case 69:
 
 /* Line 1464 of yacc.c  */
-#line 761 "grammar.y"
+#line 691 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), MkMembersInitMethod((yyvsp[(1) - (1)].classFunction))); ((MembersInit)(yyval.list)->last).loc = (yylsp[(1) - (1)]); ;}
     break;
 
   case 70:
 
 /* Line 1464 of yacc.c  */
-#line 762 "grammar.y"
+#line 692 "grammar.y"
     { ListAdd((yyval.list), MkMembersInitMethod((yyvsp[(2) - (2)].classFunction))); ((MembersInit)(yyval.list)->last).loc = (yylsp[(2) - (2)]); (yyval.list) = (yyvsp[(1) - (2)].list); ;}
     break;
 
   case 71:
 
 /* Line 1464 of yacc.c  */
-#line 763 "grammar.y"
+#line 693 "grammar.y"
     { ListAdd((yyval.list), MkMembersInitMethod((yyvsp[(2) - (2)].classFunction))); ((MembersInit)(yyval.list)->last).loc = (yylsp[(2) - (2)]); (yyval.list) = (yyvsp[(1) - (2)].list); ;}
     break;
 
   case 72:
 
 /* Line 1464 of yacc.c  */
-#line 764 "grammar.y"
+#line 694 "grammar.y"
     { ListAdd((yyval.list), MkMembersInitMethod((yyvsp[(2) - (2)].classFunction))); ((MembersInit)(yyval.list)->last).loc = (yylsp[(2) - (2)]); (yyval.list) = (yyvsp[(1) - (2)].list); ;}
     break;
 
   case 73:
 
 /* Line 1464 of yacc.c  */
-#line 765 "grammar.y"
+#line 695 "grammar.y"
     { ListAdd((yyval.list), MkMembersInitList((yyvsp[(2) - (2)].list))); ((MembersInit)(yyval.list)->last).loc = (yylsp[(2) - (2)]); (yyval.list) = (yyvsp[(1) - (2)].list); ;}
     break;
 
   case 74:
 
 /* Line 1464 of yacc.c  */
-#line 766 "grammar.y"
+#line 696 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), MkMembersInitList((yyvsp[(1) - (1)].list))); ((MembersInit)(yyval.list)->last).loc = (yylsp[(1) - (1)]); ;}
     break;
 
   case 75:
 
 /* Line 1464 of yacc.c  */
-#line 767 "grammar.y"
+#line 697 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), MkMembersInitList((yyvsp[(1) - (2)].list))); ((MembersInit)(yyval.list)->last).loc = (yylsp[(2) - (2)]); ;}
     break;
 
   case 76:
 
 /* Line 1464 of yacc.c  */
-#line 772 "grammar.y"
+#line 702 "grammar.y"
     { (yyval.instance).loc = (yyloc); (yyval.instance).insideLoc.end = (yylsp[(2) - (2)]).start; (yyval.instance) = (yyvsp[(1) - (2)].instance); ;}
     break;
 
   case 77:
 
 /* Line 1464 of yacc.c  */
-#line 774 "grammar.y"
+#line 704 "grammar.y"
     { (yyval.instance).loc = (yyloc); (yyval.instance).insideLoc.end = (yylsp[(2) - (3)]).start; (yyval.instance) = (yyvsp[(1) - (3)].instance); ;}
     break;
 
   case 78:
 
 /* Line 1464 of yacc.c  */
-#line 779 "grammar.y"
+#line 709 "grammar.y"
     { (yyval.instance) = MkInstantiationNamed((yyvsp[(1) - (4)].list), MkExpIdentifier((yyvsp[(2) - (4)].id)), (yyvsp[(4) - (4)].list)); (yyval.instance).exp.loc = (yylsp[(2) - (4)]); (yyval.instance).loc = (yyloc); (yyval.instance).nameLoc = (yylsp[(2) - (4)]); (yyval.instance).insideLoc.start = (yylsp[(3) - (4)]).end; (yyval.instance).insideLoc.end = (yylsp[(4) - (4)]).end; (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++; ;}
     break;
 
   case 79:
 
 /* Line 1464 of yacc.c  */
-#line 781 "grammar.y"
+#line 711 "grammar.y"
     { (yyval.instance) = MkInstantiationNamed((yyvsp[(1) - (5)].list), MkExpIdentifier((yyvsp[(2) - (5)].id)), (yyvsp[(4) - (5)].list)); (yyval.instance).exp.loc = (yylsp[(2) - (5)]); (yyval.instance).loc = (yyloc); (yyval.instance).nameLoc = (yylsp[(2) - (5)]); (yyval.instance).insideLoc.start = (yylsp[(3) - (5)]).end; (yyval.instance).insideLoc.end = (yylsp[(4) - (5)]).end; (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++; ;}
     break;
 
   case 80:
 
 /* Line 1464 of yacc.c  */
-#line 783 "grammar.y"
+#line 713 "grammar.y"
     { (yyval.instance) = MkInstantiationNamed((yyvsp[(1) - (4)].list), MkExpIdentifier((yyvsp[(2) - (4)].id)), (yyvsp[(4) - (4)].list)); (yyval.instance).exp.loc = (yylsp[(2) - (4)]); (yyval.instance).loc = (yyloc); (yyval.instance).nameLoc = (yylsp[(2) - (4)]); (yyval.instance).insideLoc.start = (yylsp[(3) - (4)]).end; (yyval.instance).insideLoc.end = (yylsp[(4) - (4)]).end;  (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++; ;}
     break;
 
   case 81:
 
 /* Line 1464 of yacc.c  */
-#line 785 "grammar.y"
+#line 715 "grammar.y"
     { (yyval.instance) = MkInstantiationNamed((yyvsp[(1) - (3)].list), MkExpIdentifier((yyvsp[(2) - (3)].id)), null); (yyval.instance).exp.loc = (yylsp[(2) - (3)]); (yyval.instance).loc = (yyloc); (yyval.instance).nameLoc = (yylsp[(2) - (3)]); (yyval.instance).insideLoc.start = (yylsp[(3) - (3)]).end; (yyval.instance).insideLoc.end = (yylsp[(3) - (3)]).end; (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++; ;}
     break;
 
   case 82:
 
 /* Line 1464 of yacc.c  */
-#line 787 "grammar.y"
+#line 717 "grammar.y"
     { (yyval.instance) = MkInstantiationNamed((yyvsp[(1) - (4)].list), MkExpIdentifier((yyvsp[(2) - (4)].id)), null);(yyval.instance).exp.loc = (yylsp[(2) - (4)]);  (yyval.instance).loc = (yyloc); (yyval.instance).nameLoc = (yylsp[(2) - (4)]); (yyval.instance).insideLoc.start = (yylsp[(3) - (4)]).end; (yyval.instance).insideLoc.end = (yylsp[(3) - (4)]).end; (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++; ;}
     break;
 
   case 83:
 
 /* Line 1464 of yacc.c  */
-#line 817 "grammar.y"
+#line 747 "grammar.y"
     { (yyval.instance).loc = (yyloc); (yyval.instance).insideLoc.end = (yylsp[(2) - (2)]).start; ;}
     break;
 
   case 84:
 
 /* Line 1464 of yacc.c  */
-#line 819 "grammar.y"
+#line 749 "grammar.y"
     { (yyval.instance).loc = (yyloc); (yyval.instance).insideLoc.end = (yylsp[(2) - (3)]).start; ;}
     break;
 
   case 85:
 
 /* Line 1464 of yacc.c  */
-#line 824 "grammar.y"
+#line 754 "grammar.y"
     { (yyval.instance) = MkInstantiationNamed((yyvsp[(1) - (4)].list), MkExpIdentifier((yyvsp[(2) - (4)].id)), (yyvsp[(4) - (4)].list));(yyval.instance).exp.loc = (yylsp[(2) - (4)]);  (yyval.instance).loc = (yyloc); (yyval.instance).nameLoc = (yylsp[(2) - (4)]); (yyval.instance).insideLoc.start = (yylsp[(3) - (4)]).end; (yyval.instance).insideLoc.end = (yylsp[(4) - (4)]).end; (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++; ;}
     break;
 
   case 86:
 
 /* Line 1464 of yacc.c  */
-#line 826 "grammar.y"
+#line 756 "grammar.y"
     { (yyval.instance) = MkInstantiationNamed((yyvsp[(1) - (5)].list), MkExpIdentifier((yyvsp[(2) - (5)].id)), (yyvsp[(4) - (5)].list)); (yyval.instance).exp.loc = (yylsp[(2) - (5)]); (yyval.instance).loc = (yyloc); (yyval.instance).nameLoc = (yylsp[(2) - (5)]); (yyval.instance).insideLoc.start = (yylsp[(3) - (5)]).end; (yyval.instance).insideLoc.end = (yylsp[(4) - (5)]).end; (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++; ;}
     break;
 
   case 87:
 
 /* Line 1464 of yacc.c  */
-#line 828 "grammar.y"
+#line 758 "grammar.y"
     { (yyval.instance) = MkInstantiationNamed((yyvsp[(1) - (4)].list), MkExpIdentifier((yyvsp[(2) - (4)].id)), (yyvsp[(4) - (4)].list));(yyval.instance).exp.loc = (yylsp[(2) - (4)]);  (yyval.instance).loc = (yyloc); (yyval.instance).nameLoc = (yylsp[(2) - (4)]); (yyval.instance).insideLoc.start = (yylsp[(3) - (4)]).end; (yyval.instance).insideLoc.end = (yylsp[(4) - (4)]).end;  (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++; ;}
     break;
 
   case 88:
 
 /* Line 1464 of yacc.c  */
-#line 830 "grammar.y"
+#line 760 "grammar.y"
     { (yyval.instance) = MkInstantiationNamed((yyvsp[(1) - (3)].list), MkExpIdentifier((yyvsp[(2) - (3)].id)), null);(yyval.instance).exp.loc = (yylsp[(2) - (3)]);  (yyval.instance).loc = (yyloc); (yyval.instance).nameLoc = (yylsp[(2) - (3)]); (yyval.instance).insideLoc.start = (yylsp[(3) - (3)]).end; (yyval.instance).insideLoc.end = (yylsp[(3) - (3)]).end; (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++; ;}
     break;
 
   case 89:
 
 /* Line 1464 of yacc.c  */
-#line 832 "grammar.y"
+#line 762 "grammar.y"
     { (yyval.instance) = MkInstantiationNamed((yyvsp[(1) - (4)].list), MkExpIdentifier((yyvsp[(2) - (4)].id)), null);(yyval.instance).exp.loc = (yylsp[(2) - (4)]);  (yyval.instance).loc = (yyloc); (yyval.instance).nameLoc = (yylsp[(2) - (4)]); (yyval.instance).insideLoc.start = (yylsp[(3) - (4)]).end; (yyval.instance).insideLoc.end = (yylsp[(3) - (4)]).end; (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++; ;}
     break;
 
   case 90:
 
 /* Line 1464 of yacc.c  */
-#line 861 "grammar.y"
+#line 791 "grammar.y"
     { (yyval.instance) = MkInstantiationNamed((yyvsp[(1) - (5)].list), MkExpIdentifier((yyvsp[(2) - (5)].id)), (yyvsp[(4) - (5)].list)); (yyval.instance).exp.loc = (yylsp[(2) - (5)]); (yyval.instance).loc = (yyloc); (yyval.instance).nameLoc = (yylsp[(2) - (5)]); (yyval.instance).insideLoc.start = (yylsp[(3) - (5)]).end; (yyval.instance).insideLoc.end = (yylsp[(5) - (5)]).start;;}
     break;
 
   case 91:
 
 /* Line 1464 of yacc.c  */
-#line 863 "grammar.y"
+#line 793 "grammar.y"
     { (yyval.instance) = MkInstantiationNamed((yyvsp[(1) - (5)].list), MkExpIdentifier((yyvsp[(2) - (5)].id)), (yyvsp[(4) - (5)].list)); (yyval.instance).exp.loc = (yylsp[(2) - (5)]); (yyval.instance).loc = (yyloc); (yyval.instance).nameLoc = (yylsp[(2) - (5)]); (yyval.instance).insideLoc.start = (yylsp[(3) - (5)]).end; (yyval.instance).insideLoc.end = (yylsp[(5) - (5)]).start;;}
     break;
 
   case 92:
 
 /* Line 1464 of yacc.c  */
-#line 865 "grammar.y"
+#line 795 "grammar.y"
     { (yyval.instance) = MkInstantiationNamed((yyvsp[(1) - (4)].list), MkExpIdentifier((yyvsp[(2) - (4)].id)), MkList());  (yyval.instance).exp.loc = (yylsp[(2) - (4)]); (yyval.instance).loc = (yyloc); (yyval.instance).nameLoc = (yylsp[(2) - (4)]); (yyval.instance).insideLoc.start = (yylsp[(3) - (4)]).end; (yyval.instance).insideLoc.end = (yylsp[(4) - (4)]).start;;}
     break;
 
   case 93:
 
 /* Line 1464 of yacc.c  */
-#line 870 "grammar.y"
+#line 800 "grammar.y"
     { (yyval.instance).loc = (yyloc); (yyval.instance).insideLoc.end = (yylsp[(2) - (2)]).start; (yyval.instance) = (yyvsp[(1) - (2)].instance); ;}
     break;
 
   case 94:
 
 /* Line 1464 of yacc.c  */
-#line 872 "grammar.y"
+#line 802 "grammar.y"
     { (yyval.instance).loc = (yyloc); (yyval.instance).insideLoc.end = (yylsp[(2) - (3)]).start; (yyval.instance) = (yyvsp[(1) - (3)].instance); ;}
     break;
 
   case 95:
 
 /* Line 1464 of yacc.c  */
-#line 877 "grammar.y"
+#line 807 "grammar.y"
     { (yyval.instance) = MkInstantiation((yyvsp[(1) - (3)].specifier), null, (yyvsp[(3) - (3)].list));  (yyval.instance).loc = (yyloc); (yyval.instance).insideLoc.start = (yylsp[(2) - (3)]).end; (yyval.instance).insideLoc.end = (yylsp[(3) - (3)]).end; (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++; ;}
     break;
 
   case 96:
 
 /* Line 1464 of yacc.c  */
-#line 879 "grammar.y"
+#line 809 "grammar.y"
     { Location tmpLoc = yylloc; yylloc = (yylsp[(1) - (3)]);
       yylloc = tmpLoc;  (yyval.instance) = MkInstantiation(MkSpecifierName((yyvsp[(1) - (3)].id).string), null, (yyvsp[(3) - (3)].list));  (yyval.instance).loc = (yyloc); (yyval.instance).insideLoc.start = (yylsp[(2) - (3)]).end; (yyval.instance).insideLoc.end = (yylsp[(3) - (3)]).end; FreeIdentifier((yyvsp[(1) - (3)].id)); ;}
     break;
@@ -14293,35 +14263,35 @@ yyreduce:
   case 97:
 
 /* Line 1464 of yacc.c  */
-#line 883 "grammar.y"
+#line 813 "grammar.y"
     { (yyval.instance) = MkInstantiation((yyvsp[(1) - (3)].specifier), null, (yyvsp[(3) - (3)].list));  (yyval.instance).loc = (yyloc); (yyval.instance).insideLoc.start = (yylsp[(2) - (3)]).end; (yyval.instance).insideLoc.end = (yylsp[(3) - (3)]).end;  (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++; ;}
     break;
 
   case 98:
 
 /* Line 1464 of yacc.c  */
-#line 885 "grammar.y"
+#line 815 "grammar.y"
     { (yyval.instance) = MkInstantiation((yyvsp[(1) - (2)].specifier), null, null);  (yyval.instance).loc = (yyloc); (yyval.instance).insideLoc.start = (yylsp[(2) - (2)]).end; (yyval.instance).insideLoc.end = (yylsp[(2) - (2)]).end;  (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++; ;}
     break;
 
   case 99:
 
 /* Line 1464 of yacc.c  */
-#line 887 "grammar.y"
+#line 817 "grammar.y"
     { (yyval.instance) = MkInstantiation((yyvsp[(1) - (4)].specifier), null, (yyvsp[(3) - (4)].list));  (yyval.instance).loc = (yyloc); (yyval.instance).insideLoc.start = (yylsp[(2) - (4)]).end; (yyval.instance).insideLoc.end = (yylsp[(3) - (4)]).end;  (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++; ;}
     break;
 
   case 100:
 
 /* Line 1464 of yacc.c  */
-#line 889 "grammar.y"
+#line 819 "grammar.y"
     { (yyval.instance) = MkInstantiation((yyvsp[(1) - (3)].specifier), null, null);  (yyval.instance).loc = (yyloc); (yyval.instance).insideLoc.start = (yylsp[(2) - (3)]).end; (yyval.instance).insideLoc.end = (yylsp[(2) - (3)]).end; (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++;  ;}
     break;
 
   case 101:
 
 /* Line 1464 of yacc.c  */
-#line 894 "grammar.y"
+#line 824 "grammar.y"
     { Location tmpLoc = yylloc; yylloc = (yylsp[(1) - (3)]);
       yylloc = tmpLoc;  (yyval.instance) = MkInstantiation(MkSpecifierName((yyvsp[(1) - (3)].id).string), null, (yyvsp[(3) - (3)].list));  (yyval.instance).loc = (yyloc); (yyval.instance).insideLoc.start = (yylsp[(2) - (3)]).end; (yyval.instance).insideLoc.end = (yylsp[(3) - (3)]).end;  (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++; FreeIdentifier((yyvsp[(1) - (3)].id)); ;}
     break;
@@ -14329,7 +14299,7 @@ yyreduce:
   case 102:
 
 /* Line 1464 of yacc.c  */
-#line 897 "grammar.y"
+#line 827 "grammar.y"
     { Location tmpLoc = yylloc; yylloc = (yylsp[(1) - (2)]);
       yylloc = tmpLoc;  (yyval.instance) = MkInstantiation(MkSpecifierName((yyvsp[(1) - (2)].id).string), null, null);  (yyval.instance).loc = (yyloc); (yyval.instance).insideLoc.start = (yylsp[(2) - (2)]).end; (yyval.instance).insideLoc.end = (yylsp[(2) - (2)]).end;  (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++; FreeIdentifier((yyvsp[(1) - (2)].id)); ;}
     break;
@@ -14337,7 +14307,7 @@ yyreduce:
   case 103:
 
 /* Line 1464 of yacc.c  */
-#line 900 "grammar.y"
+#line 830 "grammar.y"
     { Location tmpLoc = yylloc; yylloc = (yylsp[(1) - (4)]);
       yylloc = tmpLoc;  (yyval.instance) = MkInstantiation(MkSpecifierName((yyvsp[(1) - (4)].id).string), null, (yyvsp[(3) - (4)].list));  (yyval.instance).loc = (yyloc); (yyval.instance).insideLoc.start = (yylsp[(2) - (4)]).end; (yyval.instance).insideLoc.end = (yylsp[(3) - (4)]).end;  (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++; FreeIdentifier((yyvsp[(1) - (4)].id)); ;}
     break;
@@ -14345,7 +14315,7 @@ yyreduce:
   case 104:
 
 /* Line 1464 of yacc.c  */
-#line 903 "grammar.y"
+#line 833 "grammar.y"
     { Location tmpLoc = yylloc; yylloc = (yylsp[(1) - (3)]);
       yylloc = tmpLoc;  (yyval.instance) = MkInstantiation(MkSpecifierName((yyvsp[(1) - (3)].id).string), null, null);  (yyval.instance).loc = (yyloc); (yyval.instance).insideLoc.start = (yylsp[(2) - (3)]).end; (yyval.instance).insideLoc.end = (yylsp[(2) - (3)]).end; (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++; FreeIdentifier((yyvsp[(1) - (3)].id)); ;}
     break;
@@ -14353,840 +14323,840 @@ yyreduce:
   case 105:
 
 /* Line 1464 of yacc.c  */
-#line 968 "grammar.y"
+#line 898 "grammar.y"
     { (yyval.instance).loc = (yyloc); (yyval.instance).insideLoc.end = (yylsp[(2) - (2)]).start; ;}
     break;
 
   case 106:
 
 /* Line 1464 of yacc.c  */
-#line 970 "grammar.y"
+#line 900 "grammar.y"
     { (yyval.instance).loc = (yyloc); (yyval.instance).insideLoc.end = (yylsp[(2) - (3)]).start; ;}
     break;
 
   case 107:
 
 /* Line 1464 of yacc.c  */
-#line 975 "grammar.y"
+#line 905 "grammar.y"
     { (yyval.instance) = MkInstantiation(null, null, (yyvsp[(2) - (2)].list));  (yyval.instance).loc = (yyloc); (yyval.instance).insideLoc.start = (yylsp[(1) - (2)]).end; (yyval.instance).insideLoc.end = (yylsp[(2) - (2)]).end; (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++; ;}
     break;
 
   case 108:
 
 /* Line 1464 of yacc.c  */
-#line 977 "grammar.y"
+#line 907 "grammar.y"
     { (yyval.instance) = MkInstantiation(null, null, (yyvsp[(2) - (3)].list));  (yyval.instance).loc = (yyloc); (yyval.instance).insideLoc.start = (yylsp[(1) - (3)]).end; (yyval.instance).insideLoc.end = (yylsp[(2) - (3)]).end;  (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++; ;}
     break;
 
   case 109:
 
 /* Line 1464 of yacc.c  */
-#line 979 "grammar.y"
+#line 909 "grammar.y"
     { (yyval.instance) = MkInstantiation(null, null, null);  (yyval.instance).loc = (yyloc); (yyval.instance).insideLoc.start = (yylsp[(1) - (2)]).end; (yyval.instance).insideLoc.end = (yylsp[(1) - (2)]).end; (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++;  ;}
     break;
 
   case 110:
 
 /* Line 1464 of yacc.c  */
-#line 981 "grammar.y"
+#line 911 "grammar.y"
     { (yyval.instance) = MkInstantiation(null, null, null);  (yyval.instance).loc = (yyloc); (yyval.instance).insideLoc.start = (yylsp[(1) - (1)]).end; (yyval.instance).insideLoc.end = (yylsp[(1) - (1)]).end;  (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++; ;}
     break;
 
   case 111:
 
 /* Line 1464 of yacc.c  */
-#line 983 "grammar.y"
+#line 913 "grammar.y"
     { (yyval.instance) = MkInstantiation(null, null, (yyvsp[(2) - (2)].list));  (yyval.instance).loc = (yyloc); (yyval.instance).insideLoc.start = (yylsp[(1) - (2)]).end; (yyval.instance).insideLoc.end = (yylsp[(2) - (2)]).end; (yyval.instance).loc.end.charPos++; (yyval.instance).loc.end.pos++; ;}
     break;
 
   case 112:
 
 /* Line 1464 of yacc.c  */
-#line 1013 "grammar.y"
+#line 943 "grammar.y"
     { (yyval.memberInit) = MkMemberInitExp((yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].initializer)); (yyval.memberInit).loc = (yyloc); (yyval.memberInit).realLoc = (yyloc); ;}
     break;
 
   case 113:
 
 /* Line 1464 of yacc.c  */
-#line 1017 "grammar.y"
+#line 947 "grammar.y"
     { (yyval.memberInit) = MkMemberInitExp((yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].initializer)); (yyval.memberInit).loc = (yyloc); (yyval.memberInit).realLoc = (yyloc); (yyval.memberInit).initializer.loc.start = (yylsp[(2) - (3)]).end; ;}
     break;
 
   case 114:
 
 /* Line 1464 of yacc.c  */
-#line 1018 "grammar.y"
+#line 948 "grammar.y"
     { (yyval.memberInit) = MkMemberInitExp((yyvsp[(1) - (3)].exp), MkInitializerAssignment(MkExpDummy())); (yyval.memberInit).loc = (yyloc); (yyval.memberInit).realLoc = (yyloc); (yyval.memberInit).initializer.loc.start = (yylsp[(2) - (3)]).end; (yyval.memberInit).initializer.loc.end = (yylsp[(2) - (3)]).end; ;}
     break;
 
   case 115:
 
 /* Line 1464 of yacc.c  */
-#line 1019 "grammar.y"
+#line 949 "grammar.y"
     { (yyval.memberInit) = MkMemberInitExp((yyvsp[(1) - (2)].exp), null); (yyval.memberInit).loc = (yyloc); (yyval.memberInit).realLoc = (yyloc); ;}
     break;
 
   case 116:
 
 /* Line 1464 of yacc.c  */
-#line 1023 "grammar.y"
+#line 953 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].memberInit)); ((MemberInit)(yyval.list)->last).loc = (yyloc); ;}
     break;
 
   case 117:
 
 /* Line 1464 of yacc.c  */
-#line 1024 "grammar.y"
+#line 954 "grammar.y"
     { ((MemberInit)(yyvsp[(1) - (3)].list)->last).loc.end = (yylsp[(3) - (3)]).start; ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].memberInit)); (yyval.list) = (yyvsp[(1) - (3)].list); ;}
     break;
 
   case 118:
 
 /* Line 1464 of yacc.c  */
-#line 1025 "grammar.y"
+#line 955 "grammar.y"
     { ((MemberInit)(yyvsp[(1) - (3)].list)->last).loc.end = (yylsp[(3) - (3)]).start; ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].memberInit)); (yyval.list) = (yyvsp[(1) - (3)].list); ;}
     break;
 
   case 119:
 
 /* Line 1464 of yacc.c  */
-#line 1029 "grammar.y"
+#line 959 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].memberInit)); ((MemberInit)(yyval.list)->last).loc = (yyloc); ;}
     break;
 
   case 120:
 
 /* Line 1464 of yacc.c  */
-#line 1030 "grammar.y"
+#line 960 "grammar.y"
     { ((MemberInit)(yyvsp[(1) - (3)].list)->last).loc.end = (yylsp[(3) - (3)]).start; ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].memberInit)); (yyval.list) = (yyvsp[(1) - (3)].list); ;}
     break;
 
   case 121:
 
 /* Line 1464 of yacc.c  */
-#line 1031 "grammar.y"
+#line 961 "grammar.y"
     { ((MemberInit)(yyvsp[(1) - (3)].list)->last).loc.end = (yylsp[(3) - (3)]).start; ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].memberInit)); (yyval.list) = (yyvsp[(1) - (3)].list); ;}
     break;
 
   case 123:
 
 /* Line 1464 of yacc.c  */
-#line 1037 "grammar.y"
+#line 967 "grammar.y"
     { (yyval.prop) = MkProperty((yyvsp[(2) - (4)].list), null, (yyvsp[(3) - (4)].id), null, null); (yyval.prop).loc = (yyloc); ;}
     break;
 
   case 124:
 
 /* Line 1464 of yacc.c  */
-#line 1040 "grammar.y"
+#line 970 "grammar.y"
     { (yyval.prop) = MkProperty((yyvsp[(2) - (5)].list), (yyvsp[(3) - (5)].declarator), (yyvsp[(4) - (5)].id), null, null); (yyval.prop).loc = (yyloc); ;}
     break;
 
   case 125:
 
 /* Line 1464 of yacc.c  */
-#line 1043 "grammar.y"
+#line 973 "grammar.y"
     { (yyval.prop) = MkProperty((yyvsp[(2) - (3)].list), null, null, null, null); (yyval.prop).loc = (yyloc); ;}
     break;
 
   case 126:
 
 /* Line 1464 of yacc.c  */
-#line 1046 "grammar.y"
+#line 976 "grammar.y"
     { (yyval.prop) = MkProperty((yyvsp[(2) - (4)].list), (yyvsp[(3) - (4)].declarator), null, null, null); (yyval.prop).loc = (yyloc); ;}
     break;
 
   case 127:
 
 /* Line 1464 of yacc.c  */
-#line 1049 "grammar.y"
+#line 979 "grammar.y"
     { (yyval.prop) = MkProperty(null, null, null, null, null); (yyval.prop).loc = (yyloc); ;}
     break;
 
   case 129:
 
 /* Line 1464 of yacc.c  */
-#line 1055 "grammar.y"
+#line 985 "grammar.y"
     { (yyvsp[(1) - (3)].prop).setStmt = (yyvsp[(3) - (3)].stmt); ;}
     break;
 
   case 130:
 
 /* Line 1464 of yacc.c  */
-#line 1057 "grammar.y"
+#line 987 "grammar.y"
     { (yyvsp[(1) - (3)].prop).getStmt = (yyvsp[(3) - (3)].stmt); ;}
     break;
 
   case 131:
 
 /* Line 1464 of yacc.c  */
-#line 1059 "grammar.y"
+#line 989 "grammar.y"
     { (yyvsp[(1) - (3)].prop).issetStmt = (yyvsp[(3) - (3)].stmt); ;}
     break;
 
   case 132:
 
 /* Line 1464 of yacc.c  */
-#line 1061 "grammar.y"
+#line 991 "grammar.y"
     { (yyvsp[(1) - (2)].prop).isWatchable = true; ;}
     break;
 
   case 133:
 
 /* Line 1464 of yacc.c  */
-#line 1063 "grammar.y"
+#line 993 "grammar.y"
     { (yyvsp[(1) - (3)].prop).category = (yyvsp[(3) - (3)].exp); ;}
     break;
 
   case 134:
 
 /* Line 1464 of yacc.c  */
-#line 1067 "grammar.y"
+#line 997 "grammar.y"
     { (yyvsp[(1) - (2)].prop).loc.end = (yylsp[(2) - (2)]).end; (yyval.prop) = (yyvsp[(1) - (2)].prop); ;}
     break;
 
   case 135:
 
 /* Line 1464 of yacc.c  */
-#line 1072 "grammar.y"
+#line 1002 "grammar.y"
     { (yyval.prop) = MkProperty((yyvsp[(2) - (4)].list), null, (yyvsp[(3) - (4)].id), null, null); (yyval.prop).loc = (yyloc); ;}
     break;
 
   case 136:
 
 /* Line 1464 of yacc.c  */
-#line 1075 "grammar.y"
+#line 1005 "grammar.y"
     { (yyval.prop) = MkProperty((yyvsp[(2) - (5)].list), (yyvsp[(3) - (5)].declarator), (yyvsp[(4) - (5)].id), null, null); (yyval.prop).loc = (yyloc); ;}
     break;
 
   case 137:
 
 /* Line 1464 of yacc.c  */
-#line 1078 "grammar.y"
+#line 1008 "grammar.y"
     { (yyval.prop) = MkProperty((yyvsp[(2) - (3)].list), null, null, null, null); (yyval.prop).loc = (yyloc); ;}
     break;
 
   case 138:
 
 /* Line 1464 of yacc.c  */
-#line 1081 "grammar.y"
+#line 1011 "grammar.y"
     { (yyval.prop) = MkProperty((yyvsp[(2) - (4)].list), (yyvsp[(3) - (4)].declarator), null, null, null); (yyval.prop).loc = (yyloc); ;}
     break;
 
   case 139:
 
 /* Line 1464 of yacc.c  */
-#line 1084 "grammar.y"
+#line 1014 "grammar.y"
     { (yyval.prop) = MkProperty(null, null, null, null, null); (yyval.prop).loc = (yyloc); ;}
     break;
 
   case 141:
 
 /* Line 1464 of yacc.c  */
-#line 1090 "grammar.y"
+#line 1020 "grammar.y"
     { (yyvsp[(1) - (3)].prop).setStmt = (yyvsp[(3) - (3)].stmt); ;}
     break;
 
   case 142:
 
 /* Line 1464 of yacc.c  */
-#line 1092 "grammar.y"
+#line 1022 "grammar.y"
     { (yyvsp[(1) - (3)].prop).getStmt = (yyvsp[(3) - (3)].stmt); ;}
     break;
 
   case 143:
 
 /* Line 1464 of yacc.c  */
-#line 1096 "grammar.y"
+#line 1026 "grammar.y"
     { (yyvsp[(1) - (2)].prop).loc.end = (yylsp[(2) - (2)]).end; ;}
     break;
 
   case 144:
 
 /* Line 1464 of yacc.c  */
-#line 1101 "grammar.y"
+#line 1031 "grammar.y"
     { (yyval.list) = MkListOne((yyvsp[(1) - (1)].id)); ;}
     break;
 
   case 145:
 
 /* Line 1464 of yacc.c  */
-#line 1103 "grammar.y"
+#line 1033 "grammar.y"
     { ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].id)); ;}
     break;
 
   case 146:
 
 /* Line 1464 of yacc.c  */
-#line 1108 "grammar.y"
+#line 1038 "grammar.y"
     { (yyval.propertyWatch) = MkPropertyWatch((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].stmt)); ;}
     break;
 
   case 147:
 
 /* Line 1464 of yacc.c  */
-#line 1110 "grammar.y"
+#line 1040 "grammar.y"
     { (yyval.propertyWatch) = MkDeleteWatch((yyvsp[(2) - (2)].stmt)); ;}
     break;
 
   case 148:
 
 /* Line 1464 of yacc.c  */
-#line 1115 "grammar.y"
+#line 1045 "grammar.y"
     { (yyval.list) = MkListOne((yyvsp[(1) - (1)].propertyWatch)); ;}
     break;
 
   case 149:
 
 /* Line 1464 of yacc.c  */
-#line 1117 "grammar.y"
+#line 1047 "grammar.y"
     { ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].propertyWatch)); ;}
     break;
 
   case 150:
 
 /* Line 1464 of yacc.c  */
-#line 1122 "grammar.y"
+#line 1052 "grammar.y"
     { (yyval.propertyWatch) = MkPropertyWatch((yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].stmt)); ;}
     break;
 
   case 151:
 
 /* Line 1464 of yacc.c  */
-#line 1127 "grammar.y"
+#line 1057 "grammar.y"
     { (yyval.stmt) = MkWatchStmt(null, (yyvsp[(3) - (7)].exp), (yyvsp[(6) - (7)].list)); ;}
     break;
 
   case 152:
 
 /* Line 1464 of yacc.c  */
-#line 1129 "grammar.y"
+#line 1059 "grammar.y"
     { (yyval.stmt) = MkWatchStmt((yyvsp[(1) - (9)].exp), (yyvsp[(5) - (9)].exp), (yyvsp[(8) - (9)].list)); ;}
     break;
 
   case 153:
 
 /* Line 1464 of yacc.c  */
-#line 1134 "grammar.y"
+#line 1064 "grammar.y"
     { (yyval.stmt) = MkStopWatchingStmt(null, (yyvsp[(3) - (6)].exp), (yyvsp[(5) - (6)].list)); ;}
     break;
 
   case 154:
 
 /* Line 1464 of yacc.c  */
-#line 1136 "grammar.y"
+#line 1066 "grammar.y"
     { (yyval.stmt) = MkStopWatchingStmt((yyvsp[(1) - (8)].exp), (yyvsp[(5) - (8)].exp), (yyvsp[(7) - (8)].list)); ;}
     break;
 
   case 155:
 
 /* Line 1464 of yacc.c  */
-#line 1138 "grammar.y"
+#line 1068 "grammar.y"
     { (yyval.stmt) = MkStopWatchingStmt(null, (yyvsp[(3) - (4)].exp), null); ;}
     break;
 
   case 156:
 
 /* Line 1464 of yacc.c  */
-#line 1140 "grammar.y"
+#line 1070 "grammar.y"
     { (yyval.stmt) = MkStopWatchingStmt((yyvsp[(1) - (6)].exp), (yyvsp[(5) - (6)].exp), null); ;}
     break;
 
   case 157:
 
 /* Line 1464 of yacc.c  */
-#line 1145 "grammar.y"
+#line 1075 "grammar.y"
     { (yyval.stmt) = MkFireWatchersStmt(null, null); ;}
     break;
 
   case 158:
 
 /* Line 1464 of yacc.c  */
-#line 1147 "grammar.y"
+#line 1077 "grammar.y"
     { (yyval.stmt) = MkFireWatchersStmt(null, (yyvsp[(2) - (2)].list)); ;}
     break;
 
   case 159:
 
 /* Line 1464 of yacc.c  */
-#line 1149 "grammar.y"
+#line 1079 "grammar.y"
     { (yyval.stmt) = MkFireWatchersStmt((yyvsp[(1) - (3)].exp), null); ;}
     break;
 
   case 160:
 
 /* Line 1464 of yacc.c  */
-#line 1151 "grammar.y"
+#line 1081 "grammar.y"
     { (yyval.stmt) = MkFireWatchersStmt((yyvsp[(1) - (4)].exp), (yyvsp[(4) - (4)].list)); ;}
     break;
 
   case 161:
 
 /* Line 1464 of yacc.c  */
-#line 1155 "grammar.y"
+#line 1085 "grammar.y"
     { (yyval.classDef) = (yyvsp[(1) - (2)].classDef); (yyval.classDef).loc.end = (yylsp[(2) - (2)]).end; ;}
     break;
 
   case 162:
 
 /* Line 1464 of yacc.c  */
-#line 1156 "grammar.y"
+#line 1086 "grammar.y"
     { (yyval.classDef) = MkClassDefDefaultProperty((yyvsp[(1) - (2)].list)); if((yyvsp[(1) - (2)].list)->last) ((MemberInit)(yyvsp[(1) - (2)].list)->last).loc.end = (yylsp[(2) - (2)]).start; (yyval.classDef).loc = (yyloc); ;}
     break;
 
   case 163:
 
 /* Line 1464 of yacc.c  */
-#line 1157 "grammar.y"
+#line 1087 "grammar.y"
     { (yyval.classDef) = MkClassDefFunction((yyvsp[(1) - (1)].classFunction)); (yyval.classDef).loc = (yyloc); (yyval.classDef).memberAccess = memberAccessStack[defaultMemberAccess]; ;}
     break;
 
   case 164:
 
 /* Line 1464 of yacc.c  */
-#line 1158 "grammar.y"
+#line 1088 "grammar.y"
     { (yyval.classDef) = MkClassDefProperty((yyvsp[(1) - (1)].prop)); (yyval.classDef).loc = (yyloc); (yyval.classDef).memberAccess = memberAccessStack[defaultMemberAccess]; ;}
     break;
 
   case 165:
 
 /* Line 1464 of yacc.c  */
-#line 1159 "grammar.y"
+#line 1089 "grammar.y"
     { (yyval.classDef) = MkClassDefFunction((yyvsp[(2) - (2)].classFunction)); (yyval.classDef).loc = (yyloc); (yyval.classDef).memberAccess = (yyvsp[(1) - (2)].declMode); ;}
     break;
 
   case 166:
 
 /* Line 1464 of yacc.c  */
-#line 1160 "grammar.y"
+#line 1090 "grammar.y"
     { (yyval.classDef) = MkClassDefProperty((yyvsp[(2) - (2)].prop)); (yyval.classDef).loc = (yyloc); (yyval.classDef).memberAccess = (yyvsp[(1) - (2)].declMode); ;}
     break;
 
   case 167:
 
 /* Line 1464 of yacc.c  */
-#line 1161 "grammar.y"
+#line 1091 "grammar.y"
     { (yyval.classDef) = MkClassDefClassProperty((yyvsp[(1) - (1)].prop)); (yyval.classDef).loc = (yyloc); ;}
     break;
 
   case 168:
 
 /* Line 1464 of yacc.c  */
-#line 1162 "grammar.y"
+#line 1092 "grammar.y"
     { (yyval.classDef) = null; deleteWatchable = true; ;}
     break;
 
   case 169:
 
 /* Line 1464 of yacc.c  */
-#line 1163 "grammar.y"
+#line 1093 "grammar.y"
     { (yyval.classDef) = MkClassDefNoExpansion(); ;}
     break;
 
   case 170:
 
 /* Line 1464 of yacc.c  */
-#line 1164 "grammar.y"
+#line 1094 "grammar.y"
     { (yyval.classDef) = MkClassDefFixed(); ;}
     break;
 
   case 171:
 
 /* Line 1464 of yacc.c  */
-#line 1165 "grammar.y"
+#line 1095 "grammar.y"
     { (yyval.classDef) = MkClassDefClassPropertyValue((yyvsp[(3) - (7)].id), (yyvsp[(6) - (7)].initializer)); (yyval.classDef).loc = (yyloc); ;}
     break;
 
   case 172:
 
 /* Line 1464 of yacc.c  */
-#line 1167 "grammar.y"
+#line 1097 "grammar.y"
     { (yyval.classDef) = null; ;}
     break;
 
   case 173:
 
 /* Line 1464 of yacc.c  */
-#line 1168 "grammar.y"
+#line 1098 "grammar.y"
     { memberAccessStack[defaultMemberAccess] = (yyvsp[(1) - (2)].declMode); if(defaultMemberAccess == 0) { (yyval.classDef) = MkClassDefMemberAccess(); (yyval.classDef).memberAccess = (yyvsp[(1) - (2)].declMode); (yyval.classDef).loc = (yyloc); } else (yyval.classDef) = null; ;}
     break;
 
   case 174:
 
 /* Line 1464 of yacc.c  */
-#line 1170 "grammar.y"
+#line 1100 "grammar.y"
     { (yyval.classDef) = MkClassDefAccessOverride((yyvsp[(1) - (4)].declMode), (yyvsp[(3) - (4)].id)); (yyval.classDef).loc = (yyloc); ;}
     break;
 
   case 175:
 
 /* Line 1464 of yacc.c  */
-#line 1174 "grammar.y"
+#line 1104 "grammar.y"
     { (yyval.classDef) = MkClassDefFunction((yyvsp[(1) - (1)].classFunction)); (yyval.classDef).loc = (yyvsp[(1) - (1)].classFunction).loc;  (yyval.classDef).loc.end.charPos++; (yyval.classDef).loc.end.pos++; (yyval.classDef).memberAccess = memberAccessStack[defaultMemberAccess]; ;}
     break;
 
   case 176:
 
 /* Line 1464 of yacc.c  */
-#line 1177 "grammar.y"
+#line 1107 "grammar.y"
     { (yyval.classDef) = MkClassDefDeclaration(MkStructDeclaration((yyvsp[(1) - (1)].list), null, null)); (yyval.classDef).decl.loc = (yyloc); (yyval.classDef).loc = (yyloc); (yyval.classDef).memberAccess = memberAccessStack[defaultMemberAccess]; ;}
     break;
 
   case 177:
 
 /* Line 1464 of yacc.c  */
-#line 1178 "grammar.y"
+#line 1108 "grammar.y"
     { (yyval.classDef) = MkClassDefDeclaration(MkStructDeclaration((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].list), null)); (yyval.classDef).decl.loc = (yyloc); (yyval.classDef).loc = (yyloc); (yyval.classDef).memberAccess = memberAccessStack[defaultMemberAccess]; ;}
     break;
 
   case 178:
 
 /* Line 1464 of yacc.c  */
-#line 1179 "grammar.y"
+#line 1109 "grammar.y"
     { (yyval.classDef) = MkClassDefDeclaration(MkStructDeclaration((yyvsp[(2) - (3)].list), (yyvsp[(3) - (3)].list), null)); (yyval.classDef).decl.loc = (yyloc); (yyval.classDef).loc = (yyloc); (yyval.classDef).memberAccess = (yyvsp[(1) - (3)].declMode); ;}
     break;
 
   case 179:
 
 /* Line 1464 of yacc.c  */
-#line 1180 "grammar.y"
+#line 1110 "grammar.y"
     { (yyval.classDef) = MkClassDefDeclaration(MkStructDeclaration((yyvsp[(2) - (2)].list), null, null)); (yyval.classDef).decl.loc = (yyloc); (yyval.classDef).loc = (yyloc); (yyval.classDef).memberAccess = (yyvsp[(1) - (2)].declMode); ;}
     break;
 
   case 180:
 
 /* Line 1464 of yacc.c  */
-#line 1181 "grammar.y"
+#line 1111 "grammar.y"
     { (yyval.classDef) = MkClassDefDeclaration(MkDeclarationClassInst((yyvsp[(2) - (2)].instance))); (yyval.classDef).loc = (yyloc); (yyval.classDef).decl.loc = (yyloc); (yyval.classDef).memberAccess = (yyvsp[(1) - (2)].declMode); ;}
     break;
 
   case 181:
 
 /* Line 1464 of yacc.c  */
-#line 1182 "grammar.y"
+#line 1112 "grammar.y"
     { (yyval.classDef) = MkClassDefDeclaration(MkDeclarationClassInst((yyvsp[(2) - (2)].instance))); (yyval.classDef).loc = (yyloc); (yyval.classDef).decl.loc = (yyloc); (yyval.classDef).memberAccess = (yyvsp[(1) - (2)].declMode); ;}
     break;
 
   case 182:
 
 /* Line 1464 of yacc.c  */
-#line 1183 "grammar.y"
+#line 1113 "grammar.y"
     { (yyval.classDef) = MkClassDefClassData(MkStructDeclaration((yyvsp[(2) - (3)].list), (yyvsp[(3) - (3)].list), null)); (yyval.classDef).decl.loc = (yyloc); (yyval.classDef).loc = (yyloc); ;}
     break;
 
   case 183:
 
 /* Line 1464 of yacc.c  */
-#line 1184 "grammar.y"
+#line 1114 "grammar.y"
     { (yyval.classDef) = MkClassDefPropertyWatch((yyvsp[(1) - (1)].propertyWatch)); (yyval.classDef).loc = (yyloc); ;}
     break;
 
   case 184:
 
 /* Line 1464 of yacc.c  */
-#line 1185 "grammar.y"
+#line 1115 "grammar.y"
     { (yyval.classDef) = MkClassDefDesigner((yyvsp[(2) - (2)].id).string); FreeIdentifier((yyvsp[(2) - (2)].id)); ;}
     break;
 
   case 185:
 
 /* Line 1464 of yacc.c  */
-#line 1186 "grammar.y"
+#line 1116 "grammar.y"
     { (yyval.classDef) = MkClassDefDesigner((yyvsp[(2) - (2)].specifier).name); FreeSpecifier((yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 186:
 
 /* Line 1464 of yacc.c  */
-#line 1187 "grammar.y"
+#line 1117 "grammar.y"
     { (yyval.classDef) = MkClassDefDesignerDefaultProperty((yyvsp[(2) - (2)].id)); ;}
     break;
 
   case 187:
 
 /* Line 1464 of yacc.c  */
-#line 1188 "grammar.y"
+#line 1118 "grammar.y"
     { (yyval.classDef) = MkClassDefDeclaration(MkDeclarationClassInst((yyvsp[(1) - (1)].instance))); (yyval.classDef).loc = (yyloc); (yyval.classDef).decl.loc = (yyloc); (yyval.classDef).memberAccess = memberAccessStack[defaultMemberAccess]; ;}
     break;
 
   case 188:
 
 /* Line 1464 of yacc.c  */
-#line 1189 "grammar.y"
+#line 1119 "grammar.y"
     { (yyval.classDef) = MkClassDefDeclaration(MkDeclarationClassInst((yyvsp[(1) - (1)].instance))); (yyval.classDef).loc = (yyloc); (yyval.classDef).decl.loc = (yyloc); (yyval.classDef).memberAccess = memberAccessStack[defaultMemberAccess]; ;}
     break;
 
   case 189:
 
 /* Line 1464 of yacc.c  */
-#line 1190 "grammar.y"
+#line 1120 "grammar.y"
     { (yyval.classDef) = MkClassDefDefaultProperty((yyvsp[(1) - (1)].list)); if((yyvsp[(1) - (1)].list)->last) ((MemberInit)(yyvsp[(1) - (1)].list)->last).loc.end = (yylsp[(1) - (1)]).end; (yyval.classDef).loc = (yyloc); ;}
     break;
 
   case 190:
 
 /* Line 1464 of yacc.c  */
-#line 1192 "grammar.y"
+#line 1122 "grammar.y"
     { (yyval.classDef) = MkClassDefDeclaration(MkDeclarationClassInst((yyvsp[(1) - (2)].instance))); (yyval.classDef).loc = (yyvsp[(1) - (2)].instance).loc; (yyval.classDef).decl.loc = (yyval.classDef).loc;  (yyval.classDef).memberAccess = memberAccessStack[defaultMemberAccess]; ;}
     break;
 
   case 191:
 
 /* Line 1464 of yacc.c  */
-#line 1193 "grammar.y"
+#line 1123 "grammar.y"
     { (yyval.classDef) = MkClassDefDeclaration(MkDeclarationClassInst((yyvsp[(1) - (2)].instance))); (yyval.classDef).loc = (yyvsp[(1) - (2)].instance).loc; (yyval.classDef).decl.loc = (yyval.classDef).loc;  (yyval.classDef).memberAccess = memberAccessStack[defaultMemberAccess]; ;}
     break;
 
   case 192:
 
 /* Line 1464 of yacc.c  */
-#line 1197 "grammar.y"
+#line 1127 "grammar.y"
     { (yyval.classDef) = MkClassDefFunction((yyvsp[(2) - (2)].classFunction)); (yyval.classDef).loc = (yyloc);  (yyval.classDef).loc.end.charPos++; (yyval.classDef).loc.end.pos++; (yyval.classDef).memberAccess = (yyvsp[(1) - (2)].declMode); ;}
     break;
 
   case 193:
 
 /* Line 1464 of yacc.c  */
-#line 1198 "grammar.y"
+#line 1128 "grammar.y"
     { (yyval.classDef) = MkClassDefDeclaration(MkDeclarationClassInst((yyvsp[(2) - (3)].instance))); (yyval.classDef).loc = (yyloc); (yyval.classDef).decl.loc = (yyval.classDef).loc; (yyval.classDef).memberAccess = (yyvsp[(1) - (3)].declMode); ;}
     break;
 
   case 194:
 
 /* Line 1464 of yacc.c  */
-#line 1199 "grammar.y"
+#line 1129 "grammar.y"
     { (yyval.classDef) = MkClassDefDeclaration(MkDeclarationClassInst((yyvsp[(2) - (3)].instance))); (yyval.classDef).loc = (yyloc); (yyval.classDef).decl.loc = (yyval.classDef).loc; (yyval.classDef).memberAccess = (yyvsp[(1) - (3)].declMode); ;}
     break;
 
   case 195:
 
 /* Line 1464 of yacc.c  */
-#line 1203 "grammar.y"
+#line 1133 "grammar.y"
     { (yyval.classDef) = MkClassDefDefaultProperty((yyvsp[(1) - (1)].list)); (yyval.classDef).loc = (yyloc);  (yyval.classDef).loc.end.charPos++; (yyval.classDef).loc.end.pos++; ;}
     break;
 
   case 196:
 
 /* Line 1464 of yacc.c  */
-#line 1207 "grammar.y"
+#line 1137 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].classDef)); ;}
     break;
 
   case 197:
 
 /* Line 1464 of yacc.c  */
-#line 1208 "grammar.y"
+#line 1138 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].classDef)); ;}
     break;
 
   case 198:
 
 /* Line 1464 of yacc.c  */
-#line 1209 "grammar.y"
+#line 1139 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].classDef)); ;}
     break;
 
   case 199:
 
 /* Line 1464 of yacc.c  */
-#line 1213 "grammar.y"
+#line 1143 "grammar.y"
     { yyerror(); (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].classDef)); ;}
     break;
 
   case 202:
 
 /* Line 1464 of yacc.c  */
-#line 1216 "grammar.y"
+#line 1146 "grammar.y"
     { yyerror(); (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyval.list), (yyvsp[(2) - (2)].classDef)); ;}
     break;
 
   case 203:
 
 /* Line 1464 of yacc.c  */
-#line 1217 "grammar.y"
+#line 1147 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyval.list), (yyvsp[(2) - (2)].classDef)); ;}
     break;
 
   case 204:
 
 /* Line 1464 of yacc.c  */
-#line 1221 "grammar.y"
+#line 1151 "grammar.y"
     { (yyval.templateDatatype) = MkTemplateDatatype((yyvsp[(1) - (1)].list), null); ;}
     break;
 
   case 205:
 
 /* Line 1464 of yacc.c  */
-#line 1222 "grammar.y"
+#line 1152 "grammar.y"
     { (yyval.templateDatatype) = MkTemplateDatatype((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].declarator)); ;}
     break;
 
   case 206:
 
 /* Line 1464 of yacc.c  */
-#line 1234 "grammar.y"
+#line 1164 "grammar.y"
     { (yyval.templateArgument) = MkTemplateTypeArgument(MkTemplateDatatype((yyvsp[(1) - (1)].list), null)); ;}
     break;
 
   case 207:
 
 /* Line 1464 of yacc.c  */
-#line 1235 "grammar.y"
+#line 1165 "grammar.y"
     { (yyval.templateArgument) = MkTemplateTypeArgument(MkTemplateDatatype((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].declarator))); ;}
     break;
 
   case 208:
 
 /* Line 1464 of yacc.c  */
-#line 1239 "grammar.y"
+#line 1169 "grammar.y"
     { (yyval.templateParameter) = MkTypeTemplateParameter((yyvsp[(2) - (2)].id), null, null); ;}
     break;
 
   case 209:
 
 /* Line 1464 of yacc.c  */
-#line 1240 "grammar.y"
+#line 1170 "grammar.y"
     { (yyval.templateParameter) = MkTypeTemplateParameter((yyvsp[(2) - (4)].id), null, (yyvsp[(4) - (4)].templateArgument)); ;}
     break;
 
   case 210:
 
 /* Line 1464 of yacc.c  */
-#line 1241 "grammar.y"
+#line 1171 "grammar.y"
     { (yyval.templateParameter) = MkTypeTemplateParameter((yyvsp[(2) - (4)].id), (yyvsp[(4) - (4)].templateDatatype), null); ;}
     break;
 
   case 211:
 
 /* Line 1464 of yacc.c  */
-#line 1242 "grammar.y"
+#line 1172 "grammar.y"
     { (yyval.templateParameter) = MkTypeTemplateParameter((yyvsp[(2) - (6)].id), (yyvsp[(4) - (6)].templateDatatype), (yyvsp[(6) - (6)].templateArgument)); ;}
     break;
 
   case 212:
 
 /* Line 1464 of yacc.c  */
-#line 1243 "grammar.y"
+#line 1173 "grammar.y"
     { (yyval.templateParameter) = MkTypeTemplateParameter(MkIdentifier((yyvsp[(2) - (2)].string)), null, null); delete (yyvsp[(2) - (2)].string); ;}
     break;
 
   case 213:
 
 /* Line 1464 of yacc.c  */
-#line 1244 "grammar.y"
+#line 1174 "grammar.y"
     { (yyval.templateParameter) = MkTypeTemplateParameter(MkIdentifier((yyvsp[(2) - (4)].string)), null, (yyvsp[(4) - (4)].templateArgument)); ;}
     break;
 
   case 214:
 
 /* Line 1464 of yacc.c  */
-#line 1245 "grammar.y"
+#line 1175 "grammar.y"
     { (yyval.templateParameter) = MkTypeTemplateParameter(MkIdentifier((yyvsp[(2) - (4)].string)), (yyvsp[(4) - (4)].templateDatatype), null); ;}
     break;
 
   case 215:
 
 /* Line 1464 of yacc.c  */
-#line 1246 "grammar.y"
+#line 1176 "grammar.y"
     { (yyval.templateParameter) = MkTypeTemplateParameter(MkIdentifier((yyvsp[(2) - (6)].string)), (yyvsp[(4) - (6)].templateDatatype), (yyvsp[(6) - (6)].templateArgument)); ;}
     break;
 
   case 216:
 
 /* Line 1464 of yacc.c  */
-#line 1250 "grammar.y"
+#line 1180 "grammar.y"
     { (yyval.templateArgument) = MkTemplateIdentifierArgument((yyvsp[(1) - (1)].id)); ;}
     break;
 
   case 217:
 
 /* Line 1464 of yacc.c  */
-#line 1254 "grammar.y"
+#line 1184 "grammar.y"
     { (yyval.templateParameter) = MkIdentifierTemplateParameter((yyvsp[(1) - (1)].id), dataMember, null); ;}
     break;
 
   case 218:
 
 /* Line 1464 of yacc.c  */
-#line 1255 "grammar.y"
+#line 1185 "grammar.y"
     { (yyval.templateParameter) = MkIdentifierTemplateParameter((yyvsp[(1) - (3)].id), dataMember, (yyvsp[(3) - (3)].templateArgument)); ;}
     break;
 
   case 219:
 
 /* Line 1464 of yacc.c  */
-#line 1259 "grammar.y"
+#line 1189 "grammar.y"
     { (yyval.templateArgument) = MkTemplateExpressionArgument((yyvsp[(1) - (1)].exp)); ;}
     break;
 
   case 220:
 
 /* Line 1464 of yacc.c  */
-#line 1267 "grammar.y"
+#line 1197 "grammar.y"
     { (yyval.templateParameter) = MkExpressionTemplateParameter((yyvsp[(2) - (4)].id), MkTemplateDatatype((yyvsp[(1) - (4)].list), null), (yyvsp[(4) - (4)].templateArgument)); ;}
     break;
 
   case 221:
 
 /* Line 1464 of yacc.c  */
-#line 1268 "grammar.y"
+#line 1198 "grammar.y"
     { (yyval.templateParameter) = MkExpressionTemplateParameter((yyvsp[(3) - (5)].id), MkTemplateDatatype((yyvsp[(1) - (5)].list), (yyvsp[(2) - (5)].declarator)), (yyvsp[(5) - (5)].templateArgument)); ;}
     break;
 
   case 225:
 
 /* Line 1464 of yacc.c  */
-#line 1278 "grammar.y"
+#line 1208 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].templateParameter)); ;}
     break;
 
   case 226:
 
 /* Line 1464 of yacc.c  */
-#line 1279 "grammar.y"
+#line 1209 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].templateParameter)); ;}
     break;
 
   case 230:
 
 /* Line 1464 of yacc.c  */
-#line 1286 "grammar.y"
+#line 1216 "grammar.y"
     { (yyval.templateArgument) = (yyvsp[(3) - (3)].templateArgument); (yyval.templateArgument).name = (yyvsp[(1) - (3)].id); (yyval.templateArgument).loc = (yyloc); ;}
     break;
 
   case 231:
 
 /* Line 1464 of yacc.c  */
-#line 1287 "grammar.y"
+#line 1217 "grammar.y"
     { (yyval.templateArgument) = (yyvsp[(3) - (3)].templateArgument); (yyval.templateArgument).name = (yyvsp[(1) - (3)].id); (yyval.templateArgument).loc = (yyloc); ;}
     break;
 
   case 232:
 
 /* Line 1464 of yacc.c  */
-#line 1288 "grammar.y"
+#line 1218 "grammar.y"
     { (yyval.templateArgument) = (yyvsp[(3) - (3)].templateArgument); (yyval.templateArgument).name = (yyvsp[(1) - (3)].id); (yyval.templateArgument).loc = (yyloc); ;}
     break;
 
   case 233:
 
 /* Line 1464 of yacc.c  */
-#line 1328 "grammar.y"
+#line 1258 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].templateArgument)); ;}
     break;
 
   case 234:
 
 /* Line 1464 of yacc.c  */
-#line 1329 "grammar.y"
+#line 1259 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].templateArgument)); ;}
     break;
 
   case 235:
 
 /* Line 1464 of yacc.c  */
-#line 1334 "grammar.y"
+#line 1264 "grammar.y"
     {
       if(curContext != globalContext)
          PopContext(curContext);
@@ -15197,16 +15167,16 @@ yyreduce:
   case 236:
 
 /* Line 1464 of yacc.c  */
-#line 1341 "grammar.y"
-    { (void)(yyvsp[(1) - (2)].context); (yyval.symbol) = DeclClassAddNameSpace((yyvsp[(2) - (2)].id).string); FreeIdentifier((yyvsp[(2) - (2)].id)); (yyval.symbol).nameLoc = (yylsp[(2) - (2)]); memberAccessStack[++defaultMemberAccess] = privateAccess; ;}
+#line 1271 "grammar.y"
+    { (void)(yyvsp[(1) - (2)].context); (yyval.symbol) = DeclClassAddNameSpace((yyvsp[(2) - (2)].id)._class, (yyvsp[(2) - (2)].id).string); FreeIdentifier((yyvsp[(2) - (2)].id)); (yyval.symbol).nameLoc = (yylsp[(2) - (2)]); memberAccessStack[++defaultMemberAccess] = privateAccess; ;}
     break;
 
   case 237:
 
 /* Line 1464 of yacc.c  */
-#line 1343 "grammar.y"
+#line 1273 "grammar.y"
     {
-      (void)(yyvsp[(1) - (2)].context); (yyval.symbol) = DeclClass((yyvsp[(2) - (2)].specifier).name);
+      (void)(yyvsp[(1) - (2)].context); (yyval.symbol) = DeclClass((yyvsp[(2) - (2)].specifier).nsSpec, (yyvsp[(2) - (2)].specifier).name);
       (yyval.symbol).nameLoc = (yylsp[(2) - (2)]);
       FreeSpecifier((yyvsp[(2) - (2)].specifier));
       ++defaultMemberAccess;
@@ -15217,30 +15187,30 @@ yyreduce:
   case 238:
 
 /* Line 1464 of yacc.c  */
-#line 1350 "grammar.y"
-    { (void)(yyvsp[(2) - (3)].context); (yyval.symbol) = DeclClassAddNameSpace((yyvsp[(3) - (3)].id).string); FreeIdentifier((yyvsp[(1) - (3)].id)); FreeIdentifier((yyvsp[(3) - (3)].id)); (yyval.symbol).nameLoc = (yylsp[(3) - (3)]); (yyval.symbol).isRemote = true; memberAccessStack[++defaultMemberAccess] = privateAccess; ;}
+#line 1280 "grammar.y"
+    { (void)(yyvsp[(2) - (3)].context); (yyval.symbol) = DeclClassAddNameSpace((yyvsp[(3) - (3)].id)._class, (yyvsp[(3) - (3)].id).string); FreeIdentifier((yyvsp[(1) - (3)].id)); FreeIdentifier((yyvsp[(3) - (3)].id)); (yyval.symbol).nameLoc = (yylsp[(3) - (3)]); (yyval.symbol).isRemote = true; memberAccessStack[++defaultMemberAccess] = privateAccess; ;}
     break;
 
   case 239:
 
 /* Line 1464 of yacc.c  */
-#line 1351 "grammar.y"
-    { (void)(yyvsp[(2) - (3)].context); (yyval.symbol) = DeclClass((yyvsp[(3) - (3)].specifier).name); FreeIdentifier((yyvsp[(1) - (3)].id)); (yyval.symbol).nameLoc = (yylsp[(3) - (3)]); (yyval.symbol).isRemote = true; FreeSpecifier((yyvsp[(3) - (3)].specifier)); memberAccessStack[++defaultMemberAccess] = privateAccess; ;}
+#line 1281 "grammar.y"
+    { (void)(yyvsp[(2) - (3)].context); (yyval.symbol) = DeclClass((yyvsp[(3) - (3)].specifier).nsSpec, (yyvsp[(3) - (3)].specifier).name); FreeIdentifier((yyvsp[(1) - (3)].id)); (yyval.symbol).nameLoc = (yylsp[(3) - (3)]); (yyval.symbol).isRemote = true; FreeSpecifier((yyvsp[(3) - (3)].specifier)); memberAccessStack[++defaultMemberAccess] = privateAccess; ;}
     break;
 
   case 240:
 
 /* Line 1464 of yacc.c  */
-#line 1353 "grammar.y"
-    { (void)(yyvsp[(1) - (5)].context); (yyval.symbol) = DeclClassAddNameSpace((yyvsp[(2) - (5)].id).string); (yyval.symbol).templateParams = (yyvsp[(4) - (5)].list); FreeIdentifier((yyvsp[(2) - (5)].id)); (yyval.symbol).nameLoc = (yylsp[(2) - (5)]); memberAccessStack[++defaultMemberAccess] = privateAccess; ;}
+#line 1283 "grammar.y"
+    { (void)(yyvsp[(1) - (5)].context); (yyval.symbol) = DeclClassAddNameSpace((yyvsp[(2) - (5)].id)._class, (yyvsp[(2) - (5)].id).string); (yyval.symbol).templateParams = (yyvsp[(4) - (5)].list); FreeIdentifier((yyvsp[(2) - (5)].id)); (yyval.symbol).nameLoc = (yylsp[(2) - (5)]); memberAccessStack[++defaultMemberAccess] = privateAccess; ;}
     break;
 
   case 241:
 
 /* Line 1464 of yacc.c  */
-#line 1355 "grammar.y"
+#line 1285 "grammar.y"
     {
-      (void)(yyvsp[(1) - (5)].context); (yyval.symbol) = DeclClass((yyvsp[(2) - (5)].specifier).name);
+      (void)(yyvsp[(1) - (5)].context); (yyval.symbol) = DeclClass((yyvsp[(2) - (5)].specifier).nsSpec, (yyvsp[(2) - (5)].specifier).name);
       (yyval.symbol).templateParams = (yyvsp[(4) - (5)].list);
       (yyval.symbol).nameLoc = (yylsp[(2) - (5)]);
       FreeSpecifier((yyvsp[(2) - (5)].specifier));
@@ -15252,21 +15222,21 @@ yyreduce:
   case 242:
 
 /* Line 1464 of yacc.c  */
-#line 1363 "grammar.y"
-    { (void)(yyvsp[(2) - (6)].context); (yyval.symbol) = DeclClassAddNameSpace((yyvsp[(3) - (6)].id).string); (yyval.symbol).templateParams = (yyvsp[(5) - (6)].list); FreeIdentifier((yyvsp[(1) - (6)].id)); FreeIdentifier((yyvsp[(3) - (6)].id)); (yyval.symbol).nameLoc = (yylsp[(3) - (6)]); (yyval.symbol).isRemote = true; memberAccessStack[++defaultMemberAccess] = privateAccess; ;}
+#line 1293 "grammar.y"
+    { (void)(yyvsp[(2) - (6)].context); (yyval.symbol) = DeclClassAddNameSpace((yyvsp[(3) - (6)].id)._class, (yyvsp[(3) - (6)].id).string); (yyval.symbol).templateParams = (yyvsp[(5) - (6)].list); FreeIdentifier((yyvsp[(1) - (6)].id)); FreeIdentifier((yyvsp[(3) - (6)].id)); (yyval.symbol).nameLoc = (yylsp[(3) - (6)]); (yyval.symbol).isRemote = true; memberAccessStack[++defaultMemberAccess] = privateAccess; ;}
     break;
 
   case 243:
 
 /* Line 1464 of yacc.c  */
-#line 1364 "grammar.y"
-    { (void)(yyvsp[(2) - (6)].context); (yyval.symbol) = DeclClass((yyvsp[(3) - (6)].specifier).name); (yyval.symbol).templateParams = (yyvsp[(5) - (6)].list); FreeIdentifier((yyvsp[(1) - (6)].id)); (yyval.symbol).nameLoc = (yylsp[(3) - (6)]); (yyval.symbol).isRemote = true; FreeSpecifier((yyvsp[(3) - (6)].specifier)); memberAccessStack[++defaultMemberAccess] = privateAccess; ;}
+#line 1294 "grammar.y"
+    { (void)(yyvsp[(2) - (6)].context); (yyval.symbol) = DeclClass((yyvsp[(3) - (6)].specifier).nsSpec, (yyvsp[(3) - (6)].specifier).name); (yyval.symbol).templateParams = (yyvsp[(5) - (6)].list); FreeIdentifier((yyvsp[(1) - (6)].id)); (yyval.symbol).nameLoc = (yylsp[(3) - (6)]); (yyval.symbol).isRemote = true; FreeSpecifier((yyvsp[(3) - (6)].specifier)); memberAccessStack[++defaultMemberAccess] = privateAccess; ;}
     break;
 
   case 244:
 
 /* Line 1464 of yacc.c  */
-#line 1369 "grammar.y"
+#line 1299 "grammar.y"
     {
          (yyval._class).loc = (yyloc);
          (yyval._class) = (yyvsp[(1) - (2)]._class);
@@ -15276,7 +15246,7 @@ yyreduce:
   case 245:
 
 /* Line 1464 of yacc.c  */
-#line 1376 "grammar.y"
+#line 1306 "grammar.y"
     {
          (yyval._class) = (yyvsp[(1) - (2)]._class); (yyval._class).definitions = MkList(); (yyval._class).blockStart = (yylsp[(2) - (2)]);  (yyval._class).loc = (yyloc);
          POP_DEFAULT_ACCESS
@@ -15287,7 +15257,7 @@ yyreduce:
   case 246:
 
 /* Line 1464 of yacc.c  */
-#line 1383 "grammar.y"
+#line 1313 "grammar.y"
     {
          (yyval._class) = MkClass((yyvsp[(1) - (3)].symbol), null, MkList()); (yyval._class).blockStart = (yylsp[(2) - (3)]);  (yyval._class).loc = (yyloc);
          POP_DEFAULT_ACCESS
@@ -15298,7 +15268,7 @@ yyreduce:
   case 247:
 
 /* Line 1464 of yacc.c  */
-#line 1389 "grammar.y"
+#line 1319 "grammar.y"
     {
          (yyval._class) = (yyvsp[(1) - (3)]._class); (yyval._class).definitions = MkList(); (yyval._class).blockStart = (yylsp[(2) - (3)]);  (yyval._class).loc = (yyloc);
          POP_DEFAULT_ACCESS
@@ -15309,9 +15279,9 @@ yyreduce:
   case 248:
 
 /* Line 1464 of yacc.c  */
-#line 1396 "grammar.y"
+#line 1326 "grammar.y"
     {
-         (void)(yyvsp[(1) - (3)].context); (yyval._class) = MkClass(DeclClassAddNameSpace((yyvsp[(2) - (3)].id).string), null, null); FreeIdentifier((yyvsp[(2) - (3)].id));
+         (void)(yyvsp[(1) - (3)].context); (yyval._class) = MkClass(DeclClassAddNameSpace((yyvsp[(2) - (3)].id)._class, (yyvsp[(2) - (3)].id).string), null, null); FreeIdentifier((yyvsp[(2) - (3)].id));
          POP_DEFAULT_ACCESS
          PopContext(curContext);
       ;}
@@ -15320,9 +15290,9 @@ yyreduce:
   case 249:
 
 /* Line 1464 of yacc.c  */
-#line 1402 "grammar.y"
+#line 1332 "grammar.y"
     {
-         (void)(yyvsp[(1) - (3)].context); (yyval._class) = MkClass(DeclClass((yyvsp[(2) - (3)].specifier).name), null, null); FreeSpecifier((yyvsp[(2) - (3)].specifier));
+         (void)(yyvsp[(1) - (3)].context); (yyval._class) = MkClass(DeclClass((yyvsp[(2) - (3)].specifier).nsSpec, (yyvsp[(2) - (3)].specifier).name), null, null); FreeSpecifier((yyvsp[(2) - (3)].specifier));
          POP_DEFAULT_ACCESS
          PopContext(curContext);
       ;}
@@ -15331,7 +15301,7 @@ yyreduce:
   case 250:
 
 /* Line 1464 of yacc.c  */
-#line 1411 "grammar.y"
+#line 1341 "grammar.y"
     {
          (yyval._class) = MkClass((yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].list), null);
       ;}
@@ -15340,7 +15310,7 @@ yyreduce:
   case 251:
 
 /* Line 1464 of yacc.c  */
-#line 1418 "grammar.y"
+#line 1348 "grammar.y"
     {
          (yyval._class) = MkClass((yyvsp[(1) - (3)].symbol), null, (yyvsp[(3) - (3)].list)); (yyval._class).deleteWatchable = deleteWatchable; deleteWatchable = false; (yyval._class).blockStart = (yylsp[(2) - (3)]); (yyval._class).loc = (yyloc); (yyval._class).loc.end.charPos++; (yyval._class).loc.end.pos++;
          POP_DEFAULT_ACCESS
@@ -15351,7 +15321,7 @@ yyreduce:
   case 252:
 
 /* Line 1464 of yacc.c  */
-#line 1424 "grammar.y"
+#line 1354 "grammar.y"
     {
          (yyval._class) = (yyvsp[(1) - (3)]._class); (yyval._class).definitions = (yyvsp[(3) - (3)].list); (yyval._class).deleteWatchable = deleteWatchable; deleteWatchable = false; (yyval._class).blockStart = (yylsp[(2) - (3)]);  (yyval._class).loc = (yyloc); (yyval._class).loc.end.charPos++; (yyval._class).loc.end.pos++;
          POP_DEFAULT_ACCESS
@@ -15362,7 +15332,7 @@ yyreduce:
   case 253:
 
 /* Line 1464 of yacc.c  */
-#line 1430 "grammar.y"
+#line 1360 "grammar.y"
     {
          (yyval._class) = MkClass((yyvsp[(1) - (3)].symbol), null, (yyvsp[(3) - (3)].list)); (yyval._class).deleteWatchable = deleteWatchable; deleteWatchable = false; (yyval._class).blockStart = (yylsp[(2) - (3)]); (yyval._class).loc = (yyloc); (yyval._class).loc.end.charPos++; (yyval._class).loc.end.pos++;
          POP_DEFAULT_ACCESS
@@ -15373,7 +15343,7 @@ yyreduce:
   case 254:
 
 /* Line 1464 of yacc.c  */
-#line 1436 "grammar.y"
+#line 1366 "grammar.y"
     {
          (yyval._class) = (yyvsp[(1) - (3)]._class); (yyval._class).definitions = (yyvsp[(3) - (3)].list); (yyval._class).deleteWatchable = deleteWatchable; deleteWatchable = false; (yyval._class).blockStart = (yylsp[(2) - (3)]);  (yyval._class).loc = (yyloc); (yyval._class).loc.end.charPos++; (yyval._class).loc.end.pos++;
          POP_DEFAULT_ACCESS
@@ -15384,7 +15354,7 @@ yyreduce:
   case 255:
 
 /* Line 1464 of yacc.c  */
-#line 1442 "grammar.y"
+#line 1372 "grammar.y"
     {
          (yyval._class) = MkClass((yyvsp[(1) - (3)].symbol), null, MkList()); (yyval._class).deleteWatchable = deleteWatchable; deleteWatchable = false; (yyval._class).blockStart = (yylsp[(2) - (3)]);  (yyval._class).loc = (yyloc); (yyval._class).loc.end.charPos++; (yyval._class).loc.end.pos++;
          POP_DEFAULT_ACCESS
@@ -15395,7 +15365,7 @@ yyreduce:
   case 256:
 
 /* Line 1464 of yacc.c  */
-#line 1448 "grammar.y"
+#line 1378 "grammar.y"
     {
          (yyval._class) = (yyvsp[(1) - (3)]._class); (yyval._class).definitions = MkList(); (yyval._class).deleteWatchable = deleteWatchable; deleteWatchable = false; (yyval._class).blockStart = (yylsp[(2) - (3)]);  (yyval._class).loc = (yyloc); (yyval._class).loc.end.charPos++; (yyval._class).loc.end.pos++;
          POP_DEFAULT_ACCESS
@@ -15406,91 +15376,91 @@ yyreduce:
   case 257:
 
 /* Line 1464 of yacc.c  */
-#line 1459 "grammar.y"
+#line 1389 "grammar.y"
     { (yyval.id) = MkIdentifier(yytext); (yyval.id).loc = (yylsp[(1) - (1)]); ;}
     break;
 
   case 259:
 
 /* Line 1464 of yacc.c  */
-#line 1465 "grammar.y"
+#line 1395 "grammar.y"
     { (yyval.exp) = MkExpBrackets((yyvsp[(2) - (3)].list)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 260:
 
 /* Line 1464 of yacc.c  */
-#line 1469 "grammar.y"
+#line 1399 "grammar.y"
     { (yyval.exp) = MkExpString((yyvsp[(1) - (1)].string)); delete (yyvsp[(1) - (1)].string); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 261:
 
 /* Line 1464 of yacc.c  */
-#line 1470 "grammar.y"
+#line 1400 "grammar.y"
     { (yyval.exp) = MkExpIntlString((yyvsp[(2) - (2)].string), null); delete (yyvsp[(2) - (2)].string); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 262:
 
 /* Line 1464 of yacc.c  */
-#line 1471 "grammar.y"
+#line 1401 "grammar.y"
     { (yyval.exp) = MkExpIntlString((yyvsp[(4) - (4)].string), (yyvsp[(2) - (4)].string)); delete (yyvsp[(2) - (4)].string); delete (yyvsp[(4) - (4)].string); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 263:
 
 /* Line 1464 of yacc.c  */
-#line 1475 "grammar.y"
+#line 1405 "grammar.y"
     { (yyval.exp) = MkExpConstant(yytext); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 264:
 
 /* Line 1464 of yacc.c  */
-#line 1479 "grammar.y"
+#line 1409 "grammar.y"
     { (yyval.exp) = MkExpIdentifier((yyvsp[(1) - (1)].id)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 265:
 
 /* Line 1464 of yacc.c  */
-#line 1480 "grammar.y"
+#line 1410 "grammar.y"
     { (yyval.exp) = MkExpInstance((yyvsp[(1) - (1)].instance)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 266:
 
 /* Line 1464 of yacc.c  */
-#line 1481 "grammar.y"
+#line 1411 "grammar.y"
     { (yyval.exp) = MkExpExtensionCompound((yyvsp[(3) - (4)].stmt)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 267:
 
 /* Line 1464 of yacc.c  */
-#line 1482 "grammar.y"
+#line 1412 "grammar.y"
     { (yyval.exp) = MkExpExtensionExpression((yyvsp[(3) - (4)].list)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 268:
 
 /* Line 1464 of yacc.c  */
-#line 1483 "grammar.y"
+#line 1413 "grammar.y"
     { (yyval.exp) = MkExpExtensionInitializer((yyvsp[(3) - (5)].typeName), (yyvsp[(5) - (5)].initializer)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 269:
 
 /* Line 1464 of yacc.c  */
-#line 1484 "grammar.y"
+#line 1414 "grammar.y"
     { (yyval.exp) = MkExpExtensionInitializer((yyvsp[(3) - (8)].typeName), MkInitializerAssignment(MkExpExtensionInitializer((yyvsp[(6) - (8)].typeName), (yyvsp[(8) - (8)].initializer)))); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 270:
 
 /* Line 1464 of yacc.c  */
-#line 1486 "grammar.y"
+#line 1416 "grammar.y"
     {
       char * constant = (yyvsp[(1) - (2)].exp).constant;
       int len = strlen(constant);
@@ -15508,630 +15478,630 @@ yyreduce:
   case 271:
 
 /* Line 1464 of yacc.c  */
-#line 1498 "grammar.y"
+#line 1428 "grammar.y"
     { (yyval.exp) = (yyvsp[(1) - (1)].exp); ;}
     break;
 
   case 273:
 
 /* Line 1464 of yacc.c  */
-#line 1500 "grammar.y"
+#line 1430 "grammar.y"
     { (yyval.exp) = MkExpWideString(yytext); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 274:
 
 /* Line 1464 of yacc.c  */
-#line 1501 "grammar.y"
+#line 1431 "grammar.y"
     { Expression exp = MkExpDummy(); exp.loc.start = (yylsp[(1) - (2)]).end; exp.loc.end = (yylsp[(2) - (2)]).start; (yyval.exp) = MkExpBrackets(MkListOne(exp)); (yyval.exp).loc = (yyloc); yyerror(); ;}
     break;
 
   case 275:
 
 /* Line 1464 of yacc.c  */
-#line 1502 "grammar.y"
+#line 1432 "grammar.y"
     { (yyval.exp) = MkExpNew(MkTypeName((yyvsp[(2) - (6)].list),(yyvsp[(3) - (6)].declarator)), (yyvsp[(5) - (6)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 276:
 
 /* Line 1464 of yacc.c  */
-#line 1503 "grammar.y"
+#line 1433 "grammar.y"
     { (yyval.exp) = MkExpNew(MkTypeName((yyvsp[(2) - (6)].list),(yyvsp[(3) - (6)].declarator)), (yyvsp[(5) - (6)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 277:
 
 /* Line 1464 of yacc.c  */
-#line 1504 "grammar.y"
+#line 1434 "grammar.y"
     { (yyval.exp) = MkExpNew(MkTypeName((yyvsp[(2) - (5)].list),null), (yyvsp[(4) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 278:
 
 /* Line 1464 of yacc.c  */
-#line 1505 "grammar.y"
+#line 1435 "grammar.y"
     { (yyval.exp) = MkExpNew(MkTypeName((yyvsp[(2) - (5)].list),null), (yyvsp[(4) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 279:
 
 /* Line 1464 of yacc.c  */
-#line 1506 "grammar.y"
+#line 1436 "grammar.y"
     { (yyval.exp) = MkExpNew0(MkTypeName((yyvsp[(2) - (6)].list),(yyvsp[(3) - (6)].declarator)), (yyvsp[(5) - (6)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 280:
 
 /* Line 1464 of yacc.c  */
-#line 1507 "grammar.y"
+#line 1437 "grammar.y"
     { (yyval.exp) = MkExpNew0(MkTypeName((yyvsp[(2) - (6)].list),(yyvsp[(3) - (6)].declarator)), (yyvsp[(5) - (6)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 281:
 
 /* Line 1464 of yacc.c  */
-#line 1508 "grammar.y"
+#line 1438 "grammar.y"
     { (yyval.exp) = MkExpNew0(MkTypeName((yyvsp[(2) - (5)].list),null), (yyvsp[(4) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 282:
 
 /* Line 1464 of yacc.c  */
-#line 1509 "grammar.y"
+#line 1439 "grammar.y"
     { (yyval.exp) = MkExpNew0(MkTypeName((yyvsp[(2) - (5)].list),null), (yyvsp[(4) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 283:
 
 /* Line 1464 of yacc.c  */
-#line 1510 "grammar.y"
+#line 1440 "grammar.y"
     { (yyval.exp) = MkExpRenew((yyvsp[(2) - (7)].exp), MkTypeName((yyvsp[(3) - (7)].list),(yyvsp[(4) - (7)].declarator)), (yyvsp[(6) - (7)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 284:
 
 /* Line 1464 of yacc.c  */
-#line 1511 "grammar.y"
+#line 1441 "grammar.y"
     { (yyval.exp) = MkExpRenew((yyvsp[(2) - (7)].exp), MkTypeName((yyvsp[(3) - (7)].list),(yyvsp[(4) - (7)].declarator)), (yyvsp[(6) - (7)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 285:
 
 /* Line 1464 of yacc.c  */
-#line 1512 "grammar.y"
+#line 1442 "grammar.y"
     { (yyval.exp) = MkExpRenew((yyvsp[(2) - (6)].exp), MkTypeName((yyvsp[(3) - (6)].list),null), (yyvsp[(5) - (6)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 286:
 
 /* Line 1464 of yacc.c  */
-#line 1513 "grammar.y"
+#line 1443 "grammar.y"
     { (yyval.exp) = MkExpRenew((yyvsp[(2) - (6)].exp), MkTypeName((yyvsp[(3) - (6)].list),null), (yyvsp[(5) - (6)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 287:
 
 /* Line 1464 of yacc.c  */
-#line 1514 "grammar.y"
+#line 1444 "grammar.y"
     { (yyval.exp) = MkExpRenew0((yyvsp[(2) - (7)].exp), MkTypeName((yyvsp[(3) - (7)].list),(yyvsp[(4) - (7)].declarator)), (yyvsp[(6) - (7)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 288:
 
 /* Line 1464 of yacc.c  */
-#line 1515 "grammar.y"
+#line 1445 "grammar.y"
     { (yyval.exp) = MkExpRenew0((yyvsp[(2) - (7)].exp), MkTypeName((yyvsp[(3) - (7)].list),(yyvsp[(4) - (7)].declarator)), (yyvsp[(6) - (7)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 289:
 
 /* Line 1464 of yacc.c  */
-#line 1516 "grammar.y"
+#line 1446 "grammar.y"
     { (yyval.exp) = MkExpRenew0((yyvsp[(2) - (6)].exp), MkTypeName((yyvsp[(3) - (6)].list),null), (yyvsp[(5) - (6)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 290:
 
 /* Line 1464 of yacc.c  */
-#line 1517 "grammar.y"
+#line 1447 "grammar.y"
     { (yyval.exp) = MkExpRenew0((yyvsp[(2) - (6)].exp), MkTypeName((yyvsp[(3) - (6)].list),null), (yyvsp[(5) - (6)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 291:
 
 /* Line 1464 of yacc.c  */
-#line 1518 "grammar.y"
+#line 1448 "grammar.y"
     { (yyval.exp) = MkExpClass((yyvsp[(3) - (4)].list), null); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 292:
 
 /* Line 1464 of yacc.c  */
-#line 1519 "grammar.y"
+#line 1449 "grammar.y"
     { (yyval.exp) = MkExpClass((yyvsp[(3) - (5)].list), (yyvsp[(4) - (5)].declarator)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 293:
 
 /* Line 1464 of yacc.c  */
-#line 1520 "grammar.y"
+#line 1450 "grammar.y"
     { (yyval.exp) = MkExpClass(MkListOne(MkSpecifierName((yyvsp[(3) - (4)].id).string)), null); FreeIdentifier((yyvsp[(3) - (4)].id)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 294:
 
 /* Line 1464 of yacc.c  */
-#line 1521 "grammar.y"
+#line 1451 "grammar.y"
     { (yyval.exp) = MkExpVaArg((yyvsp[(3) - (6)].exp), (yyvsp[(5) - (6)].typeName)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 295:
 
 /* Line 1464 of yacc.c  */
-#line 1523 "grammar.y"
+#line 1453 "grammar.y"
     { (yyval.exp) = MkExpClassData((yyvsp[(3) - (4)].id)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 300:
 
 /* Line 1464 of yacc.c  */
-#line 1529 "grammar.y"
+#line 1459 "grammar.y"
     { (yyval.exp) = MkExpArray((yyvsp[(2) - (3)].list)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 301:
 
 /* Line 1464 of yacc.c  */
-#line 1530 "grammar.y"
+#line 1460 "grammar.y"
     { (yyval.exp) = MkExpArray(null); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 302:
 
 /* Line 1464 of yacc.c  */
-#line 1534 "grammar.y"
+#line 1464 "grammar.y"
     { (yyval.exp) = MkExpInstance((yyvsp[(1) - (1)].instance)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 303:
 
 /* Line 1464 of yacc.c  */
-#line 1538 "grammar.y"
+#line 1468 "grammar.y"
     { (yyval.exp) = MkExpInstance((yyvsp[(1) - (2)].instance)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 304:
 
 /* Line 1464 of yacc.c  */
-#line 1542 "grammar.y"
+#line 1472 "grammar.y"
     { yyerror(); (yyval.exp) = MkExpBrackets((yyvsp[(2) - (2)].list)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 305:
 
 /* Line 1464 of yacc.c  */
-#line 1543 "grammar.y"
+#line 1473 "grammar.y"
     { (yyval.exp) = MkExpBrackets((yyvsp[(2) - (2)].list)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 307:
 
 /* Line 1464 of yacc.c  */
-#line 1549 "grammar.y"
+#line 1479 "grammar.y"
     { (yyval.exp) = MkExpIndex((yyvsp[(1) - (4)].exp), (yyvsp[(3) - (4)].list)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 308:
 
 /* Line 1464 of yacc.c  */
-#line 1550 "grammar.y"
+#line 1480 "grammar.y"
     { (yyval.exp) = MkExpIndex((yyvsp[(1) - (4)].exp), (yyvsp[(3) - (4)].list)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 309:
 
 /* Line 1464 of yacc.c  */
-#line 1551 "grammar.y"
+#line 1481 "grammar.y"
     { (yyval.exp) = MkExpCall((yyvsp[(1) - (3)].exp), MkList()); (yyval.exp).call.argLoc.start = (yylsp[(2) - (3)]).start; (yyval.exp).call.argLoc.end = (yylsp[(3) - (3)]).end; (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 310:
 
 /* Line 1464 of yacc.c  */
-#line 1552 "grammar.y"
+#line 1482 "grammar.y"
     { (yyval.exp) = MkExpCall((yyvsp[(1) - (4)].exp), (yyvsp[(3) - (4)].list)); (yyval.exp).call.argLoc.start = (yylsp[(2) - (4)]).start; (yyval.exp).call.argLoc.end = (yylsp[(4) - (4)]).end; (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 311:
 
 /* Line 1464 of yacc.c  */
-#line 1553 "grammar.y"
+#line 1483 "grammar.y"
     { (yyval.exp) = MkExpCall((yyvsp[(1) - (4)].exp), (yyvsp[(3) - (4)].list)); (yyval.exp).call.argLoc.start = (yylsp[(2) - (4)]).start; (yyval.exp).call.argLoc.end = (yylsp[(4) - (4)]).end; (yyval.exp).loc = (yyloc); if((yyvsp[(3) - (4)].list)->last) ((Expression)(yyvsp[(3) - (4)].list)->last).loc.end = (yylsp[(4) - (4)]).start; ;}
     break;
 
   case 312:
 
 /* Line 1464 of yacc.c  */
-#line 1554 "grammar.y"
+#line 1484 "grammar.y"
     { (yyval.exp) = MkExpMember((yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].id)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 313:
 
 /* Line 1464 of yacc.c  */
-#line 1555 "grammar.y"
+#line 1485 "grammar.y"
     { (yyval.exp) = MkExpPointer((yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].id)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 314:
 
 /* Line 1464 of yacc.c  */
-#line 1556 "grammar.y"
+#line 1486 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (2)].exp), INC_OP, null); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 315:
 
 /* Line 1464 of yacc.c  */
-#line 1557 "grammar.y"
+#line 1487 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (2)].exp), DEC_OP, null); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 316:
 
 /* Line 1464 of yacc.c  */
-#line 1559 "grammar.y"
+#line 1489 "grammar.y"
     { (yyval.exp) = MkExpIndex((yyvsp[(1) - (4)].exp), (yyvsp[(3) - (4)].list)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 317:
 
 /* Line 1464 of yacc.c  */
-#line 1560 "grammar.y"
+#line 1490 "grammar.y"
     { (yyval.exp) = MkExpIndex((yyvsp[(1) - (4)].exp), (yyvsp[(3) - (4)].list)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 318:
 
 /* Line 1464 of yacc.c  */
-#line 1561 "grammar.y"
+#line 1491 "grammar.y"
     { (yyval.exp) = MkExpCall((yyvsp[(1) - (3)].exp), MkList()); (yyval.exp).call.argLoc.start = (yylsp[(2) - (3)]).start; (yyval.exp).call.argLoc.end = (yylsp[(3) - (3)]).end; (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 319:
 
 /* Line 1464 of yacc.c  */
-#line 1562 "grammar.y"
+#line 1492 "grammar.y"
     { (yyval.exp) = MkExpCall((yyvsp[(1) - (4)].exp), (yyvsp[(3) - (4)].list)); (yyval.exp).call.argLoc.start = (yylsp[(2) - (4)]).start; (yyval.exp).call.argLoc.end = (yylsp[(4) - (4)]).end;(yyval.exp).loc = (yyloc); ;}
     break;
 
   case 320:
 
 /* Line 1464 of yacc.c  */
-#line 1563 "grammar.y"
+#line 1493 "grammar.y"
     { (yyval.exp) = MkExpMember((yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].id)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 321:
 
 /* Line 1464 of yacc.c  */
-#line 1564 "grammar.y"
+#line 1494 "grammar.y"
     { (yyval.exp) = MkExpPointer((yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].id)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 322:
 
 /* Line 1464 of yacc.c  */
-#line 1565 "grammar.y"
+#line 1495 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (2)].exp), INC_OP, null); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 323:
 
 /* Line 1464 of yacc.c  */
-#line 1566 "grammar.y"
+#line 1496 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (2)].exp), DEC_OP, null); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 324:
 
 /* Line 1464 of yacc.c  */
-#line 1593 "grammar.y"
+#line 1523 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].exp)); ;}
     break;
 
   case 325:
 
 /* Line 1464 of yacc.c  */
-#line 1594 "grammar.y"
+#line 1524 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].exp)); ;}
     break;
 
   case 326:
 
 /* Line 1464 of yacc.c  */
-#line 1595 "grammar.y"
+#line 1525 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].exp));  ;}
     break;
 
   case 327:
 
 /* Line 1464 of yacc.c  */
-#line 1596 "grammar.y"
+#line 1526 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].exp));  ;}
     break;
 
   case 328:
 
 /* Line 1464 of yacc.c  */
-#line 1600 "grammar.y"
+#line 1530 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].exp)); ;}
     break;
 
   case 329:
 
 /* Line 1464 of yacc.c  */
-#line 1601 "grammar.y"
+#line 1531 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].exp)); ;}
     break;
 
   case 330:
 
 /* Line 1464 of yacc.c  */
-#line 1602 "grammar.y"
+#line 1532 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].exp));  ;}
     break;
 
   case 331:
 
 /* Line 1464 of yacc.c  */
-#line 1603 "grammar.y"
+#line 1533 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].exp));  ;}
     break;
 
   case 332:
 
 /* Line 1464 of yacc.c  */
-#line 1604 "grammar.y"
+#line 1534 "grammar.y"
     { Expression exp = MkExpDummy(); yyerror(); exp.loc.start = (yylsp[(2) - (2)]).end; exp.loc.end = (yylsp[(2) - (2)]).end; (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), exp); ;}
     break;
 
   case 333:
 
 /* Line 1464 of yacc.c  */
-#line 1608 "grammar.y"
+#line 1538 "grammar.y"
     { (yyval.exp) = MkExpOp(null, INC_OP, (yyvsp[(2) - (2)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 334:
 
 /* Line 1464 of yacc.c  */
-#line 1609 "grammar.y"
+#line 1539 "grammar.y"
     { (yyval.exp) = MkExpOp(null, DEC_OP, (yyvsp[(2) - (2)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 335:
 
 /* Line 1464 of yacc.c  */
-#line 1610 "grammar.y"
+#line 1540 "grammar.y"
     { (yyval.exp) = MkExpOp(null, (yyvsp[(1) - (2)].i), (yyvsp[(2) - (2)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 336:
 
 /* Line 1464 of yacc.c  */
-#line 1611 "grammar.y"
+#line 1541 "grammar.y"
     { (yyval.exp) = MkExpOp(null, (yyvsp[(1) - (2)].i), (yyvsp[(2) - (2)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 337:
 
 /* Line 1464 of yacc.c  */
-#line 1613 "grammar.y"
+#line 1543 "grammar.y"
     { (yyval.exp) = MkExpOp(null, SIZEOF, (yyvsp[(2) - (2)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 338:
 
 /* Line 1464 of yacc.c  */
-#line 1614 "grammar.y"
+#line 1544 "grammar.y"
     { (yyval.exp) = MkExpTypeSize((yyvsp[(3) - (4)].typeName)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 339:
 
 /* Line 1464 of yacc.c  */
-#line 1615 "grammar.y"
+#line 1545 "grammar.y"
     { (yyval.exp) = MkExpClassSize((yyvsp[(4) - (5)].specifier)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 340:
 
 /* Line 1464 of yacc.c  */
-#line 1616 "grammar.y"
+#line 1546 "grammar.y"
     { (yyval.exp) = MkExpClassSize((yyvsp[(4) - (5)].specifier)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 341:
 
 /* Line 1464 of yacc.c  */
-#line 1619 "grammar.y"
+#line 1549 "grammar.y"
     { (yyval.exp) = MkExpOp(null, ALIGNOF, (yyvsp[(2) - (2)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 342:
 
 /* Line 1464 of yacc.c  */
-#line 1620 "grammar.y"
+#line 1550 "grammar.y"
     { (yyval.exp) = MkExpTypeAlign((yyvsp[(3) - (4)].typeName)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 345:
 
 /* Line 1464 of yacc.c  */
-#line 1634 "grammar.y"
+#line 1564 "grammar.y"
     { (yyval.i) = '&'; ;}
     break;
 
   case 346:
 
 /* Line 1464 of yacc.c  */
-#line 1635 "grammar.y"
+#line 1565 "grammar.y"
     { (yyval.i) = '*'; ;}
     break;
 
   case 347:
 
 /* Line 1464 of yacc.c  */
-#line 1636 "grammar.y"
+#line 1566 "grammar.y"
     { (yyval.i) = '+'; ;}
     break;
 
   case 348:
 
 /* Line 1464 of yacc.c  */
-#line 1637 "grammar.y"
+#line 1567 "grammar.y"
     { (yyval.i) = '-'; ;}
     break;
 
   case 349:
 
 /* Line 1464 of yacc.c  */
-#line 1638 "grammar.y"
+#line 1568 "grammar.y"
     { (yyval.i) = '~'; ;}
     break;
 
   case 350:
 
 /* Line 1464 of yacc.c  */
-#line 1639 "grammar.y"
+#line 1569 "grammar.y"
     { (yyval.i) = '!'; ;}
     break;
 
   case 351:
 
 /* Line 1464 of yacc.c  */
-#line 1640 "grammar.y"
+#line 1570 "grammar.y"
     { (yyval.i) = DELETE; ;}
     break;
 
   case 352:
 
 /* Line 1464 of yacc.c  */
-#line 1641 "grammar.y"
+#line 1571 "grammar.y"
     { (yyval.i) = _INCREF; ;}
     break;
 
   case 354:
 
 /* Line 1464 of yacc.c  */
-#line 1646 "grammar.y"
+#line 1576 "grammar.y"
     { (yyval.exp) = MkExpCast((yyvsp[(2) - (4)].typeName), (yyvsp[(4) - (4)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 356:
 
 /* Line 1464 of yacc.c  */
-#line 1651 "grammar.y"
+#line 1581 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '*', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 357:
 
 /* Line 1464 of yacc.c  */
-#line 1652 "grammar.y"
+#line 1582 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '/', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 358:
 
 /* Line 1464 of yacc.c  */
-#line 1653 "grammar.y"
+#line 1583 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '%', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 359:
 
 /* Line 1464 of yacc.c  */
-#line 1654 "grammar.y"
+#line 1584 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '*', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 360:
 
 /* Line 1464 of yacc.c  */
-#line 1655 "grammar.y"
+#line 1585 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '/', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 361:
 
 /* Line 1464 of yacc.c  */
-#line 1656 "grammar.y"
+#line 1586 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '%', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 363:
 
 /* Line 1464 of yacc.c  */
-#line 1661 "grammar.y"
+#line 1591 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '+', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 364:
 
 /* Line 1464 of yacc.c  */
-#line 1662 "grammar.y"
+#line 1592 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '-', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 365:
 
 /* Line 1464 of yacc.c  */
-#line 1663 "grammar.y"
+#line 1593 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '+', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 366:
 
 /* Line 1464 of yacc.c  */
-#line 1664 "grammar.y"
+#line 1594 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '-', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 368:
 
 /* Line 1464 of yacc.c  */
-#line 1669 "grammar.y"
+#line 1599 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), LEFT_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 369:
 
 /* Line 1464 of yacc.c  */
-#line 1670 "grammar.y"
+#line 1600 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), RIGHT_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 370:
 
 /* Line 1464 of yacc.c  */
-#line 1671 "grammar.y"
+#line 1601 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), LEFT_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 371:
 
 /* Line 1464 of yacc.c  */
-#line 1672 "grammar.y"
+#line 1602 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), RIGHT_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 372:
 
 /* Line 1464 of yacc.c  */
-#line 1677 "grammar.y"
+#line 1607 "grammar.y"
     {
       (yyval.exp) = (yyvsp[(1) - (2)].exp);
       skipErrors = true;
@@ -16141,768 +16111,760 @@ yyreduce:
   case 374:
 
 /* Line 1464 of yacc.c  */
-#line 1685 "grammar.y"
+#line 1615 "grammar.y"
     { skipErrors = false; (yyval.exp) = MkExpOp((yyvsp[(1) - (2)].exp), '<', (yyvsp[(2) - (2)].exp)/*$3*/); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 375:
 
 /* Line 1464 of yacc.c  */
-#line 1686 "grammar.y"
+#line 1616 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '>', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 376:
 
 /* Line 1464 of yacc.c  */
-#line 1687 "grammar.y"
+#line 1617 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), LE_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 377:
 
 /* Line 1464 of yacc.c  */
-#line 1688 "grammar.y"
+#line 1618 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), GE_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 378:
 
 /* Line 1464 of yacc.c  */
-#line 1689 "grammar.y"
+#line 1619 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '<', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 379:
 
 /* Line 1464 of yacc.c  */
-#line 1690 "grammar.y"
+#line 1620 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '>', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 380:
 
 /* Line 1464 of yacc.c  */
-#line 1691 "grammar.y"
+#line 1621 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), LE_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 381:
 
 /* Line 1464 of yacc.c  */
-#line 1692 "grammar.y"
+#line 1622 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), GE_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 383:
 
 /* Line 1464 of yacc.c  */
-#line 1697 "grammar.y"
+#line 1627 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), EQ_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 384:
 
 /* Line 1464 of yacc.c  */
-#line 1698 "grammar.y"
+#line 1628 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), NE_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 385:
 
 /* Line 1464 of yacc.c  */
-#line 1699 "grammar.y"
+#line 1629 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), EQ_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 386:
 
 /* Line 1464 of yacc.c  */
-#line 1700 "grammar.y"
+#line 1630 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), NE_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 387:
 
 /* Line 1464 of yacc.c  */
-#line 1702 "grammar.y"
+#line 1632 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), EQ_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 388:
 
 /* Line 1464 of yacc.c  */
-#line 1703 "grammar.y"
+#line 1633 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), NE_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 389:
 
 /* Line 1464 of yacc.c  */
-#line 1704 "grammar.y"
+#line 1634 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), EQ_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 390:
 
 /* Line 1464 of yacc.c  */
-#line 1705 "grammar.y"
+#line 1635 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), NE_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 392:
 
 /* Line 1464 of yacc.c  */
-#line 1710 "grammar.y"
+#line 1640 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '&', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 393:
 
 /* Line 1464 of yacc.c  */
-#line 1711 "grammar.y"
+#line 1641 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '&', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 394:
 
 /* Line 1464 of yacc.c  */
-#line 1713 "grammar.y"
+#line 1643 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '&', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 395:
 
 /* Line 1464 of yacc.c  */
-#line 1714 "grammar.y"
+#line 1644 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '&', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 397:
 
 /* Line 1464 of yacc.c  */
-#line 1719 "grammar.y"
+#line 1649 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '^', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 398:
 
 /* Line 1464 of yacc.c  */
-#line 1720 "grammar.y"
+#line 1650 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '^', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 399:
 
 /* Line 1464 of yacc.c  */
-#line 1722 "grammar.y"
+#line 1652 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '^', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 400:
 
 /* Line 1464 of yacc.c  */
-#line 1723 "grammar.y"
+#line 1653 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '^', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 402:
 
 /* Line 1464 of yacc.c  */
-#line 1728 "grammar.y"
+#line 1658 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '|', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 403:
 
 /* Line 1464 of yacc.c  */
-#line 1729 "grammar.y"
+#line 1659 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '|', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 404:
 
 /* Line 1464 of yacc.c  */
-#line 1731 "grammar.y"
+#line 1661 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '|', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 405:
 
 /* Line 1464 of yacc.c  */
-#line 1732 "grammar.y"
+#line 1662 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '|', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 407:
 
 /* Line 1464 of yacc.c  */
-#line 1737 "grammar.y"
+#line 1667 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), AND_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 408:
 
 /* Line 1464 of yacc.c  */
-#line 1738 "grammar.y"
+#line 1668 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), AND_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 410:
 
 /* Line 1464 of yacc.c  */
-#line 1743 "grammar.y"
+#line 1673 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), OR_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 411:
 
 /* Line 1464 of yacc.c  */
-#line 1744 "grammar.y"
+#line 1674 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), OR_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 413:
 
 /* Line 1464 of yacc.c  */
-#line 1749 "grammar.y"
+#line 1679 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 414:
 
 /* Line 1464 of yacc.c  */
-#line 1750 "grammar.y"
+#line 1680 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 415:
 
 /* Line 1464 of yacc.c  */
-#line 1751 "grammar.y"
+#line 1681 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 416:
 
 /* Line 1464 of yacc.c  */
-#line 1752 "grammar.y"
+#line 1682 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 417:
 
 /* Line 1464 of yacc.c  */
-#line 1754 "grammar.y"
+#line 1684 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 418:
 
 /* Line 1464 of yacc.c  */
-#line 1755 "grammar.y"
+#line 1685 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 419:
 
 /* Line 1464 of yacc.c  */
-#line 1756 "grammar.y"
+#line 1686 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 420:
 
 /* Line 1464 of yacc.c  */
-#line 1757 "grammar.y"
+#line 1687 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 421:
 
 /* Line 1464 of yacc.c  */
-#line 1759 "grammar.y"
+#line 1689 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 422:
 
 /* Line 1464 of yacc.c  */
-#line 1760 "grammar.y"
+#line 1690 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 423:
 
 /* Line 1464 of yacc.c  */
-#line 1761 "grammar.y"
+#line 1691 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 424:
 
 /* Line 1464 of yacc.c  */
-#line 1762 "grammar.y"
+#line 1692 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 425:
 
 /* Line 1464 of yacc.c  */
-#line 1764 "grammar.y"
+#line 1694 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 426:
 
 /* Line 1464 of yacc.c  */
-#line 1765 "grammar.y"
+#line 1695 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 427:
 
 /* Line 1464 of yacc.c  */
-#line 1766 "grammar.y"
+#line 1696 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 428:
 
 /* Line 1464 of yacc.c  */
-#line 1767 "grammar.y"
+#line 1697 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 430:
 
 /* Line 1464 of yacc.c  */
-#line 1772 "grammar.y"
+#line 1702 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), (yyvsp[(2) - (3)].i), (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 431:
 
 /* Line 1464 of yacc.c  */
-#line 1773 "grammar.y"
+#line 1703 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), (yyvsp[(2) - (3)].i), (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 432:
 
 /* Line 1464 of yacc.c  */
-#line 1774 "grammar.y"
+#line 1704 "grammar.y"
     { Compiler_Error($"l-value expected\n"); (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), (yyvsp[(2) - (3)].i), (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 433:
 
 /* Line 1464 of yacc.c  */
-#line 1775 "grammar.y"
+#line 1705 "grammar.y"
     { Compiler_Error($"l-value expected\n"); (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), (yyvsp[(2) - (3)].i), (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 434:
 
 /* Line 1464 of yacc.c  */
-#line 1777 "grammar.y"
+#line 1707 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), (yyvsp[(2) - (3)].i), (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 435:
 
 /* Line 1464 of yacc.c  */
-#line 1778 "grammar.y"
+#line 1708 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), (yyvsp[(2) - (3)].i), (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 436:
 
 /* Line 1464 of yacc.c  */
-#line 1779 "grammar.y"
+#line 1709 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), (yyvsp[(2) - (3)].i), (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 437:
 
 /* Line 1464 of yacc.c  */
-#line 1780 "grammar.y"
+#line 1710 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), (yyvsp[(2) - (3)].i), (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 438:
 
 /* Line 1464 of yacc.c  */
-#line 1784 "grammar.y"
+#line 1714 "grammar.y"
     { (yyval.i) = '='; ;}
     break;
 
   case 439:
 
 /* Line 1464 of yacc.c  */
-#line 1785 "grammar.y"
+#line 1715 "grammar.y"
     { (yyval.i) = MUL_ASSIGN; ;}
     break;
 
   case 440:
 
 /* Line 1464 of yacc.c  */
-#line 1786 "grammar.y"
+#line 1716 "grammar.y"
     { (yyval.i) = DIV_ASSIGN; ;}
     break;
 
   case 441:
 
 /* Line 1464 of yacc.c  */
-#line 1787 "grammar.y"
+#line 1717 "grammar.y"
     { (yyval.i) = MOD_ASSIGN; ;}
     break;
 
   case 442:
 
 /* Line 1464 of yacc.c  */
-#line 1788 "grammar.y"
+#line 1718 "grammar.y"
     { (yyval.i) = ADD_ASSIGN; ;}
     break;
 
   case 443:
 
 /* Line 1464 of yacc.c  */
-#line 1789 "grammar.y"
+#line 1719 "grammar.y"
     { (yyval.i) = SUB_ASSIGN; ;}
     break;
 
   case 444:
 
 /* Line 1464 of yacc.c  */
-#line 1790 "grammar.y"
+#line 1720 "grammar.y"
     { (yyval.i) = LEFT_ASSIGN; ;}
     break;
 
   case 445:
 
 /* Line 1464 of yacc.c  */
-#line 1791 "grammar.y"
+#line 1721 "grammar.y"
     { (yyval.i) = RIGHT_ASSIGN; ;}
     break;
 
   case 446:
 
 /* Line 1464 of yacc.c  */
-#line 1792 "grammar.y"
+#line 1722 "grammar.y"
     { (yyval.i) = AND_ASSIGN; ;}
     break;
 
   case 447:
 
 /* Line 1464 of yacc.c  */
-#line 1793 "grammar.y"
+#line 1723 "grammar.y"
     { (yyval.i) = XOR_ASSIGN; ;}
     break;
 
   case 448:
 
 /* Line 1464 of yacc.c  */
-#line 1794 "grammar.y"
+#line 1724 "grammar.y"
     { (yyval.i) = OR_ASSIGN; ;}
     break;
 
   case 449:
 
 /* Line 1464 of yacc.c  */
-#line 1798 "grammar.y"
+#line 1728 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].exp)); ;}
     break;
 
   case 450:
 
 /* Line 1464 of yacc.c  */
-#line 1799 "grammar.y"
+#line 1729 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].exp)); ;}
     break;
 
   case 451:
 
 /* Line 1464 of yacc.c  */
-#line 1800 "grammar.y"
+#line 1730 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].exp)); ;}
     break;
 
   case 453:
 
 /* Line 1464 of yacc.c  */
-#line 1805 "grammar.y"
+#line 1735 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].exp)); ;}
     break;
 
   case 454:
 
 /* Line 1464 of yacc.c  */
-#line 1806 "grammar.y"
+#line 1736 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].exp)); ;}
     break;
 
   case 455:
 
 /* Line 1464 of yacc.c  */
-#line 1807 "grammar.y"
+#line 1737 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].exp)); ;}
     break;
 
   case 457:
 
 /* Line 1464 of yacc.c  */
-#line 1812 "grammar.y"
+#line 1742 "grammar.y"
     { (yyval.exp) = MkExpDummy(); (yyval.exp).loc = (yyloc); /*printf("Sorry, didn't mean that syntax error\n");*/ ;}
     break;
 
   case 459:
 
 /* Line 1464 of yacc.c  */
-#line 1814 "grammar.y"
+#line 1744 "grammar.y"
     { (yyval.exp) = MkExpInstance((yyvsp[(1) - (2)].instance)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 460:
 
 /* Line 1464 of yacc.c  */
-#line 1816 "grammar.y"
+#line 1746 "grammar.y"
     { (yyval.exp) = MkExpPointer((yyvsp[(1) - (3)].exp), null); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 461:
 
 /* Line 1464 of yacc.c  */
-#line 1817 "grammar.y"
+#line 1747 "grammar.y"
     { (yyval.exp) = MkExpPointer((yyvsp[(1) - (3)].exp), null); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 462:
 
 /* Line 1464 of yacc.c  */
-#line 1819 "grammar.y"
+#line 1749 "grammar.y"
     { yyerror(); (yyval.exp) = MkExpCall((yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].list)); (yyval.exp).call.argLoc.start = (yylsp[(2) - (3)]).start; (yyval.exp).call.argLoc.end = (yylsp[(3) - (3)]).end; (yyval.exp).loc = (yyloc); (yyval.exp).call.argLoc.end.charPos++;;}
     break;
 
   case 463:
 
 /* Line 1464 of yacc.c  */
-#line 1820 "grammar.y"
+#line 1750 "grammar.y"
     { (yyval.exp) = MkExpCall((yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].list)); (yyval.exp).call.argLoc.start = (yylsp[(2) - (3)]).start; (yyval.exp).call.argLoc.end = (yylsp[(3) - (3)]).end; (yyval.exp).loc = (yyloc); (yyval.exp).call.argLoc.end.charPos++;;}
     break;
 
   case 464:
 
 /* Line 1464 of yacc.c  */
-#line 1825 "grammar.y"
+#line 1755 "grammar.y"
     { (yyval.exp) = MkExpMember((yyvsp[(1) - (3)].exp), null); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 465:
 
 /* Line 1464 of yacc.c  */
-#line 1827 "grammar.y"
+#line 1757 "grammar.y"
     { (yyval.exp) = MkExpCall((yyvsp[(1) - (3)].exp), (yyvsp[(3) - (3)].list)); (yyval.exp).loc = (yyloc); (yyval.exp).call.argLoc.start = (yylsp[(2) - (3)]).start; (yyval.exp).call.argLoc.end = (yylsp[(3) - (3)]).end; (yyval.exp).call.argLoc.end.charPos++;;}
     break;
 
   case 466:
 
 /* Line 1464 of yacc.c  */
-#line 1832 "grammar.y"
+#line 1762 "grammar.y"
     { (yyval.exp) = MkExpMember((yyvsp[(1) - (3)].exp), null); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 467:
 
 /* Line 1464 of yacc.c  */
-#line 1860 "grammar.y"
+#line 1790 "grammar.y"
     { (yyval.exp) = MkExpOp(null, INC_OP, (yyvsp[(2) - (2)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 468:
 
 /* Line 1464 of yacc.c  */
-#line 1861 "grammar.y"
+#line 1791 "grammar.y"
     { (yyval.exp) = MkExpOp(null, DEC_OP, (yyvsp[(2) - (2)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 469:
 
 /* Line 1464 of yacc.c  */
-#line 1862 "grammar.y"
+#line 1792 "grammar.y"
     { (yyval.exp) = MkExpOp(null, (yyvsp[(1) - (2)].i), (yyvsp[(2) - (2)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 470:
 
 /* Line 1464 of yacc.c  */
-#line 1863 "grammar.y"
+#line 1793 "grammar.y"
     { (yyval.exp) = MkExpOp(null, (yyvsp[(1) - (2)].i), (yyvsp[(2) - (2)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 471:
 
 /* Line 1464 of yacc.c  */
-#line 1865 "grammar.y"
+#line 1795 "grammar.y"
     { (yyval.exp) = MkExpOp(null, SIZEOF, (yyvsp[(2) - (2)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 472:
 
 /* Line 1464 of yacc.c  */
-#line 1866 "grammar.y"
+#line 1796 "grammar.y"
     { (yyval.exp) = MkExpTypeSize((yyvsp[(3) - (5)].typeName)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 473:
 
 /* Line 1464 of yacc.c  */
-#line 1867 "grammar.y"
+#line 1797 "grammar.y"
     { (yyval.exp) = MkExpClassSize((yyvsp[(4) - (6)].specifier)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 474:
 
 /* Line 1464 of yacc.c  */
-#line 1868 "grammar.y"
+#line 1798 "grammar.y"
     { (yyval.exp) = MkExpClassSize((yyvsp[(4) - (6)].specifier)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 475:
 
 /* Line 1464 of yacc.c  */
-#line 1870 "grammar.y"
+#line 1800 "grammar.y"
     { (yyval.exp) = MkExpOp(null, ALIGNOF, (yyvsp[(2) - (2)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 476:
 
 /* Line 1464 of yacc.c  */
-#line 1871 "grammar.y"
+#line 1801 "grammar.y"
     { (yyval.exp) = MkExpTypeAlign((yyvsp[(3) - (5)].typeName)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 480:
 
 /* Line 1464 of yacc.c  */
-#line 1886 "grammar.y"
+#line 1816 "grammar.y"
     { (yyval.exp) = MkExpCast((yyvsp[(2) - (4)].typeName), (yyvsp[(4) - (4)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 482:
 
 /* Line 1464 of yacc.c  */
-#line 1891 "grammar.y"
+#line 1821 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '*', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 483:
 
 /* Line 1464 of yacc.c  */
-#line 1892 "grammar.y"
+#line 1822 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '/', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 484:
 
 /* Line 1464 of yacc.c  */
-#line 1893 "grammar.y"
+#line 1823 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '%', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 485:
 
 /* Line 1464 of yacc.c  */
-#line 1894 "grammar.y"
+#line 1824 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '*', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 486:
 
 /* Line 1464 of yacc.c  */
-#line 1895 "grammar.y"
+#line 1825 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '/', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 487:
 
 /* Line 1464 of yacc.c  */
-#line 1896 "grammar.y"
+#line 1826 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '%', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 489:
 
 /* Line 1464 of yacc.c  */
-#line 1901 "grammar.y"
+#line 1831 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '+', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 490:
 
 /* Line 1464 of yacc.c  */
-#line 1905 "grammar.y"
+#line 1835 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '-', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 491:
 
 /* Line 1464 of yacc.c  */
-#line 1909 "grammar.y"
+#line 1839 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '+', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 492:
 
 /* Line 1464 of yacc.c  */
-#line 1913 "grammar.y"
+#line 1843 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '-', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 494:
 
 /* Line 1464 of yacc.c  */
-#line 1921 "grammar.y"
+#line 1851 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), LEFT_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 495:
 
 /* Line 1464 of yacc.c  */
-#line 1922 "grammar.y"
+#line 1852 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), RIGHT_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 496:
 
 /* Line 1464 of yacc.c  */
-#line 1923 "grammar.y"
+#line 1853 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), LEFT_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 497:
 
 /* Line 1464 of yacc.c  */
-#line 1924 "grammar.y"
+#line 1854 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), RIGHT_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 499:
 
 /* Line 1464 of yacc.c  */
-#line 1930 "grammar.y"
+#line 1860 "grammar.y"
     {
       if((yyvsp[(1) - (2)].exp).type == identifierExp)
       {
-         if((yyvsp[(1) - (2)].exp).identifier._class && !(yyvsp[(1) - (2)].exp).identifier._class.name)
-         {
-            char name[1024];
-            strcpy(name, "::");
-            strcat(name, (yyvsp[(1) - (2)].exp).identifier.string);
-            _DeclClass(name);
-         }
-         else
-            _DeclClass((yyvsp[(1) - (2)].exp).identifier.string);
+         _DeclClass((yyvsp[(1) - (2)].exp).identifier._class, (yyvsp[(1) - (2)].exp).identifier.string);
 
          // printf("Declaring Class %s\n", $1.identifier.string);
          skipErrors = false;
@@ -16946,392 +16908,392 @@ yyreduce:
   case 500:
 
 /* Line 1464 of yacc.c  */
-#line 1980 "grammar.y"
+#line 1902 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '>', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 501:
 
 /* Line 1464 of yacc.c  */
-#line 1981 "grammar.y"
+#line 1903 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), LE_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 502:
 
 /* Line 1464 of yacc.c  */
-#line 1982 "grammar.y"
+#line 1904 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), GE_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 503:
 
 /* Line 1464 of yacc.c  */
-#line 1983 "grammar.y"
+#line 1905 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '<', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 504:
 
 /* Line 1464 of yacc.c  */
-#line 1984 "grammar.y"
+#line 1906 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '>', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 505:
 
 /* Line 1464 of yacc.c  */
-#line 1985 "grammar.y"
+#line 1907 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), LE_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 506:
 
 /* Line 1464 of yacc.c  */
-#line 1986 "grammar.y"
+#line 1908 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), GE_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 508:
 
 /* Line 1464 of yacc.c  */
-#line 1991 "grammar.y"
+#line 1913 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), EQ_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 509:
 
 /* Line 1464 of yacc.c  */
-#line 1992 "grammar.y"
+#line 1914 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), NE_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 510:
 
 /* Line 1464 of yacc.c  */
-#line 1993 "grammar.y"
+#line 1915 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), EQ_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 511:
 
 /* Line 1464 of yacc.c  */
-#line 1994 "grammar.y"
+#line 1916 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), NE_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 512:
 
 /* Line 1464 of yacc.c  */
-#line 2001 "grammar.y"
+#line 1923 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), EQ_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 513:
 
 /* Line 1464 of yacc.c  */
-#line 2002 "grammar.y"
+#line 1924 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), NE_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 514:
 
 /* Line 1464 of yacc.c  */
-#line 2003 "grammar.y"
+#line 1925 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), EQ_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 515:
 
 /* Line 1464 of yacc.c  */
-#line 2004 "grammar.y"
+#line 1926 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), NE_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 517:
 
 /* Line 1464 of yacc.c  */
-#line 2009 "grammar.y"
+#line 1931 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '&', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 518:
 
 /* Line 1464 of yacc.c  */
-#line 2010 "grammar.y"
+#line 1932 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '&', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 519:
 
 /* Line 1464 of yacc.c  */
-#line 2012 "grammar.y"
+#line 1934 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '&', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 520:
 
 /* Line 1464 of yacc.c  */
-#line 2013 "grammar.y"
+#line 1935 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '&', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 522:
 
 /* Line 1464 of yacc.c  */
-#line 2018 "grammar.y"
+#line 1940 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '^', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 523:
 
 /* Line 1464 of yacc.c  */
-#line 2019 "grammar.y"
+#line 1941 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '^', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 524:
 
 /* Line 1464 of yacc.c  */
-#line 2021 "grammar.y"
+#line 1943 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '^', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 525:
 
 /* Line 1464 of yacc.c  */
-#line 2022 "grammar.y"
+#line 1944 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '^', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 527:
 
 /* Line 1464 of yacc.c  */
-#line 2027 "grammar.y"
+#line 1949 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '|', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 528:
 
 /* Line 1464 of yacc.c  */
-#line 2028 "grammar.y"
+#line 1950 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '|', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 529:
 
 /* Line 1464 of yacc.c  */
-#line 2030 "grammar.y"
+#line 1952 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '|', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 530:
 
 /* Line 1464 of yacc.c  */
-#line 2031 "grammar.y"
+#line 1953 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), '|', (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 532:
 
 /* Line 1464 of yacc.c  */
-#line 2036 "grammar.y"
+#line 1958 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), AND_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 533:
 
 /* Line 1464 of yacc.c  */
-#line 2037 "grammar.y"
+#line 1959 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), AND_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 535:
 
 /* Line 1464 of yacc.c  */
-#line 2042 "grammar.y"
+#line 1964 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), OR_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 536:
 
 /* Line 1464 of yacc.c  */
-#line 2043 "grammar.y"
+#line 1965 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), OR_OP, (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 538:
 
 /* Line 1464 of yacc.c  */
-#line 2048 "grammar.y"
+#line 1970 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 539:
 
 /* Line 1464 of yacc.c  */
-#line 2049 "grammar.y"
+#line 1971 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 540:
 
 /* Line 1464 of yacc.c  */
-#line 2050 "grammar.y"
+#line 1972 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 541:
 
 /* Line 1464 of yacc.c  */
-#line 2051 "grammar.y"
+#line 1973 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 542:
 
 /* Line 1464 of yacc.c  */
-#line 2052 "grammar.y"
+#line 1974 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (4)].exp), (yyvsp[(3) - (4)].list), MkExpDummy()); (yyval.exp).loc = (yyloc); (yyval.exp).cond.elseExp.loc = (yylsp[(3) - (4)]); ;}
     break;
 
   case 543:
 
 /* Line 1464 of yacc.c  */
-#line 2053 "grammar.y"
+#line 1975 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (4)].exp), (yyvsp[(3) - (4)].list), MkExpDummy()); (yyval.exp).loc = (yyloc); (yyval.exp).cond.elseExp.loc = (yylsp[(3) - (4)]); ;}
     break;
 
   case 544:
 
 /* Line 1464 of yacc.c  */
-#line 2054 "grammar.y"
+#line 1976 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (4)].exp), (yyvsp[(3) - (4)].list), MkExpDummy()); (yyval.exp).loc = (yyloc); (yyval.exp).cond.elseExp.loc = (yylsp[(3) - (4)]); ;}
     break;
 
   case 545:
 
 /* Line 1464 of yacc.c  */
-#line 2055 "grammar.y"
+#line 1977 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (4)].exp), (yyvsp[(3) - (4)].list), MkExpDummy()); (yyval.exp).loc = (yyloc); (yyval.exp).cond.elseExp.loc = (yylsp[(3) - (4)]); ;}
     break;
 
   case 546:
 
 /* Line 1464 of yacc.c  */
-#line 2057 "grammar.y"
+#line 1979 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 547:
 
 /* Line 1464 of yacc.c  */
-#line 2058 "grammar.y"
+#line 1980 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 548:
 
 /* Line 1464 of yacc.c  */
-#line 2059 "grammar.y"
+#line 1981 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 549:
 
 /* Line 1464 of yacc.c  */
-#line 2060 "grammar.y"
+#line 1982 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 550:
 
 /* Line 1464 of yacc.c  */
-#line 2061 "grammar.y"
+#line 1983 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (4)].exp), (yyvsp[(3) - (4)].list), MkExpDummy()); (yyval.exp).loc = (yyloc); (yyval.exp).cond.elseExp.loc = (yylsp[(3) - (4)]); ;}
     break;
 
   case 551:
 
 /* Line 1464 of yacc.c  */
-#line 2062 "grammar.y"
+#line 1984 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (4)].exp), (yyvsp[(3) - (4)].list), MkExpDummy()); (yyval.exp).loc = (yyloc); (yyval.exp).cond.elseExp.loc = (yylsp[(3) - (4)]); ;}
     break;
 
   case 552:
 
 /* Line 1464 of yacc.c  */
-#line 2063 "grammar.y"
+#line 1985 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (4)].exp), (yyvsp[(3) - (4)].list), MkExpDummy()); (yyval.exp).loc = (yyloc); (yyval.exp).cond.elseExp.loc = (yylsp[(3) - (4)]); ;}
     break;
 
   case 553:
 
 /* Line 1464 of yacc.c  */
-#line 2064 "grammar.y"
+#line 1986 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (4)].exp), (yyvsp[(3) - (4)].list), MkExpDummy()); (yyval.exp).loc = (yyloc); (yyval.exp).cond.elseExp.loc = (yylsp[(3) - (4)]); ;}
     break;
 
   case 554:
 
 /* Line 1464 of yacc.c  */
-#line 2066 "grammar.y"
+#line 1988 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 555:
 
 /* Line 1464 of yacc.c  */
-#line 2067 "grammar.y"
+#line 1989 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 556:
 
 /* Line 1464 of yacc.c  */
-#line 2068 "grammar.y"
+#line 1990 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 557:
 
 /* Line 1464 of yacc.c  */
-#line 2069 "grammar.y"
+#line 1991 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 558:
 
 /* Line 1464 of yacc.c  */
-#line 2071 "grammar.y"
+#line 1993 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 559:
 
 /* Line 1464 of yacc.c  */
-#line 2072 "grammar.y"
+#line 1994 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 560:
 
 /* Line 1464 of yacc.c  */
-#line 2073 "grammar.y"
+#line 1995 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 561:
 
 /* Line 1464 of yacc.c  */
-#line 2074 "grammar.y"
+#line 1996 "grammar.y"
     { (yyval.exp) = MkExpCondition((yyvsp[(1) - (5)].exp), (yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 562:
 
 /* Line 1464 of yacc.c  */
-#line 2077 "grammar.y"
+#line 1999 "grammar.y"
     {
          yyerror();
          (yyval.exp) = MkExpCondition((yyvsp[(1) - (3)].exp), MkListOne(MkExpDummy()), MkExpDummy());
@@ -17344,7 +17306,7 @@ yyreduce:
   case 563:
 
 /* Line 1464 of yacc.c  */
-#line 2085 "grammar.y"
+#line 2007 "grammar.y"
     {
          (yyval.exp) = MkExpCondition((yyvsp[(1) - (3)].exp), MkListOne(MkExpDummy()), MkExpDummy()); (yyval.exp).loc = (yyloc); ((Expression)(yyval.exp).cond.exp->last).loc = (yylsp[(2) - (3)]); (yyval.exp).cond.elseExp.loc = (yylsp[(3) - (3)]);
       ;}
@@ -17353,7 +17315,7 @@ yyreduce:
   case 564:
 
 /* Line 1464 of yacc.c  */
-#line 2089 "grammar.y"
+#line 2011 "grammar.y"
     {
          yyerror();
          (yyval.exp) = MkExpCondition((yyvsp[(1) - (2)].exp), MkListOne(MkExpDummy()), MkExpDummy()); (yyval.exp).loc = (yyloc); ((Expression)(yyval.exp).cond.exp->last).loc = (yylsp[(2) - (2)]); (yyval.exp).cond.elseExp.loc = (yylsp[(2) - (2)]);
@@ -17363,7 +17325,7 @@ yyreduce:
   case 565:
 
 /* Line 1464 of yacc.c  */
-#line 2094 "grammar.y"
+#line 2016 "grammar.y"
     {
          (yyval.exp) = MkExpCondition((yyvsp[(1) - (2)].exp), MkListOne(MkExpDummy()), MkExpDummy()); (yyval.exp).loc = (yyloc); ((Expression)(yyval.exp).cond.exp->last).loc = (yylsp[(2) - (2)]); (yyval.exp).cond.elseExp.loc = (yylsp[(2) - (2)]);
       ;}
@@ -17372,994 +17334,994 @@ yyreduce:
   case 567:
 
 /* Line 1464 of yacc.c  */
-#line 2101 "grammar.y"
+#line 2023 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), (yyvsp[(2) - (3)].i), (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 568:
 
 /* Line 1464 of yacc.c  */
-#line 2105 "grammar.y"
+#line 2027 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), (yyvsp[(2) - (3)].i), (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 569:
 
 /* Line 1464 of yacc.c  */
-#line 2110 "grammar.y"
+#line 2032 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), (yyvsp[(2) - (3)].i), (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 570:
 
 /* Line 1464 of yacc.c  */
-#line 2111 "grammar.y"
+#line 2033 "grammar.y"
     { (yyval.exp) = MkExpOp((yyvsp[(1) - (3)].exp), (yyvsp[(2) - (3)].i), (yyvsp[(3) - (3)].exp)); (yyval.exp).loc = (yyloc); ;}
     break;
 
   case 571:
 
 /* Line 1464 of yacc.c  */
-#line 2115 "grammar.y"
+#line 2037 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].exp)); ;}
     break;
 
   case 572:
 
 /* Line 1464 of yacc.c  */
-#line 2116 "grammar.y"
+#line 2038 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (2)].exp)); ;}
     break;
 
   case 573:
 
 /* Line 1464 of yacc.c  */
-#line 2117 "grammar.y"
+#line 2039 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].exp)); ;}
     break;
 
   case 574:
 
 /* Line 1464 of yacc.c  */
-#line 2118 "grammar.y"
+#line 2040 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].exp)); ;}
     break;
 
   case 575:
 
 /* Line 1464 of yacc.c  */
-#line 2124 "grammar.y"
+#line 2046 "grammar.y"
     { yyerror(); (yyval.list) = (yyvsp[(1) - (2)].list); FreeList((yyvsp[(2) - (2)].list), FreeExpression); ;}
     break;
 
   case 576:
 
 /* Line 1464 of yacc.c  */
-#line 2125 "grammar.y"
+#line 2047 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); FreeList((yyvsp[(2) - (2)].list), FreeExpression); ;}
     break;
 
   case 577:
 
 /* Line 1464 of yacc.c  */
-#line 2126 "grammar.y"
+#line 2048 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); FreeList((yyvsp[(2) - (2)].list), FreeExpression); ;}
     break;
 
   case 578:
 
 /* Line 1464 of yacc.c  */
-#line 2130 "grammar.y"
+#line 2052 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].exp)); ;}
     break;
 
   case 579:
 
 /* Line 1464 of yacc.c  */
-#line 2131 "grammar.y"
+#line 2053 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (2)].exp)); ;}
     break;
 
   case 580:
 
 /* Line 1464 of yacc.c  */
-#line 2132 "grammar.y"
+#line 2054 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].exp)); ;}
     break;
 
   case 581:
 
 /* Line 1464 of yacc.c  */
-#line 2133 "grammar.y"
+#line 2055 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].exp)); ;}
     break;
 
   case 584:
 
 /* Line 1464 of yacc.c  */
-#line 2143 "grammar.y"
+#line 2065 "grammar.y"
     { (yyval.specifier) = MkSpecifier(TYPEDEF); ;}
     break;
 
   case 585:
 
 /* Line 1464 of yacc.c  */
-#line 2144 "grammar.y"
+#line 2066 "grammar.y"
     { (yyval.specifier) = MkSpecifier(EXTERN); ;}
     break;
 
   case 586:
 
 /* Line 1464 of yacc.c  */
-#line 2145 "grammar.y"
+#line 2067 "grammar.y"
     { (yyval.specifier) = MkSpecifier(STATIC); ;}
     break;
 
   case 587:
 
 /* Line 1464 of yacc.c  */
-#line 2146 "grammar.y"
+#line 2068 "grammar.y"
     { (yyval.specifier) = MkSpecifier(THREAD); ;}
     break;
 
   case 588:
 
 /* Line 1464 of yacc.c  */
-#line 2147 "grammar.y"
+#line 2069 "grammar.y"
     { (yyval.specifier) = MkSpecifier(AUTO); ;}
     break;
 
   case 589:
 
 /* Line 1464 of yacc.c  */
-#line 2148 "grammar.y"
+#line 2070 "grammar.y"
     { (yyval.specifier) = MkSpecifier(REGISTER); ;}
     break;
 
   case 590:
 
 /* Line 1464 of yacc.c  */
-#line 2149 "grammar.y"
+#line 2071 "grammar.y"
     { (yyval.specifier) = MkSpecifier(RESTRICT); ;}
     break;
 
   case 591:
 
 /* Line 1464 of yacc.c  */
-#line 2153 "grammar.y"
+#line 2075 "grammar.y"
     { (yyval.specifier) = MkSpecifier(TYPEDEF); structDeclMode = declMode = defaultAccess; ;}
     break;
 
   case 592:
 
 /* Line 1464 of yacc.c  */
-#line 2154 "grammar.y"
+#line 2076 "grammar.y"
     { (yyval.specifier) = MkSpecifier(EXTERN); ;}
     break;
 
   case 593:
 
 /* Line 1464 of yacc.c  */
-#line 2155 "grammar.y"
+#line 2077 "grammar.y"
     { (yyval.specifier) = MkSpecifier(STATIC); structDeclMode = declMode = staticAccess; ;}
     break;
 
   case 594:
 
 /* Line 1464 of yacc.c  */
-#line 2156 "grammar.y"
+#line 2078 "grammar.y"
     { (yyval.specifier) = MkSpecifier(THREAD); ;}
     break;
 
   case 595:
 
 /* Line 1464 of yacc.c  */
-#line 2157 "grammar.y"
+#line 2079 "grammar.y"
     { (yyval.specifier) = MkSpecifier(AUTO); ;}
     break;
 
   case 596:
 
 /* Line 1464 of yacc.c  */
-#line 2158 "grammar.y"
+#line 2080 "grammar.y"
     { (yyval.specifier) = MkSpecifier(REGISTER); ;}
     break;
 
   case 597:
 
 /* Line 1464 of yacc.c  */
-#line 2159 "grammar.y"
+#line 2081 "grammar.y"
     { (yyval.specifier) = MkSpecifier(RESTRICT); ;}
     break;
 
   case 598:
 
 /* Line 1464 of yacc.c  */
-#line 2163 "grammar.y"
+#line 2085 "grammar.y"
     { (yyval.enumerator) = MkEnumerator((yyvsp[(1) - (1)].id), null); ;}
     break;
 
   case 599:
 
 /* Line 1464 of yacc.c  */
-#line 2164 "grammar.y"
+#line 2086 "grammar.y"
     { (yyval.enumerator) = MkEnumerator((yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].exp)); ;}
     break;
 
   case 600:
 
 /* Line 1464 of yacc.c  */
-#line 2165 "grammar.y"
+#line 2087 "grammar.y"
     { (yyval.enumerator) = MkEnumerator((yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].exp)); ;}
     break;
 
   case 601:
 
 /* Line 1464 of yacc.c  */
-#line 2169 "grammar.y"
+#line 2091 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].enumerator)); ;}
     break;
 
   case 602:
 
 /* Line 1464 of yacc.c  */
-#line 2170 "grammar.y"
+#line 2092 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].enumerator)); ;}
     break;
 
   case 604:
 
 /* Line 1464 of yacc.c  */
-#line 2175 "grammar.y"
+#line 2097 "grammar.y"
     { memberAccessStack[++defaultMemberAccess] = publicAccess; ;}
     break;
 
   case 605:
 
 /* Line 1464 of yacc.c  */
-#line 2179 "grammar.y"
+#line 2101 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(2) - (2)].id), null); POP_DEFAULT_ACCESS ;}
     break;
 
   case 606:
 
 /* Line 1464 of yacc.c  */
-#line 2180 "grammar.y"
+#line 2102 "grammar.y"
     { (yyval.specifier) = MkEnum(MkIdentifier((yyvsp[(2) - (2)].specifier).name), null); POP_DEFAULT_ACCESS ;}
     break;
 
   case 607:
 
 /* Line 1464 of yacc.c  */
-#line 2184 "grammar.y"
+#line 2106 "grammar.y"
     { (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS (yyval.specifier) = (yyvsp[(1) - (2)].specifier); ;}
     break;
 
   case 608:
 
 /* Line 1464 of yacc.c  */
-#line 2185 "grammar.y"
+#line 2107 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(2) - (4)].id), null); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 609:
 
 /* Line 1464 of yacc.c  */
-#line 2186 "grammar.y"
+#line 2108 "grammar.y"
     { (yyval.specifier) = MkEnum(MkIdentifier((yyvsp[(2) - (4)].specifier).name), null); FreeSpecifier((yyvsp[(2) - (4)].specifier)); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 610:
 
 /* Line 1464 of yacc.c  */
-#line 2190 "grammar.y"
+#line 2112 "grammar.y"
     { (yyval.specifier) = MkEnum(null, (yyvsp[(3) - (3)].list)); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 611:
 
 /* Line 1464 of yacc.c  */
-#line 2191 "grammar.y"
+#line 2113 "grammar.y"
     { (yyval.specifier) = MkEnum(null, null); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 612:
 
 /* Line 1464 of yacc.c  */
-#line 2193 "grammar.y"
+#line 2115 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(2) - (4)].id), (yyvsp[(4) - (4)].list)); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 613:
 
 /* Line 1464 of yacc.c  */
-#line 2194 "grammar.y"
+#line 2116 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(2) - (5)].id), (yyvsp[(4) - (5)].list));  (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 614:
 
 /* Line 1464 of yacc.c  */
-#line 2195 "grammar.y"
+#line 2117 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(2) - (4)].id), null);  (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 615:
 
 /* Line 1464 of yacc.c  */
-#line 2196 "grammar.y"
+#line 2118 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(2) - (6)].id), (yyvsp[(4) - (6)].list)); (yyval.specifier).loc = (yyloc); (yyval.specifier).definitions = (yyvsp[(6) - (6)].list);  POP_DEFAULT_ACCESS ;}
     break;
 
   case 616:
 
 /* Line 1464 of yacc.c  */
-#line 2197 "grammar.y"
+#line 2119 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(2) - (6)].id), (yyvsp[(4) - (6)].list)); (yyval.specifier).loc = (yyloc); (yyval.specifier).definitions = (yyvsp[(6) - (6)].list);  POP_DEFAULT_ACCESS ;}
     break;
 
   case 617:
 
 /* Line 1464 of yacc.c  */
-#line 2199 "grammar.y"
+#line 2121 "grammar.y"
     { (yyval.specifier) = MkEnum(MkIdentifier((yyvsp[(2) - (4)].specifier).name), (yyvsp[(4) - (4)].list)); (yyval.specifier).loc = (yyloc); FreeSpecifier((yyvsp[(2) - (4)].specifier)); POP_DEFAULT_ACCESS ;}
     break;
 
   case 618:
 
 /* Line 1464 of yacc.c  */
-#line 2200 "grammar.y"
+#line 2122 "grammar.y"
     { (yyval.specifier) = MkEnum(MkIdentifier((yyvsp[(2) - (5)].specifier).name), (yyvsp[(4) - (5)].list)); (yyval.specifier).loc = (yyloc); FreeSpecifier((yyvsp[(2) - (5)].specifier)); POP_DEFAULT_ACCESS ;}
     break;
 
   case 619:
 
 /* Line 1464 of yacc.c  */
-#line 2201 "grammar.y"
+#line 2123 "grammar.y"
     { (yyval.specifier) = MkEnum(MkIdentifier((yyvsp[(2) - (4)].specifier).name), null); (yyval.specifier).loc = (yyloc); FreeSpecifier((yyvsp[(2) - (4)].specifier)); POP_DEFAULT_ACCESS ;}
     break;
 
   case 620:
 
 /* Line 1464 of yacc.c  */
-#line 2202 "grammar.y"
+#line 2124 "grammar.y"
     { (yyval.specifier) = MkEnum(MkIdentifier((yyvsp[(2) - (6)].specifier).name), (yyvsp[(4) - (6)].list)); (yyval.specifier).loc = (yyloc); (yyval.specifier).definitions = (yyvsp[(6) - (6)].list); FreeSpecifier((yyvsp[(2) - (6)].specifier)); POP_DEFAULT_ACCESS ;}
     break;
 
   case 621:
 
 /* Line 1464 of yacc.c  */
-#line 2203 "grammar.y"
+#line 2125 "grammar.y"
     { (yyval.specifier) = MkEnum(MkIdentifier((yyvsp[(2) - (6)].specifier).name), (yyvsp[(4) - (6)].list)); (yyval.specifier).loc = (yyloc); (yyval.specifier).definitions = (yyvsp[(6) - (6)].list); FreeSpecifier((yyvsp[(2) - (6)].specifier)); POP_DEFAULT_ACCESS ;}
     break;
 
   case 622:
 
 /* Line 1464 of yacc.c  */
-#line 2205 "grammar.y"
+#line 2127 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(2) - (5)].id), (yyvsp[(4) - (5)].list)); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 623:
 
 /* Line 1464 of yacc.c  */
-#line 2206 "grammar.y"
+#line 2128 "grammar.y"
     { (yyval.specifier) = MkEnum(MkIdentifier((yyvsp[(2) - (5)].specifier).name), (yyvsp[(4) - (5)].list)); (yyval.specifier).loc = (yyloc); FreeSpecifier((yyvsp[(2) - (5)].specifier)); POP_DEFAULT_ACCESS ;}
     break;
 
   case 624:
 
 /* Line 1464 of yacc.c  */
-#line 2210 "grammar.y"
-    { (yyval.id) = (yyvsp[(2) - (2)].id); if(declMode) DeclClassAddNameSpace((yyvsp[(2) - (2)].id).string); ;}
+#line 2132 "grammar.y"
+    { (yyval.id) = (yyvsp[(2) - (2)].id); if(declMode) DeclClassAddNameSpace((yyvsp[(2) - (2)].id)._class, (yyvsp[(2) - (2)].id).string); ;}
     break;
 
   case 625:
 
 /* Line 1464 of yacc.c  */
-#line 2211 "grammar.y"
-    { (yyval.id) = MkIdentifier((yyvsp[(2) - (2)].specifier).name); if(declMode) DeclClass((yyvsp[(2) - (2)].specifier).name); FreeSpecifier((yyvsp[(2) - (2)].specifier)); ;}
+#line 2133 "grammar.y"
+    { (yyval.id) = MkIdentifier((yyvsp[(2) - (2)].specifier).name); if(declMode) DeclClass((yyvsp[(2) - (2)].specifier).nsSpec, (yyvsp[(2) - (2)].specifier).name); FreeSpecifier((yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 626:
 
 /* Line 1464 of yacc.c  */
-#line 2215 "grammar.y"
+#line 2137 "grammar.y"
     { (yyval.specifier) = (yyvsp[(1) - (2)].specifier); (yyval.specifier).loc = (yyloc); ;}
     break;
 
   case 627:
 
 /* Line 1464 of yacc.c  */
-#line 2216 "grammar.y"
+#line 2138 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(1) - (5)].id), null); (yyval.specifier).baseSpecs = (yyvsp[(3) - (5)].list); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 628:
 
 /* Line 1464 of yacc.c  */
-#line 2217 "grammar.y"
+#line 2139 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(1) - (3)].id), null); POP_DEFAULT_ACCESS ;}
     break;
 
   case 629:
 
 /* Line 1464 of yacc.c  */
-#line 2221 "grammar.y"
+#line 2143 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(1) - (5)].id), (yyvsp[(5) - (5)].list)); (yyval.specifier).baseSpecs = (yyvsp[(3) - (5)].list); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 630:
 
 /* Line 1464 of yacc.c  */
-#line 2222 "grammar.y"
+#line 2144 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(1) - (6)].id), (yyvsp[(5) - (6)].list)); (yyval.specifier).baseSpecs = (yyvsp[(3) - (6)].list); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 631:
 
 /* Line 1464 of yacc.c  */
-#line 2223 "grammar.y"
+#line 2145 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(1) - (5)].id), null); (yyval.specifier).baseSpecs = (yyvsp[(3) - (5)].list); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 632:
 
 /* Line 1464 of yacc.c  */
-#line 2224 "grammar.y"
+#line 2146 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(1) - (7)].id), (yyvsp[(5) - (7)].list)); (yyval.specifier).baseSpecs = (yyvsp[(3) - (7)].list); (yyval.specifier).definitions = (yyvsp[(7) - (7)].list); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 633:
 
 /* Line 1464 of yacc.c  */
-#line 2225 "grammar.y"
+#line 2147 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(1) - (7)].id), (yyvsp[(5) - (7)].list)); (yyval.specifier).baseSpecs = (yyvsp[(3) - (7)].list); (yyval.specifier).definitions = (yyvsp[(7) - (7)].list); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 634:
 
 /* Line 1464 of yacc.c  */
-#line 2226 "grammar.y"
+#line 2148 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(1) - (8)].id), (yyvsp[(5) - (8)].list)); (yyval.specifier).baseSpecs = (yyvsp[(3) - (8)].list); (yyval.specifier).definitions = (yyvsp[(8) - (8)].list); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 635:
 
 /* Line 1464 of yacc.c  */
-#line 2227 "grammar.y"
+#line 2149 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(1) - (8)].id), (yyvsp[(5) - (8)].list)); (yyval.specifier).baseSpecs = (yyvsp[(3) - (8)].list); (yyval.specifier).definitions = (yyvsp[(8) - (8)].list); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 636:
 
 /* Line 1464 of yacc.c  */
-#line 2228 "grammar.y"
+#line 2150 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(1) - (7)].id), null); (yyval.specifier).baseSpecs = (yyvsp[(3) - (7)].list); (yyval.specifier).definitions = (yyvsp[(7) - (7)].list); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 637:
 
 /* Line 1464 of yacc.c  */
-#line 2229 "grammar.y"
+#line 2151 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(1) - (7)].id), null); (yyval.specifier).baseSpecs = (yyvsp[(3) - (7)].list); (yyval.specifier).definitions = (yyvsp[(7) - (7)].list); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 638:
 
 /* Line 1464 of yacc.c  */
-#line 2231 "grammar.y"
+#line 2153 "grammar.y"
     { (yyval.specifier) = MkEnum(null, (yyvsp[(3) - (3)].list)); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 639:
 
 /* Line 1464 of yacc.c  */
-#line 2232 "grammar.y"
+#line 2154 "grammar.y"
     { (yyval.specifier) = MkEnum(null, null); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 640:
 
 /* Line 1464 of yacc.c  */
-#line 2234 "grammar.y"
+#line 2156 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].list)); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 641:
 
 /* Line 1464 of yacc.c  */
-#line 2235 "grammar.y"
+#line 2157 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(1) - (4)].id), (yyvsp[(3) - (4)].list)); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 642:
 
 /* Line 1464 of yacc.c  */
-#line 2236 "grammar.y"
+#line 2158 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(1) - (3)].id), null); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 643:
 
 /* Line 1464 of yacc.c  */
-#line 2237 "grammar.y"
+#line 2159 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(1) - (5)].id), (yyvsp[(3) - (5)].list)); (yyval.specifier).definitions = (yyvsp[(5) - (5)].list); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 644:
 
 /* Line 1464 of yacc.c  */
-#line 2238 "grammar.y"
+#line 2160 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(1) - (5)].id), (yyvsp[(3) - (5)].list)); (yyval.specifier).definitions = (yyvsp[(5) - (5)].list); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 645:
 
 /* Line 1464 of yacc.c  */
-#line 2240 "grammar.y"
+#line 2162 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(1) - (6)].id), (yyvsp[(5) - (6)].list)); (yyval.specifier).baseSpecs = (yyvsp[(3) - (6)].list); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 646:
 
 /* Line 1464 of yacc.c  */
-#line 2241 "grammar.y"
+#line 2163 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(1) - (7)].id), (yyvsp[(5) - (7)].list)); (yyval.specifier).baseSpecs = (yyvsp[(3) - (7)].list);  (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 647:
 
 /* Line 1464 of yacc.c  */
-#line 2242 "grammar.y"
+#line 2164 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(1) - (6)].id), null); (yyval.specifier).baseSpecs = (yyvsp[(3) - (6)].list); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 648:
 
 /* Line 1464 of yacc.c  */
-#line 2243 "grammar.y"
+#line 2165 "grammar.y"
     { (yyval.specifier) = MkEnum((yyvsp[(1) - (4)].id), (yyvsp[(3) - (4)].list));  (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 653:
 
 /* Line 1464 of yacc.c  */
-#line 2257 "grammar.y"
+#line 2179 "grammar.y"
     { (yyval.specifier) = MkSpecifierExtended((yyvsp[(1) - (1)].extDecl)); ;}
     break;
 
   case 654:
 
 /* Line 1464 of yacc.c  */
-#line 2261 "grammar.y"
+#line 2183 "grammar.y"
     { (yyval.specifier) = MkSpecifier(CONST); ;}
     break;
 
   case 655:
 
 /* Line 1464 of yacc.c  */
-#line 2262 "grammar.y"
+#line 2184 "grammar.y"
     { (yyval.specifier) = MkSpecifier(VOLATILE); ;}
     break;
 
   case 656:
 
 /* Line 1464 of yacc.c  */
-#line 2263 "grammar.y"
+#line 2185 "grammar.y"
     { (yyval.specifier) = (yyvsp[(1) - (1)].specifier); ;}
     break;
 
   case 657:
 
 /* Line 1464 of yacc.c  */
-#line 2268 "grammar.y"
+#line 2190 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 658:
 
 /* Line 1464 of yacc.c  */
-#line 2269 "grammar.y"
+#line 2191 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier));  ;}
     break;
 
   case 659:
 
 /* Line 1464 of yacc.c  */
-#line 2273 "grammar.y"
+#line 2195 "grammar.y"
     { (yyval.specifier) = MkSpecifier(VOID); ;}
     break;
 
   case 660:
 
 /* Line 1464 of yacc.c  */
-#line 2274 "grammar.y"
+#line 2196 "grammar.y"
     { (yyval.specifier) = MkSpecifier(CHAR); ;}
     break;
 
   case 661:
 
 /* Line 1464 of yacc.c  */
-#line 2275 "grammar.y"
+#line 2197 "grammar.y"
     { (yyval.specifier) = MkSpecifier(SHORT); ;}
     break;
 
   case 662:
 
 /* Line 1464 of yacc.c  */
-#line 2276 "grammar.y"
+#line 2198 "grammar.y"
     { (yyval.specifier) = MkSpecifier(INT); ;}
     break;
 
   case 663:
 
 /* Line 1464 of yacc.c  */
-#line 2277 "grammar.y"
+#line 2199 "grammar.y"
     { (yyval.specifier) = MkSpecifier(UINT); ;}
     break;
 
   case 664:
 
 /* Line 1464 of yacc.c  */
-#line 2278 "grammar.y"
+#line 2200 "grammar.y"
     { (yyval.specifier) = MkSpecifier(INT64); ;}
     break;
 
   case 665:
 
 /* Line 1464 of yacc.c  */
-#line 2279 "grammar.y"
+#line 2201 "grammar.y"
     { (yyval.specifier) = MkSpecifier(VALIST); ;}
     break;
 
   case 666:
 
 /* Line 1464 of yacc.c  */
-#line 2280 "grammar.y"
+#line 2202 "grammar.y"
     { (yyval.specifier) = MkSpecifier(LONG); ;}
     break;
 
   case 667:
 
 /* Line 1464 of yacc.c  */
-#line 2281 "grammar.y"
+#line 2203 "grammar.y"
     { (yyval.specifier) = MkSpecifier(FLOAT); ;}
     break;
 
   case 668:
 
 /* Line 1464 of yacc.c  */
-#line 2282 "grammar.y"
+#line 2204 "grammar.y"
     { (yyval.specifier) = MkSpecifier(DOUBLE); ;}
     break;
 
   case 669:
 
 /* Line 1464 of yacc.c  */
-#line 2283 "grammar.y"
+#line 2205 "grammar.y"
     { (yyval.specifier) = MkSpecifier(SIGNED); ;}
     break;
 
   case 670:
 
 /* Line 1464 of yacc.c  */
-#line 2284 "grammar.y"
+#line 2206 "grammar.y"
     { (yyval.specifier) = MkSpecifier(UNSIGNED); ;}
     break;
 
   case 671:
 
 /* Line 1464 of yacc.c  */
-#line 2285 "grammar.y"
+#line 2207 "grammar.y"
     { (yyval.specifier) = MkSpecifier(EXTENSION); ;}
     break;
 
   case 675:
 
 /* Line 1464 of yacc.c  */
-#line 2289 "grammar.y"
+#line 2211 "grammar.y"
     { (yyval.specifier) = MkSpecifierTypeOf((yyvsp[(3) - (4)].exp)); ;}
     break;
 
   case 676:
 
 /* Line 1464 of yacc.c  */
-#line 2290 "grammar.y"
+#line 2212 "grammar.y"
     { (yyval.specifier) = MkSpecifierSubClass((yyvsp[(3) - (4)].specifier)); ;}
     break;
 
   case 677:
 
 /* Line 1464 of yacc.c  */
-#line 2291 "grammar.y"
-    { _DeclClass((yyvsp[(3) - (4)].id).string); (yyval.specifier) = MkSpecifierSubClass(MkSpecifierName((yyvsp[(3) - (4)].id).string)); FreeIdentifier((yyvsp[(3) - (4)].id)); ;}
+#line 2213 "grammar.y"
+    { _DeclClass((yyvsp[(3) - (4)].id)._class, (yyvsp[(3) - (4)].id).string); (yyval.specifier) = MkSpecifierSubClass(MkSpecifierName((yyvsp[(3) - (4)].id).string)); FreeIdentifier((yyvsp[(3) - (4)].id)); ;}
     break;
 
   case 678:
 
 /* Line 1464 of yacc.c  */
-#line 2292 "grammar.y"
+#line 2214 "grammar.y"
     { (yyval.specifier) = MkSpecifier(THISCLASS); ;}
     break;
 
   case 679:
 
 /* Line 1464 of yacc.c  */
-#line 2293 "grammar.y"
+#line 2215 "grammar.y"
     { (yyval.specifier) = MkSpecifier(TYPED_OBJECT); ;}
     break;
 
   case 680:
 
 /* Line 1464 of yacc.c  */
-#line 2294 "grammar.y"
+#line 2216 "grammar.y"
     { (yyval.specifier) = MkSpecifier(ANY_OBJECT); ;}
     break;
 
   case 681:
 
 /* Line 1464 of yacc.c  */
-#line 2295 "grammar.y"
+#line 2217 "grammar.y"
     { (yyval.specifier) = MkSpecifier(_BOOL); ;}
     break;
 
   case 682:
 
 /* Line 1464 of yacc.c  */
-#line 2296 "grammar.y"
+#line 2218 "grammar.y"
     { (yyval.specifier) = MkSpecifier(BOOL); ;}
     break;
 
   case 683:
 
 /* Line 1464 of yacc.c  */
-#line 2297 "grammar.y"
+#line 2219 "grammar.y"
     { (yyval.specifier) = MkSpecifier(_COMPLEX); ;}
     break;
 
   case 684:
 
 /* Line 1464 of yacc.c  */
-#line 2298 "grammar.y"
+#line 2220 "grammar.y"
     { (yyval.specifier) = MkSpecifier(_IMAGINARY); ;}
     break;
 
   case 685:
 
 /* Line 1464 of yacc.c  */
-#line 2302 "grammar.y"
+#line 2224 "grammar.y"
     { (yyval.specifier) = MkSpecifier(VOID); ;}
     break;
 
   case 686:
 
 /* Line 1464 of yacc.c  */
-#line 2303 "grammar.y"
+#line 2225 "grammar.y"
     { (yyval.specifier) = MkSpecifier(CHAR); ;}
     break;
 
   case 687:
 
 /* Line 1464 of yacc.c  */
-#line 2304 "grammar.y"
+#line 2226 "grammar.y"
     { (yyval.specifier) = MkSpecifier(SHORT); ;}
     break;
 
   case 688:
 
 /* Line 1464 of yacc.c  */
-#line 2305 "grammar.y"
+#line 2227 "grammar.y"
     { (yyval.specifier) = MkSpecifier(INT); ;}
     break;
 
   case 689:
 
 /* Line 1464 of yacc.c  */
-#line 2306 "grammar.y"
+#line 2228 "grammar.y"
     { (yyval.specifier) = MkSpecifier(UINT); ;}
     break;
 
   case 690:
 
 /* Line 1464 of yacc.c  */
-#line 2307 "grammar.y"
+#line 2229 "grammar.y"
     { (yyval.specifier) = MkSpecifier(INT64); ;}
     break;
 
   case 691:
 
 /* Line 1464 of yacc.c  */
-#line 2308 "grammar.y"
+#line 2230 "grammar.y"
     { (yyval.specifier) = MkSpecifier(VALIST); ;}
     break;
 
   case 692:
 
 /* Line 1464 of yacc.c  */
-#line 2309 "grammar.y"
+#line 2231 "grammar.y"
     { (yyval.specifier) = MkSpecifier(LONG); ;}
     break;
 
   case 693:
 
 /* Line 1464 of yacc.c  */
-#line 2310 "grammar.y"
+#line 2232 "grammar.y"
     { (yyval.specifier) = MkSpecifier(FLOAT); ;}
     break;
 
   case 694:
 
 /* Line 1464 of yacc.c  */
-#line 2311 "grammar.y"
+#line 2233 "grammar.y"
     { (yyval.specifier) = MkSpecifier(DOUBLE); ;}
     break;
 
   case 695:
 
 /* Line 1464 of yacc.c  */
-#line 2312 "grammar.y"
+#line 2234 "grammar.y"
     { (yyval.specifier) = MkSpecifier(SIGNED); ;}
     break;
 
   case 696:
 
 /* Line 1464 of yacc.c  */
-#line 2313 "grammar.y"
+#line 2235 "grammar.y"
     { (yyval.specifier) = MkSpecifier(UNSIGNED); ;}
     break;
 
   case 697:
 
 /* Line 1464 of yacc.c  */
-#line 2314 "grammar.y"
+#line 2236 "grammar.y"
     { (yyval.specifier) = MkSpecifier(EXTENSION); ;}
     break;
 
   case 701:
 
 /* Line 1464 of yacc.c  */
-#line 2318 "grammar.y"
+#line 2240 "grammar.y"
     { (yyval.specifier) = MkSpecifier(_BOOL); ;}
     break;
 
   case 702:
 
 /* Line 1464 of yacc.c  */
-#line 2319 "grammar.y"
+#line 2241 "grammar.y"
     { (yyval.specifier) = MkSpecifier(BOOL); ;}
     break;
 
   case 703:
 
 /* Line 1464 of yacc.c  */
-#line 2320 "grammar.y"
+#line 2242 "grammar.y"
     { (yyval.specifier) = MkSpecifier(_COMPLEX); ;}
     break;
 
   case 704:
 
 /* Line 1464 of yacc.c  */
-#line 2321 "grammar.y"
+#line 2243 "grammar.y"
     { (yyval.specifier) = MkSpecifier(_IMAGINARY); ;}
     break;
 
   case 705:
 
 /* Line 1464 of yacc.c  */
-#line 2322 "grammar.y"
+#line 2244 "grammar.y"
     { (yyval.specifier) = MkSpecifierTypeOf((yyvsp[(3) - (4)].exp)); ;}
     break;
 
   case 706:
 
 /* Line 1464 of yacc.c  */
-#line 2323 "grammar.y"
+#line 2245 "grammar.y"
     { (yyval.specifier) = MkSpecifierSubClass((yyvsp[(3) - (4)].specifier)); ;}
     break;
 
   case 707:
 
 /* Line 1464 of yacc.c  */
-#line 2324 "grammar.y"
-    { _DeclClass((yyvsp[(3) - (4)].id).string); (yyval.specifier) = MkSpecifierSubClass(MkSpecifierName((yyvsp[(3) - (4)].id).string)); FreeIdentifier((yyvsp[(3) - (4)].id)); ;}
+#line 2246 "grammar.y"
+    { _DeclClass((yyvsp[(3) - (4)].id)._class, (yyvsp[(3) - (4)].id).string); (yyval.specifier) = MkSpecifierSubClass(MkSpecifierName((yyvsp[(3) - (4)].id).string)); FreeIdentifier((yyvsp[(3) - (4)].id)); ;}
     break;
 
   case 708:
 
 /* Line 1464 of yacc.c  */
-#line 2325 "grammar.y"
+#line 2247 "grammar.y"
     { (yyval.specifier) = MkSpecifier(THISCLASS); ;}
     break;
 
   case 709:
 
 /* Line 1464 of yacc.c  */
-#line 2332 "grammar.y"
+#line 2254 "grammar.y"
     { (yyval.declarator) = MkStructDeclarator((yyvsp[(1) - (1)].declarator), null); (yyval.declarator).loc = (yyloc); ;}
     break;
 
   case 710:
 
 /* Line 1464 of yacc.c  */
-#line 2334 "grammar.y"
+#line 2256 "grammar.y"
     { (yyval.declarator) = MkStructDeclarator((yyvsp[(1) - (2)].declarator), null); (yyval.declarator).structDecl.attrib = (yyvsp[(2) - (2)].attrib); (yyval.declarator).loc = (yyloc); ;}
     break;
 
   case 711:
 
 /* Line 1464 of yacc.c  */
-#line 2336 "grammar.y"
+#line 2258 "grammar.y"
     { (yyval.declarator) = MkStructDeclarator(null, (yyvsp[(2) - (2)].exp));  (yyval.declarator).loc = (yyloc); ;}
     break;
 
   case 712:
 
 /* Line 1464 of yacc.c  */
-#line 2338 "grammar.y"
+#line 2260 "grammar.y"
     { (yyval.declarator) = MkStructDeclarator((yyvsp[(1) - (3)].declarator), (yyvsp[(3) - (3)].exp));  (yyval.declarator).loc = (yyloc); ;}
     break;
 
   case 713:
 
 /* Line 1464 of yacc.c  */
-#line 2340 "grammar.y"
+#line 2262 "grammar.y"
     { (yyval.declarator) = MkStructDeclarator((yyvsp[(1) - (5)].declarator), (yyvsp[(3) - (5)].exp)); (yyval.declarator).structDecl.posExp = (yyvsp[(5) - (5)].exp); (yyval.declarator).loc = (yyloc); ;}
     break;
 
   case 714:
 
 /* Line 1464 of yacc.c  */
-#line 2342 "grammar.y"
+#line 2264 "grammar.y"
     { (yyval.declarator) = MkStructDeclarator(null, (yyvsp[(2) - (2)].exp));  (yyval.declarator).loc = (yyloc); ;}
     break;
 
   case 715:
 
 /* Line 1464 of yacc.c  */
-#line 2344 "grammar.y"
+#line 2266 "grammar.y"
     { (yyval.declarator) = MkStructDeclarator((yyvsp[(1) - (3)].declarator), (yyvsp[(3) - (3)].exp));  (yyval.declarator).loc = (yyloc); ;}
     break;
 
   case 716:
 
 /* Line 1464 of yacc.c  */
-#line 2346 "grammar.y"
+#line 2268 "grammar.y"
     { (yyval.declarator) = MkStructDeclarator((yyvsp[(1) - (5)].declarator), (yyvsp[(3) - (5)].exp)); (yyval.declarator).structDecl.posExp = (yyvsp[(5) - (5)].exp); (yyval.declarator).loc = (yyloc); ;}
     break;
 
   case 717:
 
 /* Line 1464 of yacc.c  */
-#line 2348 "grammar.y"
+#line 2270 "grammar.y"
     { (yyval.declarator) = MkStructDeclarator((yyvsp[(1) - (5)].declarator), (yyvsp[(3) - (5)].exp)); (yyval.declarator).structDecl.posExp = (yyvsp[(5) - (5)].exp); (yyval.declarator).loc = (yyloc); ;}
     break;
 
   case 718:
 
 /* Line 1464 of yacc.c  */
-#line 2350 "grammar.y"
+#line 2272 "grammar.y"
     { (yyval.declarator) = MkStructDeclarator((yyvsp[(1) - (5)].declarator), (yyvsp[(3) - (5)].exp)); (yyval.declarator).structDecl.posExp = (yyvsp[(5) - (5)].exp); (yyval.declarator).loc = (yyloc); ;}
     break;
 
   case 719:
 
 /* Line 1464 of yacc.c  */
-#line 2354 "grammar.y"
+#line 2276 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].declarator)); ;}
     break;
 
   case 720:
 
 /* Line 1464 of yacc.c  */
-#line 2355 "grammar.y"
+#line 2277 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].declarator)); ;}
     break;
 
   case 721:
 
 /* Line 1464 of yacc.c  */
-#line 2360 "grammar.y"
+#line 2282 "grammar.y"
     {
          (yyval.specifier) = MkStructOrUnion((yyvsp[(1) - (2)].specifierType), (yyvsp[(2) - (2)].id), null);
          (yyval.specifier).addNameSpace = true;
@@ -18370,7 +18332,7 @@ yyreduce:
   case 722:
 
 /* Line 1464 of yacc.c  */
-#line 2366 "grammar.y"
+#line 2288 "grammar.y"
     {
          (yyval.specifier) = MkStructOrUnion((yyvsp[(1) - (2)].specifierType), MkIdentifier((yyvsp[(2) - (2)].specifier).name), null);
          (yyval.specifier).ctx = PushContext();
@@ -18381,7 +18343,7 @@ yyreduce:
   case 723:
 
 /* Line 1464 of yacc.c  */
-#line 2372 "grammar.y"
+#line 2294 "grammar.y"
     {
          (yyval.specifier) = MkStructOrUnion((yyvsp[(1) - (3)].specifierType), (yyvsp[(3) - (3)].id), null);
          (yyval.specifier).extDeclStruct = (yyvsp[(2) - (3)].extDecl);
@@ -18393,7 +18355,7 @@ yyreduce:
   case 724:
 
 /* Line 1464 of yacc.c  */
-#line 2379 "grammar.y"
+#line 2301 "grammar.y"
     {
          (yyval.specifier) = MkStructOrUnion((yyvsp[(1) - (3)].specifierType), MkIdentifier((yyvsp[(3) - (3)].specifier).name), null);
          (yyval.specifier).extDeclStruct = (yyvsp[(2) - (3)].extDecl);
@@ -18405,110 +18367,110 @@ yyreduce:
   case 725:
 
 /* Line 1464 of yacc.c  */
-#line 2388 "grammar.y"
+#line 2310 "grammar.y"
     { (yyval.specifier) = (yyvsp[(1) - (2)].specifier); (yyval.specifier).loc = (yyloc); ;}
     break;
 
   case 726:
 
 /* Line 1464 of yacc.c  */
-#line 2389 "grammar.y"
+#line 2311 "grammar.y"
     { (yyval.specifier) = (yyvsp[(1) - (3)].specifier); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS PopContext(curContext); ;}
     break;
 
   case 727:
 
 /* Line 1464 of yacc.c  */
-#line 2390 "grammar.y"
+#line 2312 "grammar.y"
     { (yyval.specifier) = MkStructOrUnion((yyvsp[(1) - (3)].specifierType), null, null); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 728:
 
 /* Line 1464 of yacc.c  */
-#line 2391 "grammar.y"
+#line 2313 "grammar.y"
     { (yyval.specifier) = MkStructOrUnion((yyvsp[(1) - (4)].specifierType), null, null); (yyval.specifier).extDeclStruct = (yyvsp[(2) - (4)].extDecl); (yyval.specifier).loc = (yyloc); POP_DEFAULT_ACCESS ;}
     break;
 
   case 729:
 
 /* Line 1464 of yacc.c  */
-#line 2395 "grammar.y"
+#line 2317 "grammar.y"
     { (yyval.specifier) = (yyvsp[(1) - (3)].specifier); AddStructDefinitions((yyvsp[(1) - (3)].specifier), (yyvsp[(3) - (3)].list));  POP_DEFAULT_ACCESS PopContext(curContext); ;}
     break;
 
   case 730:
 
 /* Line 1464 of yacc.c  */
-#line 2396 "grammar.y"
+#line 2318 "grammar.y"
     { (yyval.specifier) = (yyvsp[(1) - (3)].specifier); AddStructDefinitions((yyvsp[(1) - (3)].specifier), (yyvsp[(3) - (3)].list));  POP_DEFAULT_ACCESS PopContext(curContext); ;}
     break;
 
   case 731:
 
 /* Line 1464 of yacc.c  */
-#line 2397 "grammar.y"
+#line 2319 "grammar.y"
     { (yyval.specifier) = (yyvsp[(1) - (3)].specifier); POP_DEFAULT_ACCESS PopContext(curContext); ;}
     break;
 
   case 732:
 
 /* Line 1464 of yacc.c  */
-#line 2399 "grammar.y"
+#line 2321 "grammar.y"
     { (yyval.specifier) = MkStructOrUnion((yyvsp[(1) - (3)].specifierType), null, (yyvsp[(3) - (3)].list)); POP_DEFAULT_ACCESS ;}
     break;
 
   case 733:
 
 /* Line 1464 of yacc.c  */
-#line 2400 "grammar.y"
+#line 2322 "grammar.y"
     { (yyval.specifier) = MkStructOrUnion((yyvsp[(1) - (3)].specifierType), null, (yyvsp[(3) - (3)].list)); POP_DEFAULT_ACCESS ;}
     break;
 
   case 734:
 
 /* Line 1464 of yacc.c  */
-#line 2401 "grammar.y"
+#line 2323 "grammar.y"
     { (yyval.specifier) = MkStructOrUnion((yyvsp[(1) - (3)].specifierType), null, null); POP_DEFAULT_ACCESS ;}
     break;
 
   case 735:
 
 /* Line 1464 of yacc.c  */
-#line 2403 "grammar.y"
+#line 2325 "grammar.y"
     { (yyval.specifier) = MkStructOrUnion((yyvsp[(1) - (4)].specifierType), null, (yyvsp[(4) - (4)].list)); (yyval.specifier).extDeclStruct = (yyvsp[(2) - (4)].extDecl); POP_DEFAULT_ACCESS ;}
     break;
 
   case 736:
 
 /* Line 1464 of yacc.c  */
-#line 2404 "grammar.y"
+#line 2326 "grammar.y"
     { (yyval.specifier) = MkStructOrUnion((yyvsp[(1) - (4)].specifierType), null, (yyvsp[(4) - (4)].list)); (yyval.specifier).extDeclStruct = (yyvsp[(2) - (4)].extDecl); POP_DEFAULT_ACCESS ;}
     break;
 
   case 737:
 
 /* Line 1464 of yacc.c  */
-#line 2405 "grammar.y"
+#line 2327 "grammar.y"
     { (yyval.specifier) = MkStructOrUnion((yyvsp[(1) - (4)].specifierType), null, null); (yyval.specifier).extDeclStruct = (yyvsp[(2) - (4)].extDecl); POP_DEFAULT_ACCESS ;}
     break;
 
   case 738:
 
 /* Line 1464 of yacc.c  */
-#line 2409 "grammar.y"
+#line 2331 "grammar.y"
     { (yyval.specifier) = (yyvsp[(1) - (1)].specifier); POP_DEFAULT_ACCESS PopContext(curContext); ;}
     break;
 
   case 739:
 
 /* Line 1464 of yacc.c  */
-#line 2414 "grammar.y"
+#line 2336 "grammar.y"
     {
         (yyval.specifier) = (yyvsp[(1) - (1)].specifier);
         if(declMode)
         {
-           ((yyvsp[(1) - (1)].specifier).addNameSpace ? DeclClassAddNameSpace : DeclClass)((yyvsp[(1) - (1)].specifier).id.string);
+           ((yyvsp[(1) - (1)].specifier).addNameSpace ? DeclClassAddNameSpace : DeclClass)((yyvsp[(1) - (1)].specifier).id._class, (yyvsp[(1) - (1)].specifier).id.string);
         }
      ;}
     break;
@@ -18516,9 +18478,9 @@ yyreduce:
   case 740:
 
 /* Line 1464 of yacc.c  */
-#line 2422 "grammar.y"
+#line 2344 "grammar.y"
     {
-      Symbol symbol = ((yyvsp[(1) - (4)].specifier).addNameSpace ? DeclClassAddNameSpace : DeclClass)((yyvsp[(1) - (4)].specifier).id.string);
+      Symbol symbol = ((yyvsp[(1) - (4)].specifier).addNameSpace ? DeclClassAddNameSpace : DeclClass)((yyvsp[(1) - (4)].specifier).id._class, (yyvsp[(1) - (4)].specifier).id.string);
       (yyval.specifier) = (yyvsp[(1) - (4)].specifier);
       symbol.templateParams = (yyvsp[(3) - (4)].list);
    ;}
@@ -18527,7 +18489,7 @@ yyreduce:
   case 741:
 
 /* Line 1464 of yacc.c  */
-#line 2431 "grammar.y"
+#line 2353 "grammar.y"
     {
       (yyval.specifier) = (yyvsp[(1) - (3)].specifier);
       (yyval.specifier).baseSpecs = (yyvsp[(3) - (3)].list);
@@ -18538,35 +18500,35 @@ yyreduce:
   case 742:
 
 /* Line 1464 of yacc.c  */
-#line 2439 "grammar.y"
+#line 2361 "grammar.y"
     { (yyval.specifier) = (yyvsp[(1) - (2)].specifier); (yyval.specifier).loc = (yyloc); ;}
     break;
 
   case 743:
 
 /* Line 1464 of yacc.c  */
-#line 2441 "grammar.y"
+#line 2363 "grammar.y"
     { (yyval.specifier) = (yyvsp[(1) - (3)].specifier); POP_DEFAULT_ACCESS PopContext(curContext); ;}
     break;
 
   case 744:
 
 /* Line 1464 of yacc.c  */
-#line 2442 "grammar.y"
+#line 2364 "grammar.y"
     { (yyval.specifier) = (yyvsp[(1) - (3)].specifier); POP_DEFAULT_ACCESS PopContext(curContext); ;}
     break;
 
   case 745:
 
 /* Line 1464 of yacc.c  */
-#line 2443 "grammar.y"
+#line 2365 "grammar.y"
     { (yyval.specifier) = MkStructOrUnion((yyvsp[(1) - (3)].specifierType), null, null); POP_DEFAULT_ACCESS ;}
     break;
 
   case 746:
 
 /* Line 1464 of yacc.c  */
-#line 2448 "grammar.y"
+#line 2370 "grammar.y"
     {
       (yyval.specifier) = (yyvsp[(1) - (3)].specifier);
       (yyval.specifier).definitions = (yyvsp[(3) - (3)].list);
@@ -18578,7 +18540,7 @@ yyreduce:
   case 747:
 
 /* Line 1464 of yacc.c  */
-#line 2455 "grammar.y"
+#line 2377 "grammar.y"
     {
       (yyval.specifier) = (yyvsp[(1) - (3)].specifier);
       (yyval.specifier).definitions = (yyvsp[(3) - (3)].list);
@@ -18590,14 +18552,14 @@ yyreduce:
   case 748:
 
 /* Line 1464 of yacc.c  */
-#line 2462 "grammar.y"
+#line 2384 "grammar.y"
     { (yyval.specifier) = (yyvsp[(1) - (3)].specifier); POP_DEFAULT_ACCESS PopContext(curContext);;}
     break;
 
   case 749:
 
 /* Line 1464 of yacc.c  */
-#line 2465 "grammar.y"
+#line 2387 "grammar.y"
     {
         PopContext(curContext);
         if(!declMode)
@@ -18615,7 +18577,7 @@ yyreduce:
   case 750:
 
 /* Line 1464 of yacc.c  */
-#line 2478 "grammar.y"
+#line 2400 "grammar.y"
     {
         PopContext(curContext);
 
@@ -18634,495 +18596,485 @@ yyreduce:
   case 751:
 
 /* Line 1464 of yacc.c  */
-#line 2492 "grammar.y"
+#line 2414 "grammar.y"
     { (yyval.specifier) = (yyvsp[(1) - (3)].specifier); POP_DEFAULT_ACCESS PopContext(curContext); ;}
     break;
 
   case 752:
 
 /* Line 1464 of yacc.c  */
-#line 2495 "grammar.y"
+#line 2417 "grammar.y"
     { (yyval.specifier) = MkStructOrUnion((yyvsp[(1) - (3)].specifierType), null, (yyvsp[(3) - (3)].list)); POP_DEFAULT_ACCESS  ;}
     break;
 
   case 753:
 
 /* Line 1464 of yacc.c  */
-#line 2497 "grammar.y"
+#line 2419 "grammar.y"
     { (yyval.specifier) = MkStructOrUnion((yyvsp[(1) - (3)].specifierType), null, (yyvsp[(3) - (3)].list)); POP_DEFAULT_ACCESS ;}
     break;
 
   case 754:
 
 /* Line 1464 of yacc.c  */
-#line 2499 "grammar.y"
+#line 2421 "grammar.y"
     { (yyval.specifier) = MkStructOrUnion((yyvsp[(1) - (3)].specifierType), null, null); POP_DEFAULT_ACCESS ;}
     break;
 
   case 755:
 
 /* Line 1464 of yacc.c  */
-#line 2503 "grammar.y"
+#line 2425 "grammar.y"
     { (yyval.specifierType) = structSpecifier; memberAccessStack[++defaultMemberAccess] = publicAccess; ;}
     break;
 
   case 756:
 
 /* Line 1464 of yacc.c  */
-#line 2504 "grammar.y"
+#line 2426 "grammar.y"
     { (yyval.specifierType) = unionSpecifier; memberAccessStack[++defaultMemberAccess] = publicAccess; ;}
     break;
 
   case 757:
 
 /* Line 1464 of yacc.c  */
-#line 2508 "grammar.y"
+#line 2430 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 758:
 
 /* Line 1464 of yacc.c  */
-#line 2509 "grammar.y"
+#line 2431 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 759:
 
 /* Line 1464 of yacc.c  */
-#line 2510 "grammar.y"
+#line 2432 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 760:
 
 /* Line 1464 of yacc.c  */
-#line 2511 "grammar.y"
+#line 2433 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 761:
 
 /* Line 1464 of yacc.c  */
-#line 2512 "grammar.y"
+#line 2434 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 762:
 
 /* Line 1464 of yacc.c  */
-#line 2513 "grammar.y"
+#line 2435 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 763:
 
 /* Line 1464 of yacc.c  */
-#line 2514 "grammar.y"
+#line 2436 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 764:
 
 /* Line 1464 of yacc.c  */
-#line 2515 "grammar.y"
+#line 2437 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 765:
 
 /* Line 1464 of yacc.c  */
-#line 2519 "grammar.y"
+#line 2441 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 766:
 
 /* Line 1464 of yacc.c  */
-#line 2520 "grammar.y"
+#line 2442 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 767:
 
 /* Line 1464 of yacc.c  */
-#line 2521 "grammar.y"
+#line 2443 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 768:
 
 /* Line 1464 of yacc.c  */
-#line 2522 "grammar.y"
+#line 2444 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 769:
 
 /* Line 1464 of yacc.c  */
-#line 2523 "grammar.y"
+#line 2445 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 770:
 
 /* Line 1464 of yacc.c  */
-#line 2524 "grammar.y"
+#line 2446 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 771:
 
 /* Line 1464 of yacc.c  */
-#line 2525 "grammar.y"
+#line 2447 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 772:
 
 /* Line 1464 of yacc.c  */
-#line 2526 "grammar.y"
+#line 2448 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 773:
 
 /* Line 1464 of yacc.c  */
-#line 2527 "grammar.y"
+#line 2449 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 774:
 
 /* Line 1464 of yacc.c  */
-#line 2528 "grammar.y"
+#line 2450 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 775:
 
 /* Line 1464 of yacc.c  */
-#line 2532 "grammar.y"
+#line 2454 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 776:
 
 /* Line 1464 of yacc.c  */
-#line 2533 "grammar.y"
+#line 2455 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 777:
 
 /* Line 1464 of yacc.c  */
-#line 2534 "grammar.y"
+#line 2456 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 778:
 
 /* Line 1464 of yacc.c  */
-#line 2535 "grammar.y"
+#line 2457 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 779:
 
 /* Line 1464 of yacc.c  */
-#line 2536 "grammar.y"
+#line 2458 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 780:
 
 /* Line 1464 of yacc.c  */
-#line 2537 "grammar.y"
+#line 2459 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 781:
 
 /* Line 1464 of yacc.c  */
-#line 2538 "grammar.y"
+#line 2460 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 782:
 
 /* Line 1464 of yacc.c  */
-#line 2539 "grammar.y"
+#line 2461 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 783:
 
 /* Line 1464 of yacc.c  */
-#line 2540 "grammar.y"
+#line 2462 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 784:
 
 /* Line 1464 of yacc.c  */
-#line 2541 "grammar.y"
+#line 2463 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 785:
 
 /* Line 1464 of yacc.c  */
-#line 2545 "grammar.y"
+#line 2467 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 786:
 
 /* Line 1464 of yacc.c  */
-#line 2546 "grammar.y"
+#line 2468 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 787:
 
 /* Line 1464 of yacc.c  */
-#line 2547 "grammar.y"
+#line 2469 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 788:
 
 /* Line 1464 of yacc.c  */
-#line 2548 "grammar.y"
+#line 2470 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 789:
 
 /* Line 1464 of yacc.c  */
-#line 2549 "grammar.y"
+#line 2471 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 790:
 
 /* Line 1464 of yacc.c  */
-#line 2550 "grammar.y"
+#line 2472 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 791:
 
 /* Line 1464 of yacc.c  */
-#line 2551 "grammar.y"
+#line 2473 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 792:
 
 /* Line 1464 of yacc.c  */
-#line 2552 "grammar.y"
+#line 2474 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 793:
 
 /* Line 1464 of yacc.c  */
-#line 2553 "grammar.y"
+#line 2475 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 794:
 
 /* Line 1464 of yacc.c  */
-#line 2554 "grammar.y"
+#line 2476 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 795:
 
 /* Line 1464 of yacc.c  */
-#line 2555 "grammar.y"
+#line 2477 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 796:
 
 /* Line 1464 of yacc.c  */
-#line 2556 "grammar.y"
+#line 2478 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 797:
 
 /* Line 1464 of yacc.c  */
-#line 2560 "grammar.y"
+#line 2482 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 798:
 
 /* Line 1464 of yacc.c  */
-#line 2561 "grammar.y"
+#line 2483 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 799:
 
 /* Line 1464 of yacc.c  */
-#line 2562 "grammar.y"
+#line 2484 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 800:
 
 /* Line 1464 of yacc.c  */
-#line 2563 "grammar.y"
+#line 2485 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 801:
 
 /* Line 1464 of yacc.c  */
-#line 2564 "grammar.y"
+#line 2486 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 802:
 
 /* Line 1464 of yacc.c  */
-#line 2565 "grammar.y"
+#line 2487 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 803:
 
 /* Line 1464 of yacc.c  */
-#line 2566 "grammar.y"
+#line 2488 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 804:
 
 /* Line 1464 of yacc.c  */
-#line 2567 "grammar.y"
+#line 2489 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 805:
 
 /* Line 1464 of yacc.c  */
-#line 2568 "grammar.y"
+#line 2490 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 806:
 
 /* Line 1464 of yacc.c  */
-#line 2569 "grammar.y"
+#line 2491 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 807:
 
 /* Line 1464 of yacc.c  */
-#line 2573 "grammar.y"
+#line 2495 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 808:
 
 /* Line 1464 of yacc.c  */
-#line 2574 "grammar.y"
+#line 2496 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 809:
 
 /* Line 1464 of yacc.c  */
-#line 2578 "grammar.y"
+#line 2500 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), MkSpecifier(PRIVATE)); ;}
     break;
 
   case 810:
 
 /* Line 1464 of yacc.c  */
-#line 2579 "grammar.y"
+#line 2501 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), MkSpecifier(PUBLIC)); ;}
     break;
 
   case 811:
 
 /* Line 1464 of yacc.c  */
-#line 2580 "grammar.y"
+#line 2502 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 812:
 
 /* Line 1464 of yacc.c  */
-#line 2581 "grammar.y"
+#line 2503 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 813:
 
 /* Line 1464 of yacc.c  */
-#line 2582 "grammar.y"
+#line 2504 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 814:
 
 /* Line 1464 of yacc.c  */
-#line 2583 "grammar.y"
+#line 2505 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 815:
 
 /* Line 1464 of yacc.c  */
-#line 2584 "grammar.y"
+#line 2506 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 816:
 
 /* Line 1464 of yacc.c  */
-#line 2585 "grammar.y"
+#line 2507 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 817:
 
 /* Line 1464 of yacc.c  */
-#line 2587 "grammar.y"
-    { _DeclClass((yyvsp[(1) - (1)].id).string); (yyval.list) = MkListOne(MkSpecifierName((yyvsp[(1) - (1)].id).string)); FreeIdentifier((yyvsp[(1) - (1)].id)); ;}
+#line 2509 "grammar.y"
+    { _DeclClass((yyvsp[(1) - (1)].id)._class, (yyvsp[(1) - (1)].id).string); (yyval.list) = MkListOne(MkSpecifierName((yyvsp[(1) - (1)].id).string)); FreeIdentifier((yyvsp[(1) - (1)].id)); ;}
     break;
 
   case 818:
 
 /* Line 1464 of yacc.c  */
-#line 2588 "grammar.y"
-    { (yyval.list) = (yyvsp[(1) - (2)].list); _DeclClass((yyvsp[(2) - (2)].id).string); ListAdd((yyvsp[(1) - (2)].list), MkSpecifierName((yyvsp[(2) - (2)].id).string)); FreeIdentifier((yyvsp[(2) - (2)].id)); ;}
+#line 2510 "grammar.y"
+    { (yyval.list) = (yyvsp[(1) - (2)].list); _DeclClass((yyvsp[(2) - (2)].id)._class, (yyvsp[(2) - (2)].id).string); ListAdd((yyvsp[(1) - (2)].list), MkSpecifierName((yyvsp[(2) - (2)].id).string)); FreeIdentifier((yyvsp[(2) - (2)].id)); ;}
     break;
 
   case 819:
 
 /* Line 1464 of yacc.c  */
-#line 2591 "grammar.y"
+#line 2513 "grammar.y"
     {
-         // if($1._class && !$1._class.name)
-         if((yyvsp[(1) - (4)].id)._class)
-         {
-            char name[1024];
-            strcpy(name,  (yyvsp[(1) - (4)].id)._class.name ? (yyvsp[(1) - (4)].id)._class.name : "");
-            strcat(name, "::");
-            strcat(name, (yyvsp[(1) - (4)].id).string);
-            _DeclClass(name);
-         }
-         else
-            _DeclClass((yyvsp[(1) - (4)].id).string);
+         _DeclClass((yyvsp[(1) - (4)].id)._class, (yyvsp[(1) - (4)].id).string);
 
          (yyval.list) = MkList();
          ListAdd((yyval.list), MkSpecifierNameArgs((yyvsp[(1) - (4)].id).string, (yyvsp[(3) - (4)].list)));
@@ -19133,18 +19085,10 @@ yyreduce:
   case 820:
 
 /* Line 1464 of yacc.c  */
-#line 2609 "grammar.y"
+#line 2521 "grammar.y"
     {
          (yyval.list) = (yyvsp[(1) - (5)].list);
-         if((yyvsp[(2) - (5)].id)._class && !(yyvsp[(2) - (5)].id)._class.name)
-         {
-            char name[1024];
-            strcpy(name, "::");
-            strcat(name, (yyvsp[(2) - (5)].id).string);
-            _DeclClass(name);
-         }
-         else
-            _DeclClass((yyvsp[(2) - (5)].id).string);
+         _DeclClass((yyvsp[(2) - (5)].id)._class, (yyvsp[(2) - (5)].id).string);
          ListAdd((yyvsp[(1) - (5)].list), MkSpecifierNameArgs((yyvsp[(2) - (5)].id).string, (yyvsp[(4) - (5)].list)));
          FreeIdentifier((yyvsp[(2) - (5)].id));
       ;}
@@ -19153,82 +19097,72 @@ yyreduce:
   case 822:
 
 /* Line 1464 of yacc.c  */
-#line 2627 "grammar.y"
+#line 2531 "grammar.y"
     { (yyval.list) = MkListOne(MkStructOrUnion((yyvsp[(1) - (1)].specifierType), null, null)); POP_DEFAULT_ACCESS ;}
     break;
 
   case 823:
 
 /* Line 1464 of yacc.c  */
-#line 2631 "grammar.y"
+#line 2535 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 824:
 
 /* Line 1464 of yacc.c  */
-#line 2632 "grammar.y"
+#line 2536 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 825:
 
 /* Line 1464 of yacc.c  */
-#line 2633 "grammar.y"
+#line 2537 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 826:
 
 /* Line 1464 of yacc.c  */
-#line 2634 "grammar.y"
+#line 2538 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 827:
 
 /* Line 1464 of yacc.c  */
-#line 2635 "grammar.y"
+#line 2539 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 828:
 
 /* Line 1464 of yacc.c  */
-#line 2636 "grammar.y"
+#line 2540 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 829:
 
 /* Line 1464 of yacc.c  */
-#line 2637 "grammar.y"
+#line 2541 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), MkSpecifierName((yyvsp[(1) - (1)].id).string)); FreeIdentifier((yyvsp[(1) - (1)].id));}
     break;
 
   case 830:
 
 /* Line 1464 of yacc.c  */
-#line 2638 "grammar.y"
+#line 2542 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), MkSpecifierName((yyvsp[(2) - (2)].id).string)); FreeIdentifier((yyvsp[(2) - (2)].id));}
     break;
 
   case 831:
 
 /* Line 1464 of yacc.c  */
-#line 2640 "grammar.y"
+#line 2544 "grammar.y"
     {
-         // if($1._class && !$1._class.name)
-         if((yyvsp[(1) - (4)].id)._class)
-         {
-            char name[1024];
-            strcpy(name,  (yyvsp[(1) - (4)].id)._class.name ? (yyvsp[(1) - (4)].id)._class.name : "");
-            strcat(name, "::");
-            strcat(name, (yyvsp[(1) - (4)].id).string);
-            _DeclClass(name);
-         }
-         else
-            _DeclClass((yyvsp[(1) - (4)].id).string);
+         _DeclClass((yyvsp[(1) - (4)].id)._class, (yyvsp[(1) - (4)].id).string);
 
          (yyval.list) = MkList();
          ListAdd((yyval.list), MkSpecifierNameArgs((yyvsp[(1) - (4)].id).string, (yyvsp[(3) - (4)].list)));
@@ -19239,17 +19173,9 @@ yyreduce:
   case 832:
 
 /* Line 1464 of yacc.c  */
-#line 2658 "grammar.y"
+#line 2552 "grammar.y"
     {
-         if((yyvsp[(2) - (5)].id)._class && !(yyvsp[(2) - (5)].id)._class.name)
-         {
-            char name[1024];
-            strcpy(name, "::");
-            strcat(name, (yyvsp[(2) - (5)].id).string);
-            _DeclClass(name);
-         }
-         else
-            _DeclClass((yyvsp[(2) - (5)].id).string);
+         _DeclClass((yyvsp[(2) - (5)].id)._class, (yyvsp[(2) - (5)].id).string);
          ListAdd((yyvsp[(1) - (5)].list), MkSpecifierNameArgs((yyvsp[(2) - (5)].id).string, (yyvsp[(4) - (5)].list)));
          FreeIdentifier((yyvsp[(2) - (5)].id));
       ;}
@@ -19258,103 +19184,93 @@ yyreduce:
   case 833:
 
 /* Line 1464 of yacc.c  */
-#line 2674 "grammar.y"
+#line 2560 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 834:
 
 /* Line 1464 of yacc.c  */
-#line 2675 "grammar.y"
+#line 2561 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 835:
 
 /* Line 1464 of yacc.c  */
-#line 2676 "grammar.y"
+#line 2562 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 836:
 
 /* Line 1464 of yacc.c  */
-#line 2677 "grammar.y"
+#line 2563 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 837:
 
 /* Line 1464 of yacc.c  */
-#line 2678 "grammar.y"
+#line 2564 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 838:
 
 /* Line 1464 of yacc.c  */
-#line 2679 "grammar.y"
+#line 2565 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 839:
 
 /* Line 1464 of yacc.c  */
-#line 2680 "grammar.y"
+#line 2566 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 840:
 
 /* Line 1464 of yacc.c  */
-#line 2681 "grammar.y"
+#line 2567 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 841:
 
 /* Line 1464 of yacc.c  */
-#line 2682 "grammar.y"
+#line 2568 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 842:
 
 /* Line 1464 of yacc.c  */
-#line 2683 "grammar.y"
+#line 2569 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 843:
 
 /* Line 1464 of yacc.c  */
-#line 2684 "grammar.y"
+#line 2570 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), MkSpecifierName((yyvsp[(1) - (1)].id).string)); FreeIdentifier((yyvsp[(1) - (1)].id));}
     break;
 
   case 844:
 
 /* Line 1464 of yacc.c  */
-#line 2685 "grammar.y"
+#line 2571 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), MkSpecifierName((yyvsp[(2) - (2)].id).string)); FreeIdentifier((yyvsp[(2) - (2)].id));}
     break;
 
   case 845:
 
 /* Line 1464 of yacc.c  */
-#line 2687 "grammar.y"
+#line 2573 "grammar.y"
     {
-         // if($1._class && !$1._class.name)
-         if((yyvsp[(1) - (4)].id)._class)
-         {
-            char name[1024];
-            strcpy(name,  (yyvsp[(1) - (4)].id)._class.name ? (yyvsp[(1) - (4)].id)._class.name : "");
-            strcat(name, "::");
-            strcat(name, (yyvsp[(1) - (4)].id).string);
-            _DeclClass(name);
-         }
-         else
-            _DeclClass((yyvsp[(1) - (4)].id).string);
+         _DeclClass((yyvsp[(1) - (4)].id)._class, (yyvsp[(1) - (4)].id).string);
 
          (yyval.list) = MkList();
          ListAdd((yyval.list), MkSpecifierNameArgs((yyvsp[(1) - (4)].id).string, (yyvsp[(3) - (4)].list)));
@@ -19365,17 +19281,9 @@ yyreduce:
   case 846:
 
 /* Line 1464 of yacc.c  */
-#line 2705 "grammar.y"
+#line 2581 "grammar.y"
     {
-         if((yyvsp[(2) - (5)].id)._class && !(yyvsp[(2) - (5)].id)._class.name)
-         {
-            char name[1024];
-            strcpy(name, "::");
-            strcat(name, (yyvsp[(2) - (5)].id).string);
-            _DeclClass(name);
-         }
-         else
-            _DeclClass((yyvsp[(2) - (5)].id).string);
+         _DeclClass((yyvsp[(2) - (5)].id)._class, (yyvsp[(2) - (5)].id).string);
          ListAdd((yyvsp[(1) - (5)].list), MkSpecifierNameArgs((yyvsp[(2) - (5)].id).string, (yyvsp[(4) - (5)].list)));
          FreeIdentifier((yyvsp[(2) - (5)].id));
       ;}
@@ -19384,103 +19292,93 @@ yyreduce:
   case 847:
 
 /* Line 1464 of yacc.c  */
-#line 2721 "grammar.y"
+#line 2589 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 848:
 
 /* Line 1464 of yacc.c  */
-#line 2722 "grammar.y"
+#line 2590 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 849:
 
 /* Line 1464 of yacc.c  */
-#line 2723 "grammar.y"
+#line 2591 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 850:
 
 /* Line 1464 of yacc.c  */
-#line 2724 "grammar.y"
+#line 2592 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 851:
 
 /* Line 1464 of yacc.c  */
-#line 2725 "grammar.y"
+#line 2593 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 852:
 
 /* Line 1464 of yacc.c  */
-#line 2726 "grammar.y"
+#line 2594 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 853:
 
 /* Line 1464 of yacc.c  */
-#line 2727 "grammar.y"
+#line 2595 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 854:
 
 /* Line 1464 of yacc.c  */
-#line 2728 "grammar.y"
+#line 2596 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 855:
 
 /* Line 1464 of yacc.c  */
-#line 2729 "grammar.y"
+#line 2597 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].specifier)); ;}
     break;
 
   case 856:
 
 /* Line 1464 of yacc.c  */
-#line 2730 "grammar.y"
+#line 2598 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].specifier)); ;}
     break;
 
   case 857:
 
 /* Line 1464 of yacc.c  */
-#line 2731 "grammar.y"
+#line 2599 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), MkSpecifierName((yyvsp[(1) - (1)].id).string)); FreeIdentifier((yyvsp[(1) - (1)].id));}
     break;
 
   case 858:
 
 /* Line 1464 of yacc.c  */
-#line 2732 "grammar.y"
+#line 2600 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), MkSpecifierName((yyvsp[(2) - (2)].id).string)); FreeIdentifier((yyvsp[(2) - (2)].id));}
     break;
 
   case 859:
 
 /* Line 1464 of yacc.c  */
-#line 2734 "grammar.y"
+#line 2602 "grammar.y"
     {
-         // if($1._class && !$1._class.name)
-         if((yyvsp[(1) - (4)].id)._class)
-         {
-            char name[1024];
-            strcpy(name,  (yyvsp[(1) - (4)].id)._class.name ? (yyvsp[(1) - (4)].id)._class.name : "");
-            strcat(name, "::");
-            strcat(name, (yyvsp[(1) - (4)].id).string);
-            _DeclClass(name);
-         }
-         else
-            _DeclClass((yyvsp[(1) - (4)].id).string);
+         _DeclClass((yyvsp[(1) - (4)].id)._class, (yyvsp[(1) - (4)].id).string);
 
          (yyval.list) = MkList();
          ListAdd((yyval.list), MkSpecifierNameArgs((yyvsp[(1) - (4)].id).string, (yyvsp[(3) - (4)].list)));
@@ -19491,17 +19389,9 @@ yyreduce:
   case 860:
 
 /* Line 1464 of yacc.c  */
-#line 2752 "grammar.y"
+#line 2610 "grammar.y"
     {
-         if((yyvsp[(2) - (5)].id)._class && !(yyvsp[(2) - (5)].id)._class.name)
-         {
-            char name[1024];
-            strcpy(name, "::");
-            strcat(name, (yyvsp[(2) - (5)].id).string);
-            _DeclClass(name);
-         }
-         else
-            _DeclClass((yyvsp[(2) - (5)].id).string);
+         _DeclClass((yyvsp[(2) - (5)].id)._class, (yyvsp[(2) - (5)].id).string);
          ListAdd((yyvsp[(1) - (5)].list), MkSpecifierNameArgs((yyvsp[(2) - (5)].id).string, (yyvsp[(4) - (5)].list)));
          FreeIdentifier((yyvsp[(2) - (5)].id));
       ;}
@@ -19510,56 +19400,56 @@ yyreduce:
   case 861:
 
 /* Line 1464 of yacc.c  */
-#line 2768 "grammar.y"
+#line 2618 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), null); ;}
     break;
 
   case 862:
 
 /* Line 1464 of yacc.c  */
-#line 2769 "grammar.y"
+#line 2619 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), null); ;}
     break;
 
   case 863:
 
 /* Line 1464 of yacc.c  */
-#line 2773 "grammar.y"
+#line 2623 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), MkTypeName(null, MkDeclaratorIdentifier((yyvsp[(1) - (1)].id)))); ;}
     break;
 
   case 864:
 
 /* Line 1464 of yacc.c  */
-#line 2774 "grammar.y"
+#line 2624 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), MkTypeName(null, MkDeclaratorIdentifier((yyvsp[(3) - (3)].id)))); ;}
     break;
 
   case 865:
 
 /* Line 1464 of yacc.c  */
-#line 2775 "grammar.y"
+#line 2625 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), MkTypeName(null, MkDeclaratorIdentifier((yyvsp[(3) - (3)].id)))); ;}
     break;
 
   case 866:
 
 /* Line 1464 of yacc.c  */
-#line 2776 "grammar.y"
+#line 2626 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), MkTypeName(null, MkDeclaratorIdentifier((yyvsp[(3) - (3)].id)))); ;}
     break;
 
   case 867:
 
 /* Line 1464 of yacc.c  */
-#line 2777 "grammar.y"
+#line 2627 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), MkTypeName(null, MkDeclaratorIdentifier((yyvsp[(3) - (3)].id)))); ;}
     break;
 
   case 869:
 
 /* Line 1464 of yacc.c  */
-#line 2783 "grammar.y"
+#line 2633 "grammar.y"
     {
       char * colon = RSearchString((yyvsp[(1) - (1)].specifier).name, "::", strlen((yyvsp[(1) - (1)].specifier).name), true, false);
       String s = colon ? colon + 2 : (yyvsp[(1) - (1)].specifier).name;
@@ -19571,14 +19461,14 @@ yyreduce:
   case 870:
 
 /* Line 1464 of yacc.c  */
-#line 2789 "grammar.y"
+#line 2639 "grammar.y"
     { (yyval.declarator) = MkDeclaratorIdentifier(MkIdentifier("uint")); ;}
     break;
 
   case 871:
 
 /* Line 1464 of yacc.c  */
-#line 2792 "grammar.y"
+#line 2642 "grammar.y"
     {
          Declarator decl;
          char * colon = RSearchString((yyvsp[(1) - (4)].specifier).name, "::", strlen((yyvsp[(1) - (4)].specifier).name), true, false);
@@ -19592,7 +19482,7 @@ yyreduce:
   case 872:
 
 /* Line 1464 of yacc.c  */
-#line 2801 "grammar.y"
+#line 2651 "grammar.y"
     {
          Declarator decl;
          char * colon = RSearchString((yyvsp[(1) - (4)].specifier).name, "::", strlen((yyvsp[(1) - (4)].specifier).name), true, false);
@@ -19606,7 +19496,7 @@ yyreduce:
   case 873:
 
 /* Line 1464 of yacc.c  */
-#line 2810 "grammar.y"
+#line 2660 "grammar.y"
     {
          Declarator decl;
          char * colon = RSearchString((yyvsp[(1) - (4)].specifier).name, "::", strlen((yyvsp[(1) - (4)].specifier).name), true, false);
@@ -19620,7 +19510,7 @@ yyreduce:
   case 874:
 
 /* Line 1464 of yacc.c  */
-#line 2819 "grammar.y"
+#line 2669 "grammar.y"
     {
          Declarator decl;
          char * colon = RSearchString((yyvsp[(1) - (3)].specifier).name, "::", strlen((yyvsp[(1) - (3)].specifier).name), true, false);
@@ -19634,133 +19524,133 @@ yyreduce:
   case 875:
 
 /* Line 1464 of yacc.c  */
-#line 2827 "grammar.y"
+#line 2677 "grammar.y"
     { (yyval.declarator) = MkDeclaratorArray((yyvsp[(1) - (4)].declarator), (yyvsp[(3) - (4)].exp)); ;}
     break;
 
   case 876:
 
 /* Line 1464 of yacc.c  */
-#line 2828 "grammar.y"
+#line 2678 "grammar.y"
     { (yyval.declarator) = MkDeclaratorArray((yyvsp[(1) - (4)].declarator), (yyvsp[(3) - (4)].exp)); ;}
     break;
 
   case 877:
 
 /* Line 1464 of yacc.c  */
-#line 2829 "grammar.y"
+#line 2679 "grammar.y"
     { (yyval.declarator) = MkDeclaratorEnumArray((yyvsp[(1) - (4)].declarator), (yyvsp[(3) - (4)].specifier)); ;}
     break;
 
   case 878:
 
 /* Line 1464 of yacc.c  */
-#line 2830 "grammar.y"
+#line 2680 "grammar.y"
     { (yyval.declarator) = MkDeclaratorArray((yyvsp[(1) - (3)].declarator), null); ;}
     break;
 
   case 879:
 
 /* Line 1464 of yacc.c  */
-#line 2834 "grammar.y"
+#line 2684 "grammar.y"
     { (yyval.declarator) = MkDeclaratorIdentifier((yyvsp[(1) - (1)].id)); ;}
     break;
 
   case 880:
 
 /* Line 1464 of yacc.c  */
-#line 2835 "grammar.y"
+#line 2685 "grammar.y"
     { (yyval.declarator) = MkDeclaratorBrackets((yyvsp[(2) - (3)].declarator)); ;}
     break;
 
   case 881:
 
 /* Line 1464 of yacc.c  */
-#line 2836 "grammar.y"
+#line 2686 "grammar.y"
     { (yyval.declarator) = MkDeclaratorBrackets(MkDeclaratorExtended((yyvsp[(2) - (4)].extDecl), (yyvsp[(3) - (4)].declarator))); ;}
     break;
 
   case 882:
 
 /* Line 1464 of yacc.c  */
-#line 2837 "grammar.y"
+#line 2687 "grammar.y"
     { (yyval.declarator) = MkDeclaratorBrackets((yyvsp[(2) - (3)].declarator)); ;}
     break;
 
   case 883:
 
 /* Line 1464 of yacc.c  */
-#line 2838 "grammar.y"
+#line 2688 "grammar.y"
     { (yyval.declarator) = MkDeclaratorBrackets(MkDeclaratorExtended((yyvsp[(2) - (4)].extDecl), (yyvsp[(3) - (4)].declarator))); ;}
     break;
 
   case 884:
 
 /* Line 1464 of yacc.c  */
-#line 2839 "grammar.y"
+#line 2689 "grammar.y"
     { (yyval.declarator) = MkDeclaratorArray((yyvsp[(1) - (4)].declarator), (yyvsp[(3) - (4)].exp)); ;}
     break;
 
   case 885:
 
 /* Line 1464 of yacc.c  */
-#line 2840 "grammar.y"
+#line 2690 "grammar.y"
     { (yyval.declarator) = MkDeclaratorArray((yyvsp[(1) - (4)].declarator), (yyvsp[(3) - (4)].exp)); ;}
     break;
 
   case 886:
 
 /* Line 1464 of yacc.c  */
-#line 2841 "grammar.y"
+#line 2691 "grammar.y"
     { (yyval.declarator) = MkDeclaratorEnumArray((yyvsp[(1) - (4)].declarator), (yyvsp[(3) - (4)].specifier)); ;}
     break;
 
   case 887:
 
 /* Line 1464 of yacc.c  */
-#line 2842 "grammar.y"
+#line 2692 "grammar.y"
     { (yyval.declarator) = MkDeclaratorArray((yyvsp[(1) - (3)].declarator), null); ;}
     break;
 
   case 889:
 
 /* Line 1464 of yacc.c  */
-#line 2850 "grammar.y"
+#line 2700 "grammar.y"
     { (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (3)].declarator), (yyvsp[(2) - (3)].list)); ;}
     break;
 
   case 890:
 
 /* Line 1464 of yacc.c  */
-#line 2851 "grammar.y"
+#line 2701 "grammar.y"
     { (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (3)].declarator), (yyvsp[(2) - (3)].list)); ;}
     break;
 
   case 891:
 
 /* Line 1464 of yacc.c  */
-#line 2852 "grammar.y"
+#line 2702 "grammar.y"
     { (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (3)].declarator), (yyvsp[(2) - (3)].list)); ;}
     break;
 
   case 892:
 
 /* Line 1464 of yacc.c  */
-#line 2853 "grammar.y"
+#line 2703 "grammar.y"
     { (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (3)].declarator), (yyvsp[(2) - (3)].list)); ;}
     break;
 
   case 893:
 
 /* Line 1464 of yacc.c  */
-#line 2854 "grammar.y"
+#line 2704 "grammar.y"
     { (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (2)].declarator), null); ;}
     break;
 
   case 894:
 
 /* Line 1464 of yacc.c  */
-#line 2860 "grammar.y"
+#line 2710 "grammar.y"
     {
          (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (2)].declarator), (yyvsp[(2) - (2)].list));
          fileInput.Seek((yylsp[(1) - (2)]).end.pos, start);
@@ -19774,7 +19664,7 @@ yyreduce:
   case 895:
 
 /* Line 1464 of yacc.c  */
-#line 2869 "grammar.y"
+#line 2719 "grammar.y"
     {
          (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (2)].declarator), null);
          fileInput.Seek((yylsp[(1) - (2)]).end.pos, start);
@@ -19788,7 +19678,7 @@ yyreduce:
   case 896:
 
 /* Line 1464 of yacc.c  */
-#line 2878 "grammar.y"
+#line 2728 "grammar.y"
     {
          (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (3)].declarator), (yyvsp[(2) - (3)].list));
          fileInput.Seek((yylsp[(1) - (3)]).end.pos, start);
@@ -19802,7 +19692,7 @@ yyreduce:
   case 897:
 
 /* Line 1464 of yacc.c  */
-#line 2887 "grammar.y"
+#line 2737 "grammar.y"
     {
          (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (4)].declarator), null);
          fileInput.Seek((yylsp[(1) - (4)]).end.pos, start);
@@ -19818,42 +19708,42 @@ yyreduce:
   case 901:
 
 /* Line 1464 of yacc.c  */
-#line 2910 "grammar.y"
+#line 2760 "grammar.y"
     { (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (3)].declarator), (yyvsp[(2) - (3)].list)); ;}
     break;
 
   case 902:
 
 /* Line 1464 of yacc.c  */
-#line 2911 "grammar.y"
+#line 2761 "grammar.y"
     { (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (3)].declarator), (yyvsp[(2) - (3)].list)); ;}
     break;
 
   case 903:
 
 /* Line 1464 of yacc.c  */
-#line 2912 "grammar.y"
+#line 2762 "grammar.y"
     { (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (3)].declarator), (yyvsp[(2) - (3)].list)); ;}
     break;
 
   case 904:
 
 /* Line 1464 of yacc.c  */
-#line 2913 "grammar.y"
+#line 2763 "grammar.y"
     { (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (3)].declarator), (yyvsp[(2) - (3)].list)); ;}
     break;
 
   case 905:
 
 /* Line 1464 of yacc.c  */
-#line 2914 "grammar.y"
+#line 2764 "grammar.y"
     { (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (2)].declarator), null); ;}
     break;
 
   case 906:
 
 /* Line 1464 of yacc.c  */
-#line 2920 "grammar.y"
+#line 2770 "grammar.y"
     {
          (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (2)].declarator), (yyvsp[(2) - (2)].list));
          fileInput.Seek((yylsp[(1) - (2)]).end.pos, start);
@@ -19867,7 +19757,7 @@ yyreduce:
   case 907:
 
 /* Line 1464 of yacc.c  */
-#line 2929 "grammar.y"
+#line 2779 "grammar.y"
     {
          (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (2)].declarator), null);
          fileInput.Seek((yylsp[(1) - (2)]).end.pos, start);
@@ -19881,7 +19771,7 @@ yyreduce:
   case 908:
 
 /* Line 1464 of yacc.c  */
-#line 2938 "grammar.y"
+#line 2788 "grammar.y"
     {
          (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (3)].declarator), (yyvsp[(2) - (3)].list));
          fileInput.Seek((yylsp[(1) - (3)]).end.pos, start);
@@ -19895,7 +19785,7 @@ yyreduce:
   case 909:
 
 /* Line 1464 of yacc.c  */
-#line 2947 "grammar.y"
+#line 2797 "grammar.y"
     {
          (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (4)].declarator), null);
          fileInput.Seek((yylsp[(1) - (4)]).end.pos, start);
@@ -19911,28 +19801,28 @@ yyreduce:
   case 912:
 
 /* Line 1464 of yacc.c  */
-#line 3010 "grammar.y"
+#line 2860 "grammar.y"
     { (yyval.extDecl) = MkExtDeclString(CopyString(yytext)); ;}
     break;
 
   case 913:
 
 /* Line 1464 of yacc.c  */
-#line 3011 "grammar.y"
+#line 2861 "grammar.y"
     { (yyval.extDecl) = MkExtDeclString(CopyString(yytext)); ;}
     break;
 
   case 914:
 
 /* Line 1464 of yacc.c  */
-#line 3012 "grammar.y"
+#line 2862 "grammar.y"
     { (yyval.extDecl) = MkExtDeclAttrib((yyvsp[(1) - (1)].attrib)); ;}
     break;
 
   case 915:
 
 /* Line 1464 of yacc.c  */
-#line 3014 "grammar.y"
+#line 2864 "grammar.y"
     {
          char temp[1024];
          strcpy(temp, "__asm__(");
@@ -19946,532 +19836,532 @@ yyreduce:
   case 916:
 
 /* Line 1464 of yacc.c  */
-#line 3025 "grammar.y"
+#line 2875 "grammar.y"
     { (yyval.i) = ATTRIB; ;}
     break;
 
   case 917:
 
 /* Line 1464 of yacc.c  */
-#line 3026 "grammar.y"
+#line 2876 "grammar.y"
     { (yyval.i) = ATTRIB_DEP; ;}
     break;
 
   case 918:
 
 /* Line 1464 of yacc.c  */
-#line 3027 "grammar.y"
+#line 2877 "grammar.y"
     { (yyval.i) = __ATTRIB; ;}
     break;
 
   case 919:
 
 /* Line 1464 of yacc.c  */
-#line 3032 "grammar.y"
+#line 2882 "grammar.y"
     { (yyval.string)  = CopyString(yytext); ;}
     break;
 
   case 920:
 
 /* Line 1464 of yacc.c  */
-#line 3033 "grammar.y"
+#line 2883 "grammar.y"
     { (yyval.string)  = CopyString(yytext); ;}
     break;
 
   case 921:
 
 /* Line 1464 of yacc.c  */
-#line 3034 "grammar.y"
+#line 2884 "grammar.y"
     { (yyval.string)  = CopyString(yytext); ;}
     break;
 
   case 922:
 
 /* Line 1464 of yacc.c  */
-#line 3035 "grammar.y"
+#line 2885 "grammar.y"
     { (yyval.string)  = CopyString(yytext); ;}
     break;
 
   case 923:
 
 /* Line 1464 of yacc.c  */
-#line 3036 "grammar.y"
+#line 2886 "grammar.y"
     { (yyval.string)  = CopyString(yytext); ;}
     break;
 
   case 924:
 
 /* Line 1464 of yacc.c  */
-#line 3040 "grammar.y"
+#line 2890 "grammar.y"
     { (yyval.attribute) = MkAttribute((yyvsp[(1) - (1)].string), null); (yyval.attribute).loc = (yyloc); ;}
     break;
 
   case 925:
 
 /* Line 1464 of yacc.c  */
-#line 3041 "grammar.y"
+#line 2891 "grammar.y"
     { (yyval.attribute) = MkAttribute((yyvsp[(1) - (4)].string), MkExpBrackets((yyvsp[(3) - (4)].list))); (yyval.attribute).loc = (yyloc); ;}
     break;
 
   case 926:
 
 /* Line 1464 of yacc.c  */
-#line 3045 "grammar.y"
+#line 2895 "grammar.y"
     { (yyval.list) = MkListOne((yyvsp[(1) - (1)].attribute)); ;}
     break;
 
   case 927:
 
 /* Line 1464 of yacc.c  */
-#line 3046 "grammar.y"
+#line 2896 "grammar.y"
     { ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].attribute)); (yyval.list) = (yyvsp[(1) - (2)].list); ;}
     break;
 
   case 928:
 
 /* Line 1464 of yacc.c  */
-#line 3047 "grammar.y"
+#line 2897 "grammar.y"
     { ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].attribute)); (yyval.list) = (yyvsp[(1) - (3)].list); ;}
     break;
 
   case 929:
 
 /* Line 1464 of yacc.c  */
-#line 3051 "grammar.y"
+#line 2901 "grammar.y"
     { (yyval.attrib) = MkAttrib((yyvsp[(1) - (6)].i), (yyvsp[(4) - (6)].list)); (yyval.attrib).loc = (yyloc); ;}
     break;
 
   case 930:
 
 /* Line 1464 of yacc.c  */
-#line 3052 "grammar.y"
+#line 2902 "grammar.y"
     { (yyval.attrib) = MkAttrib((yyvsp[(1) - (5)].i), null); (yyval.attrib).loc = (yyloc); ;}
     break;
 
   case 931:
 
 /* Line 1464 of yacc.c  */
-#line 3056 "grammar.y"
+#line 2906 "grammar.y"
     { (yyval.declarator) = MkDeclaratorBrackets((yyvsp[(2) - (3)].declarator)); ;}
     break;
 
   case 932:
 
 /* Line 1464 of yacc.c  */
-#line 3057 "grammar.y"
+#line 2907 "grammar.y"
     { (yyval.declarator) = MkDeclaratorBrackets(MkDeclaratorExtended((yyvsp[(2) - (4)].extDecl), (yyvsp[(3) - (4)].declarator))); ;}
     break;
 
   case 933:
 
 /* Line 1464 of yacc.c  */
-#line 3058 "grammar.y"
+#line 2908 "grammar.y"
     { (yyval.declarator) = MkDeclaratorArray(null, null); ;}
     break;
 
   case 934:
 
 /* Line 1464 of yacc.c  */
-#line 3059 "grammar.y"
+#line 2909 "grammar.y"
     { (yyval.declarator) = MkDeclaratorArray(null, (yyvsp[(2) - (3)].exp)); ;}
     break;
 
   case 935:
 
 /* Line 1464 of yacc.c  */
-#line 3060 "grammar.y"
+#line 2910 "grammar.y"
     { (yyval.declarator) = MkDeclaratorArray(null, (yyvsp[(2) - (3)].exp)); ;}
     break;
 
   case 936:
 
 /* Line 1464 of yacc.c  */
-#line 3061 "grammar.y"
+#line 2911 "grammar.y"
     { (yyval.declarator) = MkDeclaratorEnumArray(null, (yyvsp[(2) - (3)].specifier)); ;}
     break;
 
   case 937:
 
 /* Line 1464 of yacc.c  */
-#line 3062 "grammar.y"
+#line 2912 "grammar.y"
     { (yyval.declarator) = MkDeclaratorArray((yyvsp[(1) - (3)].declarator), null); ;}
     break;
 
   case 938:
 
 /* Line 1464 of yacc.c  */
-#line 3063 "grammar.y"
+#line 2913 "grammar.y"
     { (yyval.declarator) = MkDeclaratorArray((yyvsp[(1) - (4)].declarator), (yyvsp[(3) - (4)].exp)); ;}
     break;
 
   case 939:
 
 /* Line 1464 of yacc.c  */
-#line 3064 "grammar.y"
+#line 2914 "grammar.y"
     { (yyval.declarator) = MkDeclaratorEnumArray((yyvsp[(1) - (4)].declarator), (yyvsp[(3) - (4)].specifier)); ;}
     break;
 
   case 940:
 
 /* Line 1464 of yacc.c  */
-#line 3065 "grammar.y"
+#line 2915 "grammar.y"
     { (yyval.declarator) = MkDeclaratorArray((yyvsp[(1) - (4)].declarator), (yyvsp[(3) - (4)].exp)); ;}
     break;
 
   case 941:
 
 /* Line 1464 of yacc.c  */
-#line 3066 "grammar.y"
+#line 2916 "grammar.y"
     { (yyval.declarator) = MkDeclaratorFunction(null, null); ;}
     break;
 
   case 942:
 
 /* Line 1464 of yacc.c  */
-#line 3067 "grammar.y"
+#line 2917 "grammar.y"
     { (yyval.declarator) = MkDeclaratorFunction(null, (yyvsp[(2) - (3)].list)); ;}
     break;
 
   case 943:
 
 /* Line 1464 of yacc.c  */
-#line 3068 "grammar.y"
+#line 2918 "grammar.y"
     { (yyval.declarator) = MkDeclaratorFunction(null, (yyvsp[(2) - (3)].list)); ;}
     break;
 
   case 944:
 
 /* Line 1464 of yacc.c  */
-#line 3069 "grammar.y"
+#line 2919 "grammar.y"
     { (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (3)].declarator), null); ;}
     break;
 
   case 945:
 
 /* Line 1464 of yacc.c  */
-#line 3070 "grammar.y"
+#line 2920 "grammar.y"
     { (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (4)].declarator), (yyvsp[(3) - (4)].list)); ;}
     break;
 
   case 946:
 
 /* Line 1464 of yacc.c  */
-#line 3071 "grammar.y"
+#line 2921 "grammar.y"
     { (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (4)].declarator), (yyvsp[(3) - (4)].list)); ;}
     break;
 
   case 947:
 
 /* Line 1464 of yacc.c  */
-#line 3075 "grammar.y"
+#line 2925 "grammar.y"
     { (yyval.declarator) = MkDeclaratorBrackets((yyvsp[(2) - (3)].declarator)); ;}
     break;
 
   case 948:
 
 /* Line 1464 of yacc.c  */
-#line 3076 "grammar.y"
+#line 2926 "grammar.y"
     { (yyval.declarator) = MkDeclaratorBrackets(MkDeclaratorExtended((yyvsp[(2) - (4)].extDecl), (yyvsp[(3) - (4)].declarator))); ;}
     break;
 
   case 949:
 
 /* Line 1464 of yacc.c  */
-#line 3077 "grammar.y"
+#line 2927 "grammar.y"
     { (yyval.declarator) = MkDeclaratorFunction(null, null); ;}
     break;
 
   case 950:
 
 /* Line 1464 of yacc.c  */
-#line 3078 "grammar.y"
+#line 2928 "grammar.y"
     { (yyval.declarator) = MkDeclaratorFunction(null, (yyvsp[(2) - (3)].list)); ;}
     break;
 
   case 951:
 
 /* Line 1464 of yacc.c  */
-#line 3079 "grammar.y"
+#line 2929 "grammar.y"
     { (yyval.declarator) = MkDeclaratorFunction(null, (yyvsp[(2) - (3)].list)); ;}
     break;
 
   case 952:
 
 /* Line 1464 of yacc.c  */
-#line 3080 "grammar.y"
+#line 2930 "grammar.y"
     { (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (3)].declarator), null); ;}
     break;
 
   case 953:
 
 /* Line 1464 of yacc.c  */
-#line 3081 "grammar.y"
+#line 2931 "grammar.y"
     { (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (4)].declarator), (yyvsp[(3) - (4)].list)); ;}
     break;
 
   case 954:
 
 /* Line 1464 of yacc.c  */
-#line 3082 "grammar.y"
+#line 2932 "grammar.y"
     { (yyval.declarator) = MkDeclaratorFunction((yyvsp[(1) - (4)].declarator), (yyvsp[(3) - (4)].list)); ;}
     break;
 
   case 955:
 
 /* Line 1464 of yacc.c  */
-#line 3086 "grammar.y"
+#line 2936 "grammar.y"
     { (yyval.pointer) = MkPointer(null, null); ;}
     break;
 
   case 956:
 
 /* Line 1464 of yacc.c  */
-#line 3087 "grammar.y"
+#line 2937 "grammar.y"
     { (yyval.pointer) = MkPointer((yyvsp[(2) - (2)].list), null); ;}
     break;
 
   case 957:
 
 /* Line 1464 of yacc.c  */
-#line 3088 "grammar.y"
+#line 2938 "grammar.y"
     { (yyval.pointer) = MkPointer(null, (yyvsp[(2) - (2)].pointer)); ;}
     break;
 
   case 958:
 
 /* Line 1464 of yacc.c  */
-#line 3089 "grammar.y"
+#line 2939 "grammar.y"
     { (yyval.pointer) = MkPointer((yyvsp[(2) - (3)].list), (yyvsp[(3) - (3)].pointer)); ;}
     break;
 
   case 959:
 
 /* Line 1464 of yacc.c  */
-#line 3093 "grammar.y"
+#line 2943 "grammar.y"
     { (yyval.declarator) = MkDeclaratorPointer((yyvsp[(1) - (1)].pointer), null); ;}
     break;
 
   case 961:
 
 /* Line 1464 of yacc.c  */
-#line 3095 "grammar.y"
+#line 2945 "grammar.y"
     { (yyval.declarator) = MkDeclaratorPointer((yyvsp[(1) - (2)].pointer), (yyvsp[(2) - (2)].declarator)); ;}
     break;
 
   case 962:
 
 /* Line 1464 of yacc.c  */
-#line 3096 "grammar.y"
+#line 2946 "grammar.y"
     { (yyval.declarator) = MkDeclaratorExtended((yyvsp[(1) - (2)].extDecl), MkDeclaratorPointer((yyvsp[(2) - (2)].pointer), null)); ;}
     break;
 
   case 963:
 
 /* Line 1464 of yacc.c  */
-#line 3097 "grammar.y"
+#line 2947 "grammar.y"
     { (yyval.declarator) = MkDeclaratorExtended((yyvsp[(1) - (3)].extDecl), MkDeclaratorPointer((yyvsp[(2) - (3)].pointer), (yyvsp[(3) - (3)].declarator))); ;}
     break;
 
   case 964:
 
 /* Line 1464 of yacc.c  */
-#line 3101 "grammar.y"
+#line 2951 "grammar.y"
     { (yyval.declarator) = MkDeclaratorPointer((yyvsp[(1) - (1)].pointer), null); ;}
     break;
 
   case 966:
 
 /* Line 1464 of yacc.c  */
-#line 3103 "grammar.y"
+#line 2953 "grammar.y"
     { (yyval.declarator) = MkDeclaratorPointer((yyvsp[(1) - (2)].pointer), (yyvsp[(2) - (2)].declarator)); ;}
     break;
 
   case 967:
 
 /* Line 1464 of yacc.c  */
-#line 3104 "grammar.y"
+#line 2954 "grammar.y"
     { (yyval.declarator) = MkDeclaratorExtended((yyvsp[(1) - (2)].extDecl), MkDeclaratorPointer((yyvsp[(2) - (2)].pointer), null)); ;}
     break;
 
   case 968:
 
 /* Line 1464 of yacc.c  */
-#line 3105 "grammar.y"
+#line 2955 "grammar.y"
     { (yyval.declarator) = MkDeclaratorExtended((yyvsp[(1) - (3)].extDecl), MkDeclaratorPointer((yyvsp[(2) - (3)].pointer), (yyvsp[(3) - (3)].declarator))); ;}
     break;
 
   case 970:
 
 /* Line 1464 of yacc.c  */
-#line 3111 "grammar.y"
+#line 2961 "grammar.y"
     { (yyval.declarator) = MkDeclaratorPointer((yyvsp[(1) - (2)].pointer), (yyvsp[(2) - (2)].declarator)); ;}
     break;
 
   case 971:
 
 /* Line 1464 of yacc.c  */
-#line 3113 "grammar.y"
+#line 2963 "grammar.y"
     { (yyval.declarator) = MkDeclaratorExtended((yyvsp[(1) - (3)].extDecl), MkDeclaratorPointer((yyvsp[(2) - (3)].pointer), (yyvsp[(3) - (3)].declarator))); ;}
     break;
 
   case 972:
 
 /* Line 1464 of yacc.c  */
-#line 3115 "grammar.y"
+#line 2965 "grammar.y"
     { (yyval.declarator) = MkDeclaratorExtendedEnd((yyvsp[(2) - (2)].extDecl), (yyvsp[(1) - (2)].declarator)); ;}
     break;
 
   case 973:
 
 /* Line 1464 of yacc.c  */
-#line 3117 "grammar.y"
+#line 2967 "grammar.y"
     { (yyval.declarator) = MkDeclaratorExtendedEnd((yyvsp[(2) - (2)].extDecl), (yyvsp[(1) - (2)].declarator)); ;}
     break;
 
   case 975:
 
 /* Line 1464 of yacc.c  */
-#line 3123 "grammar.y"
+#line 2973 "grammar.y"
     { (yyval.declarator) = MkDeclaratorPointer((yyvsp[(1) - (2)].pointer), (yyvsp[(2) - (2)].declarator)); ;}
     break;
 
   case 976:
 
 /* Line 1464 of yacc.c  */
-#line 3125 "grammar.y"
+#line 2975 "grammar.y"
     { (yyval.declarator) = MkDeclaratorExtended((yyvsp[(1) - (3)].extDecl), MkDeclaratorPointer((yyvsp[(2) - (3)].pointer), (yyvsp[(3) - (3)].declarator))); ;}
     break;
 
   case 977:
 
 /* Line 1464 of yacc.c  */
-#line 3127 "grammar.y"
+#line 2977 "grammar.y"
     { (yyval.declarator) = MkDeclaratorExtendedEnd((yyvsp[(2) - (2)].extDecl), (yyvsp[(1) - (2)].declarator)); ;}
     break;
 
   case 979:
 
 /* Line 1464 of yacc.c  */
-#line 3132 "grammar.y"
+#line 2982 "grammar.y"
     { (yyval.declarator) = MkDeclaratorPointer((yyvsp[(1) - (2)].pointer), (yyvsp[(2) - (2)].declarator)); ;}
     break;
 
   case 980:
 
 /* Line 1464 of yacc.c  */
-#line 3133 "grammar.y"
+#line 2983 "grammar.y"
     { (yyval.declarator) = MkDeclaratorExtended((yyvsp[(1) - (3)].extDecl), MkDeclaratorPointer((yyvsp[(2) - (3)].pointer), (yyvsp[(3) - (3)].declarator))); ;}
     break;
 
   case 981:
 
 /* Line 1464 of yacc.c  */
-#line 3134 "grammar.y"
+#line 2984 "grammar.y"
     { (yyval.declarator) = MkDeclaratorPointer((yyvsp[(1) - (3)].pointer), MkDeclaratorExtended((yyvsp[(2) - (3)].extDecl), (yyvsp[(3) - (3)].declarator))); ;}
     break;
 
   case 983:
 
 /* Line 1464 of yacc.c  */
-#line 3139 "grammar.y"
+#line 2989 "grammar.y"
     { (yyval.declarator) = MkDeclaratorPointer((yyvsp[(1) - (2)].pointer), (yyvsp[(2) - (2)].declarator)); ;}
     break;
 
   case 984:
 
 /* Line 1464 of yacc.c  */
-#line 3140 "grammar.y"
+#line 2990 "grammar.y"
     { (yyval.declarator) = MkDeclaratorExtended((yyvsp[(1) - (3)].extDecl), MkDeclaratorPointer((yyvsp[(2) - (3)].pointer), (yyvsp[(3) - (3)].declarator))); ;}
     break;
 
   case 985:
 
 /* Line 1464 of yacc.c  */
-#line 3141 "grammar.y"
+#line 2991 "grammar.y"
     { (yyval.declarator) = MkDeclaratorPointer((yyvsp[(1) - (3)].pointer), MkDeclaratorExtended((yyvsp[(2) - (3)].extDecl), (yyvsp[(3) - (3)].declarator))); ;}
     break;
 
   case 987:
 
 /* Line 1464 of yacc.c  */
-#line 3146 "grammar.y"
+#line 2996 "grammar.y"
     { (yyval.declarator) = MkDeclaratorPointer((yyvsp[(1) - (2)].pointer), (yyvsp[(2) - (2)].declarator)); ;}
     break;
 
   case 988:
 
 /* Line 1464 of yacc.c  */
-#line 3147 "grammar.y"
+#line 2997 "grammar.y"
     { (yyval.declarator) = MkDeclaratorExtended((yyvsp[(1) - (3)].extDecl), MkDeclaratorPointer((yyvsp[(2) - (3)].pointer), (yyvsp[(3) - (3)].declarator))); ;}
     break;
 
   case 989:
 
 /* Line 1464 of yacc.c  */
-#line 3148 "grammar.y"
+#line 2998 "grammar.y"
     { (yyval.declarator) = MkDeclaratorPointer((yyvsp[(1) - (3)].pointer), MkDeclaratorExtended((yyvsp[(2) - (3)].extDecl), (yyvsp[(3) - (3)].declarator))); ;}
     break;
 
   case 991:
 
 /* Line 1464 of yacc.c  */
-#line 3153 "grammar.y"
+#line 3003 "grammar.y"
     { (yyval.declarator) = MkDeclaratorPointer((yyvsp[(1) - (2)].pointer), (yyvsp[(2) - (2)].declarator)); ;}
     break;
 
   case 992:
 
 /* Line 1464 of yacc.c  */
-#line 3154 "grammar.y"
+#line 3004 "grammar.y"
     { (yyval.declarator) = MkDeclaratorExtended((yyvsp[(1) - (3)].extDecl), MkDeclaratorPointer((yyvsp[(2) - (3)].pointer), (yyvsp[(3) - (3)].declarator))); ;}
     break;
 
   case 993:
 
 /* Line 1464 of yacc.c  */
-#line 3155 "grammar.y"
+#line 3005 "grammar.y"
     { (yyval.declarator) = MkDeclaratorPointer((yyvsp[(1) - (3)].pointer), MkDeclaratorExtended((yyvsp[(2) - (3)].extDecl), (yyvsp[(3) - (3)].declarator))); ;}
     break;
 
   case 995:
 
 /* Line 1464 of yacc.c  */
-#line 3160 "grammar.y"
+#line 3010 "grammar.y"
     { (yyval.declarator) = MkDeclaratorPointer((yyvsp[(1) - (2)].pointer), (yyvsp[(2) - (2)].declarator)); ;}
     break;
 
   case 996:
 
 /* Line 1464 of yacc.c  */
-#line 3161 "grammar.y"
+#line 3011 "grammar.y"
     { (yyval.declarator) = MkDeclaratorExtended((yyvsp[(1) - (3)].extDecl), MkDeclaratorPointer((yyvsp[(2) - (3)].pointer), (yyvsp[(3) - (3)].declarator))); ;}
     break;
 
   case 997:
 
 /* Line 1464 of yacc.c  */
-#line 3162 "grammar.y"
+#line 3012 "grammar.y"
     { (yyval.declarator) = MkDeclaratorPointer((yyvsp[(1) - (3)].pointer), MkDeclaratorExtended((yyvsp[(2) - (3)].extDecl), (yyvsp[(3) - (3)].declarator))); ;}
     break;
 
   case 998:
 
 /* Line 1464 of yacc.c  */
-#line 3166 "grammar.y"
+#line 3016 "grammar.y"
     { (yyval.initializer) = MkInitializerAssignment((yyvsp[(1) - (1)].exp)); (yyval.initializer).loc = (yyloc); ;}
     break;
 
   case 999:
 
 /* Line 1464 of yacc.c  */
-#line 3167 "grammar.y"
+#line 3017 "grammar.y"
     { (yyval.initializer) = MkInitializerList((yyvsp[(2) - (3)].list)); (yyval.initializer).loc = (yyloc); ;}
     break;
 
   case 1000:
 
 /* Line 1464 of yacc.c  */
-#line 3169 "grammar.y"
+#line 3019 "grammar.y"
     {
          Compiler_Warning($"extra comma\n");
          (yyval.initializer) = MkInitializerList((yyvsp[(2) - (4)].list));
@@ -20490,28 +20380,28 @@ yyreduce:
   case 1001:
 
 /* Line 1464 of yacc.c  */
-#line 3185 "grammar.y"
+#line 3035 "grammar.y"
     { (yyval.initializer) = MkInitializerAssignment((yyvsp[(1) - (1)].exp)); (yyval.initializer).loc = (yyloc); ;}
     break;
 
   case 1002:
 
 /* Line 1464 of yacc.c  */
-#line 3186 "grammar.y"
+#line 3036 "grammar.y"
     { (yyval.initializer) = MkInitializerList((yyvsp[(2) - (4)].list)); (yyval.initializer).loc = (yyloc); ;}
     break;
 
   case 1003:
 
 /* Line 1464 of yacc.c  */
-#line 3187 "grammar.y"
+#line 3037 "grammar.y"
     { yyerror(); (yyval.initializer) = MkInitializerList((yyvsp[(2) - (2)].list)); (yyval.initializer).loc = (yyloc); ;}
     break;
 
   case 1004:
 
 /* Line 1464 of yacc.c  */
-#line 3189 "grammar.y"
+#line 3039 "grammar.y"
     {
          (yyval.initializer) = MkInitializerList((yyvsp[(2) - (5)].list));
          (yyval.initializer).loc = (yyloc);
@@ -20529,7 +20419,7 @@ yyreduce:
   case 1005:
 
 /* Line 1464 of yacc.c  */
-#line 3202 "grammar.y"
+#line 3052 "grammar.y"
     {
          yyerror();
          (yyval.initializer) = MkInitializerList((yyvsp[(2) - (3)].list));
@@ -20548,140 +20438,140 @@ yyreduce:
   case 1006:
 
 /* Line 1464 of yacc.c  */
-#line 3218 "grammar.y"
+#line 3068 "grammar.y"
     { (yyval.initializer) = MkInitializerAssignment((yyvsp[(1) - (1)].exp)); (yyval.initializer).loc = (yyloc); ;}
     break;
 
   case 1007:
 
 /* Line 1464 of yacc.c  */
-#line 3220 "grammar.y"
+#line 3070 "grammar.y"
     { (yyval.initializer) = MkInitializerAssignment((yyvsp[(1) - (1)].exp)); (yyval.initializer).loc = (yyloc); ;}
     break;
 
   case 1008:
 
 /* Line 1464 of yacc.c  */
-#line 3224 "grammar.y"
+#line 3074 "grammar.y"
     { (yyval.initializer) = MkInitializerAssignment((yyvsp[(1) - (1)].exp)); (yyval.initializer).loc = (yyloc); ;}
     break;
 
   case 1009:
 
 /* Line 1464 of yacc.c  */
-#line 3225 "grammar.y"
+#line 3075 "grammar.y"
     { (yyval.initializer) = MkInitializerAssignment((yyvsp[(1) - (1)].exp)); (yyval.initializer).loc = (yyloc); ;}
     break;
 
   case 1010:
 
 /* Line 1464 of yacc.c  */
-#line 3229 "grammar.y"
+#line 3079 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].initializer)); ;}
     break;
 
   case 1011:
 
 /* Line 1464 of yacc.c  */
-#line 3230 "grammar.y"
+#line 3080 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].initializer)); ;}
     break;
 
   case 1012:
 
 /* Line 1464 of yacc.c  */
-#line 3231 "grammar.y"
+#line 3081 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].initializer)); ;}
     break;
 
   case 1013:
 
 /* Line 1464 of yacc.c  */
-#line 3232 "grammar.y"
+#line 3082 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].initializer)); ;}
     break;
 
   case 1014:
 
 /* Line 1464 of yacc.c  */
-#line 3235 "grammar.y"
+#line 3085 "grammar.y"
     { yyerror(); (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].initializer)); ;}
     break;
 
   case 1015:
 
 /* Line 1464 of yacc.c  */
-#line 3236 "grammar.y"
+#line 3086 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].initializer)); ;}
     break;
 
   case 1016:
 
 /* Line 1464 of yacc.c  */
-#line 3240 "grammar.y"
+#line 3090 "grammar.y"
     { (yyval.initDeclarator) = MkInitDeclarator((yyvsp[(1) - (1)].declarator), null); (yyval.initDeclarator).loc = (yyloc); ;}
     break;
 
   case 1017:
 
 /* Line 1464 of yacc.c  */
-#line 3241 "grammar.y"
+#line 3091 "grammar.y"
     { (yyval.initDeclarator) = MkInitDeclarator((yyvsp[(1) - (1)].declarator), null); (yyval.initDeclarator).loc = (yyloc); ;}
     break;
 
   case 1018:
 
 /* Line 1464 of yacc.c  */
-#line 3242 "grammar.y"
+#line 3092 "grammar.y"
     { (yyval.initDeclarator) = MkInitDeclarator((yyvsp[(1) - (3)].declarator), (yyvsp[(3) - (3)].initializer)); (yyval.initDeclarator).loc = (yyloc); (yyval.initDeclarator).initializer.loc.start = (yylsp[(2) - (3)]).end; ;}
     break;
 
   case 1019:
 
 /* Line 1464 of yacc.c  */
-#line 3246 "grammar.y"
+#line 3096 "grammar.y"
     { (yyval.initDeclarator) = MkInitDeclarator((yyvsp[(1) - (2)].declarator), null); (yyval.initDeclarator).loc = (yyloc); ;}
     break;
 
   case 1020:
 
 /* Line 1464 of yacc.c  */
-#line 3250 "grammar.y"
+#line 3100 "grammar.y"
     { (yyval.initDeclarator) = MkInitDeclarator((yyvsp[(1) - (3)].declarator), (yyvsp[(3) - (3)].initializer)); (yyval.initDeclarator).loc = (yyloc); (yyval.initDeclarator).initializer.loc.start = (yylsp[(2) - (3)]).end; ;}
     break;
 
   case 1021:
 
 /* Line 1464 of yacc.c  */
-#line 3254 "grammar.y"
+#line 3104 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].initDeclarator)); ;}
     break;
 
   case 1022:
 
 /* Line 1464 of yacc.c  */
-#line 3255 "grammar.y"
+#line 3105 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].initDeclarator)); ;}
     break;
 
   case 1023:
 
 /* Line 1464 of yacc.c  */
-#line 3256 "grammar.y"
+#line 3106 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("uint")), null)); ListAdd((yyval.list), (yyvsp[(3) - (3)].initDeclarator)); ;}
     break;
 
   case 1024:
 
 /* Line 1464 of yacc.c  */
-#line 3257 "grammar.y"
+#line 3107 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("int64")), null)); ListAdd((yyval.list), (yyvsp[(3) - (3)].initDeclarator)); ;}
     break;
 
   case 1025:
 
 /* Line 1464 of yacc.c  */
-#line 3259 "grammar.y"
+#line 3109 "grammar.y"
     {
       char * colon = RSearchString((yyvsp[(1) - (3)].specifier).name, "::", strlen((yyvsp[(1) - (3)].specifier).name), true, false);
       String s = colon ? colon + 2 : (yyvsp[(1) - (3)].specifier).name;
@@ -20695,1484 +20585,1484 @@ yyreduce:
   case 1026:
 
 /* Line 1464 of yacc.c  */
-#line 3267 "grammar.y"
+#line 3117 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].initDeclarator)); ;}
     break;
 
   case 1027:
 
 /* Line 1464 of yacc.c  */
-#line 3276 "grammar.y"
+#line 3126 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].initDeclarator)); ;}
     break;
 
   case 1028:
 
 /* Line 1464 of yacc.c  */
-#line 3277 "grammar.y"
+#line 3127 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (2)].initDeclarator)); ;}
     break;
 
   case 1029:
 
 /* Line 1464 of yacc.c  */
-#line 3278 "grammar.y"
+#line 3128 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].initDeclarator)); ;}
     break;
 
   case 1030:
 
 /* Line 1464 of yacc.c  */
-#line 3279 "grammar.y"
+#line 3129 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].initDeclarator)); ;}
     break;
 
   case 1031:
 
 /* Line 1464 of yacc.c  */
-#line 3283 "grammar.y"
+#line 3133 "grammar.y"
     { (yyval.typeName) = MkTypeName((yyvsp[(1) - (1)].list), null); ;}
     break;
 
   case 1032:
 
 /* Line 1464 of yacc.c  */
-#line 3284 "grammar.y"
+#line 3134 "grammar.y"
     { (yyval.typeName) = MkTypeName((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].declarator)); ;}
     break;
 
   case 1033:
 
 /* Line 1464 of yacc.c  */
-#line 3288 "grammar.y"
+#line 3138 "grammar.y"
     { (yyval.typeName) = MkTypeName((yyvsp[(1) - (1)].list), null); ;}
     break;
 
   case 1034:
 
 /* Line 1464 of yacc.c  */
-#line 3289 "grammar.y"
+#line 3139 "grammar.y"
     { (yyval.typeName) = MkTypeName((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].declarator)); ;}
     break;
 
   case 1035:
 
 /* Line 1464 of yacc.c  */
-#line 3294 "grammar.y"
+#line 3144 "grammar.y"
     { (yyval.typeName) = MkTypeName((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].declarator)); ;}
     break;
 
   case 1036:
 
 /* Line 1464 of yacc.c  */
-#line 3295 "grammar.y"
+#line 3145 "grammar.y"
     { (yyval.typeName) = MkTypeName((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].declarator)); ;}
     break;
 
   case 1037:
 
 /* Line 1464 of yacc.c  */
-#line 3296 "grammar.y"
+#line 3146 "grammar.y"
     { (yyval.typeName) = MkTypeName((yyvsp[(1) - (2)].list), MkDeclaratorPointer(MkPointer(null,null), null)); ;}
     break;
 
   case 1038:
 
 /* Line 1464 of yacc.c  */
-#line 3297 "grammar.y"
+#line 3147 "grammar.y"
     { (yyval.typeName) = MkTypeName((yyvsp[(1) - (3)].list), MkDeclaratorPointer(MkPointer(null,null), (yyvsp[(3) - (3)].declarator))); ;}
     break;
 
   case 1039:
 
 /* Line 1464 of yacc.c  */
-#line 3298 "grammar.y"
+#line 3148 "grammar.y"
     { (yyval.typeName) = MkTypeNameGuessDecl((yyvsp[(1) - (1)].list), null); ;}
     break;
 
   case 1040:
 
 /* Line 1464 of yacc.c  */
-#line 3300 "grammar.y"
+#line 3150 "grammar.y"
     { (yyval.typeName) = MkTypeName(MkListOne(MkSpecifier(CLASS)), null); ;}
     break;
 
   case 1041:
 
 /* Line 1464 of yacc.c  */
-#line 3318 "grammar.y"
+#line 3168 "grammar.y"
     { (yyval.typeName) = MkTypeName((yyvsp[(1) - (3)].list), (yyvsp[(2) - (3)].declarator)); ;}
     break;
 
   case 1042:
 
 /* Line 1464 of yacc.c  */
-#line 3319 "grammar.y"
+#line 3169 "grammar.y"
     { (yyval.typeName) = MkTypeName((yyvsp[(1) - (3)].list), (yyvsp[(2) - (3)].declarator)); ;}
     break;
 
   case 1043:
 
 /* Line 1464 of yacc.c  */
-#line 3323 "grammar.y"
+#line 3173 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].typeName)); ;}
     break;
 
   case 1044:
 
 /* Line 1464 of yacc.c  */
-#line 3324 "grammar.y"
+#line 3174 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typeName)); ;}
     break;
 
   case 1045:
 
 /* Line 1464 of yacc.c  */
-#line 3325 "grammar.y"
+#line 3175 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (4)].list); ListAdd((yyvsp[(1) - (4)].list), (yyvsp[(4) - (4)].typeName)); ;}
     break;
 
   case 1046:
 
 /* Line 1464 of yacc.c  */
-#line 3326 "grammar.y"
+#line 3176 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typeName)); ;}
     break;
 
   case 1047:
 
 /* Line 1464 of yacc.c  */
-#line 3327 "grammar.y"
+#line 3177 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (4)].list); ListAdd((yyvsp[(1) - (4)].list), (yyvsp[(4) - (4)].typeName)); ;}
     break;
 
   case 1048:
 
 /* Line 1464 of yacc.c  */
-#line 3328 "grammar.y"
+#line 3178 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), MkTypeName(MkList(), null)); ListAdd((yyval.list), (yyvsp[(3) - (3)].typeName)); ;}
     break;
 
   case 1049:
 
 /* Line 1464 of yacc.c  */
-#line 3330 "grammar.y"
+#line 3180 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typeName)); ;}
     break;
 
   case 1050:
 
 /* Line 1464 of yacc.c  */
-#line 3331 "grammar.y"
+#line 3181 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (4)].list); ListAdd((yyvsp[(1) - (4)].list), (yyvsp[(4) - (4)].typeName)); ;}
     break;
 
   case 1051:
 
 /* Line 1464 of yacc.c  */
-#line 3332 "grammar.y"
+#line 3182 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typeName)); ;}
     break;
 
   case 1052:
 
 /* Line 1464 of yacc.c  */
-#line 3333 "grammar.y"
+#line 3183 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (4)].list); ListAdd((yyvsp[(1) - (4)].list), (yyvsp[(4) - (4)].typeName)); ;}
     break;
 
   case 1053:
 
 /* Line 1464 of yacc.c  */
-#line 3337 "grammar.y"
+#line 3187 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].typeName)); ;}
     break;
 
   case 1054:
 
 /* Line 1464 of yacc.c  */
-#line 3338 "grammar.y"
+#line 3188 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typeName)); ;}
     break;
 
   case 1055:
 
 /* Line 1464 of yacc.c  */
-#line 3339 "grammar.y"
+#line 3189 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typeName)); ;}
     break;
 
   case 1056:
 
 /* Line 1464 of yacc.c  */
-#line 3340 "grammar.y"
+#line 3190 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (4)].list); ListAdd((yyvsp[(1) - (4)].list), (yyvsp[(4) - (4)].typeName)); ;}
     break;
 
   case 1057:
 
 /* Line 1464 of yacc.c  */
-#line 3341 "grammar.y"
+#line 3191 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), MkTypeName(MkList(), null)); ListAdd((yyval.list), (yyvsp[(3) - (3)].typeName)); ;}
     break;
 
   case 1058:
 
 /* Line 1464 of yacc.c  */
-#line 3343 "grammar.y"
+#line 3193 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typeName)); ;}
     break;
 
   case 1059:
 
 /* Line 1464 of yacc.c  */
-#line 3344 "grammar.y"
+#line 3194 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].typeName)); ;}
     break;
 
   case 1060:
 
 /* Line 1464 of yacc.c  */
-#line 3345 "grammar.y"
+#line 3195 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (4)].list); ListAdd((yyvsp[(1) - (4)].list), (yyvsp[(4) - (4)].typeName)); ;}
     break;
 
   case 1062:
 
 /* Line 1464 of yacc.c  */
-#line 3350 "grammar.y"
+#line 3200 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), MkTypeName(null, null)); ;}
     break;
 
   case 1063:
 
 /* Line 1464 of yacc.c  */
-#line 3351 "grammar.y"
+#line 3201 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), MkTypeName(null, null)); ;}
     break;
 
   case 1064:
 
 /* Line 1464 of yacc.c  */
-#line 3352 "grammar.y"
+#line 3202 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), MkTypeName(null, null)); ;}
     break;
 
   case 1065:
 
 /* Line 1464 of yacc.c  */
-#line 3353 "grammar.y"
+#line 3203 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), MkTypeName(null, null)); ;}
     break;
 
   case 1066:
 
 /* Line 1464 of yacc.c  */
-#line 3354 "grammar.y"
+#line 3204 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), MkTypeName(null, null)); ;}
     break;
 
   case 1068:
 
 /* Line 1464 of yacc.c  */
-#line 3359 "grammar.y"
+#line 3209 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), null); ;}
     break;
 
   case 1071:
 
 /* Line 1464 of yacc.c  */
-#line 3366 "grammar.y"
+#line 3216 "grammar.y"
     { (yyval.stmt) = MkExpressionStmt(null); FreeAttrib((yyvsp[(1) - (1)].attrib)); ;}
     break;
 
   case 1073:
 
 /* Line 1464 of yacc.c  */
-#line 3368 "grammar.y"
+#line 3218 "grammar.y"
     { (yyval.stmt) = MkExpressionStmt(null); ;}
     break;
 
   case 1074:
 
 /* Line 1464 of yacc.c  */
-#line 3369 "grammar.y"
+#line 3219 "grammar.y"
     { (yyval.stmt) = MkExpressionStmt(null); ;}
     break;
 
   case 1075:
 
 /* Line 1464 of yacc.c  */
-#line 3370 "grammar.y"
+#line 3220 "grammar.y"
     { (yyval.stmt) = MkExpressionStmt((yyvsp[(1) - (2)].list)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1083:
 
 /* Line 1464 of yacc.c  */
-#line 3381 "grammar.y"
+#line 3231 "grammar.y"
     { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); Compiler_Error($"syntax error\n"); ;}
     break;
 
   case 1084:
 
 /* Line 1464 of yacc.c  */
-#line 3382 "grammar.y"
+#line 3232 "grammar.y"
     { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); Compiler_Error($"syntax error\n"); ;}
     break;
 
   case 1085:
 
 /* Line 1464 of yacc.c  */
-#line 3383 "grammar.y"
+#line 3233 "grammar.y"
     { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); Compiler_Error($"syntax error\n"); ;}
     break;
 
   case 1086:
 
 /* Line 1464 of yacc.c  */
-#line 3384 "grammar.y"
+#line 3234 "grammar.y"
     { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); Compiler_Error($"syntax error\n"); ;}
     break;
 
   case 1087:
 
 /* Line 1464 of yacc.c  */
-#line 3385 "grammar.y"
+#line 3235 "grammar.y"
     { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); Compiler_Error($"syntax error\n"); ;}
     break;
 
   case 1088:
 
 /* Line 1464 of yacc.c  */
-#line 3386 "grammar.y"
+#line 3236 "grammar.y"
     { (yyval.stmt) = (yyvsp[(1) - (2)].stmt); Compiler_Error($"syntax error\n"); ;}
     break;
 
   case 1089:
 
 /* Line 1464 of yacc.c  */
-#line 3387 "grammar.y"
+#line 3237 "grammar.y"
     { (yyval.stmt) = MkExpressionStmt((yyvsp[(1) - (1)].list)); Compiler_Error($"syntax error\n"); (yyval.stmt).loc = (yylsp[(1) - (1)]); ;}
     break;
 
   case 1090:
 
 /* Line 1464 of yacc.c  */
-#line 3391 "grammar.y"
+#line 3241 "grammar.y"
     { (yyval.asmField) = MkAsmField((yyvsp[(1) - (1)].string), null, null); (yyval.asmField).loc = (yylsp[(1) - (1)]); ;}
     break;
 
   case 1091:
 
 /* Line 1464 of yacc.c  */
-#line 3392 "grammar.y"
+#line 3242 "grammar.y"
     { (yyval.asmField) = MkAsmField((yyvsp[(1) - (4)].string), (yyvsp[(3) - (4)].exp), null); (yyval.asmField).loc = (yyloc); ;}
     break;
 
   case 1092:
 
 /* Line 1464 of yacc.c  */
-#line 3393 "grammar.y"
+#line 3243 "grammar.y"
     { (yyval.asmField) = MkAsmField((yyvsp[(4) - (7)].string), (yyvsp[(6) - (7)].exp), (yyvsp[(2) - (7)].id)); (yyval.asmField).loc = (yyloc); ;}
     break;
 
   case 1093:
 
 /* Line 1464 of yacc.c  */
-#line 3397 "grammar.y"
+#line 3247 "grammar.y"
     { (yyval.list) = MkListOne((yyvsp[(1) - (1)].asmField)); ;}
     break;
 
   case 1094:
 
 /* Line 1464 of yacc.c  */
-#line 3398 "grammar.y"
+#line 3248 "grammar.y"
     { ListAdd((yyval.list), (yyvsp[(3) - (3)].asmField)); ;}
     break;
 
   case 1095:
 
 /* Line 1464 of yacc.c  */
-#line 3399 "grammar.y"
+#line 3249 "grammar.y"
     { (yyval.list) = null; ;}
     break;
 
   case 1096:
 
 /* Line 1464 of yacc.c  */
-#line 3403 "grammar.y"
+#line 3253 "grammar.y"
     { (yyval.stmt) = MkAsmStmt((yyvsp[(2) - (6)].specifier), (yyvsp[(4) - (6)].string), null, null, null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1097:
 
 /* Line 1464 of yacc.c  */
-#line 3404 "grammar.y"
+#line 3254 "grammar.y"
     { (yyval.stmt) = MkAsmStmt((yyvsp[(2) - (8)].specifier), (yyvsp[(4) - (8)].string), (yyvsp[(6) - (8)].list), null, null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1098:
 
 /* Line 1464 of yacc.c  */
-#line 3405 "grammar.y"
+#line 3255 "grammar.y"
     { (yyval.stmt) = MkAsmStmt((yyvsp[(2) - (10)].specifier), (yyvsp[(4) - (10)].string), (yyvsp[(6) - (10)].list), (yyvsp[(8) - (10)].list), null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1099:
 
 /* Line 1464 of yacc.c  */
-#line 3406 "grammar.y"
+#line 3256 "grammar.y"
     { (yyval.stmt) = MkAsmStmt((yyvsp[(2) - (12)].specifier), (yyvsp[(4) - (12)].string), (yyvsp[(6) - (12)].list), (yyvsp[(8) - (12)].list), (yyvsp[(10) - (12)].list)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1100:
 
 /* Line 1464 of yacc.c  */
-#line 3408 "grammar.y"
+#line 3258 "grammar.y"
     { (yyval.stmt) = MkAsmStmt((yyvsp[(2) - (8)].specifier), (yyvsp[(4) - (8)].string), null, (yyvsp[(6) - (8)].list), null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1101:
 
 /* Line 1464 of yacc.c  */
-#line 3409 "grammar.y"
+#line 3259 "grammar.y"
     { (yyval.stmt) = MkAsmStmt((yyvsp[(2) - (10)].specifier), (yyvsp[(4) - (10)].string), null, (yyvsp[(6) - (10)].list), (yyvsp[(8) - (10)].list)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1102:
 
 /* Line 1464 of yacc.c  */
-#line 3410 "grammar.y"
+#line 3260 "grammar.y"
     { (yyval.stmt) = MkAsmStmt((yyvsp[(2) - (10)].specifier), (yyvsp[(4) - (10)].string), (yyvsp[(6) - (10)].list), null, (yyvsp[(8) - (10)].list)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1103:
 
 /* Line 1464 of yacc.c  */
-#line 3412 "grammar.y"
+#line 3262 "grammar.y"
     { (yyval.stmt) = MkAsmStmt(null, (yyvsp[(3) - (5)].string), null, null, null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1104:
 
 /* Line 1464 of yacc.c  */
-#line 3413 "grammar.y"
+#line 3263 "grammar.y"
     { (yyval.stmt) = MkAsmStmt(null, (yyvsp[(3) - (7)].string), (yyvsp[(5) - (7)].list), null, null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1105:
 
 /* Line 1464 of yacc.c  */
-#line 3414 "grammar.y"
+#line 3264 "grammar.y"
     { (yyval.stmt) = MkAsmStmt(null, (yyvsp[(3) - (9)].string), (yyvsp[(5) - (9)].list), (yyvsp[(7) - (9)].list), null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1106:
 
 /* Line 1464 of yacc.c  */
-#line 3415 "grammar.y"
+#line 3265 "grammar.y"
     { (yyval.stmt) = MkAsmStmt(null, (yyvsp[(3) - (11)].string), (yyvsp[(5) - (11)].list), (yyvsp[(7) - (11)].list), (yyvsp[(9) - (11)].list)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1107:
 
 /* Line 1464 of yacc.c  */
-#line 3417 "grammar.y"
+#line 3267 "grammar.y"
     { (yyval.stmt) = MkAsmStmt(null, (yyvsp[(3) - (7)].string), null, (yyvsp[(5) - (7)].list), null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1108:
 
 /* Line 1464 of yacc.c  */
-#line 3418 "grammar.y"
+#line 3268 "grammar.y"
     { (yyval.stmt) = MkAsmStmt(null, (yyvsp[(3) - (9)].string), null, (yyvsp[(5) - (9)].list), (yyvsp[(7) - (9)].list)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1109:
 
 /* Line 1464 of yacc.c  */
-#line 3419 "grammar.y"
+#line 3269 "grammar.y"
     { (yyval.stmt) = MkAsmStmt(null, (yyvsp[(3) - (9)].string), (yyvsp[(5) - (9)].list), null, (yyvsp[(7) - (9)].list)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1110:
 
 /* Line 1464 of yacc.c  */
-#line 3423 "grammar.y"
+#line 3273 "grammar.y"
     { (yyval.stmt) = MkLabeledStmt((yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].stmt)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1111:
 
 /* Line 1464 of yacc.c  */
-#line 3424 "grammar.y"
+#line 3274 "grammar.y"
     { /*if($4.type == labeledStmt) Compiler_Warning(CASE_LABELED_STMT_WARNING);*/ (yyval.stmt) = MkCaseStmt((yyvsp[(2) - (4)].exp), (yyvsp[(4) - (4)].stmt)); (yyval.stmt).loc = (yyloc); (yyvsp[(2) - (4)].exp).loc.start = (yylsp[(1) - (4)]).end; ;}
     break;
 
   case 1112:
 
 /* Line 1464 of yacc.c  */
-#line 3425 "grammar.y"
+#line 3275 "grammar.y"
     { /*if($4.type == labeledStmt) Compiler_Warning(CASE_LABELED_STMT_WARNING);*/ (yyval.stmt) = MkCaseStmt((yyvsp[(2) - (4)].exp), (yyvsp[(4) - (4)].stmt)); (yyval.stmt).loc = (yyloc); (yyvsp[(2) - (4)].exp).loc.start = (yylsp[(1) - (4)]).end; ;}
     break;
 
   case 1113:
 
 /* Line 1464 of yacc.c  */
-#line 3426 "grammar.y"
+#line 3276 "grammar.y"
     { /*if($3.type == labeledStmt) Compiler_Warning(CASE_LABELED_STMT_WARNING);*/ (yyval.stmt) = MkCaseStmt(MkExpDummy(), (yyvsp[(3) - (3)].stmt)); (yyval.stmt).caseStmt.exp.loc = (yylsp[(2) - (3)]); (yyval.stmt).loc = (yyloc); (yyval.stmt).caseStmt.exp.loc.start = (yylsp[(1) - (3)]).end; ;}
     break;
 
   case 1114:
 
 /* Line 1464 of yacc.c  */
-#line 3427 "grammar.y"
+#line 3277 "grammar.y"
     { /*if($3.type == labeledStmt) Compiler_Warning(CASE_LABELED_STMT_WARNING);*/ (yyval.stmt) = MkCaseStmt(null, (yyvsp[(3) - (3)].stmt)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1115:
 
 /* Line 1464 of yacc.c  */
-#line 3429 "grammar.y"
+#line 3279 "grammar.y"
     { Statement stmt = MkBadDeclStmt((yyvsp[(3) - (3)].declaration)); stmt.loc = (yylsp[(3) - (3)]); Compiler_Warning(C89_DECL_WARNING); (yyval.stmt) = MkLabeledStmt((yyvsp[(1) - (3)].id), stmt); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1116:
 
 /* Line 1464 of yacc.c  */
-#line 3430 "grammar.y"
+#line 3280 "grammar.y"
     { Statement stmt = MkBadDeclStmt((yyvsp[(4) - (4)].declaration)); stmt.loc = (yylsp[(4) - (4)]); Compiler_Warning(C89_DECL_WARNING); (yyval.stmt) = MkCaseStmt((yyvsp[(2) - (4)].exp), stmt); (yyval.stmt).loc = (yyloc); (yyvsp[(2) - (4)].exp).loc.start = (yylsp[(1) - (4)]).end; ;}
     break;
 
   case 1117:
 
 /* Line 1464 of yacc.c  */
-#line 3431 "grammar.y"
+#line 3281 "grammar.y"
     { Statement stmt = MkBadDeclStmt((yyvsp[(4) - (4)].declaration)); stmt.loc = (yylsp[(4) - (4)]); Compiler_Warning(C89_DECL_WARNING); (yyval.stmt) = MkCaseStmt((yyvsp[(2) - (4)].exp), stmt); (yyval.stmt).loc = (yyloc); (yyvsp[(2) - (4)].exp).loc.start = (yylsp[(1) - (4)]).end; ;}
     break;
 
   case 1118:
 
 /* Line 1464 of yacc.c  */
-#line 3432 "grammar.y"
+#line 3282 "grammar.y"
     { Statement stmt = MkBadDeclStmt((yyvsp[(3) - (3)].declaration)); stmt.loc = (yylsp[(3) - (3)]); Compiler_Warning(C89_DECL_WARNING); (yyval.stmt) = MkCaseStmt(MkExpDummy(), stmt); (yyval.stmt).caseStmt.exp.loc = (yylsp[(2) - (3)]); (yyval.stmt).loc = (yyloc); (yyval.stmt).caseStmt.exp.loc.start = (yylsp[(1) - (3)]).end; ;}
     break;
 
   case 1119:
 
 /* Line 1464 of yacc.c  */
-#line 3433 "grammar.y"
+#line 3283 "grammar.y"
     { Statement stmt = MkBadDeclStmt((yyvsp[(3) - (3)].declaration)); stmt.loc = (yylsp[(3) - (3)]); Compiler_Warning(C89_DECL_WARNING); (yyval.stmt) = MkCaseStmt(null, stmt); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1120:
 
 /* Line 1464 of yacc.c  */
-#line 3437 "grammar.y"
+#line 3287 "grammar.y"
     { (yyval.stmt) = MkLabeledStmt((yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].stmt)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1121:
 
 /* Line 1464 of yacc.c  */
-#line 3438 "grammar.y"
+#line 3288 "grammar.y"
     { /*if($4.type == labeledStmt) Compiler_Warning(CASE_LABELED_STMT_WARNING);*/ (yyval.stmt) = MkCaseStmt((yyvsp[(2) - (4)].exp), (yyvsp[(4) - (4)].stmt)); (yyval.stmt).loc = (yyloc); (yyvsp[(2) - (4)].exp).loc.start = (yylsp[(1) - (4)]).end; ;}
     break;
 
   case 1122:
 
 /* Line 1464 of yacc.c  */
-#line 3439 "grammar.y"
+#line 3289 "grammar.y"
     { /*if($4.type == labeledStmt) Compiler_Warning(CASE_LABELED_STMT_WARNING);*/ (yyval.stmt) = MkCaseStmt((yyvsp[(2) - (4)].exp), (yyvsp[(4) - (4)].stmt)); (yyval.stmt).loc = (yyloc); (yyvsp[(2) - (4)].exp).loc.start = (yylsp[(1) - (4)]).end; ;}
     break;
 
   case 1123:
 
 /* Line 1464 of yacc.c  */
-#line 3440 "grammar.y"
+#line 3290 "grammar.y"
     { /*if($3.type == labeledStmt) Compiler_Warning(CASE_LABELED_STMT_WARNING);*/ (yyval.stmt) = MkCaseStmt(MkExpDummy(), (yyvsp[(3) - (3)].stmt)); (yyval.stmt).caseStmt.exp.loc = (yylsp[(2) - (3)]); (yyval.stmt).loc = (yyloc); (yyval.stmt).caseStmt.exp.loc.start = (yylsp[(1) - (3)]).end; ;}
     break;
 
   case 1124:
 
 /* Line 1464 of yacc.c  */
-#line 3441 "grammar.y"
+#line 3291 "grammar.y"
     { (yyval.stmt) = MkCaseStmt(MkExpDummy(), null); (yyval.stmt).caseStmt.exp.loc = (yylsp[(2) - (2)]); (yyval.stmt).loc = (yyloc); (yyval.stmt).caseStmt.exp.loc.start = (yylsp[(1) - (2)]).end; ;}
     break;
 
   case 1125:
 
 /* Line 1464 of yacc.c  */
-#line 3442 "grammar.y"
+#line 3292 "grammar.y"
     { /*if($3.type == labeledStmt) Compiler_Warning(CASE_LABELED_STMT_WARNING);*/ (yyval.stmt) = MkCaseStmt(null, (yyvsp[(3) - (3)].stmt)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1126:
 
 /* Line 1464 of yacc.c  */
-#line 3443 "grammar.y"
+#line 3293 "grammar.y"
     { (yyval.stmt) = MkCaseStmt(null, null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1127:
 
 /* Line 1464 of yacc.c  */
-#line 3445 "grammar.y"
+#line 3295 "grammar.y"
     { Statement stmt = MkBadDeclStmt((yyvsp[(3) - (3)].declaration)); stmt.loc = (yylsp[(3) - (3)]); Compiler_Warning(C89_DECL_WARNING); (yyval.stmt) = MkLabeledStmt((yyvsp[(1) - (3)].id), stmt); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1128:
 
 /* Line 1464 of yacc.c  */
-#line 3446 "grammar.y"
+#line 3296 "grammar.y"
     { Statement stmt = MkBadDeclStmt((yyvsp[(4) - (4)].declaration)); stmt.loc = (yylsp[(4) - (4)]); Compiler_Warning(C89_DECL_WARNING); (yyval.stmt) = MkCaseStmt((yyvsp[(2) - (4)].exp), stmt); (yyval.stmt).loc = (yyloc); (yyvsp[(2) - (4)].exp).loc.start = (yylsp[(1) - (4)]).end; ;}
     break;
 
   case 1129:
 
 /* Line 1464 of yacc.c  */
-#line 3447 "grammar.y"
+#line 3297 "grammar.y"
     { Statement stmt = MkBadDeclStmt((yyvsp[(4) - (4)].declaration)); stmt.loc = (yylsp[(4) - (4)]); Compiler_Warning(C89_DECL_WARNING); (yyval.stmt) = MkCaseStmt((yyvsp[(2) - (4)].exp), stmt); (yyval.stmt).loc = (yyloc); (yyvsp[(2) - (4)].exp).loc.start = (yylsp[(1) - (4)]).end; ;}
     break;
 
   case 1130:
 
 /* Line 1464 of yacc.c  */
-#line 3448 "grammar.y"
+#line 3298 "grammar.y"
     { Statement stmt = MkBadDeclStmt((yyvsp[(3) - (3)].declaration)); stmt.loc = (yylsp[(3) - (3)]); Compiler_Warning(C89_DECL_WARNING); (yyval.stmt) = MkCaseStmt(MkExpDummy(), stmt); (yyval.stmt).caseStmt.exp.loc = (yylsp[(2) - (3)]); (yyval.stmt).loc = (yyloc); (yyval.stmt).caseStmt.exp.loc.start = (yylsp[(1) - (3)]).end; ;}
     break;
 
   case 1131:
 
 /* Line 1464 of yacc.c  */
-#line 3449 "grammar.y"
+#line 3299 "grammar.y"
     { Statement stmt = MkBadDeclStmt((yyvsp[(3) - (3)].declaration)); stmt.loc = (yylsp[(3) - (3)]); Compiler_Warning(C89_DECL_WARNING); (yyval.stmt) = MkCaseStmt(null, stmt); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1132:
 
 /* Line 1464 of yacc.c  */
-#line 3453 "grammar.y"
+#line 3303 "grammar.y"
     { (yyval.declMode) = structDeclMode = declMode = publicAccess; ;}
     break;
 
   case 1133:
 
 /* Line 1464 of yacc.c  */
-#line 3454 "grammar.y"
+#line 3304 "grammar.y"
     { (yyval.declMode) = structDeclMode = declMode = privateAccess; ;}
     break;
 
   case 1134:
 
 /* Line 1464 of yacc.c  */
-#line 3455 "grammar.y"
+#line 3305 "grammar.y"
     { (yyval.declMode) = structDeclMode = declMode = defaultAccess; ;}
     break;
 
   case 1135:
 
 /* Line 1464 of yacc.c  */
-#line 3459 "grammar.y"
+#line 3309 "grammar.y"
     { (yyval.declMode) = publicAccess; ;}
     break;
 
   case 1136:
 
 /* Line 1464 of yacc.c  */
-#line 3460 "grammar.y"
+#line 3310 "grammar.y"
     { (yyval.declMode) = privateAccess; ;}
     break;
 
   case 1137:
 
 /* Line 1464 of yacc.c  */
-#line 3464 "grammar.y"
+#line 3314 "grammar.y"
     { (yyval.declaration) = MkDeclaration((yyvsp[(1) - (2)].list), null); (yyval.declaration).loc = (yyloc); structDeclMode = defaultDeclMode; ;}
     break;
 
   case 1138:
 
 /* Line 1464 of yacc.c  */
-#line 3465 "grammar.y"
+#line 3315 "grammar.y"
     { (yyval.declaration) = MkDeclaration((yyvsp[(1) - (3)].list), (yyvsp[(2) - (3)].list)); (yyval.declaration).loc = (yyloc); structDeclMode = defaultDeclMode; ;}
     break;
 
   case 1139:
 
 /* Line 1464 of yacc.c  */
-#line 3466 "grammar.y"
+#line 3316 "grammar.y"
     { (yyval.declaration) = MkDeclarationInst((yyvsp[(1) - (2)].instance)); (yyval.declaration).loc = (yyloc); structDeclMode = defaultDeclMode; ;}
     break;
 
   case 1140:
 
 /* Line 1464 of yacc.c  */
-#line 3467 "grammar.y"
+#line 3317 "grammar.y"
     { (yyval.declaration) = (yyvsp[(1) - (2)].declaration); structDeclMode = defaultDeclMode; ;}
     break;
 
   case 1141:
 
 /* Line 1464 of yacc.c  */
-#line 3471 "grammar.y"
+#line 3321 "grammar.y"
     { (yyval.declaration) = MkDeclaration((yyvsp[(1) - (2)].list), null); (yyval.declaration).loc = (yyloc); ;}
     break;
 
   case 1142:
 
 /* Line 1464 of yacc.c  */
-#line 3472 "grammar.y"
+#line 3322 "grammar.y"
     { (yyval.declaration) = MkDeclaration((yyvsp[(1) - (3)].list), (yyvsp[(2) - (3)].list)); (yyval.declaration).loc = (yyloc); ;}
     break;
 
   case 1143:
 
 /* Line 1464 of yacc.c  */
-#line 3473 "grammar.y"
+#line 3323 "grammar.y"
     { (yyval.declaration) = MkDeclaration((yyvsp[(1) - (3)].list), (yyvsp[(2) - (3)].list)); (yyval.declaration).loc = (yyloc); ;}
     break;
 
   case 1144:
 
 /* Line 1464 of yacc.c  */
-#line 3475 "grammar.y"
+#line 3325 "grammar.y"
     { (yyval.declaration) = MkDeclarationInst((yyvsp[(1) - (2)].instance)); (yyval.declaration).loc = (yyloc); ;}
     break;
 
   case 1145:
 
 /* Line 1464 of yacc.c  */
-#line 3476 "grammar.y"
+#line 3326 "grammar.y"
     { (yyval.declaration) = MkDeclarationDefine((yyvsp[(2) - (5)].id), (yyvsp[(4) - (5)].exp)); (yyval.declaration).loc = (yyloc); ;}
     break;
 
   case 1146:
 
 /* Line 1464 of yacc.c  */
-#line 3477 "grammar.y"
+#line 3327 "grammar.y"
     { structDeclMode = declMode = staticAccess; (yyval.declaration) = MkDeclarationDefine((yyvsp[(3) - (6)].id), (yyvsp[(5) - (6)].exp)); (yyval.declaration).loc = (yyloc); ;}
     break;
 
   case 1147:
 
 /* Line 1464 of yacc.c  */
-#line 3481 "grammar.y"
+#line 3331 "grammar.y"
     { (yyval.declaration) = MkDeclaration((yyvsp[(1) - (2)].list), null); (yyval.declaration).loc = (yyloc); yyerrok; ;}
     break;
 
   case 1148:
 
 /* Line 1464 of yacc.c  */
-#line 3485 "grammar.y"
+#line 3335 "grammar.y"
     { (yyval.declaration) = MkDeclaration((yyvsp[(1) - (2)].list), null); (yyval.declaration).loc = (yyloc); structDeclMode = defaultDeclMode; ;}
     break;
 
   case 1149:
 
 /* Line 1464 of yacc.c  */
-#line 3486 "grammar.y"
+#line 3336 "grammar.y"
     { structDeclMode = defaultDeclMode;  ;}
     break;
 
   case 1150:
 
 /* Line 1464 of yacc.c  */
-#line 3488 "grammar.y"
+#line 3338 "grammar.y"
     { (yyval.declaration) = MkDeclarationInst((yyvsp[(1) - (2)].instance)); (yyval.declaration).loc = (yyloc); structDeclMode = defaultDeclMode; ;}
     break;
 
   case 1151:
 
 /* Line 1464 of yacc.c  */
-#line 3489 "grammar.y"
+#line 3339 "grammar.y"
     { (yyval.declaration) = MkDeclarationInst((yyvsp[(1) - (2)].instance)); (yyval.declaration).loc = (yyloc); structDeclMode = defaultDeclMode; ;}
     break;
 
   case 1152:
 
 /* Line 1464 of yacc.c  */
-#line 3490 "grammar.y"
+#line 3340 "grammar.y"
     { (yyval.declaration) = MkDeclaration((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].list)); (yyval.declaration).loc = (yyloc); structDeclMode = defaultDeclMode; ;}
     break;
 
   case 1153:
 
 /* Line 1464 of yacc.c  */
-#line 3494 "grammar.y"
+#line 3344 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].declaration)); /*declMode = defaultDeclMode;*/ ;}
     break;
 
   case 1154:
 
 /* Line 1464 of yacc.c  */
-#line 3495 "grammar.y"
+#line 3345 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].declaration)); /*declMode = defaultDeclMode; */;}
     break;
 
   case 1155:
 
 /* Line 1464 of yacc.c  */
-#line 3496 "grammar.y"
+#line 3346 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].declaration)); /*declMode = defaultDeclMode; */;}
     break;
 
   case 1156:
 
 /* Line 1464 of yacc.c  */
-#line 3497 "grammar.y"
+#line 3347 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (3)].list); ;}
     break;
 
   case 1157:
 
 /* Line 1464 of yacc.c  */
-#line 3501 "grammar.y"
+#line 3351 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].declaration)); ;}
     break;
 
   case 1158:
 
 /* Line 1464 of yacc.c  */
-#line 3502 "grammar.y"
+#line 3352 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].declaration)); ;}
     break;
 
   case 1159:
 
 /* Line 1464 of yacc.c  */
-#line 3506 "grammar.y"
+#line 3356 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].stmt)); ;}
     break;
 
   case 1160:
 
 /* Line 1464 of yacc.c  */
-#line 3507 "grammar.y"
+#line 3357 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].stmt)); ;}
     break;
 
   case 1161:
 
 /* Line 1464 of yacc.c  */
-#line 3508 "grammar.y"
+#line 3358 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].stmt)); ;}
     break;
 
   case 1162:
 
 /* Line 1464 of yacc.c  */
-#line 3512 "grammar.y"
+#line 3362 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].stmt)); ;}
     break;
 
   case 1163:
 
 /* Line 1464 of yacc.c  */
-#line 3513 "grammar.y"
+#line 3363 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].stmt)); ;}
     break;
 
   case 1164:
 
 /* Line 1464 of yacc.c  */
-#line 3514 "grammar.y"
+#line 3364 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].stmt)); ;}
     break;
 
   case 1165:
 
 /* Line 1464 of yacc.c  */
-#line 3515 "grammar.y"
+#line 3365 "grammar.y"
     { Statement stmt = MkBadDeclStmt((yyvsp[(2) - (2)].declaration)); stmt.loc = (yylsp[(2) - (2)]); Compiler_Warning(C89_DECL_WARNING); (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), stmt); /*declMode = defaultDeclMode;*/ ;}
     break;
 
   case 1166:
 
 /* Line 1464 of yacc.c  */
-#line 3516 "grammar.y"
+#line 3366 "grammar.y"
     { Statement stmt = MkBadDeclStmt((yyvsp[(2) - (2)].declaration)); stmt.loc = (yylsp[(2) - (2)]); Compiler_Warning(C89_DECL_WARNING); (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), stmt); /*declMode = defaultDeclMode;*/ ;}
     break;
 
   case 1167:
 
 /* Line 1464 of yacc.c  */
-#line 3517 "grammar.y"
+#line 3367 "grammar.y"
     { Statement stmt = MkBadDeclStmt((yyvsp[(2) - (2)].declaration)); stmt.loc = (yylsp[(2) - (2)]); Compiler_Warning(C89_DECL_WARNING); (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), stmt); /*declMode = defaultDeclMode;*/ ;}
     break;
 
   case 1168:
 
 /* Line 1464 of yacc.c  */
-#line 3518 "grammar.y"
+#line 3368 "grammar.y"
     { Statement stmt = MkBadDeclStmt((yyvsp[(2) - (2)].declaration)); stmt.loc = (yylsp[(2) - (2)]); Compiler_Warning(C89_DECL_WARNING); (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), stmt); /*declMode = defaultDeclMode;*/ ;}
     break;
 
   case 1169:
 
 /* Line 1464 of yacc.c  */
-#line 3522 "grammar.y"
+#line 3372 "grammar.y"
     { (yyval.stmt) = MkCompoundStmt(null, (yyvsp[(1) - (1)].list)); ;}
     break;
 
   case 1170:
 
 /* Line 1464 of yacc.c  */
-#line 3523 "grammar.y"
+#line 3373 "grammar.y"
     { (yyval.stmt) = MkCompoundStmt((yyvsp[(1) - (1)].list), null); ;}
     break;
 
   case 1171:
 
 /* Line 1464 of yacc.c  */
-#line 3524 "grammar.y"
+#line 3374 "grammar.y"
     { (yyval.stmt) = MkCompoundStmt((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].list)); ;}
     break;
 
   case 1172:
 
 /* Line 1464 of yacc.c  */
-#line 3525 "grammar.y"
+#line 3375 "grammar.y"
     { (yyval.stmt) = MkCompoundStmt((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].list)); ;}
     break;
 
   case 1173:
 
 /* Line 1464 of yacc.c  */
-#line 3529 "grammar.y"
+#line 3379 "grammar.y"
     { (yyval.stmt) = MkCompoundStmt(null, (yyvsp[(1) - (1)].list)); ;}
     break;
 
   case 1174:
 
 /* Line 1464 of yacc.c  */
-#line 3530 "grammar.y"
+#line 3380 "grammar.y"
     { (yyval.stmt) = MkCompoundStmt((yyvsp[(1) - (1)].list), null); ;}
     break;
 
   case 1175:
 
 /* Line 1464 of yacc.c  */
-#line 3531 "grammar.y"
+#line 3381 "grammar.y"
     { (yyval.stmt) = MkCompoundStmt((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].list)); ;}
     break;
 
   case 1176:
 
 /* Line 1464 of yacc.c  */
-#line 3532 "grammar.y"
+#line 3382 "grammar.y"
     { (yyval.stmt) = MkCompoundStmt((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].list)); ;}
     break;
 
   case 1177:
 
 /* Line 1464 of yacc.c  */
-#line 3536 "grammar.y"
+#line 3386 "grammar.y"
     { (yyval.context) = PushContext(); ;}
     break;
 
   case 1178:
 
 /* Line 1464 of yacc.c  */
-#line 3540 "grammar.y"
+#line 3390 "grammar.y"
     { (yyval.stmt) = (yyvsp[(1) - (2)].stmt); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1179:
 
 /* Line 1464 of yacc.c  */
-#line 3545 "grammar.y"
+#line 3395 "grammar.y"
     { (yyval.stmt) = (yyvsp[(2) - (2)].stmt); (yyval.stmt).compound.context = (yyvsp[(1) - (2)].context); PopContext((yyvsp[(1) - (2)].context)); (yyval.stmt).loc = (yyloc); (yyval.stmt).loc.end.charPos++; (yyval.stmt).loc.end.pos++; ;}
     break;
 
   case 1180:
 
 /* Line 1464 of yacc.c  */
-#line 3547 "grammar.y"
+#line 3397 "grammar.y"
     { (yyval.stmt) = MkCompoundStmt(null, null); (yyval.stmt).compound.context = (yyvsp[(1) - (1)].context); PopContext((yyvsp[(1) - (1)].context)); (yyval.stmt).loc = (yyloc); (yyval.stmt).loc.end.charPos++; (yyval.stmt).loc.end.pos++; ;}
     break;
 
   case 1181:
 
 /* Line 1464 of yacc.c  */
-#line 3550 "grammar.y"
+#line 3400 "grammar.y"
     { (yyval.stmt) = (yyvsp[(2) - (2)].stmt); (yyval.stmt).compound.context = (yyvsp[(1) - (2)].context); PopContext((yyvsp[(1) - (2)].context)); (yyval.stmt).loc = (yyloc); (yyval.stmt).loc.end.charPos++; (yyval.stmt).loc.end.pos++; ;}
     break;
 
   case 1182:
 
 /* Line 1464 of yacc.c  */
-#line 3555 "grammar.y"
+#line 3405 "grammar.y"
     { (yyval.stmt) = MkExpressionStmt(null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1183:
 
 /* Line 1464 of yacc.c  */
-#line 3556 "grammar.y"
+#line 3406 "grammar.y"
     { (yyval.stmt) = MkExpressionStmt((yyvsp[(1) - (2)].list)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1184:
 
 /* Line 1464 of yacc.c  */
-#line 3557 "grammar.y"
+#line 3407 "grammar.y"
     { (yyval.stmt) = MkExpressionStmt((yyvsp[(1) - (2)].list)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1185:
 
 /* Line 1464 of yacc.c  */
-#line 3561 "grammar.y"
+#line 3411 "grammar.y"
     { (yyval.stmt) = MkIfStmt((yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].stmt), null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1186:
 
 /* Line 1464 of yacc.c  */
-#line 3562 "grammar.y"
+#line 3412 "grammar.y"
     { (yyval.stmt) = MkIfStmt((yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].stmt), null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1187:
 
 /* Line 1464 of yacc.c  */
-#line 3563 "grammar.y"
+#line 3413 "grammar.y"
     { (yyval.stmt) = MkIfStmt((yyvsp[(3) - (7)].list), (yyvsp[(5) - (7)].stmt), (yyvsp[(7) - (7)].stmt)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1188:
 
 /* Line 1464 of yacc.c  */
-#line 3564 "grammar.y"
+#line 3414 "grammar.y"
     { (yyval.stmt) = MkIfStmt((yyvsp[(3) - (7)].list), (yyvsp[(5) - (7)].stmt), (yyvsp[(7) - (7)].stmt)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1189:
 
 /* Line 1464 of yacc.c  */
-#line 3565 "grammar.y"
+#line 3415 "grammar.y"
     { (yyval.stmt) = MkSwitchStmt((yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].stmt)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1190:
 
 /* Line 1464 of yacc.c  */
-#line 3566 "grammar.y"
+#line 3416 "grammar.y"
     { (yyval.stmt) = MkSwitchStmt((yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].stmt)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1191:
 
 /* Line 1464 of yacc.c  */
-#line 3570 "grammar.y"
+#line 3420 "grammar.y"
     { (yyval.stmt) = MkIfStmt((yyvsp[(3) - (3)].list), null, null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1193:
 
 /* Line 1464 of yacc.c  */
-#line 3575 "grammar.y"
+#line 3425 "grammar.y"
     { (yyval.stmt) = MkWhileStmt((yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].stmt)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1194:
 
 /* Line 1464 of yacc.c  */
-#line 3576 "grammar.y"
+#line 3426 "grammar.y"
     { (yyval.stmt) = MkWhileStmt((yyvsp[(3) - (4)].list), (yyvsp[(4) - (4)].stmt)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1195:
 
 /* Line 1464 of yacc.c  */
-#line 3577 "grammar.y"
+#line 3427 "grammar.y"
     { yyerror(); (yyval.stmt) = MkWhileStmt(null, (yyvsp[(4) - (4)].stmt)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1196:
 
 /* Line 1464 of yacc.c  */
-#line 3579 "grammar.y"
+#line 3429 "grammar.y"
     { (yyval.stmt) = MkDoWhileStmt((yyvsp[(2) - (7)].stmt), (yyvsp[(5) - (7)].list)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1197:
 
 /* Line 1464 of yacc.c  */
-#line 3580 "grammar.y"
+#line 3430 "grammar.y"
     { (yyval.stmt) = MkDoWhileStmt((yyvsp[(2) - (6)].stmt), (yyvsp[(5) - (6)].list)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1198:
 
 /* Line 1464 of yacc.c  */
-#line 3582 "grammar.y"
+#line 3432 "grammar.y"
     { (yyval.stmt) = MkForStmt((yyvsp[(3) - (6)].stmt), (yyvsp[(4) - (6)].stmt), null, (yyvsp[(6) - (6)].stmt)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1199:
 
 /* Line 1464 of yacc.c  */
-#line 3583 "grammar.y"
+#line 3433 "grammar.y"
     { yyerror(); (yyval.stmt) = MkForStmt((yyvsp[(3) - (5)].stmt), null, null, (yyvsp[(5) - (5)].stmt)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1200:
 
 /* Line 1464 of yacc.c  */
-#line 3584 "grammar.y"
+#line 3434 "grammar.y"
     { (yyval.stmt) = MkForStmt((yyvsp[(3) - (7)].stmt), (yyvsp[(4) - (7)].stmt), (yyvsp[(5) - (7)].list), (yyvsp[(7) - (7)].stmt)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1201:
 
 /* Line 1464 of yacc.c  */
-#line 3585 "grammar.y"
+#line 3435 "grammar.y"
     { (yyval.stmt) = MkForStmt((yyvsp[(3) - (6)].stmt), (yyvsp[(4) - (6)].stmt), (yyvsp[(5) - (6)].list), (yyvsp[(6) - (6)].stmt) ); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1202:
 
 /* Line 1464 of yacc.c  */
-#line 3586 "grammar.y"
+#line 3436 "grammar.y"
     { yyerror(); (yyval.stmt) = MkForStmt(null, null, null, (yyvsp[(4) - (4)].stmt)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1203:
 
 /* Line 1464 of yacc.c  */
-#line 3588 "grammar.y"
+#line 3438 "grammar.y"
     { (yyval.stmt) = MkForEachStmt((yyvsp[(3) - (7)].id), (yyvsp[(5) - (7)].list), null, (yyvsp[(7) - (7)].stmt)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1204:
 
 /* Line 1464 of yacc.c  */
-#line 3589 "grammar.y"
+#line 3439 "grammar.y"
     { (yyval.stmt) = MkForEachStmt((yyvsp[(3) - (9)].id), (yyvsp[(5) - (9)].list), (yyvsp[(7) - (9)].list), (yyvsp[(9) - (9)].stmt)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1205:
 
 /* Line 1464 of yacc.c  */
-#line 3593 "grammar.y"
+#line 3443 "grammar.y"
     { (yyval.stmt) = MkForStmt(null, null, null, null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1206:
 
 /* Line 1464 of yacc.c  */
-#line 3594 "grammar.y"
+#line 3444 "grammar.y"
     { (yyval.stmt) = MkForStmt(MkExpressionStmt((yyvsp[(3) - (4)].list)), null, null, null); (yyval.stmt).forStmt.init.loc = (yylsp[(3) - (4)]); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1207:
 
 /* Line 1464 of yacc.c  */
-#line 3595 "grammar.y"
+#line 3445 "grammar.y"
     { (yyval.stmt) = MkForStmt((yyvsp[(3) - (4)].stmt), null, null, null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1208:
 
 /* Line 1464 of yacc.c  */
-#line 3596 "grammar.y"
+#line 3446 "grammar.y"
     { (yyval.stmt) = MkForStmt((yyvsp[(3) - (5)].stmt), MkExpressionStmt((yyvsp[(4) - (5)].list)), null, null); (yyval.stmt).loc = (yyloc); (yyval.stmt).forStmt.check.loc = (yylsp[(4) - (5)]); ;}
     break;
 
   case 1209:
 
 /* Line 1464 of yacc.c  */
-#line 3600 "grammar.y"
+#line 3450 "grammar.y"
     { (yyval.stmt) = MkForStmt((yyvsp[(3) - (5)].stmt), (yyvsp[(4) - (5)].stmt), (yyvsp[(5) - (5)].list), null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1210:
 
 /* Line 1464 of yacc.c  */
-#line 3601 "grammar.y"
+#line 3451 "grammar.y"
     { (yyval.stmt) = MkForStmt((yyvsp[(3) - (6)].stmt), (yyvsp[(4) - (6)].stmt), null, (yyvsp[(6) - (6)].stmt)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1211:
 
 /* Line 1464 of yacc.c  */
-#line 3602 "grammar.y"
+#line 3452 "grammar.y"
     { (yyval.stmt) = MkForStmt((yyvsp[(3) - (7)].stmt), (yyvsp[(4) - (7)].stmt), (yyvsp[(5) - (7)].list), (yyvsp[(7) - (7)].stmt)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1212:
 
 /* Line 1464 of yacc.c  */
-#line 3603 "grammar.y"
+#line 3453 "grammar.y"
     { (yyval.stmt) = MkForStmt((yyvsp[(3) - (6)].stmt), (yyvsp[(4) - (6)].stmt), (yyvsp[(5) - (6)].list), (yyvsp[(6) - (6)].stmt) ); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1213:
 
 /* Line 1464 of yacc.c  */
-#line 3605 "grammar.y"
+#line 3455 "grammar.y"
     { yyerror(); (yyval.stmt) = MkDoWhileStmt((yyvsp[(2) - (6)].stmt), (yyvsp[(5) - (6)].list)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1214:
 
 /* Line 1464 of yacc.c  */
-#line 3606 "grammar.y"
+#line 3456 "grammar.y"
     { yyerror(); (yyval.stmt) = MkDoWhileStmt((yyvsp[(2) - (5)].stmt), (yyvsp[(5) - (5)].list)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1215:
 
 /* Line 1464 of yacc.c  */
-#line 3607 "grammar.y"
+#line 3457 "grammar.y"
     { (yyval.stmt) = MkDoWhileStmt((yyvsp[(2) - (5)].stmt), (yyvsp[(5) - (5)].list)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1216:
 
 /* Line 1464 of yacc.c  */
-#line 3608 "grammar.y"
+#line 3458 "grammar.y"
     { (yyval.stmt) = MkDoWhileStmt((yyvsp[(2) - (4)].stmt), null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1217:
 
 /* Line 1464 of yacc.c  */
-#line 3609 "grammar.y"
+#line 3459 "grammar.y"
     { yyerror(); (yyval.stmt) = MkDoWhileStmt((yyvsp[(2) - (3)].stmt), null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1218:
 
 /* Line 1464 of yacc.c  */
-#line 3610 "grammar.y"
+#line 3460 "grammar.y"
     { yyerror(); (yyval.stmt) = MkDoWhileStmt((yyvsp[(2) - (2)].stmt), null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1219:
 
 /* Line 1464 of yacc.c  */
-#line 3611 "grammar.y"
+#line 3461 "grammar.y"
     { yyerror(); (yyval.stmt) = MkDoWhileStmt(null, null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1220:
 
 /* Line 1464 of yacc.c  */
-#line 3614 "grammar.y"
+#line 3464 "grammar.y"
     { (yyval.stmt) = MkWhileStmt(null, null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1221:
 
 /* Line 1464 of yacc.c  */
-#line 3618 "grammar.y"
+#line 3468 "grammar.y"
     { (yyval.stmt) = MkWhileStmt(null, null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1222:
 
 /* Line 1464 of yacc.c  */
-#line 3619 "grammar.y"
+#line 3469 "grammar.y"
     { (yyval.stmt) = MkWhileStmt((yyvsp[(3) - (3)].list), null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1223:
 
 /* Line 1464 of yacc.c  */
-#line 3623 "grammar.y"
+#line 3473 "grammar.y"
     { (yyval.stmt) = MkWhileStmt((yyvsp[(3) - (5)].list), (yyvsp[(5) - (5)].stmt)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1224:
 
 /* Line 1464 of yacc.c  */
-#line 3624 "grammar.y"
+#line 3474 "grammar.y"
     { (yyval.stmt) = MkWhileStmt((yyvsp[(3) - (4)].list), (yyvsp[(4) - (4)].stmt) ); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1225:
 
 /* Line 1464 of yacc.c  */
-#line 3628 "grammar.y"
+#line 3478 "grammar.y"
     { (yyval.stmt) = MkGotoStmt((yyvsp[(2) - (3)].id)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1226:
 
 /* Line 1464 of yacc.c  */
-#line 3629 "grammar.y"
+#line 3479 "grammar.y"
     { (yyval.stmt) = MkContinueStmt(); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1227:
 
 /* Line 1464 of yacc.c  */
-#line 3630 "grammar.y"
+#line 3480 "grammar.y"
     { (yyval.stmt) = MkBreakStmt(); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1228:
 
 /* Line 1464 of yacc.c  */
-#line 3631 "grammar.y"
+#line 3481 "grammar.y"
     { Expression exp = MkExpDummy(); (yyval.stmt) = MkReturnStmt(MkListOne(exp)); (yyval.stmt).loc = (yyloc); exp.loc = (yylsp[(2) - (2)]); ;}
     break;
 
   case 1229:
 
 /* Line 1464 of yacc.c  */
-#line 3632 "grammar.y"
+#line 3482 "grammar.y"
     { (yyval.stmt) = MkReturnStmt((yyvsp[(2) - (3)].list)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1230:
 
 /* Line 1464 of yacc.c  */
-#line 3633 "grammar.y"
+#line 3483 "grammar.y"
     { (yyval.stmt) = MkReturnStmt((yyvsp[(2) - (3)].list)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1231:
 
 /* Line 1464 of yacc.c  */
-#line 3634 "grammar.y"
+#line 3484 "grammar.y"
     { (yyval.stmt) = MkReturnStmt(MkListOne((yyvsp[(2) - (3)].exp))); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1232:
 
 /* Line 1464 of yacc.c  */
-#line 3635 "grammar.y"
+#line 3485 "grammar.y"
     { (yyval.stmt) = MkReturnStmt(MkListOne((yyvsp[(2) - (3)].exp))); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1233:
 
 /* Line 1464 of yacc.c  */
-#line 3639 "grammar.y"
+#line 3489 "grammar.y"
     { (yyval.stmt) = MkReturnStmt((yyvsp[(2) - (2)].list)); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1234:
 
 /* Line 1464 of yacc.c  */
-#line 3640 "grammar.y"
+#line 3490 "grammar.y"
     { (yyval.stmt) = MkReturnStmt(MkListOne((yyvsp[(2) - (2)].exp))); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1235:
 
 /* Line 1464 of yacc.c  */
-#line 3641 "grammar.y"
+#line 3491 "grammar.y"
     { Expression exp = MkExpDummy(); (yyval.stmt) = MkReturnStmt(MkListOne(exp)); (yyval.stmt).loc = (yyloc); exp.loc.start = exp.loc.end = (yylsp[(1) - (1)]).end; ;}
     break;
 
   case 1236:
 
 /* Line 1464 of yacc.c  */
-#line 3642 "grammar.y"
+#line 3492 "grammar.y"
     { (yyval.stmt) = MkGotoStmt(null); (yyval.stmt).loc = (yyloc); ;}
     break;
 
   case 1237:
 
 /* Line 1464 of yacc.c  */
-#line 3648 "grammar.y"
+#line 3498 "grammar.y"
     { (yyval.function) = MkFunction((yyvsp[(1) - (4)].list), (yyvsp[(2) - (4)].declarator), (yyvsp[(3) - (4)].list)); ProcessFunctionBody((yyval.function), (yyvsp[(4) - (4)].stmt)); (yyval.function).loc = (yyloc); ;}
     break;
 
   case 1238:
 
 /* Line 1464 of yacc.c  */
-#line 3650 "grammar.y"
+#line 3500 "grammar.y"
     { (yyval.function) = MkFunction((yyvsp[(1) - (3)].list), (yyvsp[(2) - (3)].declarator), null); ProcessFunctionBody((yyval.function), (yyvsp[(3) - (3)].stmt)); (yyval.function).loc = (yyloc); ;}
     break;
 
   case 1239:
 
 /* Line 1464 of yacc.c  */
-#line 3651 "grammar.y"
+#line 3501 "grammar.y"
     { (yyval.function) = MkFunction((yyvsp[(1) - (4)].list), (yyvsp[(2) - (4)].declarator), (yyvsp[(3) - (4)].list)); ProcessFunctionBody((yyval.function), (yyvsp[(4) - (4)].stmt)); (yyval.function).loc = (yyloc); ;}
     break;
 
   case 1240:
 
 /* Line 1464 of yacc.c  */
-#line 3653 "grammar.y"
+#line 3503 "grammar.y"
     { (yyval.function) = MkFunction((yyvsp[(1) - (3)].list), (yyvsp[(2) - (3)].declarator), null); ProcessFunctionBody((yyval.function), (yyvsp[(3) - (3)].stmt)); (yyval.function).loc = (yyloc); ;}
     break;
 
   case 1241:
 
 /* Line 1464 of yacc.c  */
-#line 3655 "grammar.y"
+#line 3505 "grammar.y"
     { (yyval.function) = MkFunction(null, (yyvsp[(1) - (3)].declarator), (yyvsp[(2) - (3)].list)); ProcessFunctionBody((yyval.function), (yyvsp[(3) - (3)].stmt)); (yyval.function).loc = (yyloc); ;}
     break;
 
   case 1242:
 
 /* Line 1464 of yacc.c  */
-#line 3656 "grammar.y"
+#line 3506 "grammar.y"
     { (yyval.function) = MkFunction(null, (yyvsp[(1) - (2)].declarator), null); ProcessFunctionBody((yyval.function), (yyvsp[(2) - (2)].stmt)); (yyval.function).loc = (yyloc);;}
     break;
 
   case 1243:
 
 /* Line 1464 of yacc.c  */
-#line 3659 "grammar.y"
+#line 3509 "grammar.y"
     { (yyval.function) = MkFunction((yyvsp[(1) - (4)].list), (yyvsp[(2) - (4)].declarator), (yyvsp[(3) - (4)].list)); ProcessFunctionBody((yyval.function), (yyvsp[(4) - (4)].stmt)); (yyval.function).loc = (yyloc); (yyval.function).loc.end = (yyvsp[(4) - (4)].stmt).loc.end; ;}
     break;
 
   case 1244:
 
 /* Line 1464 of yacc.c  */
-#line 3660 "grammar.y"
+#line 3510 "grammar.y"
     { (yyval.function) = MkFunction((yyvsp[(1) - (3)].list), (yyvsp[(2) - (3)].declarator), null); ProcessFunctionBody((yyval.function), (yyvsp[(3) - (3)].stmt)); (yyval.function).loc = (yyloc); (yyval.function).loc.end = (yyvsp[(3) - (3)].stmt).loc.end; ;}
     break;
 
   case 1245:
 
 /* Line 1464 of yacc.c  */
-#line 3661 "grammar.y"
+#line 3511 "grammar.y"
     { (yyval.function) = MkFunction((yyvsp[(1) - (4)].list), (yyvsp[(2) - (4)].declarator), (yyvsp[(3) - (4)].list)); ProcessFunctionBody((yyval.function), (yyvsp[(4) - (4)].stmt)); (yyval.function).loc = (yyloc); (yyval.function).loc.end = (yyvsp[(4) - (4)].stmt).loc.end; ;}
     break;
 
   case 1246:
 
 /* Line 1464 of yacc.c  */
-#line 3662 "grammar.y"
+#line 3512 "grammar.y"
     { (yyval.function) = MkFunction((yyvsp[(1) - (3)].list), (yyvsp[(2) - (3)].declarator), null); ProcessFunctionBody((yyval.function), (yyvsp[(3) - (3)].stmt)); (yyval.function).loc = (yyloc); (yyval.function).loc.end = (yyvsp[(3) - (3)].stmt).loc.end; ;}
     break;
 
   case 1247:
 
 /* Line 1464 of yacc.c  */
-#line 3663 "grammar.y"
+#line 3513 "grammar.y"
     { (yyval.function) = MkFunction(null, (yyvsp[(1) - (3)].declarator), (yyvsp[(2) - (3)].list)); ProcessFunctionBody((yyval.function), (yyvsp[(3) - (3)].stmt)); (yyval.function).loc = (yyloc); (yyval.function).loc.end = (yyvsp[(3) - (3)].stmt).loc.end; ;}
     break;
 
   case 1248:
 
 /* Line 1464 of yacc.c  */
-#line 3664 "grammar.y"
+#line 3514 "grammar.y"
     { (yyval.function) = MkFunction(null, (yyvsp[(1) - (2)].declarator), null); ProcessFunctionBody((yyval.function), (yyvsp[(2) - (2)].stmt)); (yyval.function).loc = (yyloc); (yyval.function).loc.end = (yyvsp[(2) - (2)].stmt).loc.end; ;}
     break;
 
   case 1249:
 
 /* Line 1464 of yacc.c  */
-#line 3668 "grammar.y"
+#line 3518 "grammar.y"
     { (yyval.string) = CopyString(yytext); ;}
     break;
 
   case 1250:
 
 /* Line 1464 of yacc.c  */
-#line 3670 "grammar.y"
+#line 3520 "grammar.y"
     {
       int len1 = strlen((yyvsp[(1) - (2)].string));
       int len2 = strlen(yytext);
@@ -22186,49 +22076,49 @@ yyreduce:
   case 1251:
 
 /* Line 1464 of yacc.c  */
-#line 3681 "grammar.y"
+#line 3531 "grammar.y"
     { (yyval.external) = MkExternalFunction((yyvsp[(1) - (1)].function)); (yyval.external).loc = (yyloc); (yyvsp[(1) - (1)].function).declMode = declMode; structDeclMode = declMode = defaultDeclMode; ;}
     break;
 
   case 1252:
 
 /* Line 1464 of yacc.c  */
-#line 3683 "grammar.y"
+#line 3533 "grammar.y"
     { (yyval.external) = MkExternalClass((yyvsp[(1) - (1)]._class));  (yyval.external).loc = (yyloc); (yyvsp[(1) - (1)]._class).declMode = (declMode != defaultAccess) ? declMode : privateAccess; structDeclMode = declMode = defaultDeclMode; ;}
     break;
 
   case 1253:
 
 /* Line 1464 of yacc.c  */
-#line 3686 "grammar.y"
+#line 3536 "grammar.y"
     { (yyval.external) = MkExternalClass((yyvsp[(2) - (2)]._class));  (yyval.external).loc = (yyloc); (yyvsp[(2) - (2)]._class).declMode = (declMode != defaultAccess) ? declMode : privateAccess; structDeclMode = declMode = defaultDeclMode; FreeList((yyvsp[(1) - (2)].list), FreeSpecifier); ;}
     break;
 
   case 1254:
 
 /* Line 1464 of yacc.c  */
-#line 3689 "grammar.y"
+#line 3539 "grammar.y"
     { (yyval.external) = MkExternalDeclaration((yyvsp[(1) - (1)].declaration));  (yyval.external).loc = (yyloc); (yyvsp[(1) - (1)].declaration).declMode = declMode; structDeclMode = declMode = defaultDeclMode; ;}
     break;
 
   case 1255:
 
 /* Line 1464 of yacc.c  */
-#line 3690 "grammar.y"
+#line 3540 "grammar.y"
     { (yyval.external) = MkExternalImport((yyvsp[(2) - (2)].string), normalImport, (declMode != defaultAccess) ? declMode : privateAccess);  (yyval.external).loc = (yyloc); ;}
     break;
 
   case 1256:
 
 /* Line 1464 of yacc.c  */
-#line 3691 "grammar.y"
+#line 3541 "grammar.y"
     { (yyval.external) = MkExternalImport((yyvsp[(3) - (3)].string), staticImport, (declMode != defaultAccess) ? declMode : privateAccess);  (yyval.external).loc = (yyloc); ;}
     break;
 
   case 1257:
 
 /* Line 1464 of yacc.c  */
-#line 3693 "grammar.y"
+#line 3543 "grammar.y"
     {
       bool isRemote = !strcmp((yyvsp[(2) - (3)].id).string, "remote");
       (yyval.external) = MkExternalImport((yyvsp[(3) - (3)].string), isRemote ? remoteImport : normalImport, (declMode != defaultAccess) ? declMode : privateAccess);
@@ -22242,49 +22132,49 @@ yyreduce:
   case 1258:
 
 /* Line 1464 of yacc.c  */
-#line 3702 "grammar.y"
+#line 3552 "grammar.y"
     { (yyval.external) = null; ;}
     break;
 
   case 1259:
 
 /* Line 1464 of yacc.c  */
-#line 3704 "grammar.y"
+#line 3554 "grammar.y"
     { (yyval.external) = MkExternalFunction((yyvsp[(2) - (2)].function)); (yyval.external).loc = (yyloc); (yyvsp[(2) - (2)].function).declMode = (yyvsp[(1) - (2)].declMode); structDeclMode = declMode = defaultDeclMode; ;}
     break;
 
   case 1260:
 
 /* Line 1464 of yacc.c  */
-#line 3706 "grammar.y"
+#line 3556 "grammar.y"
     { (yyval.external) = MkExternalClass((yyvsp[(2) - (2)]._class));  (yyval.external).loc = (yyloc); (yyvsp[(2) - (2)]._class).declMode = ((yyvsp[(1) - (2)].declMode) != defaultAccess) ? (yyvsp[(1) - (2)].declMode) : privateAccess; structDeclMode = declMode = defaultDeclMode; ;}
     break;
 
   case 1261:
 
 /* Line 1464 of yacc.c  */
-#line 3707 "grammar.y"
+#line 3557 "grammar.y"
     { (yyval.external) = MkExternalDeclaration((yyvsp[(2) - (2)].declaration)); (yyval.external).loc = (yyloc); (yyvsp[(2) - (2)].declaration).declMode = (yyvsp[(1) - (2)].declMode); structDeclMode = declMode = defaultDeclMode; ;}
     break;
 
   case 1262:
 
 /* Line 1464 of yacc.c  */
-#line 3708 "grammar.y"
+#line 3558 "grammar.y"
     { (yyval.external) = MkExternalImport((yyvsp[(3) - (3)].string), normalImport, ((yyvsp[(1) - (3)].declMode) != defaultAccess) ? (yyvsp[(1) - (3)].declMode) : privateAccess);  (yyval.external).loc = (yyloc); structDeclMode = declMode = defaultDeclMode; ;}
     break;
 
   case 1263:
 
 /* Line 1464 of yacc.c  */
-#line 3709 "grammar.y"
+#line 3559 "grammar.y"
     { (yyval.external) = MkExternalImport((yyvsp[(4) - (4)].string), staticImport, ((yyvsp[(1) - (4)].declMode) != defaultAccess) ? (yyvsp[(1) - (4)].declMode) : privateAccess);  (yyval.external).loc = (yyloc); structDeclMode = declMode = defaultDeclMode; ;}
     break;
 
   case 1264:
 
 /* Line 1464 of yacc.c  */
-#line 3711 "grammar.y"
+#line 3561 "grammar.y"
     {
       bool isRemote = !strcmp((yyvsp[(3) - (4)].id).string, "remote");
       (yyval.external) = MkExternalImport((yyvsp[(4) - (4)].string), isRemote ? remoteImport : normalImport, ((yyvsp[(1) - (4)].declMode) != defaultAccess) ? (yyvsp[(1) - (4)].declMode) : privateAccess);
@@ -22299,56 +22189,56 @@ yyreduce:
   case 1265:
 
 /* Line 1464 of yacc.c  */
-#line 3720 "grammar.y"
+#line 3570 "grammar.y"
     { defaultDeclMode = (yyvsp[(1) - (2)].declMode); (yyval.external) = null; ;}
     break;
 
   case 1266:
 
 /* Line 1464 of yacc.c  */
-#line 3721 "grammar.y"
+#line 3571 "grammar.y"
     { defaultDeclMode = staticAccess; (yyval.external) = null; ;}
     break;
 
   case 1267:
 
 /* Line 1464 of yacc.c  */
-#line 3722 "grammar.y"
+#line 3572 "grammar.y"
     { (yyval.external) = MkExternalNameSpace((yyvsp[(2) - (2)].id)); (yyval.external).loc = (yyloc); ;}
     break;
 
   case 1268:
 
 /* Line 1464 of yacc.c  */
-#line 3723 "grammar.y"
+#line 3573 "grammar.y"
     { (yyval.external) = MkExternalNameSpace(MkIdentifier((yyvsp[(2) - (2)].specifier).name)); FreeSpecifier((yyvsp[(2) - (2)].specifier)); (yyval.external).loc = (yyloc); ;}
     break;
 
   case 1269:
 
 /* Line 1464 of yacc.c  */
-#line 3724 "grammar.y"
+#line 3574 "grammar.y"
     { (yyval.external) = MkExternalDBTable((yyvsp[(1) - (1)].dbtableDef)); (yyval.external).loc = (yyloc);  (yyvsp[(1) - (1)].dbtableDef).declMode = (declMode != defaultAccess) ? declMode : privateAccess; structDeclMode = declMode = defaultDeclMode; ;}
     break;
 
   case 1270:
 
 /* Line 1464 of yacc.c  */
-#line 3725 "grammar.y"
+#line 3575 "grammar.y"
     { (yyval.external) = MkExternalDBTable((yyvsp[(2) - (2)].dbtableDef)); (yyval.external).loc = (yyloc);  (yyvsp[(2) - (2)].dbtableDef).declMode = ((yyvsp[(1) - (2)].declMode) != defaultAccess) ? declMode : privateAccess; structDeclMode = declMode = defaultDeclMode; ;}
     break;
 
   case 1271:
 
 /* Line 1464 of yacc.c  */
-#line 3729 "grammar.y"
+#line 3579 "grammar.y"
     { yyerror(); (yyval.external) = MkExternalClass((yyvsp[(1) - (1)]._class));  (yyval.external).loc = (yyvsp[(1) - (1)]._class).loc; (yyvsp[(1) - (1)]._class).declMode = (declMode != defaultAccess) ? declMode : privateAccess; structDeclMode = declMode = defaultDeclMode; ;}
     break;
 
   case 1272:
 
 /* Line 1464 of yacc.c  */
-#line 3731 "grammar.y"
+#line 3581 "grammar.y"
     {
       yyerror();
       FreeList((yyvsp[(1) - (2)].list), FreeSpecifier);
@@ -22362,231 +22252,231 @@ yyreduce:
   case 1273:
 
 /* Line 1464 of yacc.c  */
-#line 3739 "grammar.y"
+#line 3589 "grammar.y"
     { yyerror(); (yyval.external) = MkExternalFunction((yyvsp[(1) - (1)].function)); (yyval.external).loc = (yyvsp[(1) - (1)].function).loc;  (yyvsp[(1) - (1)].function).declMode = declMode; structDeclMode = declMode = defaultDeclMode; ;}
     break;
 
   case 1274:
 
 /* Line 1464 of yacc.c  */
-#line 3741 "grammar.y"
+#line 3591 "grammar.y"
     { yyerror(); (yyval.external) = MkExternalClass((yyvsp[(2) - (2)]._class));  (yyval.external).loc = (yyvsp[(2) - (2)]._class).loc; (yyvsp[(2) - (2)]._class).declMode = ((yyvsp[(1) - (2)].declMode) != defaultAccess) ? (yyvsp[(1) - (2)].declMode) : privateAccess; structDeclMode = declMode = defaultDeclMode; ;}
     break;
 
   case 1275:
 
 /* Line 1464 of yacc.c  */
-#line 3742 "grammar.y"
+#line 3592 "grammar.y"
     { yyerror(); (yyval.external) = MkExternalFunction((yyvsp[(2) - (2)].function)); (yyval.external).loc = (yyvsp[(2) - (2)].function).loc; (yyvsp[(2) - (2)].function).declMode = (yyvsp[(1) - (2)].declMode); structDeclMode = declMode = defaultDeclMode; ;}
     break;
 
   case 1276:
 
 /* Line 1464 of yacc.c  */
-#line 3745 "grammar.y"
+#line 3595 "grammar.y"
     { yyerror(); (yyval.external) = MkExternalDeclaration((yyvsp[(1) - (1)].declaration));  (yyval.external).loc = (yyloc); (yyvsp[(1) - (1)].declaration).declMode = declMode; structDeclMode = declMode = defaultDeclMode; ;}
     break;
 
   case 1277:
 
 /* Line 1464 of yacc.c  */
-#line 3746 "grammar.y"
+#line 3596 "grammar.y"
     { yyerror(); (yyval.external) = MkExternalDeclaration((yyvsp[(2) - (2)].declaration)); (yyval.external).loc = (yyloc); (yyvsp[(2) - (2)].declaration).declMode = (yyvsp[(1) - (2)].declMode); structDeclMode = declMode = defaultDeclMode; ;}
     break;
 
   case 1278:
 
 /* Line 1464 of yacc.c  */
-#line 3750 "grammar.y"
+#line 3600 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].external)); ast = (yyval.list); ;}
     break;
 
   case 1279:
 
 /* Line 1464 of yacc.c  */
-#line 3751 "grammar.y"
+#line 3601 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].external)); ;}
     break;
 
   case 1280:
 
 /* Line 1464 of yacc.c  */
-#line 3752 "grammar.y"
+#line 3602 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].external)); ;}
     break;
 
   case 1283:
 
 /* Line 1464 of yacc.c  */
-#line 3758 "grammar.y"
+#line 3608 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].external)); ast = (yyval.list); ;}
     break;
 
   case 1284:
 
 /* Line 1464 of yacc.c  */
-#line 3759 "grammar.y"
+#line 3609 "grammar.y"
     { (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].external)); ;}
     break;
 
   case 1285:
 
 /* Line 1464 of yacc.c  */
-#line 3761 "grammar.y"
+#line 3611 "grammar.y"
     { External _class = MkExternalClass((yyvsp[(2) - (2)]._class)); (yyval.list) = (yyvsp[(1) - (2)].list); ListAdd((yyvsp[(1) - (2)].list), _class); _class.loc = (yylsp[(2) - (2)]);  (yyvsp[(2) - (2)]._class).declMode = (declMode != defaultAccess) ? declMode : privateAccess; structDeclMode = declMode = defaultDeclMode; ;}
     break;
 
   case 1286:
 
 /* Line 1464 of yacc.c  */
-#line 3763 "grammar.y"
+#line 3613 "grammar.y"
     { External _class = MkExternalClass((yyvsp[(3) - (3)]._class)); (yyval.list) = (yyvsp[(1) - (3)].list); ListAdd((yyvsp[(1) - (3)].list), _class); _class.loc = (yylsp[(3) - (3)]);  (yyvsp[(3) - (3)]._class).declMode = ((yyvsp[(2) - (3)].declMode) != defaultAccess) ? (yyvsp[(2) - (3)].declMode) : privateAccess; structDeclMode = declMode = defaultDeclMode; ;}
     break;
 
   case 1289:
 
 /* Line 1464 of yacc.c  */
-#line 3769 "grammar.y"
+#line 3619 "grammar.y"
     { ast = MkList(); ;}
     break;
 
   case 1290:
 
 /* Line 1464 of yacc.c  */
-#line 3773 "grammar.y"
-    { Symbol symbol = DeclClassAddNameSpace((yyvsp[(3) - (6)].id).string); FreeIdentifier((yyvsp[(3) - (6)].id)); (yyval.dbtableDef) = MkDBTableDef((yyvsp[(2) - (6)].string), symbol, (yyvsp[(5) - (6)].list)); ;}
+#line 3623 "grammar.y"
+    { Symbol symbol = DeclClassAddNameSpace((yyvsp[(3) - (6)].id)._class, (yyvsp[(3) - (6)].id).string); FreeIdentifier((yyvsp[(3) - (6)].id)); (yyval.dbtableDef) = MkDBTableDef((yyvsp[(2) - (6)].string), symbol, (yyvsp[(5) - (6)].list)); ;}
     break;
 
   case 1291:
 
 /* Line 1464 of yacc.c  */
-#line 3774 "grammar.y"
-    { Symbol symbol = DeclClass((yyvsp[(3) - (6)].specifier).name); FreeSpecifier((yyvsp[(3) - (6)].specifier)); (yyval.dbtableDef) = MkDBTableDef((yyvsp[(2) - (6)].string), symbol, (yyvsp[(5) - (6)].list)); ;}
+#line 3624 "grammar.y"
+    { Symbol symbol = DeclClass((yyvsp[(3) - (6)].specifier).nsSpec, (yyvsp[(3) - (6)].specifier).name); FreeSpecifier((yyvsp[(3) - (6)].specifier)); (yyval.dbtableDef) = MkDBTableDef((yyvsp[(2) - (6)].string), symbol, (yyvsp[(5) - (6)].list)); ;}
     break;
 
   case 1292:
 
 /* Line 1464 of yacc.c  */
-#line 3775 "grammar.y"
+#line 3625 "grammar.y"
     { (yyval.dbtableDef) = MkDBTableDef((yyvsp[(2) - (5)].string), null, (yyvsp[(4) - (5)].list)); ;}
     break;
 
   case 1293:
 
 /* Line 1464 of yacc.c  */
-#line 3779 "grammar.y"
+#line 3629 "grammar.y"
     { (yyval.dbtableEntry) = MkDBFieldEntry(MkTypeName((yyvsp[(1) - (4)].list), null), (yyvsp[(2) - (4)].id), (yyvsp[(3) - (4)].string)); ;}
     break;
 
   case 1294:
 
 /* Line 1464 of yacc.c  */
-#line 3783 "grammar.y"
+#line 3633 "grammar.y"
     { (yyval.dbindexItem) = MkDBIndexItem((yyvsp[(1) - (1)].id), ascending); ;}
     break;
 
   case 1295:
 
 /* Line 1464 of yacc.c  */
-#line 3784 "grammar.y"
+#line 3634 "grammar.y"
     { (yyval.dbindexItem) = MkDBIndexItem((yyvsp[(2) - (2)].id), descending); ;}
     break;
 
   case 1296:
 
 /* Line 1464 of yacc.c  */
-#line 3785 "grammar.y"
+#line 3635 "grammar.y"
     { (yyval.dbindexItem) = MkDBIndexItem((yyvsp[(2) - (2)].id), ascending); ;}
     break;
 
   case 1297:
 
 /* Line 1464 of yacc.c  */
-#line 3789 "grammar.y"
+#line 3639 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].dbindexItem)); ;}
     break;
 
   case 1298:
 
 /* Line 1464 of yacc.c  */
-#line 3790 "grammar.y"
+#line 3640 "grammar.y"
     { ListAdd((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].dbindexItem)); ;}
     break;
 
   case 1299:
 
 /* Line 1464 of yacc.c  */
-#line 3794 "grammar.y"
+#line 3644 "grammar.y"
     { (yyval.dbtableEntry) = MkDBIndexEntry((yyvsp[(2) - (3)].list), null); ;}
     break;
 
   case 1300:
 
 /* Line 1464 of yacc.c  */
-#line 3795 "grammar.y"
+#line 3645 "grammar.y"
     { (yyval.dbtableEntry) = MkDBIndexEntry((yyvsp[(2) - (4)].list), (yyvsp[(3) - (4)].id)); ;}
     break;
 
   case 1301:
 
 /* Line 1464 of yacc.c  */
-#line 3799 "grammar.y"
+#line 3649 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].dbtableEntry)); ;}
     break;
 
   case 1302:
 
 /* Line 1464 of yacc.c  */
-#line 3800 "grammar.y"
+#line 3650 "grammar.y"
     { (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[(1) - (1)].dbtableEntry)); ;}
     break;
 
   case 1303:
 
 /* Line 1464 of yacc.c  */
-#line 3801 "grammar.y"
+#line 3651 "grammar.y"
     { ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].dbtableEntry)); ;}
     break;
 
   case 1304:
 
 /* Line 1464 of yacc.c  */
-#line 3802 "grammar.y"
+#line 3652 "grammar.y"
     { ListAdd((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].dbtableEntry)); ;}
     break;
 
   case 1305:
 
 /* Line 1464 of yacc.c  */
-#line 3806 "grammar.y"
+#line 3656 "grammar.y"
     { (yyval.exp) = MkExpDBOpen((yyvsp[(3) - (6)].exp), (yyvsp[(5) - (6)].exp)); ;}
     break;
 
   case 1306:
 
 /* Line 1464 of yacc.c  */
-#line 3810 "grammar.y"
+#line 3660 "grammar.y"
     { (yyval.exp) = MkExpDBField((yyvsp[(3) - (6)].string), (yyvsp[(5) - (6)].id)); ;}
     break;
 
   case 1307:
 
 /* Line 1464 of yacc.c  */
-#line 3814 "grammar.y"
+#line 3664 "grammar.y"
     { (yyval.exp) = MkExpDBIndex((yyvsp[(3) - (6)].string), (yyvsp[(5) - (6)].id)); ;}
     break;
 
   case 1308:
 
 /* Line 1464 of yacc.c  */
-#line 3818 "grammar.y"
+#line 3668 "grammar.y"
     { (yyval.exp) = MkExpDBTable((yyvsp[(3) - (4)].string)); ;}
     break;
 
 
 
 /* Line 1464 of yacc.c  */
-#line 22590 "grammar.ec"
+#line 22480 "grammar.ec"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -22805,6 +22695,6 @@ yyreturn:
 
 
 /* Line 1684 of yacc.c  */
-#line 3821 "grammar.y"
+#line 3671 "grammar.y"