Index: src/Parser/ExpressionNode.cc
===================================================================
--- src/Parser/ExpressionNode.cc	(revision 3f0c6a51c1de23ea4a342862bcc4381d98afe58e)
+++ src/Parser/ExpressionNode.cc	(revision b3b2077b1feda429f174cfb4f374cb1e00580630)
@@ -172,4 +172,47 @@
 } // build_constantStr
 
+Expression * build_field_name_FLOATINGconstant( const std::string & str ) {
+	// str is of the form A.B -> separate at the . and return member expression
+	int a, b;
+	char dot;
+	std::stringstream ss( str );
+	ss >> a >> dot >> b;
+	UntypedMemberExpr * ret = new UntypedMemberExpr(
+		new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::SignedInt ), toString( b ) ) ),
+		new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::SignedInt ), toString( a ) ) ) );
+	delete &str;
+	return ret;
+} // build_field_name_FLOATINGconstant
+
+Expression * make_field_name_fraction_constants( Expression * fieldName, Expression * fracts ) {
+	if ( fracts ) {
+		if ( UntypedMemberExpr * memberExpr = dynamic_cast< UntypedMemberExpr * >( fracts ) ) {
+			memberExpr->set_member( make_field_name_fraction_constants( fieldName, memberExpr->get_aggregate() ) );
+			return memberExpr;
+		} else {
+			return new UntypedMemberExpr( fracts, fieldName );
+		}
+	}
+	return fieldName;
+} // make_field_name_fraction_constants
+
+Expression * build_field_name_fraction_constants( Expression * fieldName, ExpressionNode * fracts ) {
+	return make_field_name_fraction_constants( fieldName, maybeMoveBuild< Expression >( fracts ) );
+} // build_field_name_fraction_constants
+
+Expression * build_field_name_REALFRACTIONconstant( const std::string & str ) {
+	assert( str[0] == '.' );
+	Expression * ret = build_constantInteger( *new std::string( str.substr(1) ) );
+	delete &str;
+	return ret;
+} // build_field_name_REALFRACTIONconstant
+
+Expression * build_field_name_REALDECIMALconstant( const std::string & str ) {
+	assert( str[str.size()-1] == '.' );
+	Expression * ret = build_constantInteger( *new std::string( str.substr( 0, str.size()-1 ) ) );
+	delete &str;
+	return ret;
+} // build_field_name_REALDECIMALconstant
+
 NameExpr * build_varref( const string *name, bool labelp ) {
 	NameExpr *expr = new NameExpr( *name, nullptr );
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision 3f0c6a51c1de23ea4a342862bcc4381d98afe58e)
+++ src/Parser/ParseNode.h	(revision b3b2077b1feda429f174cfb4f374cb1e00580630)
@@ -155,4 +155,8 @@
 Expression * build_constantChar( const std::string &str );
 ConstantExpr * build_constantStr( const std::string &str );
+Expression * build_field_name_FLOATINGconstant( const std::string & str );
+Expression * build_field_name_fraction_constants( Expression * fieldName, ExpressionNode * fracts );
+Expression * build_field_name_REALFRACTIONconstant( const std::string & str );
+Expression * build_field_name_REALDECIMALconstant( const std::string & str );
 
 NameExpr * build_varref( const std::string * name, bool labelp = false );
Index: src/Parser/parser.cc
===================================================================
--- src/Parser/parser.cc	(revision 3f0c6a51c1de23ea4a342862bcc4381d98afe58e)
+++ src/Parser/parser.cc	(revision b3b2077b1feda429f174cfb4f374cb1e00580630)
@@ -1031,75 +1031,75 @@
      384,   386,   388,   390,   392,   394,   396,   398,   407,   408,
      414,   415,   419,   420,   424,   425,   427,   429,   431,   433,
