Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision 58dd019a052f07152d413d2f67f0b5337b50f417)
+++ src/Parser/ParseNode.h	(revision 12d44bb50e421e4b80a13cc51c61fa34c604e6d3)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:28:16 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Dec 13 13:26:56 2016
-// Update Count     : 642
+// Last Modified On : Tue Dec 13 15:37:33 2016
+// Update Count     : 643
 //
 
@@ -73,5 +73,5 @@
 	InitializerNode( InitializerNode *, bool aggrp = false, ExpressionNode * des = nullptr );
 	~InitializerNode();
-	virtual InitializerNode * clone() const { return nullptr; }
+	virtual InitializerNode * clone() const { assert( false ); return nullptr; }
 
 	ExpressionNode * get_expression() const { return expr; }
Index: src/Parser/parser.cc
===================================================================
--- src/Parser/parser.cc	(revision 58dd019a052f07152d413d2f67f0b5337b50f417)
+++ src/Parser/parser.cc	(revision 12d44bb50e421e4b80a13cc51c61fa34c604e6d3)
@@ -1053,57 +1053,57 @@
      932,   934,   936,   938,   943,   955,   956,   961,   963,   968,
      972,   974,   976,   978,   980,   986,   987,   993,   994,   998,
-     999,  1004,  1006,  1012,  1013,  1015,  1020,  1025,  1035,  1037,
-    1041,  1042,  1047,  1049,  1053,  1054,  1058,  1060,  1064,  1065,
-    1069,  1070,  1074,  1075,  1090,  1091,  1092,  1093,  1094,  1098,
-    1103,  1110,  1120,  1125,  1130,  1138,  1143,  1148,  1153,  1158,
-    1188,  1193,  1200,  1202,  1209,  1214,  1219,  1230,  1235,  1240,
-    1245,  1250,  1259,  1264,  1272,  1273,  1274,  1275,  1281,  1286,
-    1294,  1295,  1296,  1297,  1301,  1302,  1303,  1304,  1309,  1310,
-    1319,  1320,  1325,  1326,  1331,  1333,  1335,  1337,  1339,  1342,
-    1341,  1353,  1354,  1356,  1366,  1367,  1372,  1374,  1376,  1378,
-    1380,  1383,  1385,  1388,  1393,  1395,  1397,  1399,  1401,  1403,
-    1405,  1407,  1409,  1411,  1413,  1415,  1417,  1419,  1421,  1427,
-    1428,  1430,  1432,  1434,  1439,  1440,  1446,  1447,  1449,  1451,
-    1456,  1458,  1460,  1462,  1467,  1468,  1470,  1472,  1477,  1478,
-    1480,  1485,  1486,  1488,  1490,  1495,  1497,  1499,  1504,  1505,
-    1509,  1511,  1517,  1516,  1520,  1522,  1527,  1529,  1535,  1536,
-    1541,  1542,  1544,  1545,  1554,  1555,  1557,  1559,  1564,  1566,
-    1572,  1573,  1575,  1578,  1581,  1586,  1587,  1592,  1597,  1601,
-    1603,  1609,  1608,  1615,  1617,  1623,  1624,  1632,  1633,  1637,
-    1638,  1639,  1641,  1643,  1650,  1651,  1653,  1655,  1660,  1661,
-    1667,  1668,  1672,  1673,  1678,  1679,  1680,  1682,  1690,  1691,
-    1693,  1696,  1698,  1702,  1703,  1704,  1706,  1708,  1712,  1717,
-    1725,  1726,  1735,  1737,  1742,  1743,  1744,  1748,  1749,  1750,
-    1754,  1755,  1756,  1760,  1761,  1762,  1767,  1768,  1769,  1770,
-    1776,  1777,  1779,  1784,  1785,  1790,  1791,  1792,  1793,  1794,
-    1809,  1810,  1815,  1816,  1822,  1824,  1827,  1829,  1831,  1854,
-    1855,  1857,  1859,  1864,  1865,  1867,  1872,  1877,  1878,  1884,
-    1883,  1887,  1891,  1893,  1895,  1901,  1902,  1907,  1912,  1914,
-    1919,  1921,  1922,  1924,  1929,  1931,  1933,  1938,  1940,  1945,
-    1950,  1958,  1964,  1963,  1977,  1978,  1983,  1984,  1988,  1993,
-    1998,  2006,  2011,  2022,  2023,  2028,  2029,  2035,  2036,  2040,
-    2041,  2042,  2045,  2044,  2055,  2064,  2070,  2076,  2085,  2091,
-    2097,  2103,  2109,  2117,  2123,  2131,  2137,  2146,  2147,  2148,
-    2152,  2158,  2159,  2165,  2166,  2170,  2171,  2176,  2182,  2183,
-    2186,  2188,  2189,  2193,  2194,  2195,  2196,  2230,  2232,  2233,
-    2235,  2240,  2245,  2250,  2252,  2254,  2259,  2261,  2263,  2265,
-    2270,  2272,  2281,  2283,  2284,  2289,  2291,  2293,  2298,  2300,
-    2302,  2307,  2309,  2311,  2320,  2321,  2322,  2326,  2328,  2330,
-    2335,  2337,  2339,  2344,  2346,  2348,  2363,  2365,  2366,  2368,
-    2373,  2374,  2379,  2381,  2383,  2388,  2390,  2392,  2394,  2399,
-    2401,  2403,  2413,  2415,  2416,  2418,  2423,  2425,  2427,  2432,
-    2434,  2436,  2438,  2443,  2445,  2447,  2478,  2480,  2481,  2483,
-    2488,  2493,  2501,  2503,  2505,  2510,  2512,  2517,  2519,  2533,
-    2534,  2536,  2541,  2543,  2545,  2547,  2549,  2554,  2555,  2557,
-    2559,  2564,  2566,  2568,  2574,  2576,  2578,  2582,  2584,  2586,
-    2588,  2602,  2603,  2605,  2610,  2612,  2614,  2616,  2618,  2623,
-    2624,  2626,  2628,  2633,  2635,  2637,  2643,  2644,  2646,  2655,
-    2658,  2660,  2663,  2665,  2667,  2680,  2681,  2683,  2688,  2690,
-    2692,  2694,  2696,  2701,  2702,  2704,  2706,  2711,  2713,  2721,
-    2722,  2723,  2728,  2729,  2733,  2735,  2737,  2739,  2741,  2743,
-    2750,  2752,  2754,  2756,  2758,  2761,  2763,  2765,  2767,  2769,
-    2774,  2776,  2778,  2783,  2809,  2810,  2812,  2816,  2817,  2821,
-    2823,  2825,  2827,  2829,  2831,  2838,  2840,  2842,  2844,  2846,
-    2848,  2853,  2860,  2862,  2880,  2882,  2887,  2888
+     999,  1004,  1006,  1012,  1013,  1015,  1021,  1026,  1036,  1038,
+    1042,  1043,  1048,  1050,  1054,  1055,  1059,  1061,  1065,  1066,
+    1070,  1071,  1075,  1076,  1091,  1092,  1093,  1094,  1095,  1099,
+    1104,  1111,  1121,  1126,  1131,  1139,  1144,  1149,  1154,  1159,
+    1189,  1194,  1201,  1203,  1210,  1215,  1220,  1231,  1236,  1241,
+    1246,  1251,  1260,  1265,  1273,  1274,  1275,  1276,  1282,  1287,
+    1295,  1296,  1297,  1298,  1302,  1303,  1304,  1305,  1310,  1311,
+    1320,  1321,  1326,  1327,  1332,  1334,  1336,  1338,  1340,  1343,
+    1342,  1354,  1355,  1357,  1367,  1368,  1373,  1375,  1377,  1379,
+    1381,  1384,  1386,  1389,  1394,  1396,  1398,  1400,  1402,  1404,
+    1406,  1408,  1410,  1412,  1414,  1416,  1418,  1420,  1422,  1428,
+    1429,  1431,  1433,  1435,  1440,  1441,  1447,  1448,  1450,  1452,
+    1457,  1459,  1461,  1463,  1468,  1469,  1471,  1473,  1478,  1479,
+    1481,  1486,  1487,  1489,  1491,  1496,  1498,  1500,  1505,  1506,
+    1510,  1512,  1518,  1517,  1521,  1523,  1528,  1530,  1536,  1537,
+    1542,  1543,  1545,  1546,  1555,  1556,  1558,  1560,  1565,  1567,
+    1573,  1574,  1576,  1579,  1582,  1587,  1588,  1593,  1598,  1602,
+    1604,  1610,  1609,  1616,  1618,  1624,  1625,  1633,  1634,  1638,
+    1639,  1640,  1642,  1644,  1651,  1652,  1654,  1656,  1661,  1662,
+    1668,  1669,  1673,  1674,  1679,  1680,  1681,  1683,  1691,  1692,
+    1694,  1697,  1699,  1703,  1704,  1705,  1707,  1709,  1713,  1718,
+    1726,  1727,  1736,  1738,  1743,  1744,  1745,  1749,  1750,  1751,
+    1755,  1756,  1757,  1761,  1762,  1763,  1768,  1769,  1770,  1771,
+    1777,  1778,  1780,  1785,  1786,  1791,  1792,  1793,  1794,  1795,
+    1810,  1811,  1816,  1817,  1823,  1825,  1828,  1830,  1832,  1855,
+    1856,  1858,  1860,  1865,  1866,  1868,  1873,  1878,  1879,  1885,
+    1884,  1888,  1892,  1894,  1896,  1902,  1903,  1908,  1913,  1915,
+    1920,  1922,  1923,  1925,  1930,  1932,  1934,  1939,  1941,  1946,
+    1951,  1959,  1965,  1964,  1978,  1979,  1984,  1985,  1989,  1994,
+    1999,  2007,  2012,  2023,  2024,  2029,  2030,  2036,  2037,  2041,
+    2042,  2043,  2046,  2045,  2056,  2065,  2071,  2077,  2086,  2092,
+    2098,  2104,  2110,  2118,  2124,  2132,  2138,  2147,  2148,  2149,
+    2153,  2159,  2160,  2166,  2167,  2171,  2172,  2177,  2183,  2184,
+    2187,  2189,  2190,  2194,  2195,  2196,  2197,  2231,  2233,  2234,
+    2236,  2241,  2246,  2251,  2253,  2255,  2260,  2262,  2264,  2266,
+    2271,  2273,  2282,  2284,  2285,  2290,  2292,  2294,  2299,  2301,
+    2303,  2308,  2310,  2312,  2321,  2322,  2323,  2327,  2329,  2331,
+    2336,  2338,  2340,  2345,  2347,  2349,  2364,  2366,  2367,  2369,
+    2374,  2375,  2380,  2382,  2384,  2389,  2391,  2393,  2395,  2400,
+    2402,  2404,  2414,  2416,  2417,  2419,  2424,  2426,  2428,  2433,
+    2435,  2437,  2439,  2444,  2446,  2448,  2479,  2481,  2482,  2484,
+    2489,  2494,  2502,  2504,  2506,  2511,  2513,  2518,  2520,  2534,
+    2535,  2537,  2542,  2544,  2546,  2548,  2550,  2555,  2556,  2558,
+    2560,  2565,  2567,  2569,  2575,  2577,  2579,  2583,  2585,  2587,
+    2589,  2603,  2604,  2606,  2611,  2613,  2615,  2617,  2619,  2624,
+    2625,  2627,  2629,  2634,  2636,  2638,  2644,  2645,  2647,  2656,
+    2659,  2661,  2664,  2666,  2668,  2681,  2682,  2684,  2689,  2691,
+    2693,  2695,  2697,  2702,  2703,  2705,  2707,  2712,  2714,  2722,
+    2723,  2724,  2729,  2730,  2734,  2736,  2738,  2740,  2742,  2744,
+    2751,  2753,  2755,  2757,  2759,  2762,  2764,  2766,  2768,  2770,
+    2775,  2777,  2779,  2784,  2810,  2811,  2813,  2817,  2818,  2822,
+    2824,  2826,  2828,  2830,  2832,  2839,  2841,  2843,  2845,  2847,
+    2849,  2854,  2861,  2863,  2881,  2883,  2888,  2889
 };
 #endif
