Index: src/Parser/ParseNode.cc
===================================================================
--- src/Parser/ParseNode.cc	(revision 29917c6390a5901bd9469f0737aecea256416538)
+++ src/Parser/ParseNode.cc	(revision 5ead9f95cb4d5f1df7e1139c0f0dc62a52639a7c)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:26:29 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Aug 16 11:41:39 2016
-// Update Count     : 114
+// Last Modified On : Tue Aug 16 21:31:47 2016
+// Update Count     : 125
 // 
 
@@ -28,13 +28,11 @@
 
 ParseNode *ParseNode::get_last() {
-	ParseNode *current = this;
-
-	while ( current->get_next() != 0 )
-	current = current->get_next();
+	ParseNode *current;
+	for ( current = this; current->get_next() != 0; current = current->get_next() );
 	return current;
 }
 
-ParseNode *ParseNode::set_last( ParseNode *next_ ) {
-	if ( next_ != 0 ) get_last()->next = next_;
+ParseNode *ParseNode::set_last( ParseNode *newlast ) {
+	if ( newlast != 0 ) get_last()->set_next( newlast );
 	return this;
 }
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision 29917c6390a5901bd9469f0737aecea256416538)
+++ src/Parser/ParseNode.h	(revision 5ead9f95cb4d5f1df7e1139c0f0dc62a52639a7c)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:28:16 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Aug 16 11:46:11 2016
-// Update Count     : 533
+// Last Modified On : Tue Aug 16 21:32:18 2016
+// Update Count     : 538
 //
 
@@ -49,5 +49,5 @@
 	ParseNode *set_next( ParseNode *newlink ) { next = newlink; return this; }
 	ParseNode *get_last();
-	ParseNode *set_last( ParseNode * );
+	ParseNode *set_last( ParseNode *newlast );
 
 	const std::string &get_name() const { return name; }
Index: src/Parser/parser.cc
===================================================================
--- src/Parser/parser.cc	(revision 29917c6390a5901bd9469f0737aecea256416538)
+++ src/Parser/parser.cc	(revision 5ead9f95cb4d5f1df7e1139c0f0dc62a52639a7c)
@@ -83,5 +83,5 @@
 #include "LinkageSpec.h"
 
-extern DeclarationNode *parseTree;
+extern DeclarationNode * parseTree;
 extern LinkageSpec::Type linkage;
 extern TypedefTable typedefTable;
@@ -1070,28 +1070,28 @@
     1862,  1867,  1869,  1870,  1872,  1877,  1879,  1881,  1886,  1888,
     1893,  1898,  1906,  1912,  1911,  1925,  1926,  1931,  1932,  1936,