-     435,   440,   442,   444,   448,   450,   454,   457,   459,   461,
-     466,   479,   481,   483,   485,   487,   489,   491,   493,   495,
-     497,   499,   506,   507,   513,   514,   515,   516,   520,   521,
-     528,   529,   531,   533,   538,   539,   541,   546,   547,   549,
-     554,   555,   557,   559,   561,   566,   567,   569,   574,   575,
-     580,   581,   586,   587,   592,   593,   598,   599,   604,   605,
-     608,   615,   620,   621,   629,   630,   634,   635,   636,   637,
-     638,   639,   640,   641,   642,   643,   644,   645,   655,   657,
-     662,   663,   668,   669,   675,   676,   682,   683,   684,   685,
-     686,   687,   688,   689,   690,   700,   707,   709,   719,   720,
-     725,   727,   733,   735,   739,   740,   745,   750,   753,   755,
-     757,   767,   769,   780,   781,   783,   787,   789,   793,   794,
-     799,   800,   804,   809,   810,   814,   816,   822,   823,   827,
-     829,   831,   833,   839,   840,   844,   846,   851,   853,   855,
-     860,   862,   867,   869,   873,   876,   880,   883,   887,   889,
-     891,   893,   898,   900,   902,   907,   909,   911,   913,   915,
-     920,   922,   924,   926,   931,   943,   944,   949,   951,   956,
-     960,   962,   964,   966,   968,   974,   975,   981,   982,   986,
-     987,   992,   994,  1000,  1001,  1003,  1008,  1013,  1023,  1025,
-    1029,  1030,  1035,  1037,  1041,  1042,  1046,  1048,  1052,  1053,
-    1057,  1058,  1062,  1063,  1078,  1079,  1080,  1081,  1082,  1086,
-    1091,  1098,  1108,  1113,  1118,  1126,  1131,  1136,  1141,  1146,
-    1176,  1181,  1188,  1190,  1197,  1202,  1207,  1218,  1223,  1228,
-    1233,  1238,  1247,  1252,  1260,  1261,  1262,  1263,  1269,  1274,
-    1282,  1283,  1284,  1285,  1289,  1290,  1291,  1292,  1297,  1298,
-    1307,  1308,  1313,  1314,  1319,  1321,  1323,  1325,  1327,  1330,
-    1329,  1341,  1342,  1344,  1354,  1355,  1360,  1362,  1364,  1366,
-    1368,  1371,  1373,  1376,  1381,  1383,  1385,  1387,  1389,  1391,
-    1393,  1395,  1397,  1399,  1401,  1403,  1405,  1411,  1412,  1414,
-    1416,  1418,  1423,  1424,  1430,  1431,  1433,  1435,  1440,  1442,
-    1444,  1446,  1451,  1452,  1454,  1456,  1461,  1462,  1464,  1469,
-    1470,  1472,  1474,  1479,  1481,  1483,  1488,  1489,  1493,  1495,
-    1501,  1500,  1504,  1506,  1511,  1513,  1519,  1520,  1525,  1526,
-    1528,  1529,  1538,  1539,  1541,  1543,  1548,  1550,  1556,  1557,
-    1559,  1562,  1565,  1570,  1571,  1576,  1581,  1585,  1587,  1593,
-    1592,  1599,  1601,  1607,  1608,  1616,  1617,  1621,  1622,  1623,
-    1625,  1627,  1634,  1635,  1637,  1639,  1644,  1645,  1651,  1652,
-    1656,  1657,  1662,  1663,  1664,  1666,  1674,  1675,  1677,  1680,
-    1682,  1686,  1687,  1688,  1690,  1692,  1696,  1701,  1709,  1710,
-    1719,  1721,  1726,  1727,  1728,  1732,  1733,  1734,  1738,  1739,
-    1740,  1744,  1745,  1746,  1751,  1752,  1753,  1754,  1760,  1761,
-    1763,  1768,  1769,  1774,  1775,  1776,  1777,  1778,  1793,  1794,
-    1799,  1800,  1806,  1808,  1811,  1813,  1815,  1838,  1839,  1841,
-    1843,  1848,  1849,  1851,  1856,  1861,  1862,  1868,  1867,  1871,
-    1875,  1877,  1879,  1885,  1886,  1891,  1896,  1898,  1903,  1905,
-    1906,  1908,  1913,  1915,  1917,  1922,  1924,  1929,  1934,  1942,
-    1948,  1947,  1961,  1962,  1967,  1968,  1972,  1977,  1982,  1990,
-    1995,  2006,  2007,  2012,  2013,  2019,  2020,  2024,  2025,  2026,
-    2029,  2028,  2039,  2048,  2054,  2060,  2069,  2075,  2081,  2087,
-    2093,  2101,  2107,  2115,  2121,  2130,  2131,  2132,  2136,  2140,
-    2142,  2147,  2148,  2152,  2153,  2158,  2164,  2165,  2168,  2170,
-    2171,  2175,  2176,  2177,  2178,  2212,  2214,  2215,  2217,  2222,
-    2227,  2232,  2234,  2236,  2241,  2243,  2245,  2247,  2252,  2254,
-    2263,  2265,  2266,  2271,  2273,  2275,  2280,  2282,  2284,  2289,
-    2291,  2293,  2302,  2303,  2304,  2308,  2310,  2312,  2317,  2319,
-    2321,  2326,  2328,  2330,  2345,  2347,  2348,  2350,  2355,  2356,
-    2361,  2363,  2365,  2370,  2372,  2374,  2376,  2381,  2383,  2385,
-    2395,  2397,  2398,  2400,  2405,  2407,  2409,  2414,  2416,  2418,
-    2420,  2425,  2427,  2429,  2460,  2462,  2463,  2465,  2470,  2475,
-    2483,  2485,  2487,  2492,  2494,  2499,  2501,  2515,  2516,  2518,
-    2523,  2525,  2527,  2529,  2531,  2536,  2537,  2539,  2541,  2546,
-    2548,  2550,  2556,  2558,  2560,  2564,  2566,  2568,  2570,  2584,
-    2585,  2587,  2592,  2594,  2596,  2598,  2600,  2605,  2606,  2608,
-    2610,  2615,  2617,  2619,  2625,  2626,  2628,  2637,  2640,  2642,
-    2645,  2647,  2649,  2662,  2663,  2665,  2670,  2672,  2674,  2676,
-    2678,  2683,  2684,  2686,  2688,  2693,  2695,  2703,  2704,  2705,
-    2710,  2711,  2715,  2717,  2719,  2721,  2723,  2725,  2732,  2734,
-    2736,  2738,  2740,  2743,  2745,  2747,  2749,  2751,  2756,  2758,
-    2760,  2765,  2791,  2792,  2794,  2798,  2799,  2803,  2805,  2807,
-    2809,  2811,  2813,  2820,  2822,  2824,  2826,  2828,  2830,  2835,
-    2842,  2844,  2862,  2864,  2869,  2870
+     435,   440,   442,   444,   450,   451,   459,   462,   464,   466,
+     471,   484,   486,   488,   490,   492,   494,   496,   498,   500,
+     502,   504,   511,   512,   518,   519,   520,   521,   525,   526,
+     533,   534,   536,   538,   543,   544,   546,   551,   552,   554,
+     559,   560,   562,   564,   566,   571,   572,   574,   579,   580,
+     585,   586,   591,   592,   597,   598,   603,   604,   609,   610,
+     613,   620,   625,   626,   634,   635,   639,   640,   641,   642,
+     643,   644,   645,   646,   647,   648,   649,   650,   660,   662,
+     667,   668,   673,   674,   680,   681,   687,   688,   689,   690,
+     691,   692,   693,   694,   695,   705,   712,   714,   724,   725,
+     730,   732,   738,   740,   744,   745,   750,   755,   758,   760,
+     762,   772,   774,   785,   786,   788,   792,   794,   798,   799,
+     804,   805,   809,   814,   815,   819,   821,   827,   828,   832,
+     834,   836,   838,   844,   845,   849,   851,   856,   858,   860,
+     865,   867,   872,   874,   878,   881,   885,   888,   892,   894,
+     896,   898,   903,   905,   907,   912,   914,   916,   918,   920,
+     925,   927,   929,   931,   936,   948,   949,   954,   956,   961,
+     965,   967,   969,   971,   973,   979,   980,   986,   987,   991,
+     992,   997,   999,  1005,  1006,  1008,  1013,  1018,  1028,  1030,
+    1034,  1035,  1040,  1042,  1046,  1047,  1051,  1053,  1057,  1058,
+    1062,  1063,  1067,  1068,  1083,  1084,  1085,  1086,  1087,  1091,
+    1096,  1103,  1113,  1118,  1123,  1131,  1136,  1141,  1146,  1151,
+    1181,  1186,  1193,  1195,  1202,  1207,  1212,  1223,  1228,  1233,
+    1238,  1243,  1252,  1257,  1265,  1266,  1267,  1268,  1274,  1279,
+    1287,  1288,  1289,  1290,  1294,  1295,  1296,  1297,  1302,  1303,
+    1312,  1313,  1318,  1319,  1324,  1326,  1328,  1330,  1332,  1335,
+    1334,  1346,  1347,  1349,  1359,  1360,  1365,  1367,  1369,  1371,
+    1373,  1376,  1378,  1381,  1386,  1388,  1390,  1392,  1394,  1396,
+    1398,  1400,  1402,  1404,  1406,  1408,  1410,  1416,  1417,  1419,
+    1421,  1423,  1428,  1429,  1435,  1436,  1438,  1440,  1445,  1447,
+    1449,  1451,  1456,  1457,  1459,  1461,  1466,  1467,  1469,  1474,
+    1475,  1477,  1479,  1484,  1486,  1488,  1493,  1494,  1498,  1500,
+    1506,  1505,  1509,  1511,  1516,  1518,  1524,  1525,  1530,  1531,
+    1533,  1534,  1543,  1544,  1546,  1548,  1553,  1555,  1561,  1562,
+    1564,  1567,  1570,  1575,  1576,  1581,  1586,  1590,  1592,  1598,
+    1597,  1604,  1606,  1612,  1613,  1621,  1622,  1626,  1627,  1628,
+    1630,  1632,  1639,  1640,  1642,  1644,  1649,  1650,  1656,  1657,
+    1661,  1662,  1667,  1668,  1669,  1671,  1679,  1680,  1682,  1685,
+    1687,  1691,  1692,  1693,  1695,  1697,  1701,  1706,  1714,  1715,
+    1724,  1726,  1731,  1732,  1733,  1737,  1738,  1739,  1743,  1744,
+    1745,  1749,  1750,  1751,  1756,  1757,  1758,  1759,  1765,  1766,
+    1768,  1773,  1774,  1779,  1780,  1781,  1782,  1783,  1798,  1799,
+    1804,  1805,  1811,  1813,  1816,  1818,  1820,  1843,  1844,  1846,
+    1848,  1853,  1854,  1856,  1861,  1866,  1867,  1873,  1872,  1876,
+    1880,  1882,  1884,  1890,  1891,  1896,  1901,  1903,  1908,  1910,
+    1911,  1913,  1918,  1920,  1922,  1927,  1929,  1934,  1939,  1947,
+    1953,  1952,  1966,  1967,  1972,  1973,  1977,  1982,  1987,  1995,
+    2000,  2011,  2012,  2017,  2018,  2024,  2025,  2029,  2030,  2031,
+    2034,  2033,  2044,  2053,  2059,  2065,  2074,  2080,  2086,  2092,
+    2098,  2106,  2112,  2120,  2126,  2135,  2136,  2137,  2141,  2145,
+    2147,  2152,  2153,  2157,  2158,  2163,  2169,  2170,  2173,  2175,
+    2176,  2180,  2181,  2182,  2183,  2217,  2219,  2220,  2222,  2227,
+    2232,  2237,  2239,  2241,  2246,  2248,  2250,  2252,  2257,  2259,
+    2268,  2270,  2271,  2276,  2278,  2280,  2285,  2287,  2289,  2294,
+    2296,  2298,  2307,  2308,  2309,  2313,  2315,  2317,  2322,  2324,
+    2326,  2331,  2333,  2335,  2350,  2352,  2353,  2355,  2360,  2361,
+    2366,  2368,  2370,  2375,  2377,  2379,  2381,  2386,  2388,  2390,
+    2400,  2402,  2403,  2405,  2410,  2412,  2414,  2419,  2421,  2423,
+    2425,  2430,  2432,  2434,  2465,  2467,  2468,  2470,  2475,  2480,
+    2488,  2490,  2492,  2497,  2499,  2504,  2506,  2520,  2521,  2523,
+    2528,  2530,  2532,  2534,  2536,  2541,  2542,  2544,  2546,  2551,
+    2553,  2555,  2561,  2563,  2565,  2569,  2571,  2573,  2575,  2589,
+    2590,  2592,  2597,  2599,  2601,  2603,  2605,  2610,  2611,  2613,
+    2615,  2620,  2622,  2624,  2630,  2631,  2633,  2642,  2645,  2647,
+    2650,  2652,  2654,  2667,  2668,  2670,  2675,  2677,  2679,  2681,
+    2683,  2688,  2689,  2691,  2693,  2698,  2700,  2708,  2709,  2710,
+    2715,  2716,  2720,  2722,  2724,  2726,  2728,  2730,  2737,  2739,
+    2741,  2743,  2745,  2748,  2750,  2752,  2754,  2756,  2761,  2763,
+    2765,  2770,  2796,  2797,  2799,  2803,  2804,  2808,  2810,  2812,
+    2814,  2816,  2818,  2825,  2827,  2829,  2831,  2833,  2835,  2840,
+    2847,  2849,  2867,  2869,  2874,  2875
 };
 #endif
@@ -4982,5 +4982,5 @@
 /* Line 1806 of yacc.c  */
 #line 387 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (2)].en), build_constantInteger( *(yyvsp[(2) - (2)].tok) ) ) ); }
+    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (2)].en), build_field_name_REALFRACTIONconstant( *(yyvsp[(2) - (2)].tok) ) ) ); }
     break;
 
@@ -5056,5 +5056,5 @@
 /* Line 1806 of yacc.c  */
 #line 426 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (2)].tok) ) ), maybeMoveBuild<Expression>( (yyvsp[(2) - (2)].en) ) ) ); }
+    { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[(1) - (2)].tok) ) ), maybeMoveBuild<Expression>( (yyvsp[(2) - (2)].en) ) ) ); }
     break;
 
@@ -5063,5 +5063,5 @@
 /* Line 1806 of yacc.c  */
 #line 428 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (6)].tok) ) ), build_tuple( (yyvsp[(4) - (6)].en) ) ) ); }
+    { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[(1) - (6)].tok) ) ), build_tuple( (yyvsp[(4) - (6)].en) ) ) ); }
     break;
 
@@ -5098,5 +5098,5 @@
 /* Line 1806 of yacc.c  */
 #line 441 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (2)].tok) ) ); }