@@ -5772,5 +5772,5 @@
 			// therefore, are removed from the grammar even though C allows it. The change also applies to choose
 			// statement.
-			(yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
+			(yyval.sn) = (yyvsp[(7) - (9)].decl) ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
 		}
     break;
@@ -5789,5 +5789,5 @@
     {
 			StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
-			(yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
+			(yyval.sn) = (yyvsp[(7) - (9)].decl) ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
 		}
     break;
@@ -6238,5 +6238,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1016 "parser.yy"
+#line 1017 "parser.yy"
     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
     break;
@@ -6245,5 +6245,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1021 "parser.yy"
+#line 1022 "parser.yy"
     {
 			(yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) );
@@ -6255,5 +6255,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1026 "parser.yy"
+#line 1027 "parser.yy"
     {
 			(yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) );
@@ -6265,5 +6265,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1036 "parser.yy"
+#line 1037 "parser.yy"
     { (yyval.decl) = nullptr; }
     break;
@@ -6272,5 +6272,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1043 "parser.yy"
+#line 1044 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6279,5 +6279,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1048 "parser.yy"
+#line 1049 "parser.yy"
     { (yyval.decl) = nullptr; }
     break;
@@ -6286,16 +6286,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 1055 "parser.yy"
+#line 1056 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 250:
-
-/* Line 1806 of yacc.c  */
-#line 1069 "parser.yy"
-    {}
-    break;
-
-  case 251:
 
 /* Line 1806 of yacc.c  */
@@ -6304,8 +6297,15 @@
     break;
 
+  case 251:
+
+/* Line 1806 of yacc.c  */
+#line 1071 "parser.yy"
+    {}
+    break;
+
   case 259:
 
 /* Line 1806 of yacc.c  */
-#line 1099 "parser.yy"
+#line 1100 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6317,5 +6317,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1106 "parser.yy"
+#line 1107 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6327,5 +6327,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1111 "parser.yy"
+#line 1112 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
@@ -6337,5 +6337,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1121 "parser.yy"
+#line 1122 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
@@ -6347,5 +6347,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1126 "parser.yy"
+#line 1127 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
@@ -6357,5 +6357,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1131 "parser.yy"
+#line 1132 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
@@ -6367,5 +6367,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1139 "parser.yy"
+#line 1140 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6377,5 +6377,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1144 "parser.yy"
+#line 1145 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6387,5 +6387,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1149 "parser.yy"
+#line 1150 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6397,5 +6397,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1154 "parser.yy"
+#line 1155 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6407,5 +6407,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1159 "parser.yy"
+#line 1160 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
@@ -6417,5 +6417,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1190 "parser.yy"
+#line 1191 "parser.yy"
     {
 			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
@@ -6426,5 +6426,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1194 "parser.yy"
+#line 1195 "parser.yy"
     {
 			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
@@ -6435,5 +6435,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1201 "parser.yy"
+#line 1202 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     break;
@@ -6442,5 +6442,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1205 "parser.yy"
+#line 1206 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
     break;
@@ -6449,5 +6449,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1210 "parser.yy"
+#line 1211 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6459,5 +6459,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1215 "parser.yy"
+#line 1216 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6469,5 +6469,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1220 "parser.yy"
+#line 1221 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
@@ -6479,5 +6479,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1231 "parser.yy"
+#line 1232 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6489,5 +6489,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1236 "parser.yy"
+#line 1237 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6499,5 +6499,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1241 "parser.yy"
+#line 1242 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6509,5 +6509,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1246 "parser.yy"
+#line 1247 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6519,5 +6519,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1251 "parser.yy"
+#line 1252 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6529,5 +6529,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1260 "parser.yy"
+#line 1261 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
@@ -6539,5 +6539,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1265 "parser.yy"
+#line 1266 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
@@ -6549,5 +6549,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1282 "parser.yy"
+#line 1283 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6559,5 +6559,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1287 "parser.yy"
+#line 1288 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6569,5 +6569,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1309 "parser.yy"
+#line 1310 "parser.yy"
     { (yyval.decl) = nullptr; }
     break;
@@ -6576,5 +6576,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1321 "parser.yy"
+#line 1322 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6583,5 +6583,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1332 "parser.yy"
+#line 1333 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     break;
@@ -6590,5 +6590,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1334 "parser.yy"
+#line 1335 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     break;
@@ -6597,5 +6597,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1336 "parser.yy"
+#line 1337 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
     break;
@@ -6604,5 +6604,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1338 "parser.yy"
+#line 1339 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
     break;
@@ -6611,5 +6611,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1340 "parser.yy"
+#line 1341 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
     break;
@@ -6618,5 +6618,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1342 "parser.yy"
+#line 1343 "parser.yy"
     {
 			typedefTable.enterScope();
@@ -6627,5 +6627,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1346 "parser.yy"
+#line 1347 "parser.yy"
     {
 			typedefTable.leaveScope();
@@ -6637,5 +6637,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1355 "parser.yy"
+#line 1356 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6644,5 +6644,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1357 "parser.yy"
+#line 1358 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6651,5 +6651,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1368 "parser.yy"
+#line 1369 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6658,5 +6658,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1373 "parser.yy"
+#line 1374 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     break;
@@ -6665,5 +6665,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1375 "parser.yy"
+#line 1376 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
     break;
@@ -6672,5 +6672,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1377 "parser.yy"
+#line 1378 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
     break;
@@ -6679,5 +6679,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1379 "parser.yy"
+#line 1380 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
     break;
@@ -6686,5 +6686,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1382 "parser.yy"
+#line 1383 "parser.yy"
     { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
     break;
@@ -6693,5 +6693,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1384 "parser.yy"
+#line 1385 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
     break;
@@ -6700,5 +6700,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1387 "parser.yy"
+#line 1388 "parser.yy"
     { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
     break;
@@ -6707,5 +6707,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1389 "parser.yy"
+#line 1390 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
     break;
@@ -6714,5 +6714,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1394 "parser.yy"
+#line 1395 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
     break;
@@ -6721,5 +6721,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1396 "parser.yy"
+#line 1397 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
     break;
@@ -6728,5 +6728,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1398 "parser.yy"
+#line 1399 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
     break;
@@ -6735,5 +6735,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1400 "parser.yy"
+#line 1401 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
     break;
@@ -6742,5 +6742,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1402 "parser.yy"
+#line 1403 "parser.yy"
     { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Long ); }
     break;
@@ -6749,5 +6749,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1404 "parser.yy"
+#line 1405 "parser.yy"
     { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Short ); }
     break;
@@ -6756,5 +6756,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1406 "parser.yy"
+#line 1407 "parser.yy"
     { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Signed ); }
     break;
@@ -6763,5 +6763,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1408 "parser.yy"
+#line 1409 "parser.yy"
     { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); }
     break;
@@ -6770,5 +6770,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1410 "parser.yy"
+#line 1411 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
     break;
@@ -6777,5 +6777,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1412 "parser.yy"
+#line 1413 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
     break;
@@ -6784,5 +6784,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1414 "parser.yy"
+#line 1415 "parser.yy"
     { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Complex ); }
     break;
@@ -6791,5 +6791,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1416 "parser.yy"
+#line 1417 "parser.yy"
     { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
     break;
@@ -6798,5 +6798,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1418 "parser.yy"
+#line 1419 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
     break;
@@ -6805,5 +6805,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1420 "parser.yy"
+#line 1421 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Zero ); }
     break;
@@ -6812,5 +6812,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1422 "parser.yy"
+#line 1423 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::One ); }
     break;
@@ -6819,5 +6819,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1429 "parser.yy"
+#line 1430 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6826,5 +6826,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1431 "parser.yy"
+#line 1432 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6833,5 +6833,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1433 "parser.yy"
+#line 1434 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6840,5 +6840,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1435 "parser.yy"
+#line 1436 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -6847,5 +6847,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1441 "parser.yy"
+#line 1442 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6854,5 +6854,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1448 "parser.yy"
+#line 1449 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6861,5 +6861,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1450 "parser.yy"
+#line 1451 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6868,5 +6868,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1452 "parser.yy"
+#line 1453 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6875,5 +6875,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1457 "parser.yy"
+#line 1458 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
     break;
@@ -6882,5 +6882,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1459 "parser.yy"
+#line 1460 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
     break;
@@ -6889,5 +6889,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1461 "parser.yy"
+#line 1462 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -6896,5 +6896,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1463 "parser.yy"
+#line 1464 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     break;
@@ -6903,5 +6903,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1469 "parser.yy"
+#line 1470 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6910,5 +6910,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1471 "parser.yy"
+#line 1472 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6917,5 +6917,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1473 "parser.yy"
+#line 1474 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6924,5 +6924,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1479 "parser.yy"
+#line 1480 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6931,5 +6931,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1481 "parser.yy"
+#line 1482 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6938,5 +6938,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1487 "parser.yy"
+#line 1488 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6945,5 +6945,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1489 "parser.yy"
+#line 1490 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6952,5 +6952,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1491 "parser.yy"
+#line 1492 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6959,5 +6959,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1496 "parser.yy"
+#line 1497 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -6966,5 +6966,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1498 "parser.yy"
+#line 1499 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6973,5 +6973,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1500 "parser.yy"
+#line 1501 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6980,5 +6980,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1510 "parser.yy"
+#line 1511 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), nullptr, nullptr, (yyvsp[(3) - (4)].decl), true ); }
     break;
@@ -6987,5 +6987,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1512 "parser.yy"
+#line 1513 "parser.yy"
     {
 			typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
@@ -6997,5 +6997,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1517 "parser.yy"
+#line 1518 "parser.yy"
     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     break;
@@ -7004,5 +7004,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1519 "parser.yy"
+#line 1520 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), nullptr, (yyvsp[(5) - (6)].decl), true ); }
     break;
@@ -7011,5 +7011,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1521 "parser.yy"
+#line 1522 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), nullptr, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
     break;
@@ -7018,5 +7018,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1523 "parser.yy"
+#line 1524 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     break;
@@ -7025,5 +7025,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1528 "parser.yy"
+#line 1529 "parser.yy"
     { (yyval.aggKey) = DeclarationNode::Struct; }
     break;
@@ -7032,5 +7032,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1530 "parser.yy"
+#line 1531 "parser.yy"
     { (yyval.aggKey) = DeclarationNode::Union; }
     break;
@@ -7039,5 +7039,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1535 "parser.yy"
+#line 1536 "parser.yy"
     { (yyval.decl) = nullptr; }
     break;
@@ -7046,6 +7046,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 1537 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
+#line 1538 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl) ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     break;
 
@@ -7053,5 +7053,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1543 "parser.yy"
+#line 1544 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
     break;
@@ -7060,5 +7060,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1546 "parser.yy"
+#line 1547 "parser.yy"
     {	// mark all fields in list
 			for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
@@ -7071,5 +7071,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1556 "parser.yy"
+#line 1557 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     break;
@@ -7078,5 +7078,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1558 "parser.yy"
+#line 1559 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     break;
@@ -7085,5 +7085,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1560 "parser.yy"
+#line 1561 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
     break;
@@ -7092,5 +7092,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1565 "parser.yy"
+#line 1566 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7099,5 +7099,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1567 "parser.yy"
+#line 1568 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
     break;
@@ -7106,5 +7106,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1572 "parser.yy"
+#line 1573 "parser.yy"
     { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
     break;
@@ -7113,5 +7113,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1574 "parser.yy"
+#line 1575 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
     break;
@@ -7120,5 +7120,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1577 "parser.yy"
+#line 1578 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     break;
@@ -7127,5 +7127,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1580 "parser.yy"
+#line 1581 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     break;
@@ -7134,5 +7134,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1586 "parser.yy"
+#line 1587 "parser.yy"
     { (yyval.en) = nullptr; }
     break;
@@ -7141,5 +7141,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1588 "parser.yy"
+#line 1589 "parser.yy"
     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
@@ -7148,5 +7148,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1593 "parser.yy"
+#line 1594 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -7155,5 +7155,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1602 "parser.yy"
+#line 1603 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnum( nullptr, (yyvsp[(3) - (5)].decl) ); }
     break;
@@ -7162,5 +7162,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1604 "parser.yy"
+#line 1605 "parser.yy"
     {
 			typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
@@ -7172,5 +7172,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1609 "parser.yy"
+#line 1610 "parser.yy"
     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     break;
@@ -7179,5 +7179,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1611 "parser.yy"
+#line 1612 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
     break;
@@ -7186,5 +7186,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1616 "parser.yy"
+#line 1617 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     break;
@@ -7193,5 +7193,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1618 "parser.yy"
+#line 1619 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
     break;
@@ -7200,5 +7200,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1623 "parser.yy"
+#line 1624 "parser.yy"
     { (yyval.en) = nullptr; }
     break;
@@ -7207,5 +7207,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1625 "parser.yy"
+#line 1626 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -7214,5 +7214,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1632 "parser.yy"
+#line 1633 "parser.yy"
     { (yyval.decl) = nullptr; }
     break;
@@ -7221,5 +7221,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1640 "parser.yy"
+#line 1641 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7228,5 +7228,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1642 "parser.yy"
+#line 1643 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
@@ -7235,5 +7235,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1644 "parser.yy"
+#line 1645 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
@@ -7242,5 +7242,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1652 "parser.yy"
+#line 1653 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7249,5 +7249,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1654 "parser.yy"
+#line 1655 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7256,5 +7256,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1656 "parser.yy"
+#line 1657 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
     break;
@@ -7263,5 +7263,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1662 "parser.yy"
+#line 1663 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7270,5 +7270,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1667 "parser.yy"
+#line 1668 "parser.yy"
     { (yyval.decl) = nullptr; }
     break;
@@ -7277,5 +7277,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1674 "parser.yy"
+#line 1675 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
@@ -7284,5 +7284,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1681 "parser.yy"
+#line 1682 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7291,5 +7291,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1683 "parser.yy"
+#line 1684 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7298,5 +7298,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1692 "parser.yy"
+#line 1693 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     break;
@@ -7305,5 +7305,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1695 "parser.yy"
+#line 1696 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     break;
@@ -7312,5 +7312,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1697 "parser.yy"
+#line 1698 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
     break;
@@ -7319,5 +7319,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1707 "parser.yy"
+#line 1708 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7326,8 +7326,8 @@
 
 /* Line 1806 of yacc.c  */
-#line 1713 "parser.yy"
+#line 1714 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].en) ? new InitializerNode( (yyvsp[(3) - (3)].en) ) : nullptr );
 		}
     break;
@@ -7336,8 +7336,8 @@
 
 /* Line 1806 of yacc.c  */
-#line 1718 "parser.yy"
+#line 1719 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].en) ? new InitializerNode( (yyvsp[(3) - (3)].en) ) : nullptr );
 		}
     break;
@@ -7346,5 +7346,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1727 "parser.yy"
+#line 1728 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7353,5 +7353,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1736 "parser.yy"
+#line 1737 "parser.yy"
     { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -7360,5 +7360,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1738 "parser.yy"
+#line 1739 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
     break;
@@ -7367,5 +7367,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1763 "parser.yy"
+#line 1764 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7374,5 +7374,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1771 "parser.yy"
+#line 1772 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7381,5 +7381,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1776 "parser.yy"
+#line 1777 "parser.yy"
     { (yyval.in) = nullptr; }
     break;
@@ -7388,5 +7388,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1778 "parser.yy"
+#line 1779 "parser.yy"
     { (yyval.in) = (yyvsp[(2) - (2)].in); }
     break;
@@ -7395,5 +7395,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1780 "parser.yy"
+#line 1781 "parser.yy"
     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
     break;
@@ -7402,5 +7402,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1784 "parser.yy"
+#line 1785 "parser.yy"
     { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     break;
@@ -7409,5 +7409,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1785 "parser.yy"
+#line 1786 "parser.yy"
     { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     break;
@@ -7416,5 +7416,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1790 "parser.yy"
+#line 1791 "parser.yy"
     { (yyval.in) = nullptr; }
     break;
@@ -7423,5 +7423,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1792 "parser.yy"
+#line 1793 "parser.yy"
     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
     break;
@@ -7430,5 +7430,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1793 "parser.yy"
+#line 1794 "parser.yy"
     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
     break;
@@ -7437,5 +7437,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1795 "parser.yy"
+#line 1796 "parser.yy"
     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
     break;
@@ -7444,5 +7444,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1811 "parser.yy"
+#line 1812 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
     break;
@@ -7451,5 +7451,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1817 "parser.yy"
+#line 1818 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -7458,5 +7458,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1823 "parser.yy"
+#line 1824 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
     break;
@@ -7465,5 +7465,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1826 "parser.yy"
+#line 1827 "parser.yy"
     { (yyval.en) = (yyvsp[(3) - (5)].en); }
     break;
@@ -7472,5 +7472,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1828 "parser.yy"
+#line 1829 "parser.yy"
     { (yyval.en) = (yyvsp[(3) - (5)].en); }
     break;
@@ -7479,5 +7479,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1830 "parser.yy"
+#line 1831 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
     break;
@@ -7486,5 +7486,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1832 "parser.yy"
+#line 1833 "parser.yy"
     { (yyval.en) = (yyvsp[(4) - (6)].en); }
     break;
@@ -7493,5 +7493,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1856 "parser.yy"
+#line 1857 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7500,5 +7500,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1858 "parser.yy"
+#line 1859 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7507,5 +7507,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1860 "parser.yy"
+#line 1861 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -7514,5 +7514,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1866 "parser.yy"
+#line 1867 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7521,5 +7521,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1868 "parser.yy"
+#line 1869 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7528,5 +7528,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1873 "parser.yy"
+#line 1874 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     break;
@@ -7535,5 +7535,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1879 "parser.yy"
+#line 1880 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -7542,5 +7542,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1884 "parser.yy"
+#line 1885 "parser.yy"
     { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
     break;
@@ -7549,5 +7549,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1886 "parser.yy"
+#line 1887 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -7556,5 +7556,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1892 "parser.yy"
+#line 1893 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Otype; }
     break;
@@ -7563,5 +7563,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1894 "parser.yy"
+#line 1895 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Ftype; }
     break;
@@ -7570,5 +7570,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1896 "parser.yy"
+#line 1897 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Dtype; }
     break;
@@ -7577,5 +7577,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1901 "parser.yy"
+#line 1902 "parser.yy"
     { (yyval.decl) = nullptr; }
     break;
@@ -7584,6 +7584,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 1903 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
+#line 1904 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl) ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     break;
 
@@ -7591,5 +7591,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1908 "parser.yy"
+#line 1909 "parser.yy"
     {
 			typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
@@ -7601,5 +7601,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1913 "parser.yy"
+#line 1914 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     break;
@@ -7608,5 +7608,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1915 "parser.yy"
+#line 1916 "parser.yy"
     { (yyval.decl) = nullptr; }
     break;
@@ -7615,5 +7615,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1920 "parser.yy"
+#line 1921 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
     break;
@@ -7622,5 +7622,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1923 "parser.yy"
+#line 1924 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
     break;
@@ -7629,5 +7629,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1925 "parser.yy"
+#line 1926 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     break;
@@ -7636,5 +7636,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1930 "parser.yy"
+#line 1931 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     break;
@@ -7643,5 +7643,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1932 "parser.yy"
+#line 1933 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -7650,5 +7650,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1934 "parser.yy"
+#line 1935 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -7657,5 +7657,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1939 "parser.yy"
+#line 1940 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7664,5 +7664,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1941 "parser.yy"
+#line 1942 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -7671,5 +7671,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1946 "parser.yy"
+#line 1947 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
@@ -7681,5 +7681,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1951 "parser.yy"
+#line 1952 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
@@ -7691,5 +7691,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1959 "parser.yy"
+#line 1960 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
@@ -7701,5 +7701,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1964 "parser.yy"
+#line 1965 "parser.yy"
     {
 			typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
@@ -7711,5 +7711,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1969 "parser.yy"
+#line 1970 "parser.yy"
     {
 			typedefTable.leaveTrait();
@@ -7722,5 +7722,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1979 "parser.yy"
+#line 1980 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -7729,5 +7729,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1989 "parser.yy"
+#line 1990 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7739,5 +7739,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1994 "parser.yy"
+#line 1995 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7749,5 +7749,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1999 "parser.yy"
+#line 2000 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
@@ -7759,5 +7759,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2007 "parser.yy"
+#line 2008 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7769,5 +7769,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2012 "parser.yy"
+#line 2013 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7779,5 +7779,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2022 "parser.yy"
+#line 2023 "parser.yy"
     {}
     break;
@@ -7786,6 +7786,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 2024 "parser.yy"
-    { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);	}
+#line 2025 "parser.yy"
+    { parseTree = parseTree ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);	}
     break;
 
@@ -7793,6 +7793,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 2030 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (3)].decl) != nullptr ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
+#line 2031 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
     break;
 
@@ -7800,5 +7800,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2035 "parser.yy"
+#line 2036 "parser.yy"
     { (yyval.decl) = nullptr; }
     break;
@@ -7807,5 +7807,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2043 "parser.yy"
+#line 2044 "parser.yy"
     {}
     break;
@@ -7814,5 +7814,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2045 "parser.yy"
+#line 2046 "parser.yy"
     {
 			linkageStack.push( linkage );				// handle nested extern "C"/"Cforall"
@@ -7824,5 +7824,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2050 "parser.yy"
+#line 2051 "parser.yy"
     {
 			linkage = linkageStack.top();
@@ -7835,5 +7835,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2056 "parser.yy"
+#line 2057 "parser.yy"
     {	// mark all fields in list
 			for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
@@ -7846,5 +7846,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2071 "parser.yy"
+#line 2072 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7857,5 +7857,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2077 "parser.yy"
+#line 2078 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7868,5 +7868,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2086 "parser.yy"
+#line 2087 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7879,5 +7879,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2092 "parser.yy"
+#line 2093 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7890,5 +7890,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2098 "parser.yy"
+#line 2099 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7901,5 +7901,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2104 "parser.yy"
+#line 2105 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7912,5 +7912,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2110 "parser.yy"
+#line 2111 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7923,5 +7923,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2118 "parser.yy"
+#line 2119 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7934,5 +7934,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2124 "parser.yy"
+#line 2125 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7945,5 +7945,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2132 "parser.yy"
+#line 2133 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7956,5 +7956,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2138 "parser.yy"
+#line 2139 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7967,5 +7967,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2153 "parser.yy"
+#line 2154 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -7974,5 +7974,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2158 "parser.yy"
+#line 2159 "parser.yy"
     { (yyval.constant) = nullptr; }
     break;
@@ -7981,5 +7981,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2160 "parser.yy"
+#line 2161 "parser.yy"
     { (yyval.constant) = (yyvsp[(3) - (5)].constant); }
     break;
@@ -7988,5 +7988,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2165 "parser.yy"
+#line 2166 "parser.yy"
     { (yyval.decl) = nullptr; }
     break;
@@ -7995,5 +7995,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2172 "parser.yy"
+#line 2173 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8002,5 +8002,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2178 "parser.yy"
+#line 2179 "parser.yy"
     { (yyval.decl) = nullptr; }
     break;
@@ -8009,5 +8009,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2189 "parser.yy"
+#line 2190 "parser.yy"
     { delete (yyvsp[(3) - (4)].en); }
     break;
@@ -8016,16 +8016,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 2193 "parser.yy"
+#line 2194 "parser.yy"
     { delete (yyvsp[(1) - (1)].tok); }
     break;
 
   case 564:
-
-/* Line 1806 of yacc.c  */
-#line 2194 "parser.yy"
-    { delete (yyvsp[(1) - (1)].decl); }
-    break;
-
-  case 565:
 
 /* Line 1806 of yacc.c  */
@@ -8034,5 +8027,5 @@
     break;
 
-  case 566:
+  case 565:
 
 /* Line 1806 of yacc.c  */
@@ -8041,8 +8034,15 @@
     break;
 
+  case 566:
+
+/* Line 1806 of yacc.c  */
+#line 2197 "parser.yy"
+    { delete (yyvsp[(1) - (1)].decl); }
+    break;
+
   case 567:
 
 /* Line 1806 of yacc.c  */
-#line 2231 "parser.yy"
+#line 2232 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8051,5 +8051,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2234 "parser.yy"
+#line 2235 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8058,5 +8058,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2236 "parser.yy"
+#line 2237 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8065,5 +8065,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2241 "parser.yy"
+#line 2242 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
@@ -8075,5 +8075,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2246 "parser.yy"
+#line 2247 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8082,5 +8082,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2251 "parser.yy"
+#line 2252 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8089,5 +8089,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2253 "parser.yy"
+#line 2254 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8096,5 +8096,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2255 "parser.yy"
+#line 2256 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8103,5 +8103,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2260 "parser.yy"
+#line 2261 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8110,5 +8110,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2262 "parser.yy"
+#line 2263 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8117,5 +8117,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2264 "parser.yy"
+#line 2265 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8124,5 +8124,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2266 "parser.yy"
+#line 2267 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8131,5 +8131,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2271 "parser.yy"
+#line 2272 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8138,5 +8138,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2273 "parser.yy"
+#line 2274 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8145,5 +8145,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2282 "parser.yy"
+#line 2283 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8152,5 +8152,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2285 "parser.yy"
+#line 2286 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8159,5 +8159,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2290 "parser.yy"
+#line 2291 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8166,5 +8166,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2292 "parser.yy"
+#line 2293 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8173,5 +8173,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2294 "parser.yy"
+#line 2295 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8180,5 +8180,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2299 "parser.yy"
+#line 2300 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8187,5 +8187,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2301 "parser.yy"
+#line 2302 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8194,5 +8194,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2303 "parser.yy"
+#line 2304 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8201,5 +8201,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2308 "parser.yy"
+#line 2309 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8208,5 +8208,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2310 "parser.yy"
+#line 2311 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8215,5 +8215,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2312 "parser.yy"
+#line 2313 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8222,5 +8222,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2327 "parser.yy"
+#line 2328 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -8229,5 +8229,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2329 "parser.yy"
+#line 2330 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
     break;
@@ -8236,5 +8236,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2331 "parser.yy"
+#line 2332 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8243,5 +8243,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2336 "parser.yy"
+#line 2337 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8250,5 +8250,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2338 "parser.yy"
+#line 2339 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8257,5 +8257,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2340 "parser.yy"
+#line 2341 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8264,5 +8264,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2345 "parser.yy"
+#line 2346 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8271,5 +8271,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2347 "parser.yy"
+#line 2348 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8278,5 +8278,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2349 "parser.yy"
+#line 2350 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8285,5 +8285,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2364 "parser.yy"
+#line 2365 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8292,5 +8292,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2367 "parser.yy"
+#line 2368 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8299,5 +8299,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2369 "parser.yy"
+#line 2370 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8306,5 +8306,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2375 "parser.yy"
+#line 2376 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8313,5 +8313,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2380 "parser.yy"
+#line 2381 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8320,5 +8320,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2382 "parser.yy"
+#line 2383 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8327,5 +8327,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2384 "parser.yy"
+#line 2385 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8334,5 +8334,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2389 "parser.yy"
+#line 2390 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8341,5 +8341,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2391 "parser.yy"
+#line 2392 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8348,5 +8348,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2393 "parser.yy"
+#line 2394 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8355,5 +8355,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2395 "parser.yy"
+#line 2396 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8362,5 +8362,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2400 "parser.yy"
+#line 2401 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8369,5 +8369,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2402 "parser.yy"
+#line 2403 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8376,5 +8376,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2404 "parser.yy"
+#line 2405 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8383,5 +8383,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2414 "parser.yy"
+#line 2415 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8390,5 +8390,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2417 "parser.yy"
+#line 2418 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8397,5 +8397,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2419 "parser.yy"
+#line 2420 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8404,5 +8404,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2424 "parser.yy"
+#line 2425 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8411,5 +8411,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2426 "parser.yy"
+#line 2427 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8418,5 +8418,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2428 "parser.yy"
+#line 2429 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8425,5 +8425,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2433 "parser.yy"
+#line 2434 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8432,5 +8432,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2435 "parser.yy"
+#line 2436 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8439,5 +8439,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2437 "parser.yy"
+#line 2438 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8446,5 +8446,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2439 "parser.yy"
+#line 2440 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8453,5 +8453,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2444 "parser.yy"
+#line 2445 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8460,5 +8460,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2446 "parser.yy"
+#line 2447 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8467,5 +8467,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2448 "parser.yy"
+#line 2449 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8474,5 +8474,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2479 "parser.yy"
+#line 2480 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8481,5 +8481,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2482 "parser.yy"
+#line 2483 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8488,5 +8488,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2484 "parser.yy"
+#line 2485 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8495,5 +8495,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2489 "parser.yy"
+#line 2490 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
@@ -8505,5 +8505,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2494 "parser.yy"
+#line 2495 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
@@ -8515,5 +8515,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2502 "parser.yy"
+#line 2503 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8522,5 +8522,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2504 "parser.yy"
+#line 2505 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8529,5 +8529,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2506 "parser.yy"
+#line 2507 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8536,5 +8536,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2511 "parser.yy"
+#line 2512 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8543,5 +8543,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2513 "parser.yy"
+#line 2514 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8550,5 +8550,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2518 "parser.yy"
+#line 2519 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8557,5 +8557,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2520 "parser.yy"
+#line 2521 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8564,5 +8564,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2535 "parser.yy"
+#line 2536 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8571,5 +8571,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2537 "parser.yy"
+#line 2538 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8578,5 +8578,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2542 "parser.yy"
+#line 2543 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
@@ -8585,5 +8585,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2544 "parser.yy"
+#line 2545 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8592,5 +8592,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2546 "parser.yy"
+#line 2547 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8599,5 +8599,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2548 "parser.yy"
+#line 2549 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8606,5 +8606,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2550 "parser.yy"
+#line 2551 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8613,5 +8613,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2556 "parser.yy"
+#line 2557 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8620,5 +8620,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2558 "parser.yy"
+#line 2559 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8627,5 +8627,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2560 "parser.yy"
+#line 2561 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8634,5 +8634,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2565 "parser.yy"
+#line 2566 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
     break;
@@ -8641,5 +8641,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2567 "parser.yy"
+#line 2568 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8648,5 +8648,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2569 "parser.yy"
+#line 2570 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8655,5 +8655,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2575 "parser.yy"
+#line 2576 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     break;
@@ -8662,5 +8662,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2577 "parser.yy"
+#line 2578 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -8669,5 +8669,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2583 "parser.yy"
+#line 2584 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     break;
@@ -8676,5 +8676,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2585 "parser.yy"
+#line 2586 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     break;
@@ -8683,5 +8683,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2587 "parser.yy"
+#line 2588 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
     break;
@@ -8690,5 +8690,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2589 "parser.yy"
+#line 2590 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     break;
@@ -8697,5 +8697,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2604 "parser.yy"
+#line 2605 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8704,5 +8704,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2606 "parser.yy"
+#line 2607 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8711,5 +8711,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2611 "parser.yy"
+#line 2612 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
@@ -8718,5 +8718,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2613 "parser.yy"
+#line 2614 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8725,5 +8725,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2615 "parser.yy"
+#line 2616 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8732,5 +8732,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2617 "parser.yy"
+#line 2618 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8739,5 +8739,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2619 "parser.yy"
+#line 2620 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8746,5 +8746,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2625 "parser.yy"
+#line 2626 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8753,5 +8753,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2627 "parser.yy"
+#line 2628 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8760,5 +8760,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2629 "parser.yy"
+#line 2630 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8767,5 +8767,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2634 "parser.yy"
+#line 2635 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
     break;
@@ -8774,5 +8774,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2636 "parser.yy"
+#line 2637 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8781,5 +8781,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2638 "parser.yy"
+#line 2639 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8788,5 +8788,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2645 "parser.yy"
+#line 2646 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8795,5 +8795,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2656 "parser.yy"
+#line 2657 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     break;
@@ -8802,5 +8802,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2659 "parser.yy"
+#line 2660 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     break;
@@ -8809,5 +8809,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2661 "parser.yy"
+#line 2662 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     break;
@@ -8816,5 +8816,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2664 "parser.yy"
+#line 2665 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     break;
@@ -8823,5 +8823,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2666 "parser.yy"
+#line 2667 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     break;
@@ -8830,5 +8830,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2668 "parser.yy"
+#line 2669 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     break;
@@ -8837,5 +8837,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2682 "parser.yy"
+#line 2683 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8844,5 +8844,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2684 "parser.yy"
+#line 2685 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8851,5 +8851,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2689 "parser.yy"
+#line 2690 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
@@ -8858,5 +8858,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2691 "parser.yy"
+#line 2692 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8865,5 +8865,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2693 "parser.yy"
+#line 2694 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8872,5 +8872,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2695 "parser.yy"
+#line 2696 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8879,5 +8879,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2697 "parser.yy"
+#line 2698 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8886,5 +8886,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2703 "parser.yy"
+#line 2704 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8893,5 +8893,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2705 "parser.yy"
+#line 2706 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8900,5 +8900,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2707 "parser.yy"
+#line 2708 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8907,5 +8907,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2712 "parser.yy"
+#line 2713 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8914,5 +8914,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2714 "parser.yy"
+#line 2715 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8921,5 +8921,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2724 "parser.yy"
+#line 2725 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8928,5 +8928,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2734 "parser.yy"
+#line 2735 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8935,5 +8935,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2736 "parser.yy"
+#line 2737 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8942,5 +8942,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2738 "parser.yy"
+#line 2739 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8949,5 +8949,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2740 "parser.yy"
+#line 2741 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8956,5 +8956,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2742 "parser.yy"
+#line 2743 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8963,5 +8963,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2744 "parser.yy"
+#line 2745 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8970,5 +8970,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2751 "parser.yy"
+#line 2752 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -8977,5 +8977,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2753 "parser.yy"
+#line 2754 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8984,5 +8984,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2755 "parser.yy"
+#line 2756 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -8991,5 +8991,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2757 "parser.yy"
+#line 2758 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -8998,5 +8998,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2759 "parser.yy"
+#line 2760 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9005,5 +9005,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2762 "parser.yy"
+#line 2763 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -9012,5 +9012,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2764 "parser.yy"
+#line 2765 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9019,5 +9019,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2766 "parser.yy"
+#line 2767 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -9026,5 +9026,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2768 "parser.yy"
+#line 2769 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -9033,5 +9033,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2770 "parser.yy"
+#line 2771 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9040,5 +9040,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2775 "parser.yy"
+#line 2776 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     break;
@@ -9047,5 +9047,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2777 "parser.yy"
+#line 2778 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     break;
@@ -9054,5 +9054,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2782 "parser.yy"
+#line 2783 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     break;
@@ -9061,5 +9061,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2784 "parser.yy"
+#line 2785 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     break;
@@ -9068,5 +9068,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2811 "parser.yy"
+#line 2812 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9075,5 +9075,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2822 "parser.yy"
+#line 2823 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -9082,5 +9082,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2824 "parser.yy"
+#line 2825 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -9089,5 +9089,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2826 "parser.yy"
+#line 2827 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -9096,5 +9096,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2828 "parser.yy"
+#line 2829 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -9103,5 +9103,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2830 "parser.yy"
+#line 2831 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -9110,5 +9110,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2832 "parser.yy"
+#line 2833 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -9117,5 +9117,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2839 "parser.yy"
+#line 2840 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     break;
@@ -9124,5 +9124,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2841 "parser.yy"
+#line 2842 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     break;
@@ -9131,5 +9131,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2843 "parser.yy"
+#line 2844 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9138,5 +9138,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2845 "parser.yy"
+#line 2846 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     break;
@@ -9145,5 +9145,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2847 "parser.yy"
+#line 2848 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     break;
@@ -9152,5 +9152,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2849 "parser.yy"
+#line 2850 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9159,5 +9159,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2854 "parser.yy"
+#line 2855 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     break;
@@ -9166,5 +9166,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2861 "parser.yy"
+#line 2862 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
     break;
@@ -9173,5 +9173,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2863 "parser.yy"
+#line 2864 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
     break;
@@ -9180,5 +9180,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2887 "parser.yy"
+#line 2888 "parser.yy"
     { (yyval.en) = nullptr; }
     break;
@@ -9187,5 +9187,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2889 "parser.yy"
+#line 2890 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -9425,5 +9425,5 @@
 
 /* Line 2067 of yacc.c  */
-#line 2892 "parser.yy"
+#line 2893 "parser.yy"
 
 // ----end of grammar----
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 58dd019a052f07152d413d2f67f0b5337b50f417)
+++ src/Parser/parser.yy	(revision 12d44bb50e421e4b80a13cc51c61fa34c604e6d3)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Dec 13 14:14:52 2016
-// Update Count     : 2081
+// Last Modified On : Wed Dec 14 21:28:22 2016
+// Update Count     : 2090
 //
 
@@ -775,5 +775,5 @@
 			// therefore, are removed from the grammar even though C allows it. The change also applies to choose
 			// statement.
-			$$ = $7 != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
+			$$ = $7 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
 		}
 	| CHOOSE '(' comma_expression ')' case_clause		// CFA
@@ -782,5 +782,5 @@
 		{
 			StatementNode *sw = new StatementNode( build_switch( $3, $8 ) );
-			$$ = $7 != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
+			$$ = $7 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
 		}
 	;
@@ -1014,4 +1014,5 @@
 		{ $$ = new ExpressionNode( $1 ); }
 	| asm_clobbers_list_opt ',' string_literal
+		// set_last return ParseNode *
 		{ $$ = (ExpressionNode *)$1->set_last( new ExpressionNode( $3 ) ); }
 	;
@@ -1535,5 +1536,5 @@
 		{ $$ = nullptr; }
 	| field_declaration_list field_declaration
-		{ $$ = $1 != 0 ? $1->appendList( $2 ) : $2; }
+		{ $$ = $1 ? $1->appendList( $2 ) : $2; }
 	;
 
@@ -1713,10 +1714,10 @@
 		{
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			$$ = $2->addType( $1 )->addInitializer( new InitializerNode( $3 ) );
+			$$ = $2->addType( $1 )->addInitializer( $3 ? new InitializerNode( $3 ) : nullptr );
 		}
 	| declaration_specifier type_parameter_redeclarator assignment_opt
 		{
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			$$ = $2->addType( $1 )->addInitializer( new InitializerNode( $3 ) );
+			$$ = $2->addType( $1 )->addInitializer( $3 ? new InitializerNode( $3 ) : nullptr );
 		}
 	;
@@ -1901,5 +1902,5 @@
 		{ $$ = nullptr; }
 	| assertion_list_opt assertion
-		{ $$ = $1 != 0 ? $1->appendList( $2 ) : $2; }
+		{ $$ = $1 ? $1->appendList( $2 ) : $2; }
 	;
 
@@ -2022,5 +2023,5 @@
 		{}												// empty input file
 	| external_definition_list
-		{ parseTree = parseTree != nullptr ? parseTree->appendList( $1 ) : $1;	}
+		{ parseTree = parseTree ? parseTree->appendList( $1 ) : $1;	}
 	;
 
@@ -2028,5 +2029,5 @@
 	external_definition
 	| external_definition_list push external_definition
-		{ $$ = $1 != nullptr ? $1->appendList( $3 ) : $3; }
+		{ $$ = $1 ? $1->appendList( $3 ) : $3; }
 	;
 