-    1941,  1946,  1954,  1959,  1970,  1971,  1982,  1983,  1989,  1990,
-    1994,  1995,  1996,  1999,  1998,  2009,  2018,  2024,  2030,  2039,
-    2045,  2051,  2057,  2063,  2071,  2077,  2085,  2091,  2100,  2101,
-    2102,  2106,  2110,  2112,  2117,  2118,  2122,  2123,  2128,  2134,
-    2135,  2138,  2140,  2141,  2145,  2146,  2147,  2148,  2182,  2184,
-    2185,  2187,  2192,  2197,  2202,  2204,  2206,  2211,  2213,  2215,
-    2217,  2222,  2224,  2233,  2235,  2236,  2241,  2243,  2245,  2250,
-    2252,  2254,  2259,  2261,  2263,  2272,  2273,  2274,  2278,  2280,
-    2282,  2287,  2289,  2291,  2296,  2298,  2300,  2315,  2317,  2318,
-    2320,  2325,  2326,  2331,  2333,  2335,  2340,  2342,  2344,  2346,
-    2351,  2353,  2355,  2365,  2367,  2368,  2370,  2375,  2377,  2379,
-    2384,  2386,  2388,  2390,  2395,  2397,  2399,  2430,  2432,  2433,
-    2435,  2440,  2445,  2453,  2455,  2457,  2462,  2464,  2469,  2471,
-    2485,  2486,  2488,  2493,  2495,  2497,  2499,  2501,  2506,  2507,
-    2509,  2511,  2516,  2518,  2520,  2526,  2528,  2530,  2534,  2536,
-    2538,  2540,  2554,  2555,  2557,  2562,  2564,  2566,  2568,  2570,
-    2575,  2576,  2578,  2580,  2585,  2587,  2589,  2595,  2596,  2598,
-    2607,  2610,  2612,  2615,  2617,  2619,  2632,  2633,  2635,  2640,
-    2642,  2644,  2646,  2648,  2653,  2654,  2656,  2658,  2663,  2665,
-    2673,  2674,  2675,  2680,  2681,  2685,  2687,  2689,  2691,  2693,
-    2695,  2702,  2704,  2706,  2708,  2710,  2712,  2714,  2716,  2718,
-    2720,  2725,  2727,  2729,  2734,  2760,  2761,  2763,  2767,  2768,
-    2772,  2774,  2776,  2778,  2780,  2782,  2789,  2791,  2793,  2795,
-    2797,  2799,  2804,  2809,  2811,  2813,  2831,  2833,  2838,  2839
+    1941,  1946,  1954,  1959,  1970,  1971,  1976,  1977,  1983,  1984,
+    1988,  1989,  1990,  1993,  1992,  2003,  2012,  2018,  2024,  2033,
+    2039,  2045,  2051,  2057,  2065,  2071,  2079,  2085,  2094,  2095,
+    2096,  2100,  2104,  2106,  2111,  2112,  2116,  2117,  2122,  2128,
+    2129,  2132,  2134,  2135,  2139,  2140,  2141,  2142,  2176,  2178,
+    2179,  2181,  2186,  2191,  2196,  2198,  2200,  2205,  2207,  2209,
+    2211,  2216,  2218,  2227,  2229,  2230,  2235,  2237,  2239,  2244,
+    2246,  2248,  2253,  2255,  2257,  2266,  2267,  2268,  2272,  2274,
+    2276,  2281,  2283,  2285,  2290,  2292,  2294,  2309,  2311,  2312,
+    2314,  2319,  2320,  2325,  2327,  2329,  2334,  2336,  2338,  2340,
+    2345,  2347,  2349,  2359,  2361,  2362,  2364,  2369,  2371,  2373,
+    2378,  2380,  2382,  2384,  2389,  2391,  2393,  2424,  2426,  2427,
+    2429,  2434,  2439,  2447,  2449,  2451,  2456,  2458,  2463,  2465,
+    2479,  2480,  2482,  2487,  2489,  2491,  2493,  2495,  2500,  2501,
+    2503,  2505,  2510,  2512,  2514,  2520,  2522,  2524,  2528,  2530,
+    2532,  2534,  2548,  2549,  2551,  2556,  2558,  2560,  2562,  2564,
+    2569,  2570,  2572,  2574,  2579,  2581,  2583,  2589,  2590,  2592,
+    2601,  2604,  2606,  2609,  2611,  2613,  2626,  2627,  2629,  2634,
+    2636,  2638,  2640,  2642,  2647,  2648,  2650,  2652,  2657,  2659,
+    2667,  2668,  2669,  2674,  2675,  2679,  2681,  2683,  2685,  2687,
+    2689,  2696,  2698,  2700,  2702,  2704,  2706,  2708,  2710,  2712,
+    2714,  2719,  2721,  2723,  2728,  2754,  2755,  2757,  2761,  2762,
+    2766,  2768,  2770,  2772,  2774,  2776,  2783,  2785,  2787,  2789,
+    2791,  2793,  2798,  2803,  2805,  2807,  2825,  2827,  2832,  2833
 };
 #endif
@@ -7772,11 +7772,5 @@
 /* Line 1806 of yacc.c  */
 #line 1972 "parser.yy"
-    {
-			if ( parseTree ) {
-				parseTree->appendList( (yyvsp[(1) - (1)].decl) );
-			} else {
-				parseTree = (yyvsp[(1) - (1)].decl);
-			}
-		}
+    { parseTree = parseTree ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);	}
     break;
 