+    { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_constantInteger( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
     break;
 
@@ -5105,5 +5105,5 @@
 /* Line 1806 of yacc.c  */
 #line 443 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (2)].tok) ) ); }
+    { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_field_name_FLOATINGconstant( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
     break;
 
@@ -5112,5 +5112,22 @@
 /* Line 1806 of yacc.c  */
 #line 445 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
+    { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_varref( (yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
+    break;
+
+  case 54:
+
+/* Line 1806 of yacc.c  */
+#line 450 "parser.yy"
+    { (yyval.en) = nullptr; }
+    break;
+
+  case 55:
+
+/* Line 1806 of yacc.c  */
+#line 452 "parser.yy"
+    {
+			Expression * constant = build_field_name_REALFRACTIONconstant( *(yyvsp[(2) - (2)].tok) );
+			(yyval.en) = (yyvsp[(1) - (2)].en) != nullptr ? new ExpressionNode( build_fieldSel( (yyvsp[(1) - (2)].en),  constant ) ) : new ExpressionNode( constant );
+		}
     break;
 
@@ -5118,5 +5135,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 458 "parser.yy"
+#line 463 "parser.yy"
     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
@@ -5125,5 +5142,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 460 "parser.yy"
+#line 465 "parser.yy"
     { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
     break;
@@ -5132,5 +5149,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 462 "parser.yy"
+#line 467 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
     break;
@@ -5139,5 +5156,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 467 "parser.yy"
+#line 472 "parser.yy"
     {
 			switch ( (yyvsp[(1) - (2)].op) ) {
@@ -5157,5 +5174,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 480 "parser.yy"
+#line 485 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5164,5 +5181,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 482 "parser.yy"
+#line 487 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5171,5 +5188,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 484 "parser.yy"
+#line 489 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5178,5 +5195,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 486 "parser.yy"
+#line 491 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5185,5 +5202,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 488 "parser.yy"
+#line 493 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
     break;
@@ -5192,5 +5209,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 490 "parser.yy"
+#line 495 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5199,5 +5216,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 492 "parser.yy"
+#line 497 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
     break;
@@ -5206,5 +5223,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 494 "parser.yy"
+#line 499 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
     break;
@@ -5213,5 +5230,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 496 "parser.yy"
+#line 501 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
     break;
@@ -5220,5 +5237,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 498 "parser.yy"
+#line 503 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
     break;
@@ -5227,5 +5244,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 500 "parser.yy"
+#line 505 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
     break;
@@ -5234,5 +5251,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 506 "parser.yy"
+#line 511 "parser.yy"
     { (yyval.op) = OperKinds::PointTo; }
     break;
@@ -5241,5 +5258,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 507 "parser.yy"
+#line 512 "parser.yy"
     { (yyval.op) = OperKinds::AddressOf; }
     break;
@@ -5248,5 +5265,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 513 "parser.yy"
+#line 518 "parser.yy"
     { (yyval.op) = OperKinds::UnPlus; }
     break;
@@ -5255,5 +5272,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 514 "parser.yy"
+#line 519 "parser.yy"
     { (yyval.op) = OperKinds::UnMinus; }
     break;
@@ -5262,5 +5279,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 515 "parser.yy"
+#line 520 "parser.yy"
     { (yyval.op) = OperKinds::Neg; }
     break;
@@ -5269,5 +5286,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 516 "parser.yy"
+#line 521 "parser.yy"
     { (yyval.op) = OperKinds::BitNeg; }
     break;
@@ -5276,5 +5293,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 522 "parser.yy"
+#line 527 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
     break;
@@ -5283,5 +5300,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 530 "parser.yy"
+#line 535 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5290,5 +5307,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 532 "parser.yy"
+#line 537 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5297,5 +5314,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 534 "parser.yy"
+#line 539 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5304,5 +5321,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 540 "parser.yy"
+#line 545 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5311,5 +5328,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 542 "parser.yy"
+#line 547 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5318,5 +5335,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 548 "parser.yy"
+#line 553 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5325,5 +5342,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 550 "parser.yy"
+#line 555 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5332,5 +5349,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 556 "parser.yy"
+#line 561 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5339,5 +5356,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 558 "parser.yy"
+#line 563 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5346,5 +5363,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 560 "parser.yy"
+#line 565 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5353,5 +5370,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 562 "parser.yy"
+#line 567 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5360,5 +5377,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 568 "parser.yy"
+#line 573 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5367,5 +5384,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 570 "parser.yy"
+#line 575 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5374,5 +5391,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 576 "parser.yy"
+#line 581 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5381,5 +5398,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 582 "parser.yy"
+#line 587 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5388,5 +5405,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 588 "parser.yy"
+#line 593 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5395,5 +5412,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 594 "parser.yy"
+#line 599 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
     break;
@@ -5402,5 +5419,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 600 "parser.yy"
+#line 605 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
     break;
@@ -5409,5 +5426,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 606 "parser.yy"
+#line 611 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
     break;
@@ -5416,5 +5433,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 609 "parser.yy"
+#line 614 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
     break;
@@ -5423,5 +5440,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 622 "parser.yy"
+#line 627 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5430,5 +5447,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 629 "parser.yy"
+#line 634 "parser.yy"
     { (yyval.en) = nullptr; }
     break;
@@ -5437,5 +5454,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 634 "parser.yy"
+#line 639 "parser.yy"
     { (yyval.op) = OperKinds::Assign; }
     break;
@@ -5444,5 +5461,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 635 "parser.yy"
+#line 640 "parser.yy"
     { (yyval.op) = OperKinds::AtAssn; }
     break;
@@ -5451,5 +5468,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 636 "parser.yy"
+#line 641 "parser.yy"
     { (yyval.op) = OperKinds::MulAssn; }
     break;
@@ -5458,5 +5475,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 637 "parser.yy"
+#line 642 "parser.yy"
     { (yyval.op) = OperKinds::DivAssn; }
     break;
@@ -5465,5 +5482,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 638 "parser.yy"
+#line 643 "parser.yy"
     { (yyval.op) = OperKinds::ModAssn; }
     break;
@@ -5472,5 +5489,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 639 "parser.yy"
+#line 644 "parser.yy"
     { (yyval.op) = OperKinds::PlusAssn; }
     break;
@@ -5479,5 +5496,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 640 "parser.yy"
+#line 645 "parser.yy"
     { (yyval.op) = OperKinds::MinusAssn; }
     break;
@@ -5486,5 +5503,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 641 "parser.yy"
+#line 646 "parser.yy"
     { (yyval.op) = OperKinds::LSAssn; }
     break;
@@ -5493,5 +5510,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 642 "parser.yy"
+#line 647 "parser.yy"
     { (yyval.op) = OperKinds::RSAssn; }
     break;
@@ -5500,5 +5517,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 643 "parser.yy"
+#line 648 "parser.yy"
     { (yyval.op) = OperKinds::AndAssn; }
     break;
@@ -5507,5 +5524,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 644 "parser.yy"
+#line 649 "parser.yy"
     { (yyval.op) = OperKinds::ERAssn; }
     break;
@@ -5514,5 +5531,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 645 "parser.yy"
+#line 650 "parser.yy"
     { (yyval.op) = OperKinds::OrAssn; }
     break;
@@ -5521,5 +5538,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 656 "parser.yy"
+#line 661 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
     break;
@@ -5528,5 +5545,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 658 "parser.yy"
+#line 663 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
     break;
@@ -5535,5 +5552,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 664 "parser.yy"
+#line 669 "parser.yy"
     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5542,5 +5559,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 670 "parser.yy"
+#line 675 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5549,5 +5566,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 675 "parser.yy"
+#line 680 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -5556,5 +5573,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 684 "parser.yy"
+#line 689 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
     break;
@@ -5563,5 +5580,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 691 "parser.yy"
+#line 696 "parser.yy"
     {
 			Token fn;
@@ -5574,5 +5591,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 701 "parser.yy"
+#line 706 "parser.yy"
     {
 			(yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
@@ -5583,5 +5600,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 708 "parser.yy"
+#line 713 "parser.yy"
     { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
     break;
@@ -5590,5 +5607,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 715 "parser.yy"
+#line 720 "parser.yy"
     { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
     break;
@@ -5597,5 +5614,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 721 "parser.yy"
+#line 726 "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;
@@ -5604,5 +5621,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 726 "parser.yy"
+#line 731 "parser.yy"
     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     break;
@@ -5611,5 +5628,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 728 "parser.yy"
+#line 733 "parser.yy"
     {	// mark all fields in list
 			for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
@@ -5622,5 +5639,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 734 "parser.yy"
+#line 739 "parser.yy"
     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     break;
@@ -5629,5 +5646,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 741 "parser.yy"
+#line 746 "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;
@@ -5636,5 +5653,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 746 "parser.yy"
+#line 751 "parser.yy"
     { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
     break;
@@ -5643,5 +5660,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 752 "parser.yy"
+#line 757 "parser.yy"
     { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
     break;
@@ -5650,5 +5667,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 754 "parser.yy"
+#line 759 "parser.yy"
     { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
     break;
@@ -5657,5 +5674,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 756 "parser.yy"
+#line 761 "parser.yy"
     { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     break;
@@ -5664,5 +5681,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 758 "parser.yy"
+#line 763 "parser.yy"
     {
 			StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
@@ -5679,5 +5696,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 768 "parser.yy"
+#line 773 "parser.yy"
     { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     break;
@@ -5686,5 +5703,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 770 "parser.yy"
+#line 775 "parser.yy"
     {
 			StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
@@ -5696,5 +5713,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 780 "parser.yy"
+#line 785 "parser.yy"
     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
@@ -5703,5 +5720,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 782 "parser.yy"
+#line 787 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5710,5 +5727,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 787 "parser.yy"
+#line 792 "parser.yy"
     { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
     break;
@@ -5717,5 +5734,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 789 "parser.yy"
+#line 794 "parser.yy"
     { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
     break;
@@ -5724,5 +5741,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 793 "parser.yy"
+#line 798 "parser.yy"
     { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
     break;
@@ -5731,5 +5748,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 794 "parser.yy"
+#line 799 "parser.yy"
     { (yyval.sn) = new StatementNode( build_default() ); }
     break;
@@ -5738,5 +5755,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 800 "parser.yy"
+#line 805 "parser.yy"
     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
     break;
@@ -5745,5 +5762,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 804 "parser.yy"
+#line 809 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
     break;
@@ -5752,5 +5769,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 809 "parser.yy"
+#line 814 "parser.yy"
     { (yyval.sn) = 0; }
     break;
@@ -5759,5 +5776,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 815 "parser.yy"
+#line 820 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
     break;
@@ -5766,5 +5783,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 817 "parser.yy"
+#line 822 "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;
@@ -5773,5 +5790,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 822 "parser.yy"
+#line 827 "parser.yy"
     { (yyval.sn) = 0; }
     break;
@@ -5780,5 +5797,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 828 "parser.yy"
+#line 833 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
     break;
@@ -5787,5 +5804,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 830 "parser.yy"
+#line 835 "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;
@@ -5794,5 +5811,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 832 "parser.yy"
+#line 837 "parser.yy"
     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
     break;
@@ -5801,5 +5818,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 834 "parser.yy"
+#line 839 "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;
@@ -5808,5 +5825,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 839 "parser.yy"
+#line 844 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
     break;
@@ -5815,5 +5832,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 845 "parser.yy"
+#line 850 "parser.yy"
     { (yyval.sn) = 0; }
     break;
@@ -5822,5 +5839,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 847 "parser.yy"
+#line 852 "parser.yy"
     { (yyval.sn) = 0; }
     break;
@@ -5829,5 +5846,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 852 "parser.yy"
+#line 857 "parser.yy"
     { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     break;
@@ -5836,5 +5853,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 854 "parser.yy"
+#line 859 "parser.yy"
     { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn), true ) ); }
     break;
@@ -5843,5 +5860,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 856 "parser.yy"
+#line 861 "parser.yy"
     { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
     break;
@@ -5850,5 +5867,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 861 "parser.yy"
+#line 866 "parser.yy"
     { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
     break;
@@ -5857,5 +5874,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 863 "parser.yy"
+#line 868 "parser.yy"
     { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
     break;
@@ -5864,5 +5881,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 868 "parser.yy"
+#line 873 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
     break;
@@ -5871,5 +5888,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 872 "parser.yy"
+#line 877 "parser.yy"
     { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
     break;
@@ -5878,5 +5895,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 875 "parser.yy"
+#line 880 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
     break;
@@ -5885,5 +5902,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 879 "parser.yy"
+#line 884 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); }
     break;
@@ -5892,5 +5909,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 882 "parser.yy"
+#line 887 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
     break;
@@ -5899,5 +5916,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 886 "parser.yy"
+#line 891 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); }
     break;
@@ -5906,5 +5923,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 888 "parser.yy"
+#line 893 "parser.yy"
     { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
     break;
@@ -5913,5 +5930,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 890 "parser.yy"
+#line 895 "parser.yy"
     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     break;
@@ -5920,5 +5937,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 892 "parser.yy"
+#line 897 "parser.yy"
     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     break;
@@ -5927,5 +5944,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 894 "parser.yy"
+#line 899 "parser.yy"
     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
     break;
@@ -5934,5 +5951,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 899 "parser.yy"
+#line 904 "parser.yy"
     { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
     break;
@@ -5941,5 +5958,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 901 "parser.yy"
+#line 906 "parser.yy"
     { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
     break;
@@ -5948,5 +5965,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 903 "parser.yy"
+#line 908 "parser.yy"
     { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
     break;
@@ -5955,5 +5972,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 910 "parser.yy"
+#line 915 "parser.yy"
     { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
     break;
@@ -5962,5 +5979,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 912 "parser.yy"
+#line 917 "parser.yy"
     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
     break;
@@ -5969,5 +5986,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 914 "parser.yy"
+#line 919 "parser.yy"
     { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
     break;
@@ -5976,5 +5993,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 916 "parser.yy"
+#line 921 "parser.yy"
     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
     break;
@@ -5983,5 +6000,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 921 "parser.yy"
+#line 926 "parser.yy"
     { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
     break;
@@ -5990,5 +6007,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 923 "parser.yy"
+#line 928 "parser.yy"
     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
     break;
@@ -5997,5 +6014,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 925 "parser.yy"
+#line 930 "parser.yy"
     { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
     break;
@@ -6004,5 +6021,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 927 "parser.yy"
+#line 932 "parser.yy"
     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
     break;
@@ -6011,5 +6028,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 932 "parser.yy"
+#line 937 "parser.yy"
     {
 			(yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) );
@@ -6020,5 +6037,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 945 "parser.yy"
+#line 950 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6030,5 +6047,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 950 "parser.yy"
+#line 955 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6037,5 +6054,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 952 "parser.yy"
+#line 957 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6047,5 +6064,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 961 "parser.yy"
+#line 966 "parser.yy"
     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); }
     break;
@@ -6054,5 +6071,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 963 "parser.yy"
+#line 968 "parser.yy"
     { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); }
     break;
@@ -6061,5 +6078,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 965 "parser.yy"
+#line 970 "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;
@@ -6068,5 +6085,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 967 "parser.yy"
+#line 972 "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;
@@ -6075,5 +6092,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 969 "parser.yy"
+#line 974 "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;
@@ -6082,5 +6099,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 974 "parser.yy"
+#line 979 "parser.yy"
     { (yyval.flag) = false; }
     break;
@@ -6089,5 +6106,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 976 "parser.yy"
+#line 981 "parser.yy"
     { (yyval.flag) = true; }
     break;
@@ -6096,5 +6113,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 981 "parser.yy"
+#line 986 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -6103,5 +6120,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 988 "parser.yy"
+#line 993 "parser.yy"
     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     break;
@@ -6110,5 +6127,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 993 "parser.yy"
+#line 998 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
     break;
@@ -6117,5 +6134,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 995 "parser.yy"
+#line 1000 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
     break;
@@ -6124,5 +6141,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1000 "parser.yy"
+#line 1005 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -6131,5 +6148,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1002 "parser.yy"
+#line 1007 "parser.yy"
     { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
     break;
@@ -6138,5 +6155,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1004 "parser.yy"
+#line 1009 "parser.yy"
     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
     break;
@@ -6145,5 +6162,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1009 "parser.yy"
+#line 1014 "parser.yy"
     {
 			(yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) );
@@ -6155,5 +6172,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1014 "parser.yy"
+#line 1019 "parser.yy"
     {
 			(yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) );
@@ -6165,5 +6182,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1024 "parser.yy"
+#line 1029 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -6172,5 +6189,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1031 "parser.yy"
+#line 1036 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6179,5 +6196,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1036 "parser.yy"
+#line 1041 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -6186,5 +6203,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1043 "parser.yy"
+#line 1048 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6193,5 +6210,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1057 "parser.yy"
+#line 1062 "parser.yy"
     {}
     break;
@@ -6200,5 +6217,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1058 "parser.yy"
+#line 1063 "parser.yy"
     {}
     break;
@@ -6207,5 +6224,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1087 "parser.yy"
+#line 1092 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6217,5 +6234,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1094 "parser.yy"
+#line 1099 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6227,5 +6244,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1099 "parser.yy"
+#line 1104 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
@@ -6235,14 +6252,4 @@
 
   case 262:
-
-/* Line 1806 of yacc.c  */
-#line 1109 "parser.yy"
-    {
-			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
-			(yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
-		}
-    break;
-
-  case 263:
 
 /* Line 1806 of yacc.c  */
@@ -6254,8 +6261,18 @@
     break;
 
+  case 263:
+
+/* Line 1806 of yacc.c  */
+#line 1119 "parser.yy"
+    {
+			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
+			(yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
+		}
+    break;
+
   case 264:
 
 /* Line 1806 of yacc.c  */
-#line 1119 "parser.yy"
+#line 1124 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
@@ -6267,5 +6284,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1127 "parser.yy"
+#line 1132 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6275,14 +6292,4 @@
 
   case 266:
-
-/* Line 1806 of yacc.c  */
-#line 1132 "parser.yy"
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );
-		}
-    break;
-
-  case 267:
 
 /* Line 1806 of yacc.c  */
@@ -6294,8 +6301,18 @@
     break;
 
+  case 267:
+
+/* Line 1806 of yacc.c  */
+#line 1142 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );
+		}
+    break;
+
   case 268:
 
 /* Line 1806 of yacc.c  */
-#line 1142 "parser.yy"
+#line 1147 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6307,5 +6324,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1147 "parser.yy"
+#line 1152 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
@@ -6317,5 +6334,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1178 "parser.yy"
+#line 1183 "parser.yy"
     {
 			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
@@ -6326,5 +6343,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1182 "parser.yy"
+#line 1187 "parser.yy"
     {
 			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
@@ -6335,5 +6352,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1189 "parser.yy"
+#line 1194 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     break;
@@ -6342,19 +6359,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 1193 "parser.yy"
+#line 1198 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
     break;
 
   case 274:
-
-/* Line 1806 of yacc.c  */
-#line 1198 "parser.yy"
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
-		}
-    break;
-
-  case 275:
 
 /* Line 1806 of yacc.c  */
@@ -6366,8 +6373,18 @@
     break;
 
+  case 275:
+
+/* Line 1806 of yacc.c  */
+#line 1208 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::TD );
+			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
+		}
+    break;
+
   case 276:
 
 /* Line 1806 of yacc.c  */
-#line 1208 "parser.yy"
+#line 1213 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
@@ -6379,5 +6396,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1219 "parser.yy"
+#line 1224 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6389,5 +6406,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1224 "parser.yy"
+#line 1229 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6399,5 +6416,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1229 "parser.yy"
+#line 1234 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6409,5 +6426,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1234 "parser.yy"
+#line 1239 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6419,5 +6436,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1239 "parser.yy"
+#line 1244 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6429,5 +6446,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1248 "parser.yy"
+#line 1253 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
@@ -6439,5 +6456,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1253 "parser.yy"
+#line 1258 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
@@ -6449,5 +6466,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1270 "parser.yy"
+#line 1275 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6459,5 +6476,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1275 "parser.yy"
+#line 1280 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6469,5 +6486,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1297 "parser.yy"
+#line 1302 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -6476,5 +6493,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1309 "parser.yy"
+#line 1314 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6483,5 +6500,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1320 "parser.yy"
+#line 1325 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     break;
@@ -6490,5 +6507,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1322 "parser.yy"
+#line 1327 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     break;
@@ -6497,5 +6514,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1324 "parser.yy"
+#line 1329 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
     break;
@@ -6504,5 +6521,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1326 "parser.yy"
+#line 1331 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
     break;
@@ -6511,5 +6528,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1328 "parser.yy"
+#line 1333 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
     break;
@@ -6518,5 +6535,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1330 "parser.yy"
+#line 1335 "parser.yy"
     {
 			typedefTable.enterScope();
@@ -6527,5 +6544,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1334 "parser.yy"
+#line 1339 "parser.yy"
     {
 			typedefTable.leaveScope();
@@ -6537,5 +6554,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1343 "parser.yy"
+#line 1348 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6544,5 +6561,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1345 "parser.yy"
+#line 1350 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6551,5 +6568,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1356 "parser.yy"
+#line 1361 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6558,5 +6575,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1361 "parser.yy"
+#line 1366 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     break;
@@ -6565,5 +6582,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1363 "parser.yy"
+#line 1368 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
     break;
@@ -6572,5 +6589,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1365 "parser.yy"
+#line 1370 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
     break;
@@ -6579,5 +6596,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1367 "parser.yy"
+#line 1372 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
     break;
@@ -6586,5 +6603,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1370 "parser.yy"
+#line 1375 "parser.yy"
     { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
     break;
@@ -6593,5 +6610,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1372 "parser.yy"
+#line 1377 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
     break;
@@ -6600,5 +6617,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1375 "parser.yy"
+#line 1380 "parser.yy"
     { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
     break;
@@ -6607,5 +6624,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1377 "parser.yy"
+#line 1382 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
     break;
@@ -6614,5 +6631,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1382 "parser.yy"
+#line 1387 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
     break;
@@ -6621,5 +6638,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1384 "parser.yy"
+#line 1389 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
     break;
@@ -6628,5 +6645,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1386 "parser.yy"
+#line 1391 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
     break;
@@ -6635,5 +6652,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1388 "parser.yy"
+#line 1393 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
     break;
@@ -6642,5 +6659,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1390 "parser.yy"
+#line 1395 "parser.yy"
     { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Long ); }
     break;
@@ -6649,5 +6666,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1392 "parser.yy"
+#line 1397 "parser.yy"
     { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Short ); }
     break;
@@ -6656,5 +6673,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1394 "parser.yy"
+#line 1399 "parser.yy"
     { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Signed ); }
     break;
@@ -6663,5 +6680,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1396 "parser.yy"
+#line 1401 "parser.yy"
     { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); }
     break;
@@ -6670,5 +6687,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1398 "parser.yy"
+#line 1403 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
     break;
@@ -6677,5 +6694,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1400 "parser.yy"
+#line 1405 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
     break;
@@ -6684,5 +6701,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1402 "parser.yy"
+#line 1407 "parser.yy"
     { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Complex ); }
     break;
@@ -6691,5 +6708,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1404 "parser.yy"
+#line 1409 "parser.yy"
     { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
     break;
@@ -6698,5 +6715,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1406 "parser.yy"
+#line 1411 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
     break;
@@ -6705,5 +6722,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1413 "parser.yy"
+#line 1418 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6712,5 +6729,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1415 "parser.yy"
+#line 1420 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6719,5 +6736,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1417 "parser.yy"
+#line 1422 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6726,5 +6743,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1419 "parser.yy"
+#line 1424 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -6733,5 +6750,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1425 "parser.yy"
+#line 1430 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6740,5 +6757,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1432 "parser.yy"
+#line 1437 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6747,5 +6764,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1434 "parser.yy"
+#line 1439 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6754,5 +6771,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1436 "parser.yy"
+#line 1441 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6761,5 +6778,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1441 "parser.yy"
+#line 1446 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
     break;
@@ -6768,5 +6785,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1443 "parser.yy"
+#line 1448 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
     break;
@@ -6775,5 +6792,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1445 "parser.yy"
+#line 1450 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -6782,5 +6799,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1447 "parser.yy"
+#line 1452 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     break;
@@ -6789,5 +6806,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1453 "parser.yy"
+#line 1458 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6796,5 +6813,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1455 "parser.yy"
+#line 1460 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6803,5 +6820,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1457 "parser.yy"
+#line 1462 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6810,5 +6827,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1463 "parser.yy"
+#line 1468 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6817,5 +6834,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1465 "parser.yy"
+#line 1470 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6824,5 +6841,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1471 "parser.yy"
+#line 1476 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6831,5 +6848,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1473 "parser.yy"
+#line 1478 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6838,5 +6855,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1475 "parser.yy"
+#line 1480 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6845,5 +6862,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1480 "parser.yy"
+#line 1485 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -6852,5 +6869,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1482 "parser.yy"
+#line 1487 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6859,5 +6876,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1484 "parser.yy"
+#line 1489 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6866,5 +6883,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1494 "parser.yy"
+#line 1499 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), nullptr, nullptr, (yyvsp[(3) - (4)].decl), true ); }
     break;
@@ -6873,5 +6890,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1496 "parser.yy"
+#line 1501 "parser.yy"
     {
 			typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
@@ -6883,5 +6900,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1501 "parser.yy"
+#line 1506 "parser.yy"
     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     break;
@@ -6890,5 +6907,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1503 "parser.yy"
+#line 1508 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), nullptr, (yyvsp[(5) - (6)].decl), true ); }
     break;
@@ -6897,5 +6914,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1505 "parser.yy"
+#line 1510 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), nullptr, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
     break;
@@ -6904,5 +6921,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1507 "parser.yy"
+#line 1512 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     break;
@@ -6911,5 +6928,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1512 "parser.yy"
+#line 1517 "parser.yy"
     { (yyval.aggKey) = DeclarationNode::Struct; }
     break;
@@ -6918,5 +6935,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1514 "parser.yy"
+#line 1519 "parser.yy"
     { (yyval.aggKey) = DeclarationNode::Union; }
     break;
@@ -6925,5 +6942,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1519 "parser.yy"
+#line 1524 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -6932,5 +6949,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1521 "parser.yy"
+#line 1526 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     break;
@@ -6939,5 +6956,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1527 "parser.yy"
+#line 1532 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
     break;
@@ -6946,5 +6963,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1530 "parser.yy"
+#line 1535 "parser.yy"
     {	// mark all fields in list
 			for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
@@ -6957,5 +6974,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1540 "parser.yy"
+#line 1545 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     break;
@@ -6964,5 +6981,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1542 "parser.yy"
+#line 1547 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     break;
@@ -6971,5 +6988,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1544 "parser.yy"
+#line 1549 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
     break;
@@ -6978,5 +6995,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1549 "parser.yy"
+#line 1554 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6985,5 +7002,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1551 "parser.yy"
+#line 1556 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
     break;
@@ -6992,5 +7009,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1556 "parser.yy"
+#line 1561 "parser.yy"
     { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
     break;
@@ -6999,5 +7016,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1558 "parser.yy"
+#line 1563 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
     break;
@@ -7006,5 +7023,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1561 "parser.yy"
+#line 1566 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     break;
@@ -7013,5 +7030,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1564 "parser.yy"
+#line 1569 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     break;
@@ -7020,5 +7037,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1570 "parser.yy"
+#line 1575 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -7027,5 +7044,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1572 "parser.yy"
+#line 1577 "parser.yy"
     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
@@ -7034,5 +7051,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1577 "parser.yy"
+#line 1582 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -7041,5 +7058,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1586 "parser.yy"
+#line 1591 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnum( nullptr, (yyvsp[(3) - (5)].decl) ); }
     break;
@@ -7048,5 +7065,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1588 "parser.yy"
+#line 1593 "parser.yy"
     {
 			typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
@@ -7058,5 +7075,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1593 "parser.yy"
+#line 1598 "parser.yy"
     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     break;
@@ -7065,5 +7082,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1595 "parser.yy"
+#line 1600 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
     break;
@@ -7072,5 +7089,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1600 "parser.yy"
+#line 1605 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     break;
@@ -7079,5 +7096,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1602 "parser.yy"
+#line 1607 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
     break;
@@ -7086,5 +7103,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1607 "parser.yy"
+#line 1612 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -7093,5 +7110,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1609 "parser.yy"
+#line 1614 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -7100,5 +7117,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1616 "parser.yy"
+#line 1621 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7107,5 +7124,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1624 "parser.yy"
+#line 1629 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7114,5 +7131,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1626 "parser.yy"
+#line 1631 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
@@ -7121,5 +7138,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1628 "parser.yy"
+#line 1633 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
@@ -7128,5 +7145,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1636 "parser.yy"
+#line 1641 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7135,5 +7152,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1638 "parser.yy"
+#line 1643 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7142,5 +7159,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1640 "parser.yy"
+#line 1645 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
     break;
@@ -7149,5 +7166,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1646 "parser.yy"
+#line 1651 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7156,5 +7173,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1651 "parser.yy"
+#line 1656 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7163,5 +7180,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1658 "parser.yy"
+#line 1663 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
@@ -7170,5 +7187,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1665 "parser.yy"
+#line 1670 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7177,5 +7194,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1667 "parser.yy"
+#line 1672 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7184,5 +7201,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1676 "parser.yy"
+#line 1681 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     break;
@@ -7191,5 +7208,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1679 "parser.yy"
+#line 1684 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     break;
@@ -7198,5 +7215,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1681 "parser.yy"
+#line 1686 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
     break;
@@ -7205,19 +7222,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 1691 "parser.yy"
+#line 1696 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 436:
-
-/* Line 1806 of yacc.c  */
-#line 1697 "parser.yy"
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
-		}
-    break;
-
-  case 437:
 
 /* Line 1806 of yacc.c  */
@@ -7229,8 +7236,18 @@
     break;
 
+  case 437:
+
+/* Line 1806 of yacc.c  */
+#line 1707 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
+		}
+    break;
+
   case 439:
 
 /* Line 1806 of yacc.c  */
-#line 1711 "parser.yy"
+#line 1716 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7239,5 +7256,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1720 "parser.yy"
+#line 1725 "parser.yy"
     { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -7246,5 +7263,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1722 "parser.yy"
+#line 1727 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
     break;
@@ -7253,5 +7270,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1747 "parser.yy"
+#line 1752 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7260,5 +7277,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1755 "parser.yy"
+#line 1760 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7267,5 +7284,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1760 "parser.yy"
+#line 1765 "parser.yy"
     { (yyval.in) = 0; }
     break;
@@ -7274,5 +7291,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1762 "parser.yy"
+#line 1767 "parser.yy"
     { (yyval.in) = (yyvsp[(2) - (2)].in); }
     break;
@@ -7281,5 +7298,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1764 "parser.yy"
+#line 1769 "parser.yy"
     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
     break;
@@ -7288,5 +7305,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1768 "parser.yy"
+#line 1773 "parser.yy"
     { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     break;
@@ -7295,5 +7312,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1769 "parser.yy"
+#line 1774 "parser.yy"
     { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     break;
@@ -7302,5 +7319,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1774 "parser.yy"
+#line 1779 "parser.yy"
     { (yyval.in) = 0; }
     break;
@@ -7309,5 +7326,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1776 "parser.yy"
+#line 1781 "parser.yy"
     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
     break;
@@ -7316,5 +7333,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1777 "parser.yy"
+#line 1782 "parser.yy"
     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
     break;
@@ -7323,5 +7340,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1779 "parser.yy"
+#line 1784 "parser.yy"
     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
     break;
@@ -7330,5 +7347,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1795 "parser.yy"
+#line 1800 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
     break;
@@ -7337,5 +7354,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1801 "parser.yy"
+#line 1806 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -7344,5 +7361,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1807 "parser.yy"
+#line 1812 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
     break;
@@ -7351,5 +7368,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1810 "parser.yy"
+#line 1815 "parser.yy"
     { (yyval.en) = (yyvsp[(3) - (5)].en); }
     break;
@@ -7358,5 +7375,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1812 "parser.yy"
+#line 1817 "parser.yy"
     { (yyval.en) = (yyvsp[(3) - (5)].en); }
     break;
@@ -7365,5 +7382,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1814 "parser.yy"
+#line 1819 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
     break;
@@ -7372,5 +7389,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1816 "parser.yy"
+#line 1821 "parser.yy"
     { (yyval.en) = (yyvsp[(4) - (6)].en); }
     break;
@@ -7379,5 +7396,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1840 "parser.yy"
+#line 1845 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7386,5 +7403,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1842 "parser.yy"
+#line 1847 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7393,5 +7410,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1844 "parser.yy"
+#line 1849 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -7400,5 +7417,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1850 "parser.yy"
+#line 1855 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7407,5 +7424,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1852 "parser.yy"
+#line 1857 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7414,5 +7431,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1857 "parser.yy"
+#line 1862 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     break;
@@ -7421,5 +7438,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1863 "parser.yy"
+#line 1868 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -7428,5 +7445,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1868 "parser.yy"
+#line 1873 "parser.yy"
     { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
     break;
@@ -7435,5 +7452,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1870 "parser.yy"
+#line 1875 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -7442,5 +7459,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1876 "parser.yy"
+#line 1881 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Otype; }
     break;
@@ -7449,5 +7466,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1878 "parser.yy"
+#line 1883 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Ftype; }
     break;
@@ -7456,5 +7473,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1880 "parser.yy"
+#line 1885 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Dtype; }
     break;
@@ -7463,5 +7480,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1885 "parser.yy"
+#line 1890 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7470,5 +7487,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1887 "parser.yy"
+#line 1892 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     break;
@@ -7477,5 +7494,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1892 "parser.yy"
+#line 1897 "parser.yy"
     {
 			typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
@@ -7487,5 +7504,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1897 "parser.yy"
+#line 1902 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     break;
@@ -7494,5 +7511,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1899 "parser.yy"
+#line 1904 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7501,5 +7518,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1904 "parser.yy"
+#line 1909 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
     break;
@@ -7508,5 +7525,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1907 "parser.yy"
+#line 1912 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
     break;
@@ -7515,5 +7532,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1909 "parser.yy"
+#line 1914 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     break;
@@ -7522,5 +7539,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1914 "parser.yy"
+#line 1919 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     break;
@@ -7529,5 +7546,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1916 "parser.yy"
+#line 1921 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -7536,5 +7553,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1918 "parser.yy"
+#line 1923 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -7543,5 +7560,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1923 "parser.yy"
+#line 1928 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7550,5 +7567,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1925 "parser.yy"
+#line 1930 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -7557,5 +7574,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1930 "parser.yy"
+#line 1935 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
@@ -7567,5 +7584,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1935 "parser.yy"
+#line 1940 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
@@ -7577,5 +7594,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1943 "parser.yy"
+#line 1948 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
@@ -7587,5 +7604,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1948 "parser.yy"
+#line 1953 "parser.yy"
     {
 			typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
@@ -7597,5 +7614,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1953 "parser.yy"
+#line 1958 "parser.yy"
     {
 			typedefTable.leaveTrait();
@@ -7608,19 +7625,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 1963 "parser.yy"
+#line 1968 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 516:
-
-/* Line 1806 of yacc.c  */
-#line 1973 "parser.yy"
-    {
-			typedefTable.addToEnclosingScope2( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(1) - (1)].decl);
-		}
-    break;
-
-  case 517:
 
 /* Line 1806 of yacc.c  */
@@ -7632,8 +7639,18 @@
     break;
 
+  case 517:
+
+/* Line 1806 of yacc.c  */
+#line 1983 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope2( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (1)].decl);
+		}
+    break;
+
   case 518:
 
 /* Line 1806 of yacc.c  */
-#line 1983 "parser.yy"
+#line 1988 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
@@ -7645,5 +7662,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1991 "parser.yy"
+#line 1996 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7655,5 +7672,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1996 "parser.yy"
+#line 2001 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7665,5 +7682,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2006 "parser.yy"
+#line 2011 "parser.yy"
     {}
     break;
@@ -7672,5 +7689,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2008 "parser.yy"
+#line 2013 "parser.yy"
     { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);	}
     break;
@@ -7679,5 +7696,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2014 "parser.yy"
+#line 2019 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl) != nullptr ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
     break;
@@ -7686,5 +7703,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2019 "parser.yy"
+#line 2024 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7693,5 +7710,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2027 "parser.yy"
+#line 2032 "parser.yy"
     {}
     break;
@@ -7700,5 +7717,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2029 "parser.yy"
+#line 2034 "parser.yy"
     {
 			linkageStack.push( linkage );				// handle nested extern "C"/"Cforall"
@@ -7710,5 +7727,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2034 "parser.yy"
+#line 2039 "parser.yy"
     {
 			linkage = linkageStack.top();
@@ -7721,5 +7738,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2040 "parser.yy"
+#line 2045 "parser.yy"
     {	// mark all fields in list
 			for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
@@ -7732,5 +7749,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2055 "parser.yy"
+#line 2060 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7743,5 +7760,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2061 "parser.yy"
+#line 2066 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7754,5 +7771,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2070 "parser.yy"
+#line 2075 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7765,5 +7782,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2076 "parser.yy"
+#line 2081 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7776,5 +7793,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2082 "parser.yy"
+#line 2087 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7787,5 +7804,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2088 "parser.yy"
+#line 2093 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7798,5 +7815,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2094 "parser.yy"
+#line 2099 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7809,5 +7826,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2102 "parser.yy"
+#line 2107 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7820,5 +7837,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2108 "parser.yy"
+#line 2113 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7831,5 +7848,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2116 "parser.yy"
+#line 2121 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7842,5 +7859,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2122 "parser.yy"
+#line 2127 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7853,5 +7870,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2137 "parser.yy"
+#line 2142 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -7860,5 +7877,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2142 "parser.yy"
+#line 2147 "parser.yy"
     { delete (yyvsp[(3) - (5)].str); }
     break;
@@ -7867,5 +7884,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2147 "parser.yy"
+#line 2152 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7874,5 +7891,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2154 "parser.yy"
+#line 2159 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7881,5 +7898,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2160 "parser.yy"
+#line 2165 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7888,5 +7905,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2171 "parser.yy"
+#line 2176 "parser.yy"
     { delete (yyvsp[(3) - (4)].en); }
     break;
@@ -7895,5 +7912,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2175 "parser.yy"
+#line 2180 "parser.yy"
     { delete (yyvsp[(1) - (1)].tok); }
     break;
@@ -7902,5 +7919,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2176 "parser.yy"
+#line 2181 "parser.yy"
     { delete (yyvsp[(1) - (1)].decl); }
     break;
@@ -7909,5 +7926,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2177 "parser.yy"
+#line 2182 "parser.yy"
     { delete (yyvsp[(1) - (1)].decl); }
     break;
@@ -7916,23 +7933,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 2178 "parser.yy"
+#line 2183 "parser.yy"
     { delete (yyvsp[(1) - (1)].decl); }
     break;
 
   case 565:
-
-/* Line 1806 of yacc.c  */
-#line 2213 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 567:
-
-/* Line 1806 of yacc.c  */
-#line 2216 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 568:
 
 /* Line 1806 of yacc.c  */
@@ -7941,8 +7944,22 @@
     break;
 
+  case 567:
+
+/* Line 1806 of yacc.c  */
+#line 2221 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 568:
+
+/* Line 1806 of yacc.c  */
+#line 2223 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
   case 569:
 
 /* Line 1806 of yacc.c  */
-#line 2223 "parser.yy"
+#line 2228 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
@@ -7954,5 +7971,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2228 "parser.yy"
+#line 2233 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -7961,5 +7978,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2233 "parser.yy"
+#line 2238 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -7968,5 +7985,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2235 "parser.yy"
+#line 2240 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -7975,5 +7992,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2237 "parser.yy"
+#line 2242 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -7982,5 +7999,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2242 "parser.yy"
+#line 2247 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7989,5 +8006,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2244 "parser.yy"
+#line 2249 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -7996,5 +8013,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2246 "parser.yy"
+#line 2251 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8003,5 +8020,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2248 "parser.yy"
+#line 2253 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8010,5 +8027,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2253 "parser.yy"
+#line 2258 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8017,5 +8034,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2255 "parser.yy"
+#line 2260 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8024,5 +8041,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2264 "parser.yy"
+#line 2269 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8031,5 +8048,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2267 "parser.yy"
+#line 2272 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8038,5 +8055,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2272 "parser.yy"
+#line 2277 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8045,5 +8062,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2274 "parser.yy"
+#line 2279 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8052,5 +8069,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2276 "parser.yy"
+#line 2281 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8059,5 +8076,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2281 "parser.yy"
+#line 2286 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8066,5 +8083,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2283 "parser.yy"
+#line 2288 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8073,5 +8090,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2285 "parser.yy"
+#line 2290 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8080,5 +8097,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2290 "parser.yy"
+#line 2295 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8087,5 +8104,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2292 "parser.yy"
+#line 2297 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8094,5 +8111,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2294 "parser.yy"
+#line 2299 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8101,5 +8118,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2309 "parser.yy"
+#line 2314 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -8108,5 +8125,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2311 "parser.yy"
+#line 2316 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
     break;
@@ -8115,5 +8132,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2313 "parser.yy"
+#line 2318 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8122,5 +8139,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2318 "parser.yy"
+#line 2323 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8129,5 +8146,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2320 "parser.yy"
+#line 2325 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8136,5 +8153,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2322 "parser.yy"
+#line 2327 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8143,5 +8160,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2327 "parser.yy"
+#line 2332 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8150,5 +8167,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2329 "parser.yy"
+#line 2334 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8157,23 +8174,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 2331 "parser.yy"
+#line 2336 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 604:
-
-/* Line 1806 of yacc.c  */
-#line 2346 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 606:
-
-/* Line 1806 of yacc.c  */
-#line 2349 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 607:
 
 /* Line 1806 of yacc.c  */
@@ -8182,8 +8185,22 @@
     break;
 
+  case 606:
+
+/* Line 1806 of yacc.c  */
+#line 2354 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 607:
+
+/* Line 1806 of yacc.c  */
+#line 2356 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
   case 609:
 
 /* Line 1806 of yacc.c  */
-#line 2357 "parser.yy"
+#line 2362 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8192,5 +8209,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2362 "parser.yy"
+#line 2367 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8199,5 +8216,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2364 "parser.yy"
+#line 2369 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8206,5 +8223,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2366 "parser.yy"
+#line 2371 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8213,5 +8230,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2371 "parser.yy"
+#line 2376 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8220,5 +8237,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2373 "parser.yy"
+#line 2378 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8227,5 +8244,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2375 "parser.yy"
+#line 2380 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8234,5 +8251,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2377 "parser.yy"
+#line 2382 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8241,5 +8258,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2382 "parser.yy"
+#line 2387 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8248,5 +8265,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2384 "parser.yy"
+#line 2389 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8255,23 +8272,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 2386 "parser.yy"
+#line 2391 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 620:
-
-/* Line 1806 of yacc.c  */
-#line 2396 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 622:
-
-/* Line 1806 of yacc.c  */
-#line 2399 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 623:
 
 /* Line 1806 of yacc.c  */
@@ -8280,8 +8283,22 @@
     break;
 
+  case 622:
+
+/* Line 1806 of yacc.c  */
+#line 2404 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 623:
+
+/* Line 1806 of yacc.c  */
+#line 2406 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
   case 624:
 
 /* Line 1806 of yacc.c  */
-#line 2406 "parser.yy"
+#line 2411 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8290,5 +8307,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2408 "parser.yy"
+#line 2413 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8297,5 +8314,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2410 "parser.yy"
+#line 2415 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8304,5 +8321,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2415 "parser.yy"
+#line 2420 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8311,5 +8328,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2417 "parser.yy"
+#line 2422 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8318,5 +8335,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2419 "parser.yy"
+#line 2424 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8325,5 +8342,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2421 "parser.yy"
+#line 2426 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8332,5 +8349,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2426 "parser.yy"
+#line 2431 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8339,5 +8356,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2428 "parser.yy"
+#line 2433 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8346,23 +8363,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 2430 "parser.yy"
+#line 2435 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 634:
-
-/* Line 1806 of yacc.c  */
-#line 2461 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 636:
-
-/* Line 1806 of yacc.c  */
-#line 2464 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 637:
 
 /* Line 1806 of yacc.c  */
@@ -8371,15 +8374,19 @@
     break;
 
+  case 636:
+
+/* Line 1806 of yacc.c  */
+#line 2469 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 637:
+
+/* Line 1806 of yacc.c  */
+#line 2471 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
   case 638:
-
-/* Line 1806 of yacc.c  */
-#line 2471 "parser.yy"
-    {
-			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
-			(yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
-		}
-    break;
-
-  case 639:
 
 /* Line 1806 of yacc.c  */
@@ -8391,8 +8398,18 @@
     break;
 
+  case 639:
+
+/* Line 1806 of yacc.c  */
+#line 2481 "parser.yy"
+    {
+			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
+			(yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
+		}
+    break;
+
   case 640:
 
 /* Line 1806 of yacc.c  */
-#line 2484 "parser.yy"
+#line 2489 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8401,5 +8418,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2486 "parser.yy"
+#line 2491 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8408,5 +8425,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2488 "parser.yy"
+#line 2493 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8415,5 +8432,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2493 "parser.yy"
+#line 2498 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8422,5 +8439,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2495 "parser.yy"
+#line 2500 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8429,5 +8446,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2500 "parser.yy"
+#line 2505 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8436,5 +8453,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2502 "parser.yy"
+#line 2507 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8443,5 +8460,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2517 "parser.yy"
+#line 2522 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8450,5 +8467,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2519 "parser.yy"
+#line 2524 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8457,5 +8474,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2524 "parser.yy"
+#line 2529 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
@@ -8464,5 +8481,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2526 "parser.yy"
+#line 2531 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8471,5 +8488,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2528 "parser.yy"
+#line 2533 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8478,5 +8495,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2530 "parser.yy"
+#line 2535 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8485,5 +8502,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2532 "parser.yy"
+#line 2537 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8492,5 +8509,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2538 "parser.yy"
+#line 2543 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8499,5 +8516,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2540 "parser.yy"
+#line 2545 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8506,5 +8523,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2542 "parser.yy"
+#line 2547 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8513,5 +8530,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2547 "parser.yy"
+#line 2552 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
     break;
@@ -8520,5 +8537,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2549 "parser.yy"
+#line 2554 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8527,5 +8544,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2551 "parser.yy"
+#line 2556 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8534,5 +8551,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2557 "parser.yy"
+#line 2562 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     break;
@@ -8541,5 +8558,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2559 "parser.yy"
+#line 2564 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -8548,5 +8565,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2565 "parser.yy"
+#line 2570 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     break;
@@ -8555,5 +8572,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2567 "parser.yy"
+#line 2572 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     break;
@@ -8562,5 +8579,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2569 "parser.yy"
+#line 2574 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
     break;
@@ -8569,5 +8586,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2571 "parser.yy"
+#line 2576 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     break;
@@ -8576,5 +8593,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2586 "parser.yy"
+#line 2591 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8583,5 +8600,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2588 "parser.yy"
+#line 2593 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8590,5 +8607,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2593 "parser.yy"
+#line 2598 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
@@ -8597,5 +8614,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2595 "parser.yy"
+#line 2600 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8604,5 +8621,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2597 "parser.yy"
+#line 2602 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8611,5 +8628,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2599 "parser.yy"
+#line 2604 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8618,5 +8635,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2601 "parser.yy"
+#line 2606 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8625,5 +8642,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2607 "parser.yy"
+#line 2612 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8632,5 +8649,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2609 "parser.yy"
+#line 2614 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8639,5 +8656,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2611 "parser.yy"
+#line 2616 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8646,5 +8663,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2616 "parser.yy"
+#line 2621 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
     break;
@@ -8653,5 +8670,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2618 "parser.yy"
+#line 2623 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8660,5 +8677,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2620 "parser.yy"
+#line 2625 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8667,5 +8684,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2627 "parser.yy"
+#line 2632 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8674,5 +8691,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2638 "parser.yy"
+#line 2643 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     break;
@@ -8681,5 +8698,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2641 "parser.yy"
+#line 2646 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     break;
@@ -8688,5 +8705,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2643 "parser.yy"
+#line 2648 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     break;
@@ -8695,5 +8712,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2646 "parser.yy"
+#line 2651 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     break;
@@ -8702,5 +8719,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2648 "parser.yy"
+#line 2653 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     break;
@@ -8709,5 +8726,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2650 "parser.yy"
+#line 2655 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     break;
@@ -8716,5 +8733,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2664 "parser.yy"
+#line 2669 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8723,5 +8740,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2666 "parser.yy"
+#line 2671 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8730,5 +8747,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2671 "parser.yy"
+#line 2676 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
@@ -8737,5 +8754,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2673 "parser.yy"
+#line 2678 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8744,5 +8761,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2675 "parser.yy"
+#line 2680 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8751,5 +8768,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2677 "parser.yy"
+#line 2682 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8758,5 +8775,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2679 "parser.yy"
+#line 2684 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8765,5 +8782,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2685 "parser.yy"
+#line 2690 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8772,5 +8789,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2687 "parser.yy"
+#line 2692 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8779,5 +8796,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2689 "parser.yy"
+#line 2694 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8786,5 +8803,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2694 "parser.yy"
+#line 2699 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8793,5 +8810,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2696 "parser.yy"
+#line 2701 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8800,5 +8817,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2706 "parser.yy"
+#line 2711 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8807,5 +8824,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2716 "parser.yy"
+#line 2721 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8814,5 +8831,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2718 "parser.yy"
+#line 2723 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8821,5 +8838,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2720 "parser.yy"
+#line 2725 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8828,5 +8845,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2722 "parser.yy"
+#line 2727 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8835,5 +8852,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2724 "parser.yy"
+#line 2729 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8842,5 +8859,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2726 "parser.yy"
+#line 2731 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8849,5 +8866,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2733 "parser.yy"
+#line 2738 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -8856,5 +8873,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2735 "parser.yy"
+#line 2740 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8863,5 +8880,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2737 "parser.yy"
+#line 2742 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -8870,23 +8887,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 2739 "parser.yy"
+#line 2744 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     break;
 
   case 722:
-
-/* Line 1806 of yacc.c  */
-#line 2741 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
-    break;
-
-  case 723:
-
-/* Line 1806 of yacc.c  */
-#line 2744 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-    break;
-
-  case 724:
 
 /* Line 1806 of yacc.c  */
@@ -8895,8 +8898,22 @@
     break;
 
+  case 723:
+
+/* Line 1806 of yacc.c  */
+#line 2749 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+    break;
+
+  case 724:
+
+/* Line 1806 of yacc.c  */
+#line 2751 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
   case 725:
 
 /* Line 1806 of yacc.c  */
-#line 2748 "parser.yy"
+#line 2753 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -8905,5 +8922,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2750 "parser.yy"
+#line 2755 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -8912,5 +8929,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2752 "parser.yy"
+#line 2757 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8919,5 +8936,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2757 "parser.yy"
+#line 2762 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     break;
@@ -8926,5 +8943,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2759 "parser.yy"
+#line 2764 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     break;
@@ -8933,5 +8950,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2764 "parser.yy"
+#line 2769 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     break;
@@ -8940,5 +8957,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2766 "parser.yy"
+#line 2771 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     break;
@@ -8947,5 +8964,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2793 "parser.yy"
+#line 2798 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8954,5 +8971,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2804 "parser.yy"
+#line 2809 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8961,5 +8978,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2806 "parser.yy"
+#line 2811 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8968,5 +8985,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2808 "parser.yy"
+#line 2813 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8975,5 +8992,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2810 "parser.yy"
+#line 2815 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8982,5 +8999,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2812 "parser.yy"
+#line 2817 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8989,5 +9006,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2814 "parser.yy"
+#line 2819 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8996,5 +9013,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2821 "parser.yy"
+#line 2826 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     break;
@@ -9003,5 +9020,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2823 "parser.yy"
+#line 2828 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     break;
@@ -9010,5 +9027,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2825 "parser.yy"
+#line 2830 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9017,5 +9034,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2827 "parser.yy"
+#line 2832 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     break;
@@ -9024,5 +9041,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2829 "parser.yy"
+#line 2834 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     break;
@@ -9031,5 +9048,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2831 "parser.yy"
+#line 2836 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9038,5 +9055,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2836 "parser.yy"
+#line 2841 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     break;
@@ -9045,5 +9062,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2843 "parser.yy"
+#line 2848 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
     break;
@@ -9052,5 +9069,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2845 "parser.yy"
+#line 2850 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
     break;
@@ -9059,5 +9076,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2869 "parser.yy"
+#line 2874 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -9066,5 +9083,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2871 "parser.yy"
+#line 2876 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -9073,5 +9090,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 9076 "Parser/parser.cc"
+#line 9093 "Parser/parser.cc"
       default: break;
     }
@@ -9304,5 +9321,5 @@
 
 /* Line 2067 of yacc.c  */
-#line 2874 "parser.yy"
+#line 2879 "parser.yy"
 
 // ----end of grammar----
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 3f0c6a51c1de23ea4a342862bcc4381d98afe58e)
+++ src/Parser/parser.yy	(revision b3b2077b1feda429f174cfb4f374cb1e00580630)
@@ -199,5 +199,5 @@
 
 %type<decl> field_declaration field_declaration_list field_declarator field_declaring_list
-%type<en> field field_list field_name
+%type<en> field field_list field_name fraction_constants
 
 %type<decl> external_function_definition function_definition function_array function_declarator function_no_ptr function_ptr
@@ -385,5 +385,5 @@
 		{ $$ = new ExpressionNode( build_fieldSel( $1, build_tuple( $5 ) ) ); }
 	| postfix_expression REALFRACTIONconstant			// CFA, tuple index
-		{ $$ = new ExpressionNode( build_fieldSel( $1, build_constantInteger( *$2 ) ) ); }
+		{ $$ = new ExpressionNode( build_fieldSel( $1, build_field_name_REALFRACTIONconstant( *$2 ) ) ); }
 	| postfix_expression ARROW no_attr_identifier
 		{ $$ = new ExpressionNode( build_pfieldSel( $1, build_varref( $3 ) ) ); }
@@ -424,7 +424,7 @@
 	field_name
 	| REALDECIMALconstant field
-		{ $$ = new ExpressionNode( build_fieldSel( new ExpressionNode( build_constantInteger( *$1 ) ), maybeMoveBuild<Expression>( $2 ) ) ); }
+		{ $$ = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *$1 ) ), maybeMoveBuild<Expression>( $2 ) ) ); }
 	| REALDECIMALconstant '[' push field_list pop ']'
-		{ $$ = new ExpressionNode( build_fieldSel( new ExpressionNode( build_constantInteger( *$1 ) ), build_tuple( $4 ) ) ); }
+		{ $$ = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *$1 ) ), build_tuple( $4 ) ) ); }
 	| field_name '.' field
 		{ $$ = new ExpressionNode( build_fieldSel( $1, maybeMoveBuild<Expression>( $3 ) ) ); }
@@ -437,16 +437,21 @@
 	;
 
-field_name: // ... use $2
+field_name:
 	INTEGERconstant	fraction_constants
-		{ $$ = new ExpressionNode( build_constantInteger( *$1 ) ); }
+		{ $$ = new ExpressionNode( build_field_name_fraction_constants( build_constantInteger( *$1 ), $2 ) ); }
 	| FLOATINGconstant fraction_constants
-		{ $$ = new ExpressionNode( build_constantInteger( *$1 ) ); }
+		{ $$ = new ExpressionNode( build_field_name_fraction_constants( build_field_name_FLOATINGconstant( *$1 ), $2 ) ); }
 	| no_attr_identifier fraction_constants
-		{ $$ = new ExpressionNode( build_varref( $1 ) ); }
+		{ $$ = new ExpressionNode( build_field_name_fraction_constants( build_varref( $1 ), $2 ) ); }
 	;
 
 fraction_constants:
 	// empty
+		{ $$ = nullptr; }
 	| fraction_constants REALFRACTIONconstant
+		{
+			Expression * constant = build_field_name_REALFRACTIONconstant( *$2 );
+			$$ = $1 != nullptr ? new ExpressionNode( build_fieldSel( $1,  constant ) ) : new ExpressionNode( constant );
+		}
 	;
 
