Index: src/Parser/ExpressionNode.cc
===================================================================
--- src/Parser/ExpressionNode.cc	(revision faddbd88e10faf4096d269d1ac28b46bfa0f57aa)
+++ src/Parser/ExpressionNode.cc	(revision 7756647eaf7d18e5f8c8c4841b9279a5f4e4f8dc)
@@ -198,15 +198,13 @@
 }
 
-Expression *build_fieldSel( ExpressionNode *expr_node, NameExpr *member ) {
-	UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybeMoveBuild< Expression >(expr_node) );
-	delete member;
-	return ret;
-}
-
-Expression *build_pfieldSel( ExpressionNode *expr_node, NameExpr *member ) {
+Expression *build_fieldSel( ExpressionNode *expr_node, Expression *member ) {
+	UntypedMemberExpr *ret = new UntypedMemberExpr( member, maybeMoveBuild< Expression >(expr_node) );
+	return ret;
+}
+
+Expression *build_pfieldSel( ExpressionNode *expr_node, Expression *member ) {
 	UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) );
 	deref->get_args().push_back( maybeMoveBuild< Expression >(expr_node) );
-	UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), deref );
-	delete member;
+	UntypedMemberExpr *ret = new UntypedMemberExpr( member, deref );
 	return ret;
 }
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision faddbd88e10faf4096d269d1ac28b46bfa0f57aa)
+++ src/Parser/ParseNode.h	(revision 7756647eaf7d18e5f8c8c4841b9279a5f4e4f8dc)
@@ -160,6 +160,6 @@
 
 Expression * build_cast( DeclarationNode * decl_node, ExpressionNode * expr_node );
-Expression * build_fieldSel( ExpressionNode * expr_node, NameExpr * member );
-Expression * build_pfieldSel( ExpressionNode * expr_node, NameExpr * member );
+Expression * build_fieldSel( ExpressionNode * expr_node, Expression * member );
+Expression * build_pfieldSel( ExpressionNode * expr_node, Expression * member );
 Expression * build_addressOf( ExpressionNode * expr_node );
 Expression * build_sizeOfexpr( ExpressionNode * expr_node );
@@ -383,8 +383,8 @@
 //##############################################################################
 
-template< typename SynTreeType, typename NodeType >
-void buildList( const NodeType * firstNode, std::list< SynTreeType * > &outputList ) {
+template< typename SynTreeType, typename NodeType, template< typename, typename...> class Container, typename... Args >
+void buildList( const NodeType * firstNode, Container< SynTreeType *, Args... > &outputList ) {
 	SemanticError errors;
-	std::back_insert_iterator< std::list< SynTreeType * > > out( outputList );
+	std::back_insert_iterator< Container< SynTreeType *, Args... > > out( outputList );
 	const NodeType * cur = firstNode;
 
Index: src/Parser/TypeData.cc
===================================================================
--- src/Parser/TypeData.cc	(revision faddbd88e10faf4096d269d1ac28b46bfa0f57aa)
+++ src/Parser/TypeData.cc	(revision 7756647eaf7d18e5f8c8c4841b9279a5f4e4f8dc)
@@ -385,31 +385,33 @@
 } // TypeData::print
 
-void buildForall( const DeclarationNode * firstNode, list< TypeDecl* > &outputList ) {
+template< typename ForallList >
+void buildForall( const DeclarationNode * firstNode, ForallList &outputList ) {
 	buildList( firstNode, outputList );
-	for ( list< TypeDecl* >::iterator i = outputList.begin(); i != outputList.end(); ++i ) {
-		if ( (*i)->get_kind() == TypeDecl::Any ) {
+	for ( typename ForallList::iterator i = outputList.begin(); i != outputList.end(); ++i ) {
+		TypeDecl * td = static_cast<TypeDecl*>(*i);
+		if ( td->get_kind() == TypeDecl::Any ) {
 			// add assertion parameters to `type' tyvars in reverse order
 			// add dtor:  void ^?{}(T *)
 			FunctionType * dtorType = new FunctionType( Type::Qualifiers(), false );
-			dtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ) ), nullptr ) );
-			(*i)->get_assertions().push_front( new FunctionDecl( "^?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, dtorType, nullptr, false, false ) );
+			dtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), *i ) ), nullptr ) );
+			td->get_assertions().push_front( new FunctionDecl( "^?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, dtorType, nullptr, false, false ) );
 
 			// add copy ctor:  void ?{}(T *, T)
 			FunctionType * copyCtorType = new FunctionType( Type::Qualifiers(), false );
-			copyCtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ) ), nullptr ) );
-			copyCtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ), nullptr ) );
-			(*i)->get_assertions().push_front( new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, copyCtorType, nullptr, false, false ) );
+			copyCtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), *i ) ), nullptr ) );
+			copyCtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new TypeInstType( Type::Qualifiers(), td->get_name(), *i ), nullptr ) );
+			td->get_assertions().push_front( new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, copyCtorType, nullptr, false, false ) );
 
 			// add default ctor:  void ?{}(T *)
 			FunctionType * ctorType = new FunctionType( Type::Qualifiers(), false );
-			ctorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ) ), nullptr ) );
-			(*i)->get_assertions().push_front( new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, ctorType, nullptr, false, false ) );
+			ctorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), *i ) ), nullptr ) );
+			td->get_assertions().push_front( new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, ctorType, nullptr, false, false ) );
 
 			// add assignment operator:  T * ?=?(T *, T)
 			FunctionType * assignType = new FunctionType( Type::Qualifiers(), false );
-			assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ) ), nullptr ) );
-			assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ), nullptr ) );
-			assignType->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ), nullptr ) );
-			(*i)->get_assertions().push_front( new FunctionDecl( "?=?", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, assignType, nullptr, false, false ) );
+			assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), *i ) ), nullptr ) );
+			assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new TypeInstType( Type::Qualifiers(), td->get_name(), *i ), nullptr ) );
+			assignType->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new TypeInstType( Type::Qualifiers(), td->get_name(), *i ), nullptr ) );
+			td->get_assertions().push_front( new FunctionDecl( "?=?", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, assignType, nullptr, false, false ) );
 		} // if
 	} // for
@@ -515,5 +517,5 @@
 		// character types. The implementation shall define char to have the same range, representation, and behavior as
 		// either signed char or unsigned char.