@@ -7784,5 +7778,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1984 "parser.yy"
+#line 1978 "parser.yy"
     { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
     break;
@@ -7791,5 +7785,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1989 "parser.yy"
+#line 1983 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7798,5 +7792,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1997 "parser.yy"
+#line 1991 "parser.yy"
     {}
     break;
@@ -7805,5 +7799,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1999 "parser.yy"
+#line 1993 "parser.yy"
     {
 			linkageStack.push( linkage );
@@ -7815,5 +7809,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2004 "parser.yy"
+#line 1998 "parser.yy"
     {
 			linkage = linkageStack.top();
@@ -7826,5 +7820,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2010 "parser.yy"
+#line 2004 "parser.yy"
     {	// mark all fields in list
 			for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_next() )
@@ -7837,5 +7831,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2025 "parser.yy"
+#line 2019 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7848,5 +7842,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2031 "parser.yy"
+#line 2025 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7859,5 +7853,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2040 "parser.yy"
+#line 2034 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7870,5 +7864,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2046 "parser.yy"
+#line 2040 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7879,4 +7873,15 @@
 
   case 531:
+
+/* Line 1806 of yacc.c  */
+#line 2046 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
+		}
+    break;
+
+  case 532:
 
 /* Line 1806 of yacc.c  */
@@ -7889,19 +7894,8 @@
     break;
 
-  case 532:
+  case 533:
 
 /* Line 1806 of yacc.c  */
 #line 2058 "parser.yy"
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
-		}
-    break;
-
-  case 533:
-
-/* Line 1806 of yacc.c  */
-#line 2064 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7914,5 +7908,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2072 "parser.yy"
+#line 2066 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7925,5 +7919,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2078 "parser.yy"
+#line 2072 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7936,5 +7930,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2086 "parser.yy"
+#line 2080 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7947,5 +7941,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2092 "parser.yy"
+#line 2086 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7958,5 +7952,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2107 "parser.yy"
+#line 2101 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -7965,5 +7959,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2117 "parser.yy"
+#line 2111 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7972,12 +7966,12 @@
 
 /* Line 1806 of yacc.c  */
+#line 2118 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 548:
+
+/* Line 1806 of yacc.c  */
 #line 2124 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
-    break;
-
-  case 548:
-
-/* Line 1806 of yacc.c  */
-#line 2130 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7986,5 +7980,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2145 "parser.yy"
+#line 2139 "parser.yy"
     {}
     break;
@@ -7993,5 +7987,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2146 "parser.yy"
+#line 2140 "parser.yy"
     {}
     break;
@@ -8000,5 +7994,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2147 "parser.yy"
+#line 2141 "parser.yy"
     {}
     break;
@@ -8007,5 +8001,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2148 "parser.yy"
+#line 2142 "parser.yy"
     {}
     break;
@@ -8014,5 +8008,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2183 "parser.yy"
+#line 2177 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8021,5 +8015,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2186 "parser.yy"
+#line 2180 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8028,5 +8022,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2188 "parser.yy"
+#line 2182 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8035,5 +8029,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2193 "parser.yy"
+#line 2187 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
@@ -8045,5 +8039,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2198 "parser.yy"
+#line 2192 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8052,5 +8046,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2203 "parser.yy"
+#line 2197 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8059,5 +8053,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2205 "parser.yy"
+#line 2199 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8066,5 +8060,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2207 "parser.yy"
+#line 2201 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8073,397 +8067,397 @@
 
 /* Line 1806 of yacc.c  */
+#line 2206 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 568:
+
+/* Line 1806 of yacc.c  */
+#line 2208 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 569:
+
+/* Line 1806 of yacc.c  */
+#line 2210 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 570:
+
+/* Line 1806 of yacc.c  */
 #line 2212 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 571:
+
+/* Line 1806 of yacc.c  */
+#line 2217 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+    break;
+
+  case 572:
+
+/* Line 1806 of yacc.c  */
+#line 2219 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 573:
+
+/* Line 1806 of yacc.c  */
+#line 2228 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 575:
+
+/* Line 1806 of yacc.c  */
+#line 2231 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 576:
+
+/* Line 1806 of yacc.c  */
+#line 2236 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
+    break;
+
+  case 577:
+
+/* Line 1806 of yacc.c  */
+#line 2238 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+    break;
+
+  case 578:
+
+/* Line 1806 of yacc.c  */
+#line 2240 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 579:
+
+/* Line 1806 of yacc.c  */
+#line 2245 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 580:
+
+/* Line 1806 of yacc.c  */
+#line 2247 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 581:
+
+/* Line 1806 of yacc.c  */
+#line 2249 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 582:
+
+/* Line 1806 of yacc.c  */
+#line 2254 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 583:
+
+/* Line 1806 of yacc.c  */
+#line 2256 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 584:
+
+/* Line 1806 of yacc.c  */
+#line 2258 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 588:
+
+/* Line 1806 of yacc.c  */
+#line 2273 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
+    break;
+
+  case 589:
+
+/* Line 1806 of yacc.c  */
+#line 2275 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
+    break;
+
+  case 590:
+
+/* Line 1806 of yacc.c  */
+#line 2277 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 591:
+
+/* Line 1806 of yacc.c  */
+#line 2282 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 592:
+
+/* Line 1806 of yacc.c  */
+#line 2284 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 593:
+
+/* Line 1806 of yacc.c  */
+#line 2286 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 594:
+
+/* Line 1806 of yacc.c  */
+#line 2291 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 595:
+
+/* Line 1806 of yacc.c  */
+#line 2293 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 596:
+
+/* Line 1806 of yacc.c  */
+#line 2295 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 597:
+
+/* Line 1806 of yacc.c  */
+#line 2310 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 599:
+
+/* Line 1806 of yacc.c  */
+#line 2313 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 600:
+
+/* Line 1806 of yacc.c  */
+#line 2315 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 602:
+
+/* Line 1806 of yacc.c  */
+#line 2321 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 603:
+
+/* Line 1806 of yacc.c  */
+#line 2326 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 604:
+
+/* Line 1806 of yacc.c  */
+#line 2328 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 605:
+
+/* Line 1806 of yacc.c  */
+#line 2330 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 606:
+
+/* Line 1806 of yacc.c  */
+#line 2335 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 568:
-
-/* Line 1806 of yacc.c  */
-#line 2214 "parser.yy"
+  case 607:
+
+/* Line 1806 of yacc.c  */
+#line 2337 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 569:
-
-/* Line 1806 of yacc.c  */
-#line 2216 "parser.yy"
+  case 608:
+
+/* Line 1806 of yacc.c  */
+#line 2339 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 570:
-
-/* Line 1806 of yacc.c  */
-#line 2218 "parser.yy"
+  case 609:
+
+/* Line 1806 of yacc.c  */
+#line 2341 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 571:
-
-/* Line 1806 of yacc.c  */
-#line 2223 "parser.yy"
+  case 610:
+
+/* Line 1806 of yacc.c  */
+#line 2346 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
+    break;
+
+  case 611:
+
+/* Line 1806 of yacc.c  */
+#line 2348 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
-  case 572:
-
-/* Line 1806 of yacc.c  */
-#line 2225 "parser.yy"
+  case 612:
+
+/* Line 1806 of yacc.c  */
+#line 2350 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 573:
-
-/* Line 1806 of yacc.c  */
-#line 2234 "parser.yy"
+  case 613:
+
+/* Line 1806 of yacc.c  */
+#line 2360 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 575:
-
-/* Line 1806 of yacc.c  */
-#line 2237 "parser.yy"
+  case 615:
+
+/* Line 1806 of yacc.c  */
+#line 2363 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 576:
-
-/* Line 1806 of yacc.c  */
-#line 2242 "parser.yy"
+  case 616:
+
+/* Line 1806 of yacc.c  */
+#line 2365 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 617:
+
+/* Line 1806 of yacc.c  */
+#line 2370 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 618:
+
+/* Line 1806 of yacc.c  */
+#line 2372 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 619:
+
+/* Line 1806 of yacc.c  */
+#line 2374 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 620:
+
+/* Line 1806 of yacc.c  */
+#line 2379 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 621:
+
+/* Line 1806 of yacc.c  */
+#line 2381 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 622:
+
+/* Line 1806 of yacc.c  */
+#line 2383 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 623:
+
+/* Line 1806 of yacc.c  */
+#line 2385 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 624:
+
+/* Line 1806 of yacc.c  */
+#line 2390 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
 
-  case 577:
-
-/* Line 1806 of yacc.c  */
-#line 2244 "parser.yy"
+  case 625:
+
+/* Line 1806 of yacc.c  */
+#line 2392 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
-  case 578:
-
-/* Line 1806 of yacc.c  */
-#line 2246 "parser.yy"
+  case 626:
+
+/* Line 1806 of yacc.c  */
+#line 2394 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 579:
-
-/* Line 1806 of yacc.c  */
-#line 2251 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-    break;
-
-  case 580:
-
-/* Line 1806 of yacc.c  */
-#line 2253 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
-    break;
-
-  case 581:
-
-/* Line 1806 of yacc.c  */
-#line 2255 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 582:
-
-/* Line 1806 of yacc.c  */
-#line 2260 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 583:
-
-/* Line 1806 of yacc.c  */
-#line 2262 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 584:
-
-/* Line 1806 of yacc.c  */
-#line 2264 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 588:
-
-/* Line 1806 of yacc.c  */
-#line 2279 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
-    break;
-
-  case 589:
-
-/* Line 1806 of yacc.c  */
-#line 2281 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
-    break;
-
-  case 590:
-
-/* Line 1806 of yacc.c  */
-#line 2283 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 591:
-
-/* Line 1806 of yacc.c  */
-#line 2288 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-    break;
-
-  case 592:
-
-/* Line 1806 of yacc.c  */
-#line 2290 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
-    break;
-
-  case 593:
-
-/* Line 1806 of yacc.c  */
-#line 2292 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 594:
-
-/* Line 1806 of yacc.c  */
-#line 2297 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 595:
-
-/* Line 1806 of yacc.c  */
-#line 2299 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 596:
-
-/* Line 1806 of yacc.c  */
-#line 2301 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 597:
-
-/* Line 1806 of yacc.c  */
-#line 2316 "parser.yy"
+  case 627:
+
+/* Line 1806 of yacc.c  */
+#line 2425 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 599:
-
-/* Line 1806 of yacc.c  */
-#line 2319 "parser.yy"
+  case 629:
+
+/* Line 1806 of yacc.c  */
+#line 2428 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 600:
-
-/* Line 1806 of yacc.c  */
-#line 2321 "parser.yy"
+  case 630:
+
+/* Line 1806 of yacc.c  */
+#line 2430 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 602:
-
-/* Line 1806 of yacc.c  */
-#line 2327 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 603:
-
-/* Line 1806 of yacc.c  */
-#line 2332 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-    break;
-
-  case 604:
-
-/* Line 1806 of yacc.c  */
-#line 2334 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
-    break;
-
-  case 605:
-
-/* Line 1806 of yacc.c  */
-#line 2336 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 606:
-
-/* Line 1806 of yacc.c  */
-#line 2341 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 607:
-
-/* Line 1806 of yacc.c  */
-#line 2343 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 608:
-
-/* Line 1806 of yacc.c  */
-#line 2345 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 609:
-
-/* Line 1806 of yacc.c  */
-#line 2347 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 610:
-
-/* Line 1806 of yacc.c  */
-#line 2352 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
-    break;
-
-  case 611:
-
-/* Line 1806 of yacc.c  */
-#line 2354 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
-    break;
-
-  case 612:
-
-/* Line 1806 of yacc.c  */
-#line 2356 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 613:
-
-/* Line 1806 of yacc.c  */
-#line 2366 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 615:
-
-/* Line 1806 of yacc.c  */
-#line 2369 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 616:
-
-/* Line 1806 of yacc.c  */
-#line 2371 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 617:
-
-/* Line 1806 of yacc.c  */
-#line 2376 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-    break;
-
-  case 618:
-
-/* Line 1806 of yacc.c  */
-#line 2378 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
-    break;
-
-  case 619:
-
-/* Line 1806 of yacc.c  */
-#line 2380 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 620:
-
-/* Line 1806 of yacc.c  */
-#line 2385 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 621:
-
-/* Line 1806 of yacc.c  */
-#line 2387 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 622:
-
-/* Line 1806 of yacc.c  */
-#line 2389 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 623:
-
-/* Line 1806 of yacc.c  */
-#line 2391 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 624:
-
-/* Line 1806 of yacc.c  */
-#line 2396 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
-    break;
-
-  case 625:
-
-/* Line 1806 of yacc.c  */
-#line 2398 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
-    break;
-
-  case 626:
-
-/* Line 1806 of yacc.c  */
-#line 2400 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 627:
-
-/* Line 1806 of yacc.c  */
-#line 2431 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 629:
-
-/* Line 1806 of yacc.c  */
-#line 2434 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 630:
-
-/* Line 1806 of yacc.c  */
-#line 2436 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
   case 631:
 
 /* Line 1806 of yacc.c  */
-#line 2441 "parser.yy"
+#line 2435 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
@@ -8475,5 +8469,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2446 "parser.yy"
+#line 2440 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
@@ -8485,5 +8479,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2454 "parser.yy"
+#line 2448 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8492,5 +8486,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2456 "parser.yy"
+#line 2450 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8499,5 +8493,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2458 "parser.yy"
+#line 2452 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8506,5 +8500,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2463 "parser.yy"
+#line 2457 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8513,5 +8507,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2465 "parser.yy"
+#line 2459 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8520,5 +8514,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2470 "parser.yy"
+#line 2464 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8527,5 +8521,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2472 "parser.yy"
+#line 2466 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8534,5 +8528,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2487 "parser.yy"
+#line 2481 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8541,5 +8535,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2489 "parser.yy"
+#line 2483 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8548,348 +8542,348 @@
 
 /* Line 1806 of yacc.c  */
+#line 2488 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
+    break;
+
+  case 644:
+
+/* Line 1806 of yacc.c  */
+#line 2490 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 645:
+
+/* Line 1806 of yacc.c  */
+#line 2492 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 646:
+
+/* Line 1806 of yacc.c  */
 #line 2494 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 647:
+
+/* Line 1806 of yacc.c  */
+#line 2496 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 649:
+
+/* Line 1806 of yacc.c  */
+#line 2502 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 650:
+
+/* Line 1806 of yacc.c  */
+#line 2504 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 651:
+
+/* Line 1806 of yacc.c  */
+#line 2506 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 652:
+
+/* Line 1806 of yacc.c  */
+#line 2511 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
+    break;
+
+  case 653:
+
+/* Line 1806 of yacc.c  */
+#line 2513 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+    break;
+
+  case 654:
+
+/* Line 1806 of yacc.c  */
+#line 2515 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 655:
+
+/* Line 1806 of yacc.c  */
+#line 2521 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
+    break;
+
+  case 656:
+
+/* Line 1806 of yacc.c  */
+#line 2523 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
+    break;
+
+  case 658:
+
+/* Line 1806 of yacc.c  */
+#line 2529 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
+    break;
+
+  case 659:
+
+/* Line 1806 of yacc.c  */
+#line 2531 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
+    break;
+
+  case 660:
+
+/* Line 1806 of yacc.c  */
+#line 2533 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
+    break;
+
+  case 661:
+
+/* Line 1806 of yacc.c  */
+#line 2535 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
+    break;
+
+  case 663:
+
+/* Line 1806 of yacc.c  */
+#line 2550 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 664:
+
+/* Line 1806 of yacc.c  */
+#line 2552 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 665:
+
+/* Line 1806 of yacc.c  */
+#line 2557 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
 
-  case 644:
-
-/* Line 1806 of yacc.c  */
-#line 2496 "parser.yy"
+  case 666:
+
+/* Line 1806 of yacc.c  */
+#line 2559 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 645:
-
-/* Line 1806 of yacc.c  */
-#line 2498 "parser.yy"
+  case 667:
+
+/* Line 1806 of yacc.c  */
+#line 2561 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
-  case 646:
-
-/* Line 1806 of yacc.c  */
-#line 2500 "parser.yy"
+  case 668:
+
+/* Line 1806 of yacc.c  */
+#line 2563 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
-  case 647:
-
-/* Line 1806 of yacc.c  */
-#line 2502 "parser.yy"
+  case 669:
+
+/* Line 1806 of yacc.c  */
+#line 2565 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 649:
-
-/* Line 1806 of yacc.c  */
-#line 2508 "parser.yy"
+  case 671:
+
+/* Line 1806 of yacc.c  */
+#line 2571 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 650:
-
-/* Line 1806 of yacc.c  */
-#line 2510 "parser.yy"
+  case 672:
+
+/* Line 1806 of yacc.c  */
+#line 2573 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 651:
-
-/* Line 1806 of yacc.c  */
-#line 2512 "parser.yy"
+  case 673:
+
+/* Line 1806 of yacc.c  */
+#line 2575 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 652:
-
-/* Line 1806 of yacc.c  */
-#line 2517 "parser.yy"
+  case 674:
+
+/* Line 1806 of yacc.c  */
+#line 2580 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     break;
 
-  case 653:
-
-/* Line 1806 of yacc.c  */
-#line 2519 "parser.yy"
+  case 675:
+
+/* Line 1806 of yacc.c  */
+#line 2582 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
-  case 654:
-
-/* Line 1806 of yacc.c  */
-#line 2521 "parser.yy"
+  case 676:
+
+/* Line 1806 of yacc.c  */
+#line 2584 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 655:
-
-/* Line 1806 of yacc.c  */
-#line 2527 "parser.yy"
+  case 678:
+
+/* Line 1806 of yacc.c  */
+#line 2591 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 680:
+
+/* Line 1806 of yacc.c  */
+#line 2602 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     break;
 
-  case 656:
-
-/* Line 1806 of yacc.c  */
-#line 2529 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
-    break;
-
-  case 658:
-
-/* Line 1806 of yacc.c  */
-#line 2535 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
-    break;
-
-  case 659:
-
-/* Line 1806 of yacc.c  */
-#line 2537 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
-    break;
-
-  case 660:
-
-/* Line 1806 of yacc.c  */
-#line 2539 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
-    break;
-
-  case 661:
-
-/* Line 1806 of yacc.c  */
-#line 2541 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
-    break;
-
-  case 663:
-
-/* Line 1806 of yacc.c  */
-#line 2556 "parser.yy"
+  case 681:
+
+/* Line 1806 of yacc.c  */
+#line 2605 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
+    break;
+
+  case 682:
+
+/* Line 1806 of yacc.c  */
+#line 2607 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
+    break;
+
+  case 683:
+
+/* Line 1806 of yacc.c  */
+#line 2610 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
+    break;
+
+  case 684:
+
+/* Line 1806 of yacc.c  */
+#line 2612 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
+    break;
+
+  case 685:
+
+/* Line 1806 of yacc.c  */
+#line 2614 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
+    break;
+
+  case 687:
+
+/* Line 1806 of yacc.c  */
+#line 2628 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 664:
-
-/* Line 1806 of yacc.c  */
-#line 2558 "parser.yy"
+  case 688:
+
+/* Line 1806 of yacc.c  */
+#line 2630 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 665:
-
-/* Line 1806 of yacc.c  */
-#line 2563 "parser.yy"
+  case 689:
+
+/* Line 1806 of yacc.c  */
+#line 2635 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
 
-  case 666:
-
-/* Line 1806 of yacc.c  */
-#line 2565 "parser.yy"
+  case 690:
+
+/* Line 1806 of yacc.c  */
+#line 2637 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
 
-  case 667:
-
-/* Line 1806 of yacc.c  */
-#line 2567 "parser.yy"
+  case 691:
+
+/* Line 1806 of yacc.c  */
+#line 2639 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
-  case 668:
-
-/* Line 1806 of yacc.c  */
-#line 2569 "parser.yy"
+  case 692:
+
+/* Line 1806 of yacc.c  */
+#line 2641 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
-  case 669:
-
-/* Line 1806 of yacc.c  */
-#line 2571 "parser.yy"
+  case 693:
+
+/* Line 1806 of yacc.c  */
+#line 2643 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 671:
-
-/* Line 1806 of yacc.c  */
-#line 2577 "parser.yy"
+  case 695:
+
+/* Line 1806 of yacc.c  */
+#line 2649 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 672:
-
-/* Line 1806 of yacc.c  */
-#line 2579 "parser.yy"
+  case 696:
+
+/* Line 1806 of yacc.c  */
+#line 2651 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
-  case 673:
-
-/* Line 1806 of yacc.c  */
-#line 2581 "parser.yy"
+  case 697:
+
+/* Line 1806 of yacc.c  */
+#line 2653 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 674:
-
-/* Line 1806 of yacc.c  */
-#line 2586 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
-    break;
-
-  case 675:
-
-/* Line 1806 of yacc.c  */
-#line 2588 "parser.yy"
+  case 698:
+
+/* Line 1806 of yacc.c  */
+#line 2658 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
-  case 676:
-
-/* Line 1806 of yacc.c  */
-#line 2590 "parser.yy"
+  case 699:
+
+/* Line 1806 of yacc.c  */
+#line 2660 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
-  case 678:
-
-/* Line 1806 of yacc.c  */
-#line 2597 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 680:
-
-/* Line 1806 of yacc.c  */
-#line 2608 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
-    break;
-
-  case 681:
-
-/* Line 1806 of yacc.c  */
-#line 2611 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
-    break;
-
-  case 682:
-
-/* Line 1806 of yacc.c  */
-#line 2613 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
-    break;
-
-  case 683:
-
-/* Line 1806 of yacc.c  */
-#line 2616 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
-    break;
-
-  case 684:
-
-/* Line 1806 of yacc.c  */
-#line 2618 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
-    break;
-
-  case 685:
-
-/* Line 1806 of yacc.c  */
-#line 2620 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
-    break;
-
-  case 687:
-
-/* Line 1806 of yacc.c  */
-#line 2634 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 688:
-
-/* Line 1806 of yacc.c  */
-#line 2636 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 689:
-
-/* Line 1806 of yacc.c  */
-#line 2641 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
-    break;
-
-  case 690:
-
-/* Line 1806 of yacc.c  */
-#line 2643 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 691:
-
-/* Line 1806 of yacc.c  */
-#line 2645 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-    break;
-
-  case 692:
-
-/* Line 1806 of yacc.c  */
-#line 2647 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
-    break;
-
-  case 693:
-
-/* Line 1806 of yacc.c  */
-#line 2649 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 695:
-
-/* Line 1806 of yacc.c  */
-#line 2655 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 696:
-
-/* Line 1806 of yacc.c  */
-#line 2657 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 697:
-
-/* Line 1806 of yacc.c  */
-#line 2659 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 698:
-
-/* Line 1806 of yacc.c  */
-#line 2664 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
-    break;
-
-  case 699:
-
-/* Line 1806 of yacc.c  */
-#line 2666 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
   case 702:
 
 /* Line 1806 of yacc.c  */
-#line 2676 "parser.yy"
+#line 2670 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8898,51 +8892,72 @@
 
 /* Line 1806 of yacc.c  */
+#line 2680 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 706:
+
+/* Line 1806 of yacc.c  */
+#line 2682 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
+    break;
+
+  case 707:
+
+/* Line 1806 of yacc.c  */
+#line 2684 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 708:
+
+/* Line 1806 of yacc.c  */
 #line 2686 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
+    break;
+
+  case 709:
+
+/* Line 1806 of yacc.c  */
+#line 2688 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
-  case 706:
-
-/* Line 1806 of yacc.c  */
-#line 2688 "parser.yy"
+  case 710:
+
+/* Line 1806 of yacc.c  */
+#line 2690 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
 
-  case 707:
-
-/* Line 1806 of yacc.c  */
-#line 2690 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-    break;
-
-  case 708:
-
-/* Line 1806 of yacc.c  */
-#line 2692 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
-    break;
-
-  case 709:
-
-/* Line 1806 of yacc.c  */
-#line 2694 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-    break;
-
-  case 710:
-
-/* Line 1806 of yacc.c  */
-#line 2696 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
-    break;
-
   case 711:
 
 /* Line 1806 of yacc.c  */
+#line 2697 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+    break;
+
+  case 712:
+
+/* Line 1806 of yacc.c  */
+#line 2699 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 713:
+
+/* Line 1806 of yacc.c  */
+#line 2701 "parser.yy"
+    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+    break;
+
+  case 714:
+
+/* Line 1806 of yacc.c  */
 #line 2703 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-    break;
-
-  case 712:
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
+    break;
+
+  case 715:
 
 /* Line 1806 of yacc.c  */
@@ -8951,33 +8966,33 @@
     break;
 
-  case 713:
+  case 716:
 
 /* Line 1806 of yacc.c  */
 #line 2707 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+    break;
+
+  case 717:
+
+/* Line 1806 of yacc.c  */
+#line 2709 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 718:
+
+/* Line 1806 of yacc.c  */
+#line 2711 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
 
-  case 714:
-
-/* Line 1806 of yacc.c  */
-#line 2709 "parser.yy"
+  case 719:
+
+/* Line 1806 of yacc.c  */
+#line 2713 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     break;
 
-  case 715:
-
-/* Line 1806 of yacc.c  */
-#line 2711 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
-    break;
-
-  case 716:
-
-/* Line 1806 of yacc.c  */
-#line 2713 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-    break;
-
-  case 717:
+  case 720:
 
 /* Line 1806 of yacc.c  */
@@ -8986,103 +9001,103 @@
     break;
 
-  case 718:
-
-/* Line 1806 of yacc.c  */
-#line 2717 "parser.yy"
+  case 721:
+
+/* Line 1806 of yacc.c  */
+#line 2720 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
+    break;
+
+  case 722:
+
+/* Line 1806 of yacc.c  */
+#line 2722 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
+    break;
+
+  case 723:
+
+/* Line 1806 of yacc.c  */
+#line 2727 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
+    break;
+
+  case 724:
+
+/* Line 1806 of yacc.c  */
+#line 2729 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
+    break;
+
+  case 726:
+
+/* Line 1806 of yacc.c  */
+#line 2756 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 730:
+
+/* Line 1806 of yacc.c  */
+#line 2767 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 731:
+
+/* Line 1806 of yacc.c  */
+#line 2769 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
+    break;
+
+  case 732:
+
+/* Line 1806 of yacc.c  */
+#line 2771 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 733:
+
+/* Line 1806 of yacc.c  */
+#line 2773 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
+    break;
+
+  case 734:
+
+/* Line 1806 of yacc.c  */
+#line 2775 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 735:
+
+/* Line 1806 of yacc.c  */
+#line 2777 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
+    break;
+
+  case 736:
+
+/* Line 1806 of yacc.c  */
+#line 2784 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+    break;
+
+  case 737:
+
+/* Line 1806 of yacc.c  */
+#line 2786 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
 
-  case 719:
-
-/* Line 1806 of yacc.c  */
-#line 2719 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
-    break;
-
-  case 720:
-
-/* Line 1806 of yacc.c  */
-#line 2721 "parser.yy"
+  case 738:
+
+/* Line 1806 of yacc.c  */
+#line 2788 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
 
-  case 721:
-
-/* Line 1806 of yacc.c  */
-#line 2726 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
-    break;
-
-  case 722:
-
-/* Line 1806 of yacc.c  */
-#line 2728 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
-    break;
-
-  case 723:
-
-/* Line 1806 of yacc.c  */
-#line 2733 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
-    break;
-
-  case 724:
-
-/* Line 1806 of yacc.c  */
-#line 2735 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
-    break;
-
-  case 726:
-
-/* Line 1806 of yacc.c  */
-#line 2762 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
-    break;
-
-  case 730:
-
-/* Line 1806 of yacc.c  */
-#line 2773 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-    break;
-
-  case 731:
-
-/* Line 1806 of yacc.c  */
-#line 2775 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
-    break;
-
-  case 732:
-
-/* Line 1806 of yacc.c  */
-#line 2777 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-    break;
-
-  case 733:
-
-/* Line 1806 of yacc.c  */
-#line 2779 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
-    break;
-
-  case 734:
-
-/* Line 1806 of yacc.c  */
-#line 2781 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-    break;
-
-  case 735:
-
-/* Line 1806 of yacc.c  */
-#line 2783 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
-    break;
-
-  case 736:
+  case 739:
 
 /* Line 1806 of yacc.c  */
@@ -9091,5 +9106,5 @@
     break;
 
-  case 737:
+  case 740:
 
 /* Line 1806 of yacc.c  */
@@ -9098,5 +9113,5 @@
     break;
 
-  case 738:
+  case 741:
 
 /* Line 1806 of yacc.c  */
@@ -9105,29 +9120,8 @@
     break;
 
-  case 739:
-
-/* Line 1806 of yacc.c  */
-#line 2796 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-    break;
-
-  case 740:
-
-/* Line 1806 of yacc.c  */
-#line 2798 "parser.yy"
-    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-    break;
-
-  case 741:
-
-/* Line 1806 of yacc.c  */
-#line 2800 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
-    break;
-
   case 742:
 
 /* Line 1806 of yacc.c  */
-#line 2805 "parser.yy"
+#line 2799 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     break;
@@ -9136,5 +9130,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2810 "parser.yy"
+#line 2804 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
     break;
@@ -9143,5 +9137,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2812 "parser.yy"
+#line 2806 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
     break;
@@ -9150,5 +9144,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2814 "parser.yy"
+#line 2808 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
     break;
@@ -9157,5 +9151,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2838 "parser.yy"
+#line 2832 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -9164,5 +9158,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2840 "parser.yy"
+#line 2834 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -9171,5 +9165,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 9174 "Parser/parser.cc"
+#line 9168 "Parser/parser.cc"
       default: break;
     }
@@ -9402,5 +9396,5 @@
 
 /* Line 2067 of yacc.c  */
-#line 2843 "parser.yy"
+#line 2837 "parser.yy"
 
 // ----end of grammar----
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 29917c6390a5901bd9469f0737aecea256416538)
+++ src/Parser/parser.yy	(revision 5ead9f95cb4d5f1df7e1139c0f0dc62a52639a7c)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Aug 16 17:10:35 2016
-// Update Count     : 1898
+// Last Modified On : Tue Aug 16 21:31:46 2016
+// Update Count     : 1906
 //
 
@@ -55,5 +55,5 @@
 #include "LinkageSpec.h"
 
-extern DeclarationNode *parseTree;
+extern DeclarationNode * parseTree;
 extern LinkageSpec::Type linkage;
 extern TypedefTable typedefTable;
@@ -1970,11 +1970,5 @@
 		{}												// empty input file
 	| external_definition_list
-		{
-			if ( parseTree ) {
-				parseTree->appendList( $1 );
-			} else {
-				parseTree = $1;
-			}
-		}
+		{ parseTree = parseTree ? parseTree->appendList( $1 ) : $1;	}
 	;
 