-		static BasicType::Kind chartype[] = { BasicType::SignedChar, BasicType::UnsignedChar, BasicType::Char }; 
+		static BasicType::Kind chartype[] = { BasicType::SignedChar, BasicType::UnsignedChar, BasicType::Char };
 
 		if ( td->length != DeclarationNode::NoLength ) {
Index: src/Parser/parser.cc
===================================================================
--- src/Parser/parser.cc	(revision faddbd88e10faf4096d269d1ac28b46bfa0f57aa)
+++ src/Parser/parser.cc	(revision 7756647eaf7d18e5f8c8c4841b9279a5f4e4f8dc)
@@ -1025,78 +1025,78 @@
        0,   302,   302,   306,   313,   314,   315,   319,   320,   321,
      325,   326,   330,   331,   335,   336,   340,   344,   345,   356,
-     358,   360,   362,   367,   368,   374,   378,   380,   381,   382,
-     384,   385,   387,   389,   391,   400,   401,   407,   408,   412,
-     413,   417,   421,   423,   425,   427,   432,   433,   437,   440,
-     442,   444,   449,   462,   464,   466,   468,   470,   472,   474,
-     476,   478,   480,   482,   489,   490,   496,   497,   498,   499,
-     503,   504,   506,   511,   512,   514,   516,   521,   522,   524,
-     529,   530,   532,   537,   538,   540,   542,   544,   549,   550,
-     552,   557,   558,   563,   564,   569,   570,   575,   576,   581,
-     582,   587,   588,   591,   593,   598,   603,   604,   606,   612,
-     613,   617,   618,   619,   620,   621,   622,   623,   624,   625,
-     626,   627,   628,   634,   636,   638,   640,   645,   646,   651,
-     652,   658,   659,   665,   666,   667,   668,   669,   670,   671,
-     672,   673,   683,   690,   692,   702,   703,   708,   710,   716,
-     718,   722,   723,   728,   733,   736,   738,   740,   750,   752,
-     763,   764,   766,   770,   772,   776,   777,   782,   783,   787,
-     792,   793,   797,   799,   805,   806,   810,   812,   814,   816,
-     822,   823,   827,   829,   834,   836,   838,   843,   845,   850,
-     852,   856,   859,   863,   866,   870,   872,   874,   876,   881,
-     883,   885,   890,   892,   894,   896,   898,   903,   905,   907,
-     909,   914,   926,   927,   932,   934,   939,   943,   945,   947,
-     949,   951,   957,   958,   964,   965,   969,   970,   975,   977,
-     983,   984,   986,   991,   996,  1006,  1008,  1012,  1013,  1018,
-    1020,  1024,  1025,  1029,  1031,  1035,  1036,  1040,  1041,  1045,
-    1046,  1061,  1062,  1063,  1064,  1065,  1069,  1074,  1081,  1091,
-    1096,  1101,  1109,  1114,  1119,  1124,  1129,  1137,  1159,  1164,
-    1171,  1173,  1180,  1185,  1190,  1201,  1206,  1211,  1216,  1221,
-    1230,  1235,  1243,  1244,  1245,  1246,  1252,  1257,  1265,  1266,
-    1267,  1268,  1272,  1273,  1274,  1275,  1280,  1281,  1290,  1291,
-    1296,  1297,  1302,  1304,  1306,  1308,  1310,  1313,  1312,  1324,
-    1325,  1327,  1337,  1338,  1343,  1345,  1347,  1349,  1351,  1354,
-    1356,  1359,  1364,  1366,  1368,  1370,  1372,  1374,  1376,  1378,
-    1380,  1382,  1384,  1386,  1388,  1394,  1395,  1397,  1399,  1401,
-    1406,  1407,  1413,  1414,  1416,  1418,  1423,  1425,  1427,  1429,
-    1434,  1435,  1437,  1439,  1444,  1445,  1447,  1452,  1453,  1455,
-    1457,  1462,  1464,  1466,  1471,  1472,  1476,  1478,  1484,  1483,
-    1487,  1489,  1494,  1496,  1502,  1503,  1508,  1509,  1511,  1512,
-    1521,  1522,  1524,  1526,  1531,  1533,  1539,  1540,  1542,  1545,
-    1548,  1553,  1554,  1559,  1564,  1568,  1570,  1576,  1575,  1582,
-    1584,  1590,  1591,  1599,  1600,  1604,  1605,  1606,  1608,  1610,
-    1617,  1618,  1620,  1622,  1627,  1628,  1634,  1635,  1639,  1640,
-    1645,  1646,  1647,  1649,  1657,  1658,  1660,  1663,  1665,  1669,
-    1670,  1671,  1673,  1675,  1679,  1684,  1692,  1693,  1702,  1704,
-    1709,  1710,  1711,  1715,  1716,  1717,  1721,  1722,  1723,  1727,
-    1728,  1729,  1734,  1735,  1736,  1737,  1743,  1744,  1746,  1751,
-    1752,  1757,  1758,  1759,  1760,  1761,  1776,  1777,  1782,  1783,
-    1789,  1791,  1794,  1796,  1798,  1821,  1822,  1824,  1826,  1831,
-    1832,  1834,  1839,  1844,  1845,  1851,  1850,  1854,  1858,  1860,
-    1862,  1868,  1869,  1874,  1879,  1881,  1886,  1888,  1889,  1891,
-    1896,  1898,  1900,  1905,  1907,  1912,  1917,  1925,  1931,  1930,
-    1944,  1945,  1950,  1951,  1955,  1960,  1965,  1973,  1978,  1989,
-    1990,  1995,  1996,  2002,  2003,  2007,  2008,  2009,  2012,  2011,
-    2022,  2031,  2037,  2043,  2052,  2058,  2064,  2070,  2076,  2084,
-    2090,  2098,  2104,  2113,  2114,  2115,  2119,  2123,  2125,  2130,
-    2131,  2135,  2136,  2141,  2147,  2148,  2151,  2153,  2154,  2158,
-    2159,  2160,  2161,  2195,  2197,  2198,  2200,  2205,  2210,  2215,
-    2217,  2219,  2224,  2226,  2228,  2230,  2235,  2237,  2246,  2248,
-    2249,  2254,  2256,  2258,  2263,  2265,  2267,  2272,  2274,  2276,
-    2285,  2286,  2287,  2291,  2293,  2295,  2300,  2302,  2304,  2309,
-    2311,  2313,  2328,  2330,  2331,  2333,  2338,  2339,  2344,  2346,
-    2348,  2353,  2355,  2357,  2359,  2364,  2366,  2368,  2378,  2380,
-    2381,  2383,  2388,  2390,  2392,  2397,  2399,  2401,  2403,  2408,
-    2410,  2412,  2443,  2445,  2446,  2448,  2453,  2458,  2466,  2468,
-    2470,  2475,  2477,  2482,  2484,  2498,  2499,  2501,  2506,  2508,
-    2510,  2512,  2514,  2519,  2520,  2522,  2524,  2529,  2531,  2533,
-    2539,  2541,  2543,  2547,  2549,  2551,  2553,  2567,  2568,  2570,
-    2575,  2577,  2579,  2581,  2583,  2588,  2589,  2591,  2593,  2598,
-    2600,  2602,  2608,  2609,  2611,  2620,  2623,  2625,  2628,  2630,
-    2632,  2645,  2646,  2648,  2653,  2655,  2657,  2659,  2661,  2666,
-    2667,  2669,  2671,  2676,  2678,  2686,  2687,  2688,  2693,  2694,
-    2698,  2700,  2702,  2704,  2706,  2708,  2715,  2717,  2719,  2721,
-    2723,  2725,  2727,  2729,  2731,  2733,  2738,  2740,  2742,  2747,
-    2773,  2774,  2776,  2780,  2781,  2785,  2787,  2789,  2791,  2793,
-    2795,  2802,  2804,  2806,  2808,  2810,  2812,  2817,  2822,  2824,
-    2826,  2844,  2846,  2851,  2852
+     358,   360,   362,   367,   368,   374,   378,   380,   382,   384,
+     386,   388,   390,   392,   394,   403,   404,   410,   411,   415,
+     416,   420,   424,   426,   428,   430,   435,   436,   440,   443,
+     445,   447,   452,   465,   467,   469,   471,   473,   475,   477,
+     479,   481,   483,   485,   492,   493,   499,   500,   501,   502,
+     506,   507,   509,   514,   515,   517,   519,   524,   525,   527,
+     532,   533,   535,   540,   541,   543,   545,   547,   552,   553,
+     555,   560,   561,   566,   567,   572,   573,   578,   579,   584,
+     585,   590,   591,   594,   596,   601,   606,   607,   609,   615,
+     616,   620,   621,   622,   623,   624,   625,   626,   627,   628,
+     629,   630,   631,   637,   639,   641,   643,   648,   649,   654,
+     655,   661,   662,   668,   669,   670,   671,   672,   673,   674,
+     675,   676,   686,   693,   695,   705,   706,   711,   713,   719,
+     721,   725,   726,   731,   736,   739,   741,   743,   753,   755,
+     766,   767,   769,   773,   775,   779,   780,   785,   786,   790,
+     795,   796,   800,   802,   808,   809,   813,   815,   817,   819,
+     825,   826,   830,   832,   837,   839,   841,   846,   848,   853,
+     855,   859,   862,   866,   869,   873,   875,   877,   879,   884,
+     886,   888,   893,   895,   897,   899,   901,   906,   908,   910,
+     912,   917,   929,   930,   935,   937,   942,   946,   948,   950,
+     952,   954,   960,   961,   967,   968,   972,   973,   978,   980,
+     986,   987,   989,   994,   999,  1009,  1011,  1015,  1016,  1021,
+    1023,  1027,  1028,  1032,  1034,  1038,  1039,  1043,  1044,  1048,
+    1049,  1064,  1065,  1066,  1067,  1068,  1072,  1077,  1084,  1094,
+    1099,  1104,  1112,  1117,  1122,  1127,  1132,  1140,  1162,  1167,
+    1174,  1176,  1183,  1188,  1193,  1204,  1209,  1214,  1219,  1224,
+    1233,  1238,  1246,  1247,  1248,  1249,  1255,  1260,  1268,  1269,
+    1270,  1271,  1275,  1276,  1277,  1278,  1283,  1284,  1293,  1294,
+    1299,  1300,  1305,  1307,  1309,  1311,  1313,  1316,  1315,  1327,
+    1328,  1330,  1340,  1341,  1346,  1348,  1350,  1352,  1354,  1357,
+    1359,  1362,  1367,  1369,  1371,  1373,  1375,  1377,  1379,  1381,
+    1383,  1385,  1387,  1389,  1391,  1397,  1398,  1400,  1402,  1404,
+    1409,  1410,  1416,  1417,  1419,  1421,  1426,  1428,  1430,  1432,
+    1437,  1438,  1440,  1442,  1447,  1448,  1450,  1455,  1456,  1458,
+    1460,  1465,  1467,  1469,  1474,  1475,  1479,  1481,  1487,  1486,
+    1490,  1492,  1497,  1499,  1505,  1506,  1511,  1512,  1514,  1515,
+    1524,  1525,  1527,  1529,  1534,  1536,  1542,  1543,  1545,  1548,
+    1551,  1556,  1557,  1562,  1567,  1571,  1573,  1579,  1578,  1585,
+    1587,  1593,  1594,  1602,  1603,  1607,  1608,  1609,  1611,  1613,
+    1620,  1621,  1623,  1625,  1630,  1631,  1637,  1638,  1642,  1643,
+    1648,  1649,  1650,  1652,  1660,  1661,  1663,  1666,  1668,  1672,
+    1673,  1674,  1676,  1678,  1682,  1687,  1695,  1696,  1705,  1707,
+    1712,  1713,  1714,  1718,  1719,  1720,  1724,  1725,  1726,  1730,
+    1731,  1732,  1737,  1738,  1739,  1740,  1746,  1747,  1749,  1754,
+    1755,  1760,  1761,  1762,  1763,  1764,  1779,  1780,  1785,  1786,
+    1792,  1794,  1797,  1799,  1801,  1824,  1825,  1827,  1829,  1834,
+    1835,  1837,  1842,  1847,  1848,  1854,  1853,  1857,  1861,  1863,
+    1865,  1871,  1872,  1877,  1882,  1884,  1889,  1891,  1892,  1894,
+    1899,  1901,  1903,  1908,  1910,  1915,  1920,  1928,  1934,  1933,
+    1947,  1948,  1953,  1954,  1958,  1963,  1968,  1976,  1981,  1992,
+    1993,  1998,  1999,  2005,  2006,  2010,  2011,  2012,  2015,  2014,
+    2025,  2034,  2040,  2046,  2055,  2061,  2067,  2073,  2079,  2087,
+    2093,  2101,  2107,  2116,  2117,  2118,  2122,  2126,  2128,  2133,
+    2134,  2138,  2139,  2144,  2150,  2151,  2154,  2156,  2157,  2161,
+    2162,  2163,  2164,  2198,  2200,  2201,  2203,  2208,  2213,  2218,
+    2220,  2222,  2227,  2229,  2231,  2233,  2238,  2240,  2249,  2251,
+    2252,  2257,  2259,  2261,  2266,  2268,  2270,  2275,  2277,  2279,
+    2288,  2289,  2290,  2294,  2296,  2298,  2303,  2305,  2307,  2312,
+    2314,  2316,  2331,  2333,  2334,  2336,  2341,  2342,  2347,  2349,
+    2351,  2356,  2358,  2360,  2362,  2367,  2369,  2371,  2381,  2383,
+    2384,  2386,  2391,  2393,  2395,  2400,  2402,  2404,  2406,  2411,
+    2413,  2415,  2446,  2448,  2449,  2451,  2456,  2461,  2469,  2471,
+    2473,  2478,  2480,  2485,  2487,  2501,  2502,  2504,  2509,  2511,
+    2513,  2515,  2517,  2522,  2523,  2525,  2527,  2532,  2534,  2536,
+    2542,  2544,  2546,  2550,  2552,  2554,  2556,  2570,  2571,  2573,
+    2578,  2580,  2582,  2584,  2586,  2591,  2592,  2594,  2596,  2601,
+    2603,  2605,  2611,  2612,  2614,  2623,  2626,  2628,  2631,  2633,
+    2635,  2648,  2649,  2651,  2656,  2658,  2660,  2662,  2664,  2669,
+    2670,  2672,  2674,  2679,  2681,  2689,  2690,  2691,  2696,  2697,
+    2701,  2703,  2705,  2707,  2709,  2711,  2718,  2720,  2722,  2724,
+    2726,  2728,  2730,  2732,  2734,  2736,  2741,  2743,  2745,  2750,
+    2776,  2777,  2779,  2783,  2784,  2788,  2790,  2792,  2794,  2796,
+    2798,  2805,  2807,  2809,  2811,  2813,  2815,  2820,  2825,  2827,
+    2829,  2847,  2849,  2854,  2855
 };
 #endif
@@ -5083,15 +5083,36 @@
     break;
 
+  case 27:
+
+/* Line 1806 of yacc.c  */
+#line 381 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
+    break;
+
+  case 28:
+
+/* Line 1806 of yacc.c  */
+#line 383 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_constantInteger( *(yyvsp[(3) - (3)].tok) ) ) ); }
+    break;
+
   case 29:
 
 /* Line 1806 of yacc.c  */
-#line 383 "parser.yy"
+#line 385 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
     break;
 
+  case 30:
+
+/* Line 1806 of yacc.c  */
+#line 387 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
+    break;
+
   case 31:
 
 /* Line 1806 of yacc.c  */
-#line 386 "parser.yy"
+#line 389 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
     break;
@@ -5100,5 +5121,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 388 "parser.yy"
+#line 391 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
     break;
@@ -5107,5 +5128,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 390 "parser.yy"
+#line 393 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
     break;
@@ -5114,5 +5135,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 392 "parser.yy"
+#line 395 "parser.yy"
     {
 			Token fn;
@@ -5125,5 +5146,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 402 "parser.yy"
+#line 405 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     break;
@@ -5132,5 +5153,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 407 "parser.yy"
+#line 410 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -5139,5 +5160,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 413 "parser.yy"
+#line 416 "parser.yy"
     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5146,5 +5167,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 420 "parser.yy"
+#line 423 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
     break;
@@ -5153,5 +5174,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 422 "parser.yy"
+#line 425 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
     break;
@@ -5160,5 +5181,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 424 "parser.yy"
+#line 427 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
     break;
@@ -5167,5 +5188,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 426 "parser.yy"
+#line 429 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
     break;
@@ -5174,5 +5195,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 428 "parser.yy"
+#line 431 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
     break;
@@ -5181,5 +5202,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 441 "parser.yy"
+#line 444 "parser.yy"
     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
@@ -5188,5 +5209,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 443 "parser.yy"
+#line 446 "parser.yy"
     { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
     break;
@@ -5195,5 +5216,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 445 "parser.yy"
+#line 448 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
     break;
@@ -5202,5 +5223,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 450 "parser.yy"
+#line 453 "parser.yy"
     {
 			switch ( (yyvsp[(1) - (2)].op) ) {
@@ -5220,5 +5241,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 463 "parser.yy"
+#line 466 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5227,5 +5248,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 465 "parser.yy"
+#line 468 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5234,5 +5255,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 467 "parser.yy"
+#line 470 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5241,5 +5262,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 469 "parser.yy"
+#line 472 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5248,5 +5269,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 471 "parser.yy"
+#line 474 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
     break;
@@ -5255,5 +5276,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 473 "parser.yy"
+#line 476 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5262,5 +5283,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 475 "parser.yy"
+#line 478 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
     break;
@@ -5269,5 +5290,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 477 "parser.yy"
+#line 480 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
     break;
@@ -5276,5 +5297,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 479 "parser.yy"
+#line 482 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
     break;
@@ -5283,5 +5304,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 481 "parser.yy"
+#line 484 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
     break;
@@ -5290,5 +5311,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 483 "parser.yy"
+#line 486 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
     break;
@@ -5297,5 +5318,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 489 "parser.yy"
+#line 492 "parser.yy"
     { (yyval.op) = OperKinds::PointTo; }
     break;
@@ -5304,5 +5325,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 490 "parser.yy"
+#line 493 "parser.yy"
     { (yyval.op) = OperKinds::AddressOf; }
     break;
@@ -5311,5 +5332,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 496 "parser.yy"
+#line 499 "parser.yy"
     { (yyval.op) = OperKinds::UnPlus; }
     break;
@@ -5318,5 +5339,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 497 "parser.yy"
+#line 500 "parser.yy"
     { (yyval.op) = OperKinds::UnMinus; }
     break;
@@ -5325,5 +5346,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 498 "parser.yy"
+#line 501 "parser.yy"
     { (yyval.op) = OperKinds::Neg; }
     break;
@@ -5332,5 +5353,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 499 "parser.yy"
+#line 502 "parser.yy"
     { (yyval.op) = OperKinds::BitNeg; }
     break;
@@ -5339,5 +5360,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 505 "parser.yy"
+#line 508 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
     break;
@@ -5346,5 +5367,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 507 "parser.yy"
+#line 510 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
     break;
@@ -5353,5 +5374,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 513 "parser.yy"
+#line 516 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5360,5 +5381,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 515 "parser.yy"
+#line 518 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5367,5 +5388,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 517 "parser.yy"
+#line 520 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5374,5 +5395,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 523 "parser.yy"
+#line 526 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5381,5 +5402,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 525 "parser.yy"
+#line 528 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5388,5 +5409,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 531 "parser.yy"
+#line 534 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5395,5 +5416,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 533 "parser.yy"
+#line 536 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5402,5 +5423,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 539 "parser.yy"
+#line 542 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5409,5 +5430,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 541 "parser.yy"
+#line 544 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5416,5 +5437,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 543 "parser.yy"
+#line 546 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5423,5 +5444,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 545 "parser.yy"
+#line 548 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5430,5 +5451,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 551 "parser.yy"
+#line 554 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5437,5 +5458,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 553 "parser.yy"
+#line 556 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5444,5 +5465,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 559 "parser.yy"
+#line 562 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5451,5 +5472,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 565 "parser.yy"
+#line 568 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5458,5 +5479,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 571 "parser.yy"
+#line 574 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5465,5 +5486,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 577 "parser.yy"
+#line 580 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
     break;
@@ -5472,5 +5493,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 583 "parser.yy"
+#line 586 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
     break;
@@ -5479,5 +5500,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 589 "parser.yy"
+#line 592 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
     break;
@@ -5486,5 +5507,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 592 "parser.yy"
+#line 595 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
     break;
@@ -5493,5 +5514,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 594 "parser.yy"
+#line 597 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
     break;
@@ -5500,5 +5521,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 605 "parser.yy"
+#line 608 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5507,5 +5528,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 607 "parser.yy"
+#line 610 "parser.yy"
     { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5514,5 +5535,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 612 "parser.yy"
+#line 615 "parser.yy"
     { (yyval.en) = nullptr; }
     break;
@@ -5521,5 +5542,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 617 "parser.yy"
+#line 620 "parser.yy"
     { (yyval.op) = OperKinds::Assign; }
     break;
@@ -5528,5 +5549,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 618 "parser.yy"
+#line 621 "parser.yy"
     { (yyval.op) = OperKinds::AtAssn; }
     break;
@@ -5535,5 +5556,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 619 "parser.yy"
+#line 622 "parser.yy"
     { (yyval.op) = OperKinds::MulAssn; }
     break;
@@ -5542,5 +5563,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 620 "parser.yy"
+#line 623 "parser.yy"
     { (yyval.op) = OperKinds::DivAssn; }
     break;
@@ -5549,5 +5570,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 621 "parser.yy"
+#line 624 "parser.yy"
     { (yyval.op) = OperKinds::ModAssn; }
     break;
@@ -5556,5 +5577,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 622 "parser.yy"
+#line 625 "parser.yy"
     { (yyval.op) = OperKinds::PlusAssn; }
     break;
@@ -5563,5 +5584,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 623 "parser.yy"
+#line 626 "parser.yy"
     { (yyval.op) = OperKinds::MinusAssn; }
     break;
@@ -5570,5 +5591,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 624 "parser.yy"
+#line 627 "parser.yy"
     { (yyval.op) = OperKinds::LSAssn; }
     break;
@@ -5577,5 +5598,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 625 "parser.yy"
+#line 628 "parser.yy"
     { (yyval.op) = OperKinds::RSAssn; }
     break;
@@ -5584,5 +5605,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 626 "parser.yy"
+#line 629 "parser.yy"
     { (yyval.op) = OperKinds::AndAssn; }
     break;
@@ -5591,5 +5612,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 627 "parser.yy"
+#line 630 "parser.yy"
     { (yyval.op) = OperKinds::ERAssn; }
     break;
@@ -5598,5 +5619,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 628 "parser.yy"
+#line 631 "parser.yy"
     { (yyval.op) = OperKinds::OrAssn; }
     break;
@@ -5605,5 +5626,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 635 "parser.yy"
+#line 638 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_tuple() ); }
     break;
@@ -5612,5 +5633,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 637 "parser.yy"
+#line 640 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); }
     break;
@@ -5619,5 +5640,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 639 "parser.yy"
+#line 642 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
     break;
@@ -5626,5 +5647,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 641 "parser.yy"
+#line 644 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
     break;
@@ -5633,5 +5654,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 647 "parser.yy"
+#line 650 "parser.yy"
     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5640,5 +5661,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 653 "parser.yy"
+#line 656 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5647,5 +5668,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 658 "parser.yy"
+#line 661 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -5654,5 +5675,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 667 "parser.yy"
+#line 670 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
     break;
@@ -5661,5 +5682,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 674 "parser.yy"
+#line 677 "parser.yy"
     {
 			Token fn;
@@ -5672,5 +5693,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 684 "parser.yy"
+#line 687 "parser.yy"
     {
 			(yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
@@ -5681,5 +5702,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 691 "parser.yy"
+#line 694 "parser.yy"
     { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
     break;
@@ -5688,5 +5709,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 698 "parser.yy"
+#line 701 "parser.yy"
     { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
     break;
@@ -5695,5 +5716,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 704 "parser.yy"
+#line 707 "parser.yy"
     { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
     break;
@@ -5702,5 +5723,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 709 "parser.yy"
+#line 712 "parser.yy"
     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     break;
@@ -5709,5 +5730,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 711 "parser.yy"
+#line 714 "parser.yy"
     {	// mark all fields in list
 			for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
@@ -5720,5 +5741,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 717 "parser.yy"
+#line 720 "parser.yy"
     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     break;
@@ -5727,5 +5748,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 724 "parser.yy"
+#line 727 "parser.yy"
     { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
     break;
@@ -5734,5 +5755,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 729 "parser.yy"
+#line 732 "parser.yy"
     { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
     break;
@@ -5741,5 +5762,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 735 "parser.yy"
+#line 738 "parser.yy"
     { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
     break;
@@ -5748,5 +5769,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 737 "parser.yy"
+#line 740 "parser.yy"
     { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
     break;
@@ -5755,5 +5776,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 739 "parser.yy"
+#line 742 "parser.yy"
     { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     break;
@@ -5762,5 +5783,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 741 "parser.yy"
+#line 744 "parser.yy"
     {
 			StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
@@ -5777,5 +5798,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 751 "parser.yy"
+#line 754 "parser.yy"
     { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     break;
@@ -5784,5 +5805,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 753 "parser.yy"
+#line 756 "parser.yy"
     {
 			StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
@@ -5794,5 +5815,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 763 "parser.yy"
+#line 766 "parser.yy"
     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
@@ -5801,5 +5822,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 765 "parser.yy"
+#line 768 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5808,5 +5829,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 770 "parser.yy"
+#line 773 "parser.yy"
     { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
     break;
@@ -5815,5 +5836,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 772 "parser.yy"
+#line 775 "parser.yy"
     { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
     break;
@@ -5822,5 +5843,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 776 "parser.yy"
+#line 779 "parser.yy"
     { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
     break;
@@ -5829,5 +5850,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 777 "parser.yy"
+#line 780 "parser.yy"
     { (yyval.sn) = new StatementNode( build_default() ); }
     break;
@@ -5836,5 +5857,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 783 "parser.yy"
+#line 786 "parser.yy"
     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
     break;
@@ -5843,5 +5864,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 787 "parser.yy"
+#line 790 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
     break;
@@ -5850,5 +5871,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 792 "parser.yy"
+#line 795 "parser.yy"
     { (yyval.sn) = 0; }
     break;
@@ -5857,5 +5878,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 798 "parser.yy"
+#line 801 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
     break;
@@ -5864,5 +5885,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 800 "parser.yy"
+#line 803 "parser.yy"
     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); }
     break;
@@ -5871,5 +5892,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 805 "parser.yy"
+#line 808 "parser.yy"
     { (yyval.sn) = 0; }
     break;
@@ -5878,5 +5899,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 811 "parser.yy"
+#line 814 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
     break;
@@ -5885,5 +5906,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 813 "parser.yy"
+#line 816 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); }
     break;
@@ -5892,5 +5913,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 815 "parser.yy"
+#line 818 "parser.yy"
     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
     break;
@@ -5899,5 +5920,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 817 "parser.yy"
+#line 820 "parser.yy"
     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(3) - (4)].sn)->set_last( (yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
     break;
@@ -5906,5 +5927,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 822 "parser.yy"
+#line 825 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
     break;
@@ -5913,5 +5934,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 828 "parser.yy"
+#line 831 "parser.yy"
     { (yyval.sn) = 0; }
     break;
@@ -5920,5 +5941,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 830 "parser.yy"
+#line 833 "parser.yy"
     { (yyval.sn) = 0; }
     break;
@@ -5927,5 +5948,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 835 "parser.yy"
+#line 838 "parser.yy"
     { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     break;
@@ -5934,5 +5955,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 837 "parser.yy"
+#line 840 "parser.yy"
     { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn), true ) ); }
     break;
@@ -5941,5 +5962,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 839 "parser.yy"
+#line 842 "parser.yy"
     { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
     break;
@@ -5948,5 +5969,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 844 "parser.yy"
+#line 847 "parser.yy"
     { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
     break;
@@ -5955,5 +5976,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 846 "parser.yy"
+#line 849 "parser.yy"
     { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
     break;
@@ -5962,5 +5983,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 851 "parser.yy"
+#line 854 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
     break;
@@ -5969,5 +5990,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 855 "parser.yy"
+#line 858 "parser.yy"
     { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
     break;
@@ -5976,5 +5997,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 858 "parser.yy"
+#line 861 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
     break;
@@ -5983,5 +6004,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 862 "parser.yy"
+#line 865 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); }
     break;
@@ -5990,5 +6011,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 865 "parser.yy"
+#line 868 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
     break;
@@ -5997,5 +6018,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 869 "parser.yy"
+#line 872 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); }
     break;
@@ -6004,5 +6025,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 871 "parser.yy"
+#line 874 "parser.yy"
     { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
     break;
@@ -6011,5 +6032,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 873 "parser.yy"
+#line 876 "parser.yy"
     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     break;
@@ -6018,5 +6039,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 875 "parser.yy"
+#line 878 "parser.yy"
     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     break;
@@ -6025,5 +6046,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 877 "parser.yy"
+#line 880 "parser.yy"
     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
     break;
@@ -6032,5 +6053,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 882 "parser.yy"
+#line 885 "parser.yy"
     { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
     break;
@@ -6039,5 +6060,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 884 "parser.yy"
+#line 887 "parser.yy"
     { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
     break;
@@ -6046,5 +6067,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 886 "parser.yy"
+#line 889 "parser.yy"
     { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
     break;
@@ -6053,5 +6074,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 893 "parser.yy"
+#line 896 "parser.yy"
     { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
     break;
@@ -6060,5 +6081,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 895 "parser.yy"
+#line 898 "parser.yy"
     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
     break;
@@ -6067,5 +6088,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 897 "parser.yy"
+#line 900 "parser.yy"
     { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
     break;
@@ -6074,5 +6095,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 899 "parser.yy"
+#line 902 "parser.yy"
     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
     break;
@@ -6081,5 +6102,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 904 "parser.yy"
+#line 907 "parser.yy"
     { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
     break;
@@ -6088,5 +6109,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 906 "parser.yy"
+#line 909 "parser.yy"
     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
     break;
@@ -6095,5 +6116,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 908 "parser.yy"
+#line 911 "parser.yy"
     { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
     break;
@@ -6102,5 +6123,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 910 "parser.yy"
+#line 913 "parser.yy"
     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
     break;
@@ -6109,5 +6130,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 915 "parser.yy"
+#line 918 "parser.yy"
     {
 			(yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) );
@@ -6118,5 +6139,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 928 "parser.yy"
+#line 931 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6128,5 +6149,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 933 "parser.yy"
+#line 936 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6135,5 +6156,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 935 "parser.yy"
+#line 938 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6145,5 +6166,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 944 "parser.yy"
+#line 947 "parser.yy"
     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); }
     break;
@@ -6152,5 +6173,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 946 "parser.yy"
+#line 949 "parser.yy"
     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); }
     break;
@@ -6159,5 +6180,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 948 "parser.yy"
+#line 951 "parser.yy"
     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); }
     break;
@@ -6166,5 +6187,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 950 "parser.yy"
+#line 953 "parser.yy"
     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ) ); }
     break;
@@ -6173,5 +6194,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 952 "parser.yy"
+#line 955 "parser.yy"
     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ) ); }
     break;
@@ -6180,5 +6201,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 957 "parser.yy"
+#line 960 "parser.yy"
     { (yyval.flag) = false; }
     break;
@@ -6187,5 +6208,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 959 "parser.yy"
+#line 962 "parser.yy"
     { (yyval.flag) = true; }
     break;
@@ -6194,5 +6215,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 964 "parser.yy"
+#line 967 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -6201,5 +6222,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 971 "parser.yy"
+#line 974 "parser.yy"
     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     break;
@@ -6208,5 +6229,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 976 "parser.yy"
+#line 979 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
     break;
@@ -6215,5 +6236,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 978 "parser.yy"
+#line 981 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
     break;
@@ -6222,5 +6243,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 983 "parser.yy"
+#line 986 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -6229,5 +6250,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 985 "parser.yy"
+#line 988 "parser.yy"
     { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
     break;
@@ -6236,5 +6257,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 987 "parser.yy"
+#line 990 "parser.yy"
     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
     break;
@@ -6243,5 +6264,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 992 "parser.yy"
+#line 995 "parser.yy"
     {
 			(yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) );
@@ -6253,5 +6274,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 997 "parser.yy"
+#line 1000 "parser.yy"
     {
 			(yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) );
@@ -6263,5 +6284,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1007 "parser.yy"
+#line 1010 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -6270,5 +6291,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1014 "parser.yy"
+#line 1017 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6277,5 +6298,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1019 "parser.yy"
+#line 1022 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -6284,5 +6305,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1026 "parser.yy"
+#line 1029 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6291,5 +6312,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1040 "parser.yy"
+#line 1043 "parser.yy"
     {}
     break;
@@ -6298,5 +6319,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1041 "parser.yy"
+#line 1044 "parser.yy"
     {}
     break;
@@ -6305,5 +6326,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1070 "parser.yy"
+#line 1073 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6315,5 +6336,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1077 "parser.yy"
+#line 1080 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6325,5 +6346,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1082 "parser.yy"
+#line 1085 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
@@ -6335,5 +6356,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1092 "parser.yy"
+#line 1095 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
@@ -6345,5 +6366,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1097 "parser.yy"
+#line 1100 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
@@ -6355,5 +6376,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1102 "parser.yy"
+#line 1105 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
@@ -6365,5 +6386,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1110 "parser.yy"
+#line 1113 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6375,5 +6396,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1115 "parser.yy"
+#line 1118 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6385,5 +6406,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1120 "parser.yy"
+#line 1123 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6395,5 +6416,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1125 "parser.yy"
+#line 1128 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6405,5 +6426,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1130 "parser.yy"
+#line 1133 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
@@ -6415,5 +6436,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1138 "parser.yy"
+#line 1141 "parser.yy"
     {
 			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
@@ -6424,5 +6445,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1161 "parser.yy"
+#line 1164 "parser.yy"
     {
 			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
@@ -6433,5 +6454,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1165 "parser.yy"
+#line 1168 "parser.yy"
     {
 			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
@@ -6442,5 +6463,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1172 "parser.yy"
+#line 1175 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     break;
@@ -6449,5 +6470,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1176 "parser.yy"
+#line 1179 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
     break;
@@ -6456,5 +6477,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1181 "parser.yy"
+#line 1184 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6466,5 +6487,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1186 "parser.yy"
+#line 1189 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6476,5 +6497,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1191 "parser.yy"
+#line 1194 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
@@ -6486,5 +6507,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1202 "parser.yy"
+#line 1205 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6496,5 +6517,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1207 "parser.yy"
+#line 1210 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6506,5 +6527,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1212 "parser.yy"
+#line 1215 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6516,5 +6537,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1217 "parser.yy"
+#line 1220 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6526,5 +6547,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1222 "parser.yy"
+#line 1225 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6536,5 +6557,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1231 "parser.yy"
+#line 1234 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
@@ -6546,5 +6567,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1236 "parser.yy"
+#line 1239 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
@@ -6556,5 +6577,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1253 "parser.yy"
+#line 1256 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6566,5 +6587,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1258 "parser.yy"
+#line 1261 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6576,5 +6597,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1280 "parser.yy"
+#line 1283 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -6583,5 +6604,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1292 "parser.yy"
+#line 1295 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6590,5 +6611,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1303 "parser.yy"
+#line 1306 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     break;
@@ -6597,5 +6618,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1305 "parser.yy"
+#line 1308 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     break;
@@ -6604,5 +6625,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1307 "parser.yy"
+#line 1310 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
     break;
@@ -6611,5 +6632,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1309 "parser.yy"
+#line 1312 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
     break;
@@ -6618,5 +6639,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1311 "parser.yy"
+#line 1314 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
     break;
@@ -6625,5 +6646,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1313 "parser.yy"
+#line 1316 "parser.yy"
     {
 			typedefTable.enterScope();
@@ -6634,5 +6655,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1317 "parser.yy"
+#line 1320 "parser.yy"
     {
 			typedefTable.leaveScope();
@@ -6644,5 +6665,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1326 "parser.yy"
+#line 1329 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6651,5 +6672,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1328 "parser.yy"
+#line 1331 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6658,5 +6679,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1339 "parser.yy"
+#line 1342 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6665,5 +6686,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1344 "parser.yy"
+#line 1347 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     break;
@@ -6672,5 +6693,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1346 "parser.yy"
+#line 1349 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
     break;
@@ -6679,5 +6700,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1348 "parser.yy"
+#line 1351 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
     break;
@@ -6686,5 +6707,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1350 "parser.yy"
+#line 1353 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
     break;
@@ -6693,5 +6714,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1353 "parser.yy"
+#line 1356 "parser.yy"
     { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
     break;
@@ -6700,5 +6721,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1355 "parser.yy"
+#line 1358 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
     break;
@@ -6707,5 +6728,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1358 "parser.yy"
+#line 1361 "parser.yy"
     { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
     break;
@@ -6714,5 +6735,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1360 "parser.yy"
+#line 1363 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
     break;
@@ -6721,5 +6742,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1365 "parser.yy"
+#line 1368 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
     break;
@@ -6728,5 +6749,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1367 "parser.yy"
+#line 1370 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
     break;
@@ -6735,5 +6756,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1369 "parser.yy"
+#line 1372 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
     break;
@@ -6742,5 +6763,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1371 "parser.yy"
+#line 1374 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
     break;
@@ -6749,5 +6770,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1373 "parser.yy"
+#line 1376 "parser.yy"
     { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Long ); }
     break;
@@ -6756,5 +6777,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1375 "parser.yy"
+#line 1378 "parser.yy"
     { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Short ); }
     break;
@@ -6763,5 +6784,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1377 "parser.yy"
+#line 1380 "parser.yy"
     { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Signed ); }
     break;
@@ -6770,5 +6791,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1379 "parser.yy"
+#line 1382 "parser.yy"
     { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); }
     break;
@@ -6777,5 +6798,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1381 "parser.yy"
+#line 1384 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
     break;
@@ -6784,5 +6805,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1383 "parser.yy"
+#line 1386 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
     break;
@@ -6791,5 +6812,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1385 "parser.yy"
+#line 1388 "parser.yy"
     { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Complex ); }
     break;
@@ -6798,5 +6819,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1387 "parser.yy"
+#line 1390 "parser.yy"
     { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
     break;
@@ -6805,5 +6826,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1389 "parser.yy"
+#line 1392 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
     break;
@@ -6812,5 +6833,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1396 "parser.yy"
+#line 1399 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6819,5 +6840,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1398 "parser.yy"
+#line 1401 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6826,5 +6847,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1400 "parser.yy"
+#line 1403 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6833,5 +6854,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1402 "parser.yy"
+#line 1405 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -6840,5 +6861,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1408 "parser.yy"
+#line 1411 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6847,5 +6868,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1415 "parser.yy"
+#line 1418 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6854,5 +6875,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1417 "parser.yy"
+#line 1420 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6861,5 +6882,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1419 "parser.yy"
+#line 1422 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6868,5 +6889,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1424 "parser.yy"
+#line 1427 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
     break;
@@ -6875,5 +6896,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1426 "parser.yy"
+#line 1429 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
     break;
@@ -6882,5 +6903,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1428 "parser.yy"
+#line 1431 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -6889,5 +6910,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1430 "parser.yy"
+#line 1433 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     break;
@@ -6896,5 +6917,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1436 "parser.yy"
+#line 1439 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6903,5 +6924,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1438 "parser.yy"
+#line 1441 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6910,5 +6931,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1440 "parser.yy"
+#line 1443 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6917,5 +6938,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1446 "parser.yy"
+#line 1449 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6924,5 +6945,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1448 "parser.yy"
+#line 1451 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6931,5 +6952,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1454 "parser.yy"
+#line 1457 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6938,5 +6959,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1456 "parser.yy"
+#line 1459 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6945,5 +6966,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1458 "parser.yy"
+#line 1461 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6952,5 +6973,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1463 "parser.yy"
+#line 1466 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -6959,5 +6980,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1465 "parser.yy"
+#line 1468 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6966,5 +6987,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1467 "parser.yy"
+#line 1470 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6973,5 +6994,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1477 "parser.yy"
+#line 1480 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), nullptr, nullptr, (yyvsp[(3) - (4)].decl), true ); }
     break;
@@ -6980,5 +7001,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1479 "parser.yy"
+#line 1482 "parser.yy"
     {
 			typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
@@ -6990,5 +7011,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1484 "parser.yy"
+#line 1487 "parser.yy"
     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     break;
@@ -6997,5 +7018,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1486 "parser.yy"
+#line 1489 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), nullptr, (yyvsp[(5) - (6)].decl), true ); }
     break;
@@ -7004,5 +7025,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1488 "parser.yy"
+#line 1491 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), nullptr, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
     break;
@@ -7011,5 +7032,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1490 "parser.yy"
+#line 1493 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     break;
@@ -7018,5 +7039,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1495 "parser.yy"
+#line 1498 "parser.yy"
     { (yyval.aggKey) = DeclarationNode::Struct; }
     break;
@@ -7025,5 +7046,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1497 "parser.yy"
+#line 1500 "parser.yy"
     { (yyval.aggKey) = DeclarationNode::Union; }
     break;
@@ -7032,5 +7053,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1502 "parser.yy"
+#line 1505 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7039,5 +7060,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1504 "parser.yy"
+#line 1507 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     break;
@@ -7046,5 +7067,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1510 "parser.yy"
+#line 1513 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
     break;
@@ -7053,5 +7074,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1513 "parser.yy"
+#line 1516 "parser.yy"
     {	// mark all fields in list
 			for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
@@ -7064,5 +7085,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1523 "parser.yy"
+#line 1526 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     break;
@@ -7071,5 +7092,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1525 "parser.yy"
+#line 1528 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     break;
@@ -7078,5 +7099,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1527 "parser.yy"
+#line 1530 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
     break;
@@ -7085,5 +7106,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1532 "parser.yy"
+#line 1535 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7092,5 +7113,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1534 "parser.yy"
+#line 1537 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
     break;
@@ -7099,5 +7120,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1539 "parser.yy"
+#line 1542 "parser.yy"
     { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
     break;
@@ -7106,16 +7127,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 1541 "parser.yy"
+#line 1544 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
     break;
 
   case 388:
-
-/* Line 1806 of yacc.c  */
-#line 1544 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
-    break;
-
-  case 389:
 
 /* Line 1806 of yacc.c  */
@@ -7124,8 +7138,15 @@
     break;
 
+  case 389:
+
+/* Line 1806 of yacc.c  */
+#line 1550 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
+    break;
+
   case 391:
 
 /* Line 1806 of yacc.c  */
-#line 1553 "parser.yy"
+#line 1556 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -7134,5 +7155,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1555 "parser.yy"
+#line 1558 "parser.yy"
     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
@@ -7141,5 +7162,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1560 "parser.yy"
+#line 1563 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -7148,5 +7169,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1569 "parser.yy"
+#line 1572 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnum( nullptr, (yyvsp[(3) - (5)].decl) ); }
     break;
@@ -7155,5 +7176,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1571 "parser.yy"
+#line 1574 "parser.yy"
     {
 			typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
@@ -7165,5 +7186,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1576 "parser.yy"
+#line 1579 "parser.yy"
     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     break;
@@ -7172,5 +7193,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1578 "parser.yy"
+#line 1581 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
     break;
@@ -7179,5 +7200,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1583 "parser.yy"
+#line 1586 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     break;
@@ -7186,5 +7207,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1585 "parser.yy"
+#line 1588 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
     break;
@@ -7193,5 +7214,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1590 "parser.yy"
+#line 1593 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -7200,5 +7221,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1592 "parser.yy"
+#line 1595 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -7207,5 +7228,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1599 "parser.yy"
+#line 1602 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7214,5 +7235,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1607 "parser.yy"
+#line 1610 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7221,5 +7242,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1609 "parser.yy"
+#line 1612 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
@@ -7228,5 +7249,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1611 "parser.yy"
+#line 1614 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
@@ -7235,5 +7256,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1619 "parser.yy"
+#line 1622 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7242,5 +7263,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1621 "parser.yy"
+#line 1624 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7249,5 +7270,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1623 "parser.yy"
+#line 1626 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
     break;
@@ -7256,5 +7277,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1629 "parser.yy"
+#line 1632 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7263,5 +7284,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1634 "parser.yy"
+#line 1637 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7270,5 +7291,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1641 "parser.yy"
+#line 1644 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
@@ -7277,5 +7298,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1648 "parser.yy"
+#line 1651 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7284,16 +7305,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 1650 "parser.yy"
+#line 1653 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
 
   case 425:
-
-/* Line 1806 of yacc.c  */
-#line 1659 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
-    break;
-
-  case 426:
 
 /* Line 1806 of yacc.c  */
@@ -7302,8 +7316,15 @@
     break;
 
+  case 426:
+
+/* Line 1806 of yacc.c  */
+#line 1665 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
+    break;
+
   case 427:
 
 /* Line 1806 of yacc.c  */
-#line 1664 "parser.yy"
+#line 1667 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
     break;
@@ -7312,5 +7333,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1674 "parser.yy"
+#line 1677 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7319,5 +7340,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1680 "parser.yy"
+#line 1683 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7329,5 +7350,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1685 "parser.yy"
+#line 1688 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7339,5 +7360,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1694 "parser.yy"
+#line 1697 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7346,5 +7367,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1703 "parser.yy"
+#line 1706 "parser.yy"
     { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -7353,5 +7374,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1705 "parser.yy"
+#line 1708 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
     break;
@@ -7360,5 +7381,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1730 "parser.yy"
+#line 1733 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7367,5 +7388,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1738 "parser.yy"
+#line 1741 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7374,5 +7395,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1743 "parser.yy"
+#line 1746 "parser.yy"
     { (yyval.in) = 0; }
     break;
@@ -7381,5 +7402,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1745 "parser.yy"
+#line 1748 "parser.yy"
     { (yyval.in) = (yyvsp[(2) - (2)].in); }
     break;
@@ -7388,5 +7409,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1747 "parser.yy"
+#line 1750 "parser.yy"
     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
     break;
@@ -7395,5 +7416,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1751 "parser.yy"
+#line 1754 "parser.yy"
     { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     break;
@@ -7402,5 +7423,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1752 "parser.yy"
+#line 1755 "parser.yy"
     { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     break;
@@ -7409,5 +7430,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1757 "parser.yy"
+#line 1760 "parser.yy"
     { (yyval.in) = 0; }
     break;
@@ -7416,5 +7437,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1759 "parser.yy"
+#line 1762 "parser.yy"
     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
     break;
@@ -7423,5 +7444,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1760 "parser.yy"
+#line 1763 "parser.yy"
     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
     break;
@@ -7430,5 +7451,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1762 "parser.yy"
+#line 1765 "parser.yy"
     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
     break;
@@ -7437,5 +7458,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1778 "parser.yy"
+#line 1781 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
     break;
@@ -7444,5 +7465,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1784 "parser.yy"
+#line 1787 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -7451,5 +7472,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1790 "parser.yy"
+#line 1793 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
     break;
@@ -7458,5 +7479,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1793 "parser.yy"
+#line 1796 "parser.yy"
     { (yyval.en) = (yyvsp[(3) - (5)].en); }
     break;
@@ -7465,5 +7486,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1795 "parser.yy"
+#line 1798 "parser.yy"
     { (yyval.en) = (yyvsp[(3) - (5)].en); }
     break;
@@ -7472,5 +7493,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1797 "parser.yy"
+#line 1800 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
     break;
@@ -7479,5 +7500,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1799 "parser.yy"
+#line 1802 "parser.yy"
     { (yyval.en) = (yyvsp[(4) - (6)].en); }
     break;
@@ -7486,5 +7507,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1823 "parser.yy"
+#line 1826 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7493,5 +7514,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1825 "parser.yy"
+#line 1828 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7500,5 +7521,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1827 "parser.yy"
+#line 1830 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -7507,5 +7528,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1833 "parser.yy"
+#line 1836 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7514,5 +7535,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1835 "parser.yy"
+#line 1838 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7521,5 +7542,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1840 "parser.yy"
+#line 1843 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     break;
@@ -7528,5 +7549,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1846 "parser.yy"
+#line 1849 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -7535,5 +7556,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1851 "parser.yy"
+#line 1854 "parser.yy"
     { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
     break;
@@ -7542,5 +7563,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1853 "parser.yy"
+#line 1856 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -7549,5 +7570,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1859 "parser.yy"
+#line 1862 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Otype; }
     break;
@@ -7556,5 +7577,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1861 "parser.yy"
+#line 1864 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Ftype; }
     break;
@@ -7563,5 +7584,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1863 "parser.yy"
+#line 1866 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Dtype; }
     break;
@@ -7570,5 +7591,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1868 "parser.yy"
+#line 1871 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7577,5 +7598,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1870 "parser.yy"
+#line 1873 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     break;
@@ -7584,5 +7605,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1875 "parser.yy"
+#line 1878 "parser.yy"
     {
 			typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
@@ -7594,5 +7615,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1880 "parser.yy"
+#line 1883 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     break;
@@ -7601,5 +7622,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1882 "parser.yy"
+#line 1885 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7608,5 +7629,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1887 "parser.yy"
+#line 1890 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
     break;
@@ -7615,5 +7636,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1890 "parser.yy"
+#line 1893 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
     break;
@@ -7622,5 +7643,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1892 "parser.yy"
+#line 1895 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     break;
@@ -7629,5 +7650,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1897 "parser.yy"
+#line 1900 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     break;
@@ -7636,5 +7657,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1899 "parser.yy"
+#line 1902 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -7643,5 +7664,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1901 "parser.yy"
+#line 1904 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -7650,5 +7671,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1906 "parser.yy"
+#line 1909 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7657,5 +7678,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1908 "parser.yy"
+#line 1911 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -7664,5 +7685,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1913 "parser.yy"
+#line 1916 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
@@ -7674,5 +7695,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1918 "parser.yy"
+#line 1921 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
@@ -7684,5 +7705,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1926 "parser.yy"
+#line 1929 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
@@ -7694,5 +7715,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1931 "parser.yy"
+#line 1934 "parser.yy"
     {
 			typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
@@ -7704,5 +7725,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1936 "parser.yy"
+#line 1939 "parser.yy"
     {
 			typedefTable.leaveTrait();
@@ -7715,5 +7736,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1946 "parser.yy"
+#line 1949 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -7722,5 +7743,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1956 "parser.yy"
+#line 1959 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7732,5 +7753,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1961 "parser.yy"
+#line 1964 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7742,5 +7763,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1966 "parser.yy"
+#line 1969 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
@@ -7752,5 +7773,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1974 "parser.yy"
+#line 1977 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7762,5 +7783,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1979 "parser.yy"
+#line 1982 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7772,5 +7793,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1989 "parser.yy"
+#line 1992 "parser.yy"
     {}
     break;
@@ -7779,5 +7800,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1991 "parser.yy"
+#line 1994 "parser.yy"
     { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);	}
     break;
@@ -7786,5 +7807,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1997 "parser.yy"
+#line 2000 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl) != nullptr ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
     break;
@@ -7793,5 +7814,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2002 "parser.yy"
+#line 2005 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7800,5 +7821,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2010 "parser.yy"
+#line 2013 "parser.yy"
     {}
     break;
@@ -7807,5 +7828,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2012 "parser.yy"
+#line 2015 "parser.yy"
     {
 			linkageStack.push( linkage );				// handle nested extern "C"/"Cforall"
@@ -7817,5 +7838,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2017 "parser.yy"
+#line 2020 "parser.yy"
     {
 			linkage = linkageStack.top();
@@ -7828,5 +7849,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2023 "parser.yy"
+#line 2026 "parser.yy"
     {	// mark all fields in list
 			for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
@@ -7839,5 +7860,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2038 "parser.yy"
+#line 2041 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7850,5 +7871,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2044 "parser.yy"
+#line 2047 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7861,5 +7882,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2053 "parser.yy"
+#line 2056 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7872,5 +7893,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2059 "parser.yy"
+#line 2062 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7883,5 +7904,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2065 "parser.yy"
+#line 2068 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7894,5 +7915,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2071 "parser.yy"
+#line 2074 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7905,5 +7926,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2077 "parser.yy"
+#line 2080 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7916,5 +7937,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2085 "parser.yy"
+#line 2088 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7927,5 +7948,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2091 "parser.yy"
+#line 2094 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7938,5 +7959,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2099 "parser.yy"
+#line 2102 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7949,5 +7970,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2105 "parser.yy"
+#line 2108 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7960,5 +7981,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2120 "parser.yy"
+#line 2123 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -7967,5 +7988,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2125 "parser.yy"
+#line 2128 "parser.yy"
     { delete (yyvsp[(3) - (5)].str); }
     break;
@@ -7974,5 +7995,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2130 "parser.yy"
+#line 2133 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7981,5 +8002,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2137 "parser.yy"
+#line 2140 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7988,5 +8009,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2143 "parser.yy"
+#line 2146 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7995,5 +8016,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2154 "parser.yy"
+#line 2157 "parser.yy"
     { delete (yyvsp[(3) - (4)].en); }
     break;
@@ -8002,5 +8023,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2158 "parser.yy"
+#line 2161 "parser.yy"
     { delete (yyvsp[(1) - (1)].tok); }
     break;
@@ -8009,5 +8030,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2159 "parser.yy"
+#line 2162 "parser.yy"
     { delete (yyvsp[(1) - (1)].decl); }
     break;
@@ -8016,5 +8037,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2160 "parser.yy"
+#line 2163 "parser.yy"
     { delete (yyvsp[(1) - (1)].decl); }
     break;
@@ -8023,16 +8044,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 2161 "parser.yy"
+#line 2164 "parser.yy"
     { delete (yyvsp[(1) - (1)].decl); }
     break;
 
   case 563:
-
-/* Line 1806 of yacc.c  */
-#line 2196 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 565:
 
 /* Line 1806 of yacc.c  */
@@ -8041,8 +8055,15 @@
     break;
 
+  case 565:
+
+/* Line 1806 of yacc.c  */
+#line 2202 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
   case 566:
 
 /* Line 1806 of yacc.c  */
-#line 2201 "parser.yy"
+#line 2204 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8051,5 +8072,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2206 "parser.yy"
+#line 2209 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
@@ -8061,5 +8082,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2211 "parser.yy"
+#line 2214 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8068,5 +8089,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2216 "parser.yy"
+#line 2219 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8075,5 +8096,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2218 "parser.yy"
+#line 2221 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8082,5 +8103,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2220 "parser.yy"
+#line 2223 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8089,5 +8110,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2225 "parser.yy"
+#line 2228 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8096,5 +8117,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2227 "parser.yy"
+#line 2230 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8103,5 +8124,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2229 "parser.yy"
+#line 2232 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8110,5 +8131,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2231 "parser.yy"
+#line 2234 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8117,5 +8138,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2236 "parser.yy"
+#line 2239 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8124,16 +8145,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 2238 "parser.yy"
+#line 2241 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 578:
-
-/* Line 1806 of yacc.c  */
-#line 2247 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 580:
 
 /* Line 1806 of yacc.c  */
@@ -8142,8 +8156,15 @@
     break;
 
+  case 580:
+
+/* Line 1806 of yacc.c  */
+#line 2253 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
   case 581:
 
 /* Line 1806 of yacc.c  */
-#line 2255 "parser.yy"
+#line 2258 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8152,5 +8173,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2257 "parser.yy"
+#line 2260 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8159,5 +8180,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2259 "parser.yy"
+#line 2262 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8166,5 +8187,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2264 "parser.yy"
+#line 2267 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8173,5 +8194,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2266 "parser.yy"
+#line 2269 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8180,5 +8201,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2268 "parser.yy"
+#line 2271 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8187,5 +8208,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2273 "parser.yy"
+#line 2276 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8194,5 +8215,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2275 "parser.yy"
+#line 2278 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8201,5 +8222,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2277 "parser.yy"
+#line 2280 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8208,5 +8229,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2292 "parser.yy"
+#line 2295 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -8215,5 +8236,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2294 "parser.yy"
+#line 2297 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
     break;
@@ -8222,5 +8243,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2296 "parser.yy"
+#line 2299 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8229,5 +8250,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2301 "parser.yy"
+#line 2304 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8236,5 +8257,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2303 "parser.yy"
+#line 2306 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8243,5 +8264,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2305 "parser.yy"
+#line 2308 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8250,5 +8271,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2310 "parser.yy"
+#line 2313 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8257,5 +8278,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2312 "parser.yy"
+#line 2315 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8264,16 +8285,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 2314 "parser.yy"
+#line 2317 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 602:
-
-/* Line 1806 of yacc.c  */
-#line 2329 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 604:
 
 /* Line 1806 of yacc.c  */
@@ -8282,8 +8296,15 @@
     break;
 
+  case 604:
+
+/* Line 1806 of yacc.c  */
+#line 2335 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
   case 605:
 
 /* Line 1806 of yacc.c  */
-#line 2334 "parser.yy"
+#line 2337 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8292,5 +8313,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2340 "parser.yy"
+#line 2343 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8299,5 +8320,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2345 "parser.yy"
+#line 2348 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8306,5 +8327,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2347 "parser.yy"
+#line 2350 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8313,5 +8334,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2349 "parser.yy"
+#line 2352 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8320,5 +8341,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2354 "parser.yy"
+#line 2357 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8327,5 +8348,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2356 "parser.yy"
+#line 2359 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8334,5 +8355,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2358 "parser.yy"
+#line 2361 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8341,5 +8362,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2360 "parser.yy"
+#line 2363 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8348,5 +8369,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2365 "parser.yy"
+#line 2368 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8355,5 +8376,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2367 "parser.yy"
+#line 2370 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8362,16 +8383,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 2369 "parser.yy"
+#line 2372 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 618:
-
-/* Line 1806 of yacc.c  */
-#line 2379 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 620:
 
 /* Line 1806 of yacc.c  */
@@ -8380,8 +8394,15 @@
     break;
 
+  case 620:
+
+/* Line 1806 of yacc.c  */
+#line 2385 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
   case 621:
 
 /* Line 1806 of yacc.c  */
-#line 2384 "parser.yy"
+#line 2387 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8390,5 +8411,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2389 "parser.yy"
+#line 2392 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8397,5 +8418,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2391 "parser.yy"
+#line 2394 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8404,5 +8425,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2393 "parser.yy"
+#line 2396 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8411,5 +8432,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2398 "parser.yy"
+#line 2401 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8418,5 +8439,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2400 "parser.yy"
+#line 2403 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8425,5 +8446,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2402 "parser.yy"
+#line 2405 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8432,5 +8453,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2404 "parser.yy"
+#line 2407 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8439,5 +8460,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2409 "parser.yy"
+#line 2412 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8446,5 +8467,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2411 "parser.yy"
+#line 2414 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8453,16 +8474,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 2413 "parser.yy"
+#line 2416 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 632:
-
-/* Line 1806 of yacc.c  */
-#line 2444 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 634:
 
 /* Line 1806 of yacc.c  */
@@ -8471,8 +8485,15 @@
     break;
 
+  case 634:
+
+/* Line 1806 of yacc.c  */
+#line 2450 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
   case 635:
 
 /* Line 1806 of yacc.c  */
-#line 2449 "parser.yy"
+#line 2452 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8481,5 +8502,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2454 "parser.yy"
+#line 2457 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
@@ -8491,5 +8512,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2459 "parser.yy"
+#line 2462 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
@@ -8501,5 +8522,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2467 "parser.yy"
+#line 2470 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8508,5 +8529,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2469 "parser.yy"
+#line 2472 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8515,5 +8536,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2471 "parser.yy"
+#line 2474 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8522,5 +8543,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2476 "parser.yy"
+#line 2479 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8529,5 +8550,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2478 "parser.yy"
+#line 2481 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8536,5 +8557,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2483 "parser.yy"
+#line 2486 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8543,5 +8564,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2485 "parser.yy"
+#line 2488 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8550,5 +8571,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2500 "parser.yy"
+#line 2503 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8557,5 +8578,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2502 "parser.yy"
+#line 2505 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8564,5 +8585,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2507 "parser.yy"
+#line 2510 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
@@ -8571,5 +8592,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2509 "parser.yy"
+#line 2512 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8578,5 +8599,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2511 "parser.yy"
+#line 2514 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8585,5 +8606,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2513 "parser.yy"
+#line 2516 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8592,5 +8613,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2515 "parser.yy"
+#line 2518 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8599,5 +8620,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2521 "parser.yy"
+#line 2524 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8606,5 +8627,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2523 "parser.yy"
+#line 2526 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8613,5 +8634,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2525 "parser.yy"
+#line 2528 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8620,5 +8641,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2530 "parser.yy"
+#line 2533 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
     break;
@@ -8627,5 +8648,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2532 "parser.yy"
+#line 2535 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8634,5 +8655,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2534 "parser.yy"
+#line 2537 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8641,5 +8662,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2540 "parser.yy"
+#line 2543 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     break;
@@ -8648,5 +8669,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2542 "parser.yy"
+#line 2545 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -8655,5 +8676,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2548 "parser.yy"
+#line 2551 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     break;
@@ -8662,5 +8683,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2550 "parser.yy"
+#line 2553 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     break;
@@ -8669,5 +8690,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2552 "parser.yy"
+#line 2555 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
     break;
@@ -8676,5 +8697,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2554 "parser.yy"
+#line 2557 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     break;
@@ -8683,5 +8704,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2569 "parser.yy"
+#line 2572 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8690,5 +8711,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2571 "parser.yy"
+#line 2574 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8697,5 +8718,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2576 "parser.yy"
+#line 2579 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
@@ -8704,5 +8725,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2578 "parser.yy"
+#line 2581 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8711,5 +8732,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2580 "parser.yy"
+#line 2583 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8718,5 +8739,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2582 "parser.yy"
+#line 2585 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8725,5 +8746,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2584 "parser.yy"
+#line 2587 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8732,5 +8753,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2590 "parser.yy"
+#line 2593 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8739,5 +8760,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2592 "parser.yy"
+#line 2595 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8746,5 +8767,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2594 "parser.yy"
+#line 2597 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8753,5 +8774,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2599 "parser.yy"
+#line 2602 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
     break;
@@ -8760,5 +8781,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2601 "parser.yy"
+#line 2604 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8767,5 +8788,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2603 "parser.yy"
+#line 2606 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8774,5 +8795,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2610 "parser.yy"
+#line 2613 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8781,5 +8802,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2621 "parser.yy"
+#line 2624 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     break;
@@ -8788,5 +8809,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2624 "parser.yy"
+#line 2627 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     break;
@@ -8795,5 +8816,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2626 "parser.yy"
+#line 2629 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     break;
@@ -8802,5 +8823,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2629 "parser.yy"
+#line 2632 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     break;
@@ -8809,5 +8830,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2631 "parser.yy"
+#line 2634 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     break;
@@ -8816,5 +8837,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2633 "parser.yy"
+#line 2636 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     break;
@@ -8823,5 +8844,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2647 "parser.yy"
+#line 2650 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8830,5 +8851,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2649 "parser.yy"
+#line 2652 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8837,5 +8858,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2654 "parser.yy"
+#line 2657 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
@@ -8844,5 +8865,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2656 "parser.yy"
+#line 2659 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8851,5 +8872,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2658 "parser.yy"
+#line 2661 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8858,5 +8879,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2660 "parser.yy"
+#line 2663 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8865,5 +8886,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2662 "parser.yy"
+#line 2665 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8872,5 +8893,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2668 "parser.yy"
+#line 2671 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8879,5 +8900,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2670 "parser.yy"
+#line 2673 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8886,5 +8907,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2672 "parser.yy"
+#line 2675 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8893,5 +8914,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2677 "parser.yy"
+#line 2680 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8900,5 +8921,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2679 "parser.yy"
+#line 2682 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8907,5 +8928,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2689 "parser.yy"
+#line 2692 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8914,5 +8935,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2699 "parser.yy"
+#line 2702 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8921,5 +8942,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2701 "parser.yy"
+#line 2704 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8928,5 +8949,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2703 "parser.yy"
+#line 2706 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8935,5 +8956,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2705 "parser.yy"
+#line 2708 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8942,5 +8963,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2707 "parser.yy"
+#line 2710 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8949,5 +8970,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2709 "parser.yy"
+#line 2712 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8956,5 +8977,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2716 "parser.yy"
+#line 2719 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -8963,5 +8984,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2718 "parser.yy"
+#line 2721 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8970,5 +8991,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2720 "parser.yy"
+#line 2723 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -8977,5 +8998,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2722 "parser.yy"
+#line 2725 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -8984,5 +9005,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2724 "parser.yy"
+#line 2727 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8991,5 +9012,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2726 "parser.yy"
+#line 2729 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -8998,5 +9019,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2728 "parser.yy"
+#line 2731 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9005,5 +9026,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2730 "parser.yy"
+#line 2733 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -9012,5 +9033,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2732 "parser.yy"
+#line 2735 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -9019,5 +9040,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2734 "parser.yy"
+#line 2737 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9026,5 +9047,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2739 "parser.yy"
+#line 2742 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     break;
@@ -9033,5 +9054,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2741 "parser.yy"
+#line 2744 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     break;
@@ -9040,5 +9061,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2746 "parser.yy"
+#line 2749 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     break;
@@ -9047,5 +9068,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2748 "parser.yy"
+#line 2751 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     break;
@@ -9054,5 +9075,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2775 "parser.yy"
+#line 2778 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9061,5 +9082,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2786 "parser.yy"
+#line 2789 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -9068,5 +9089,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2788 "parser.yy"
+#line 2791 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -9075,5 +9096,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2790 "parser.yy"
+#line 2793 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -9082,5 +9103,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2792 "parser.yy"
+#line 2795 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -9089,5 +9110,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2794 "parser.yy"
+#line 2797 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -9096,5 +9117,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2796 "parser.yy"
+#line 2799 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -9103,5 +9124,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2803 "parser.yy"
+#line 2806 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     break;
@@ -9110,5 +9131,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2805 "parser.yy"
+#line 2808 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     break;
@@ -9117,5 +9138,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2807 "parser.yy"
+#line 2810 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9124,5 +9145,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2809 "parser.yy"
+#line 2812 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     break;
@@ -9131,5 +9152,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2811 "parser.yy"
+#line 2814 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     break;
@@ -9138,5 +9159,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2813 "parser.yy"
+#line 2816 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9145,5 +9166,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2818 "parser.yy"
+#line 2821 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     break;
@@ -9152,5 +9173,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2823 "parser.yy"
+#line 2826 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( nullptr, DeclarationNode::newTuple( nullptr ), (yyvsp[(4) - (5)].decl), nullptr ); }
     break;
@@ -9159,5 +9180,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2825 "parser.yy"
+#line 2828 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
     break;
@@ -9166,5 +9187,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2827 "parser.yy"
+#line 2830 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
     break;
@@ -9173,5 +9194,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2851 "parser.yy"
+#line 2854 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -9180,5 +9201,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2853 "parser.yy"
+#line 2856 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -9187,5 +9208,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 9190 "Parser/parser.cc"
+#line 9211 "Parser/parser.cc"
       default: break;
     }
@@ -9418,5 +9439,5 @@
 
 /* Line 2067 of yacc.c  */
-#line 2856 "parser.yy"
+#line 2859 "parser.yy"
 
 // ----end of grammar----
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision faddbd88e10faf4096d269d1ac28b46bfa0f57aa)
+++ src/Parser/parser.yy	(revision 7756647eaf7d18e5f8c8c4841b9279a5f4e4f8dc)
@@ -379,8 +379,11 @@
 		{ $$ = new ExpressionNode( build_fieldSel( $1, build_varref( $3 ) ) ); }
 	| postfix_expression '.' '[' push field_list pop ']' // CFA, tuple field selector
+		{ $$ = new ExpressionNode( build_fieldSel( $1, build_tuple( $5 ) ) ); }
 	| postfix_expression '.' INTEGERconstant
+		{ $$ = new ExpressionNode( build_fieldSel( $1, build_constantInteger( *$3 ) ) ); }
 	| postfix_expression ARROW no_attr_identifier
 		{ $$ = new ExpressionNode( build_pfieldSel( $1, build_varref( $3 ) ) ); }
 	| postfix_expression ARROW '[' push field_list pop ']' // CFA, tuple field selector
+			{ $$ = new ExpressionNode( build_pfieldSel( $1, build_tuple( $5 ) ) ); }
 	| postfix_expression ICR
 	  	{ $$ = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, $1 ) ); }
