Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision 1d4580a95e48c7e901f03961d6c83d9b379b8bd4)
+++ src/Parser/ParseNode.h	(revision 777bfcf2024415a11a10ed22ce6eebd012ce80ca)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:28:16 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Aug 14 08:09:54 2016
-// Update Count     : 469
+// Last Modified On : Sun Aug 14 16:29:20 2016
+// Update Count     : 483
 //
 
@@ -92,5 +92,5 @@
 	ExpressionNode *expr;
 	bool aggregate;
-	ExpressionNode *designator; // may be list
+	ExpressionNode *designator;							// may be list
 	InitializerNode *kids;
 	bool maybeConstructed;
@@ -336,16 +336,6 @@
 
 	StatementNode();
-	StatementNode( const std::string *name );
-	StatementNode( Type t, ExpressionNode *control = 0, StatementNode *block = 0 );
-	StatementNode( Type t, std::string *target );
 	StatementNode( DeclarationNode *decl );
-
 	~StatementNode();
-
-	StatementNode *set_block( StatementNode *b ) { block = b; return this; }
-	StatementNode *get_block() const { return block; }
-
-	void set_control( ExpressionNode *c ) { control = c; }
-	ExpressionNode *get_control() const { return control; }
 
 	StatementNode::Type get_type() const { return type; }
@@ -356,11 +346,7 @@
 	void addDeclaration( DeclarationNode *newDecl ) { decl = newDecl; }
 
-	void setCatchRest( bool newVal ) { catchAny = newVal; }
-
-	// StatementNode *add_controlexp( ExpressionNode * );
-	StatementNode *append_block( StatementNode * );
 	virtual StatementNode *append_last_case( StatementNode * );
 
-	void print( std::ostream &os, int indent = 0) const;
+	virtual void print( std::ostream &os, int indent = 0) const {}
 	virtual StatementNode *clone() const;
 	virtual Statement *build() const;
@@ -368,10 +354,6 @@
 	static const char *StType[];
 	Type type;
-	ExpressionNode *control;
-	StatementNode *block;
 	std::list<std::string> labels;
-	std::string *target;								// target label for jump statements
 	DeclarationNode *decl;
-	bool catchAny;
 }; // StatementNode
 
@@ -447,8 +429,8 @@
 class AsmStmtNode : public StatementNode {
   public:
-	AsmStmtNode( Type, bool voltile, ConstantExpr *instruction, ExpressionNode *output = 0, ExpressionNode *input = 0, ExpressionNode *clobber = 0, LabelNode *gotolabels = 0 );
+	AsmStmtNode( bool voltile, ConstantExpr *instruction, ExpressionNode *output = 0, ExpressionNode *input = 0, ExpressionNode *clobber = 0, LabelNode *gotolabels = 0 );
 	~AsmStmtNode();
 
-	void print( std::ostream &os, int indent = 0 ) const;
+	void print( std::ostream &os, int indent = 0 ) const {}
 	Statement *build() const;
   private:
Index: src/Parser/StatementNode.cc
===================================================================
--- src/Parser/StatementNode.cc	(revision 1d4580a95e48c7e901f03961d6c83d9b379b8bd4)
+++ src/Parser/StatementNode.cc	(revision 777bfcf2024415a11a10ed22ce6eebd012ce80ca)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 14:59:41 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Aug 14 08:09:31 2016
-// Update Count     : 271
+// Last Modified On : Sun Aug 14 13:10:54 2016
+// Update Count     : 288
 //
 
@@ -34,9 +34,7 @@
 };
 
-StatementNode::StatementNode() : ParseNode(), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), catchAny( false ) {}
-
-StatementNode::StatementNode( const string *name ) : ParseNode( name ), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), catchAny( false ) { assert( false ); }
-
-StatementNode::StatementNode( DeclarationNode *decl ) : type( Decl ), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), catchAny( false ) {
+StatementNode::StatementNode() : ParseNode(), labels( 0 ), decl( 0 ) {}
+
+StatementNode::StatementNode( DeclarationNode *decl ) : type( Decl ), labels( 0 ) {
 	assert( false );
 	if ( decl ) {
@@ -86,14 +84,5 @@
 }
 
-StatementNode::StatementNode( Type t, ExpressionNode *ctrl_label, StatementNode *block ) : type( t ), control( ctrl_label ), block( block ), labels( 0 ), target( 0 ), decl( 0 ), catchAny( false ) {
-	this->control = ( t == Default ) ? 0 : control;
-}
-
-StatementNode::StatementNode( Type t, string *target ) : type( t ), control( 0 ), block( 0 ), labels( 0 ), target( target ), decl( 0 ), catchAny( false ) {}
-
 StatementNode::~StatementNode() {
-	delete control;
-	delete block;
-	delete target;
 	delete decl;
 }
@@ -101,12 +90,5 @@
 StatementNode * StatementNode::clone() const {
 	assert( false );
-	StatementNode *newnode = new StatementNode( type, maybeClone( control ), maybeClone( block ) );
-	if ( target ) {
-		newnode->target = new string( *target );
-	} else {
-		newnode->target = 0;
-	} // if
-	newnode->decl = maybeClone( decl );
-	return newnode;
+	return 0;
 }
 
@@ -119,26 +101,6 @@
 }
 
-StatementNode *StatementNode::append_block( StatementNode *stmt ) {
-	if ( stmt != 0 ) {
-		if ( block == 0 )
-			block = stmt;
-		else
-			block->set_last( stmt );
-	} // if
-	return this;
-}
-
 StatementNode *StatementNode::append_last_case( StatementNode *stmt ) {
 	assert( false );
-	if ( stmt != 0 ) {
-		StatementNode *next = ( StatementNode *)get_next();
-		if ( next && ( next->get_type() == StatementNode::Case || next->get_type() == StatementNode::Default ) )
-			next->append_last_case( stmt );
-		else
-			if ( block == 0 )
-				block = stmt;
-			else
-				block->set_last( stmt );
-	} // if
 	return this;
 }
@@ -163,174 +125,26 @@
 }
 
-void StatementNode::print( std::ostream &os, int indent ) const {
-	if ( ! labels.empty() ) {
-		std::list<std::string>::const_iterator i;
-
-		os << string( indent, ' ' );
-		for ( i = labels.begin(); i != labels.end(); i++ )
-			os << *i << ":";
-		os << endl;
-	} // if
-
+Statement *StatementNode::build() const {
 	switch ( type ) {
 	  case Decl:
-		decl->print( os, indent );
-		break;
-	  case Exp:
-		if ( control ) {
-			os << string( indent, ' ' );
-			control->print( os, indent );
-			os << endl;
-		} else
-			os << string( indent, ' ' ) << "Null Statement" << endl;
-		break;
-	  default:
-		os << string( indent, ' ' ) << StatementNode::StType[type] << endl;
-		if ( type == Catch ) {
-			if ( decl ) {
-				os << string( indent + ParseNode::indent_by, ' ' ) << "Declaration: " << endl;
-				decl->print( os, indent + 2 * ParseNode::indent_by );
-			} else if ( catchAny ) {
-				os << string( indent + ParseNode::indent_by, ' ' ) << "Catches the rest " << endl;
-			} else {
-				; // should never reach here
-			} // if
-		} // if
-		if ( control ) {
-			os << string( indent + ParseNode::indent_by, ' ' ) << "Control: " << endl;
-			control->printList( os, indent + 2 * ParseNode::indent_by );
-		} // if
-		if ( block ) {
-			os << string( indent + ParseNode::indent_by, ' ' ) << "Cases: " << endl;
-			block->printList( os, indent + 2 * ParseNode::indent_by );
-		} // if
-		break;
-	} // switch
-}
-
-Statement *StatementNode::build() const {
-	std::list<Statement *> branches;
-	std::list<Expression *> exps;
-	std::list<Label> labs;
-
-	if ( ! labels.empty() ) {
-		std::back_insert_iterator< std::list<Label> > lab_it( labs );
-		copy( labels.begin(), labels.end(), lab_it );
-	} // if
-
-	buildList<Statement, StatementNode>( get_block(), branches );
-
-	switch ( type ) {
-	  case Decl:
-		return new DeclStmt( labs, maybeBuild< Declaration >( decl ) );
+		return new DeclStmt( noLabels, maybeBuild< Declaration >( decl ) );
 		assert( false );
 	  case Exp:
-		// {
-		// 	Expression *e = maybeBuild< Expression >( get_control() );
-
-		// 	if ( e )
-		// 		return new ExprStmt( labs, e );
-		// 	else
-		// 		return new NullStmt( labs );
-		// }
-		assert( false );
 	  case If:
-		// {
-		// 	Statement *thenb = 0, *elseb = 0;
-		// 	assert( branches.size() >= 1 );
-
-		// 	thenb = branches.front();
-		// 	branches.pop_front();
-		// 	if ( ! branches.empty() ) {
-		// 		elseb = branches.front();
-		// 		branches.pop_front();
-		// 	} // if
-		// 	return new IfStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), thenb, elseb );
-		// }
-		assert( false );
 	  case Switch:
-		// return new SwitchStmt( labs, maybeBuild<Expression>(get_control()), branches );
-		assert( false );
 	  case Case:
-		//return new CaseStmt( labs, maybeBuild<Expression>(get_control() ), branches );
-		assert( false );
 	  case Default:
-		//return new CaseStmt( labs, 0, branches, true );
-		assert( false );
 	  case While:
-		// assert( branches.size() == 1 );
-		// return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front() );
-		assert( false );
 	  case Do:
-		// assert( branches.size() == 1 );
-		// return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front(), true );
-		assert( false );
 	  case For:
-	  	// {
-	  	// 	assert( branches.size() == 1 );
-
-	  	// 	ForCtlExprNode *ctl = dynamic_cast<ForCtlExprNode *>( get_control() );
-	  	// 	assert( ctl != 0 );
-
-	  	// 	std::list<Statement *> init;
-	  	// 	if ( ctl->get_init() != 0 ) {
-	  	// 		buildList( ctl->get_init(), init );
-	  	// 	} // if
-
-	  	// 	Expression *cond = 0;
-	  	// 	if ( ctl->get_condition() != 0 )
-	  	// 		cond = notZeroExpr( maybeBuild<Expression>(ctl->get_condition()) );
-
-	  	// 	Expression *incr = 0;
-	  	// 	if ( ctl->get_change() != 0 )
-	  	// 		incr = maybeBuild<Expression>(ctl->get_change());
-
-	  	// 	return new ForStmt( labs, init, cond, incr, branches.front() );
-	  	// }
-		assert( false );
 	  case Goto:
-		assert( false );
 	  case Break:
-		assert( false );
 	  case Continue:
-		assert( false );
 	  case Return:
 	  case Throw :
-		// buildList( get_control(), exps );
-		// if ( exps.size() ==0 )
-		// 	return new ReturnStmt( labs, 0, type == Throw );
-		// if ( exps.size() > 0 )
-		// 	return new ReturnStmt( labs, exps.back(), type == Throw );
-		assert( false );
 	  case Try:
-		// {
-		// 	assert( branches.size() >= 0 );
-		// 	CompoundStmt *tryBlock = dynamic_cast<CompoundStmt *>( branches.front());
-		// 	branches.pop_front();
-		// 	FinallyStmt *finallyBlock = 0;
-		// 	if ( ( finallyBlock = dynamic_cast<FinallyStmt *>( branches.back())) ) {
-		// 		branches.pop_back();
-		// 	} // if
-		// 	return new TryStmt( labs, tryBlock, branches, finallyBlock );
-		// }
-		assert( false );
 	  case Catch:
-		// {
-		// 	assert( branches.size() == 1 );
-
-		// 	return new CatchStmt( labs, maybeBuild< Declaration >( decl ), branches.front(), catchAny );
-		// }
-		assert( false );
 	  case Finally:
-		// {
-		// 	assert( branches.size() == 1 );
-		// 	CompoundStmt *block = dynamic_cast<CompoundStmt *>( branches.front() );
-		// 	assert( block != 0 );
-
-		// 	return new FinallyStmt( labs, block );
-		// }
-		assert( false );
 	  case Asm:
-		assert( false );
 	  default:
 		assert( false );
@@ -490,6 +304,7 @@
 
 
-AsmStmtNode::AsmStmtNode( Type t, bool voltile, ConstantExpr *instruction, ExpressionNode *output, ExpressionNode *input, ExpressionNode *clobber, LabelNode *gotolabels ) :
-	StatementNode( t ), voltile( voltile ), instruction( instruction ), output( output ), input( input ), clobber( clobber ) {
+AsmStmtNode::AsmStmtNode( bool voltile, ConstantExpr *instruction, ExpressionNode *output, ExpressionNode *input, ExpressionNode *clobber, LabelNode *gotolabels ) :
+	voltile( voltile ), instruction( instruction ), output( output ), input( input ), clobber( clobber ) {
+	type = Asm;
 	if ( gotolabels ) {
 		this->gotolabels = gotolabels->get_labels();
@@ -500,36 +315,4 @@
 AsmStmtNode::~AsmStmtNode() {
 	delete output; delete input; delete clobber;
-}
-
-void AsmStmtNode::print( std::ostream &os, int indent ) const {
-	StatementNode::print( os, indent );					// print statement labels
-	os << string( indent + ParseNode::indent_by, ' ' ) << "volatile:" << voltile << endl;
-	if ( instruction ) {
-		os << string( indent + ParseNode::indent_by, ' ' ) << "Instruction:" << endl;
-//		instruction->printList( os, indent + 2 * ParseNode::indent_by );
-	} // if
-	if ( output ) {
-		os << string( indent + ParseNode::indent_by, ' ' ) << "Output:" << endl;
-		output->printList( os, indent + 2 * ParseNode::indent_by );
-	} // if
-	if ( input ) {
-		os << string( indent + ParseNode::indent_by, ' ' ) << "Input:" << endl;
-		input->printList( os, indent + 2 * ParseNode::indent_by );
-	} // if
-	if ( clobber ) {
-		os << string( indent + ParseNode::indent_by, ' ' ) << "Clobber:" << endl;
-//		clobber->printList( os, indent + 2 * ParseNode::indent_by );
-	} // if
-	if ( ! gotolabels.empty() ) {
-		os << string( indent + ParseNode::indent_by, ' ' ) << "Goto Labels:" << endl;
-		os << string( indent + 2 * ParseNode::indent_by, ' ' );
-		for ( std::list<Label>::const_iterator i = gotolabels.begin();; ) {
-			os << *i;
-			i++;
-		  if ( i == gotolabels.end() ) break;
-			os << ", ";
-		}
-		os << endl;
-	} // if
 }
 
@@ -551,4 +334,21 @@
 }
 
+// Statement *build_asm( bool voltile, ConstantExpr *instruction, ExpressionNode *output = 0, ExpressionNode *input = 0, ExpressionNode *clobber = 0, LabelNode *gotolabels = 0 ) {
+// 	std::list<Label> labs;
+
+// 	if ( ! get_labels().empty() ) {
+// 		std::back_insert_iterator< std::list<Label> > lab_it( labs );
+// 		copy( get_labels().begin(), get_labels().end(), lab_it );
+// 	} // if
+
+// 	std::list< Expression * > out, in;
+// 	std::list< ConstantExpr * > clob;
+// 	buildList( output, out );
+// 	buildList( input, in );
+// 	buildList( clobber, clob );
+// 	std::list< Label > gotolabs = gotolabels;
+// 	return new AsmStmt( labs, voltile, instruction, out, in, clob, gotolabs );
+// }
+
 // Local Variables: //
 // tab-width: 4 //
Index: src/Parser/parser.cc
===================================================================
--- src/Parser/parser.cc	(revision 1d4580a95e48c7e901f03961d6c83d9b379b8bd4)
+++ src/Parser/parser.cc	(revision 777bfcf2024415a11a10ed22ce6eebd012ce80ca)
@@ -1020,80 +1020,80 @@
 static const yytype_uint16 yyrline[] =
 {
-       0,   299,   299,   305,   314,   315,   316,   320,   321,   322,
-     326,   327,   331,   332,   336,   337,   341,   342,   353,   355,
-     357,   359,   364,   365,   371,   375,   377,   378,   380,   381,
-     383,   385,   387,   396,   397,   403,   404,   408,   409,   413,
-     417,   419,   421,   423,   428,   431,   433,   435,   440,   453,
-     455,   457,   459,   461,   463,   465,   467,   469,   471,   473,
-     480,   481,   487,   488,   489,   490,   494,   495,   497,   502,
-     503,   505,   507,   512,   513,   515,   520,   521,   523,   528,
-     529,   531,   533,   535,   540,   541,   543,   548,   549,   554,
-     555,   560,   561,   566,   567,   572,   573,   578,   579,   582,
-     584,   589,   594,   595,   597,   603,   604,   608,   609,   610,
-     611,   612,   613,   614,   615,   616,   617,   618,   624,   626,
-     628,   630,   635,   636,   641,   642,   648,   649,   655,   656,
-     657,   658,   659,   660,   661,   662,   663,   673,   680,   682,
-     692,   693,   698,   700,   706,   708,   712,   713,   718,   723,
-     726,   728,   730,   740,   742,   753,   754,   756,   760,   762,
-     766,   767,   772,   773,   777,   782,   783,   787,   789,   795,
-     796,   800,   802,   804,   806,   812,   813,   817,   819,   824,
-     826,   828,   833,   835,   840,   842,   846,   849,   853,   856,
-     860,   862,   864,   866,   871,   873,   875,   880,   882,   884,
-     886,   888,   893,   895,   897,   899,   904,   916,   917,   922,
-     924,   929,   933,   935,   937,   939,   941,   947,   948,   954,
-     955,   959,   960,   965,   967,   973,   974,   976,   981,   983,
-     990,   992,   996,   997,  1002,  1004,  1008,  1009,  1013,  1015,
-    1019,  1020,  1024,  1025,  1029,  1030,  1045,  1046,  1047,  1048,
-    1049,  1053,  1058,  1065,  1075,  1080,  1085,  1093,  1098,  1103,
-    1108,  1113,  1121,  1143,  1148,  1155,  1157,  1164,  1169,  1174,
-    1185,  1190,  1195,  1200,  1205,  1214,  1219,  1227,  1228,  1229,
-    1230,  1236,  1241,  1249,  1250,  1251,  1252,  1256,  1257,  1258,
-    1259,  1264,  1265,  1274,  1275,  1280,  1281,  1286,  1288,  1290,
-    1292,  1294,  1297,  1296,  1308,  1309,  1311,  1321,  1322,  1327,
-    1331,  1333,  1335,  1337,  1339,  1341,  1343,  1345,  1350,  1352,
-    1354,  1356,  1358,  1360,  1362,  1364,  1366,  1368,  1370,  1372,
-    1374,  1380,  1381,  1383,  1385,  1387,  1392,  1393,  1399,  1400,
-    1402,  1404,  1409,  1411,  1413,  1415,  1420,  1421,  1423,  1425,
-    1430,  1431,  1433,  1438,  1439,  1441,  1443,  1448,  1450,  1452,
-    1457,  1458,  1462,  1464,  1470,  1469,  1473,  1475,  1480,  1482,
-    1488,  1489,  1494,  1495,  1497,  1498,  1507,  1508,  1510,  1512,
-    1517,  1519,  1525,  1526,  1528,  1531,  1534,  1539,  1540,  1545,
-    1550,  1554,  1556,  1562,  1561,  1568,  1570,  1576,  1577,  1585,
-    1586,  1590,  1591,  1592,  1594,  1596,  1603,  1604,  1606,  1608,
-    1613,  1614,  1620,  1621,  1625,  1626,  1631,  1632,  1633,  1635,
-    1643,  1644,  1646,  1649,  1651,  1655,  1656,  1657,  1659,  1661,
-    1665,  1670,  1678,  1679,  1688,  1690,  1695,  1696,  1697,  1701,
-    1702,  1703,  1707,  1708,  1709,  1713,  1714,  1715,  1720,  1721,
-    1722,  1723,  1729,  1730,  1732,  1737,  1738,  1743,  1744,  1745,
-    1746,  1747,  1762,  1763,  1768,  1769,  1775,  1777,  1780,  1782,
-    1784,  1807,  1808,  1810,  1812,  1817,  1818,  1820,  1825,  1830,
-    1831,  1837,  1836,  1840,  1844,  1846,  1848,  1854,  1855,  1860,
-    1865,  1867,  1872,  1874,  1875,  1877,  1882,  1884,  1886,  1891,
-    1893,  1898,  1903,  1911,  1917,  1916,  1930,  1931,  1936,  1937,
-    1941,  1946,  1951,  1959,  1964,  1975,  1976,  1987,  1988,  1994,
-    1995,  1999,  2000,  2001,  2004,  2003,  2014,  2023,  2029,  2035,
-    2044,  2050,  2056,  2062,  2068,  2076,  2082,  2090,  2096,  2105,
-    2106,  2107,  2111,  2115,  2117,  2122,  2123,  2127,  2128,  2133,
-    2139,  2140,  2143,  2145,  2146,  2150,  2151,  2152,  2153,  2187,
-    2189,  2190,  2192,  2197,  2202,  2207,  2209,  2211,  2216,  2218,
-    2220,  2222,  2227,  2229,  2238,  2240,  2241,  2246,  2248,  2250,
-    2255,  2257,  2259,  2264,  2266,  2268,  2277,  2278,  2279,  2283,
-    2285,  2287,  2292,  2294,  2296,  2301,  2303,  2305,  2320,  2322,
-    2323,  2325,  2330,  2331,  2336,  2338,  2340,  2345,  2347,  2349,
-    2351,  2356,  2358,  2360,  2370,  2372,  2373,  2375,  2380,  2382,
-    2384,  2389,  2391,  2393,  2395,  2400,  2402,  2404,  2435,  2437,
-    2438,  2440,  2445,  2450,  2458,  2460,  2462,  2467,  2469,  2474,
-    2476,  2490,  2491,  2493,  2498,  2500,  2502,  2504,  2506,  2511,
-    2512,  2514,  2516,  2521,  2523,  2525,  2531,  2533,  2535,  2539,
-    2541,  2543,  2545,  2559,  2560,  2562,  2567,  2569,  2571,  2573,
-    2575,  2580,  2581,  2583,  2585,  2590,  2592,  2594,  2600,  2601,
-    2603,  2612,  2615,  2617,  2620,  2622,  2624,  2637,  2638,  2640,
-    2645,  2647,  2649,  2651,  2653,  2658,  2659,  2661,  2663,  2668,
-    2670,  2678,  2679,  2680,  2685,  2686,  2690,  2692,  2694,  2696,
-    2698,  2700,  2707,  2709,  2711,  2713,  2715,  2717,  2719,  2721,
-    2723,  2725,  2730,  2732,  2734,  2739,  2765,  2766,  2768,  2772,
-    2773,  2777,  2779,  2781,  2783,  2785,  2787,  2794,  2796,  2798,
-    2800,  2802,  2804,  2809,  2814,  2816,  2818,  2836,  2838,  2843,
-    2844
+       0,   298,   298,   304,   313,   314,   315,   319,   320,   321,
+     325,   326,   330,   331,   335,   336,   340,   341,   352,   354,
+     356,   358,   363,   364,   370,   374,   376,   377,   379,   380,
+     382,   384,   386,   395,   396,   402,   403,   407,   408,   412,
+     416,   418,   420,   422,   427,   430,   432,   434,   439,   452,
+     454,   456,   458,   460,   462,   464,   466,   468,   470,   472,
+     479,   480,   486,   487,   488,   489,   493,   494,   496,   501,
+     502,   504,   506,   511,   512,   514,   519,   520,   522,   527,
+     528,   530,   532,   534,   539,   540,   542,   547,   548,   553,
+     554,   559,   560,   565,   566,   571,   572,   577,   578,   581,
+     583,   588,   593,   594,   596,   602,   603,   607,   608,   609,
+     610,   611,   612,   613,   614,   615,   616,   617,   623,   625,
+     627,   629,   634,   635,   640,   641,   647,   648,   654,   655,
+     656,   657,   658,   659,   660,   661,   662,   672,   679,   681,
+     691,   692,   697,   699,   705,   707,   711,   712,   717,   722,
+     725,   727,   729,   739,   741,   752,   753,   755,   759,   761,
+     765,   766,   771,   772,   776,   781,   782,   786,   788,   794,
+     795,   799,   801,   803,   805,   811,   812,   816,   818,   823,
+     825,   827,   832,   834,   839,   841,   845,   848,   852,   855,
+     859,   861,   863,   865,   870,   872,   874,   879,   881,   883,
+     885,   887,   892,   894,   896,   898,   903,   915,   916,   921,
+     923,   928,   932,   934,   936,   938,   940,   946,   947,   953,
+     954,   958,   959,   964,   966,   972,   973,   975,   980,   982,
+     989,   991,   995,   996,  1001,  1003,  1007,  1008,  1012,  1014,
+    1018,  1019,  1023,  1024,  1028,  1029,  1044,  1045,  1046,  1047,
+    1048,  1052,  1057,  1064,  1074,  1079,  1084,  1092,  1097,  1102,
+    1107,  1112,  1120,  1142,  1147,  1154,  1156,  1163,  1168,  1173,
+    1184,  1189,  1194,  1199,  1204,  1213,  1218,  1226,  1227,  1228,
+    1229,  1235,  1240,  1248,  1249,  1250,  1251,  1255,  1256,  1257,
+    1258,  1263,  1264,  1273,  1274,  1279,  1280,  1285,  1287,  1289,
+    1291,  1293,  1296,  1295,  1307,  1308,  1310,  1320,  1321,  1326,
+    1330,  1332,  1334,  1336,  1338,  1340,  1342,  1344,  1349,  1351,
+    1353,  1355,  1357,  1359,  1361,  1363,  1365,  1367,  1369,  1371,
+    1373,  1379,  1380,  1382,  1384,  1386,  1391,  1392,  1398,  1399,
+    1401,  1403,  1408,  1410,  1412,  1414,  1419,  1420,  1422,  1424,
+    1429,  1430,  1432,  1437,  1438,  1440,  1442,  1447,  1449,  1451,
+    1456,  1457,  1461,  1463,  1469,  1468,  1472,  1474,  1479,  1481,
+    1487,  1488,  1493,  1494,  1496,  1497,  1506,  1507,  1509,  1511,
+    1516,  1518,  1524,  1525,  1527,  1530,  1533,  1538,  1539,  1544,
+    1549,  1553,  1555,  1561,  1560,  1567,  1569,  1575,  1576,  1584,
+    1585,  1589,  1590,  1591,  1593,  1595,  1602,  1603,  1605,  1607,
+    1612,  1613,  1619,  1620,  1624,  1625,  1630,  1631,  1632,  1634,
+    1642,  1643,  1645,  1648,  1650,  1654,  1655,  1656,  1658,  1660,
+    1664,  1669,  1677,  1678,  1687,  1689,  1694,  1695,  1696,  1700,
+    1701,  1702,  1706,  1707,  1708,  1712,  1713,  1714,  1719,  1720,
+    1721,  1722,  1728,  1729,  1731,  1736,  1737,  1742,  1743,  1744,
+    1745,  1746,  1761,  1762,  1767,  1768,  1774,  1776,  1779,  1781,
+    1783,  1806,  1807,  1809,  1811,  1816,  1817,  1819,  1824,  1829,
+    1830,  1836,  1835,  1839,  1843,  1845,  1847,  1853,  1854,  1859,
+    1864,  1866,  1871,  1873,  1874,  1876,  1881,  1883,  1885,  1890,
+    1892,  1897,  1902,  1910,  1916,  1915,  1929,  1930,  1935,  1936,
+    1940,  1945,  1950,  1958,  1963,  1974,  1975,  1986,  1987,  1993,
+    1994,  1998,  1999,  2000,  2003,  2002,  2013,  2022,  2028,  2034,
+    2043,  2049,  2055,  2061,  2067,  2075,  2081,  2089,  2095,  2104,
+    2105,  2106,  2110,  2114,  2116,  2121,  2122,  2126,  2127,  2132,
+    2138,  2139,  2142,  2144,  2145,  2149,  2150,  2151,  2152,  2186,
+    2188,  2189,  2191,  2196,  2201,  2206,  2208,  2210,  2215,  2217,
+    2219,  2221,  2226,  2228,  2237,  2239,  2240,  2245,  2247,  2249,
+    2254,  2256,  2258,  2263,  2265,  2267,  2276,  2277,  2278,  2282,
+    2284,  2286,  2291,  2293,  2295,  2300,  2302,  2304,  2319,  2321,
+    2322,  2324,  2329,  2330,  2335,  2337,  2339,  2344,  2346,  2348,
+    2350,  2355,  2357,  2359,  2369,  2371,  2372,  2374,  2379,  2381,
+    2383,  2388,  2390,  2392,  2394,  2399,  2401,  2403,  2434,  2436,
+    2437,  2439,  2444,  2449,  2457,  2459,  2461,  2466,  2468,  2473,
+    2475,  2489,  2490,  2492,  2497,  2499,  2501,  2503,  2505,  2510,
+    2511,  2513,  2515,  2520,  2522,  2524,  2530,  2532,  2534,  2538,
+    2540,  2542,  2544,  2558,  2559,  2561,  2566,  2568,  2570,  2572,
+    2574,  2579,  2580,  2582,  2584,  2589,  2591,  2593,  2599,  2600,
+    2602,  2611,  2614,  2616,  2619,  2621,  2623,  2636,  2637,  2639,
+    2644,  2646,  2648,  2650,  2652,  2657,  2658,  2660,  2662,  2667,
+    2669,  2677,  2678,  2679,  2684,  2685,  2689,  2691,  2693,  2695,
+    2697,  2699,  2706,  2708,  2710,  2712,  2714,  2716,  2718,  2720,
+    2722,  2724,  2729,  2731,  2733,  2738,  2764,  2765,  2767,  2771,
+    2772,  2776,  2778,  2780,  2782,  2784,  2786,  2793,  2795,  2797,
+    2799,  2801,  2803,  2808,  2813,  2815,  2817,  2835,  2837,  2842,
+    2843
 };
 #endif
@@ -4960,5 +4960,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 299 "parser.yy"
+#line 298 "parser.yy"
     {
 			typedefTable.enterScope();
@@ -4969,5 +4969,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 305 "parser.yy"
+#line 304 "parser.yy"
     {
 			typedefTable.leaveScope();
@@ -4978,19 +4978,19 @@
 
 /* Line 1806 of yacc.c  */
+#line 313 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
+    break;
+
+  case 5:
+
+/* Line 1806 of yacc.c  */
 #line 314 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
-    break;
-
-  case 5:
+    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
+    break;
+
+  case 6:
 
 /* Line 1806 of yacc.c  */
 #line 315 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
-    break;
-
-  case 6:
-
-/* Line 1806 of yacc.c  */
-#line 316 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
     break;
@@ -4999,5 +4999,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 341 "parser.yy"
+#line 340 "parser.yy"
     { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].tok) ); }
     break;
@@ -5006,5 +5006,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 343 "parser.yy"
+#line 342 "parser.yy"
     {
 			appendStr( (yyvsp[(1) - (2)].constant)->get_constant()->get_value(), (yyvsp[(2) - (2)].tok) );
@@ -5017,5 +5017,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 354 "parser.yy"
+#line 353 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
     break;
@@ -5024,5 +5024,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 356 "parser.yy"
+#line 355 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
     break;
@@ -5031,5 +5031,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 358 "parser.yy"
+#line 357 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (3)].en); }
     break;
@@ -5038,5 +5038,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 360 "parser.yy"
+#line 359 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); }
     break;
@@ -5045,5 +5045,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 370 "parser.yy"
+#line 369 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
     break;
@@ -5052,5 +5052,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 372 "parser.yy"
+#line 371 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
     break;
@@ -5059,5 +5059,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 376 "parser.yy"
+#line 375 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
     break;
@@ -5066,5 +5066,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 379 "parser.yy"
+#line 378 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
     break;
@@ -5073,5 +5073,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 382 "parser.yy"
+#line 381 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
     break;
@@ -5080,5 +5080,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 384 "parser.yy"
+#line 383 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
     break;
@@ -5087,5 +5087,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 386 "parser.yy"
+#line 385 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
     break;
@@ -5094,5 +5094,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 388 "parser.yy"
+#line 387 "parser.yy"
     {
 			Token fn;
@@ -5105,5 +5105,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 398 "parser.yy"
+#line 397 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     break;
@@ -5112,5 +5112,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 403 "parser.yy"
+#line 402 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -5119,5 +5119,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 409 "parser.yy"
+#line 408 "parser.yy"
     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5126,5 +5126,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 414 "parser.yy"
+#line 413 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
     break;
@@ -5133,5 +5133,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 418 "parser.yy"
+#line 417 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
     break;
@@ -5140,5 +5140,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 420 "parser.yy"
+#line 419 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
     break;
@@ -5147,5 +5147,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 422 "parser.yy"
+#line 421 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
     break;
@@ -5154,5 +5154,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 424 "parser.yy"
+#line 423 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
     break;
@@ -5161,5 +5161,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 432 "parser.yy"
+#line 431 "parser.yy"
     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
@@ -5168,5 +5168,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 434 "parser.yy"
+#line 433 "parser.yy"
     { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
     break;
@@ -5175,5 +5175,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 436 "parser.yy"
+#line 435 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
     break;
@@ -5182,5 +5182,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 441 "parser.yy"
+#line 440 "parser.yy"
     {
 			switch ( (yyvsp[(1) - (2)].op) ) {
@@ -5200,5 +5200,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 454 "parser.yy"
+#line 453 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5207,5 +5207,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 456 "parser.yy"
+#line 455 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5214,5 +5214,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 458 "parser.yy"
+#line 457 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5221,5 +5221,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 460 "parser.yy"
+#line 459 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5228,5 +5228,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 462 "parser.yy"
+#line 461 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
     break;
@@ -5235,5 +5235,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 464 "parser.yy"
+#line 463 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5242,5 +5242,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 466 "parser.yy"
+#line 465 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
     break;
@@ -5249,5 +5249,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 468 "parser.yy"
+#line 467 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
     break;
@@ -5256,5 +5256,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 470 "parser.yy"
+#line 469 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
     break;
@@ -5263,5 +5263,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 472 "parser.yy"
+#line 471 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
     break;
@@ -5270,5 +5270,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 474 "parser.yy"
+#line 473 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
     break;
@@ -5277,12 +5277,12 @@
 
 /* Line 1806 of yacc.c  */
+#line 479 "parser.yy"
+    { (yyval.op) = OperKinds::PointTo; }
+    break;
+
+  case 61:
+
+/* Line 1806 of yacc.c  */
 #line 480 "parser.yy"
-    { (yyval.op) = OperKinds::PointTo; }
-    break;
-
-  case 61:
-
-/* Line 1806 of yacc.c  */
-#line 481 "parser.yy"
     { (yyval.op) = OperKinds::AddressOf; }
     break;
@@ -5291,26 +5291,26 @@
 
 /* Line 1806 of yacc.c  */
+#line 486 "parser.yy"
+    { (yyval.op) = OperKinds::UnPlus; }
+    break;
+
+  case 63:
+
+/* Line 1806 of yacc.c  */
 #line 487 "parser.yy"
-    { (yyval.op) = OperKinds::UnPlus; }
-    break;
-
-  case 63:
+    { (yyval.op) = OperKinds::UnMinus; }
+    break;
+
+  case 64:
 
 /* Line 1806 of yacc.c  */
 #line 488 "parser.yy"
-    { (yyval.op) = OperKinds::UnMinus; }
-    break;
-
-  case 64:
+    { (yyval.op) = OperKinds::Neg; }
+    break;
+
+  case 65:
 
 /* Line 1806 of yacc.c  */
 #line 489 "parser.yy"
-    { (yyval.op) = OperKinds::Neg; }
-    break;
-
-  case 65:
-
-/* Line 1806 of yacc.c  */
-#line 490 "parser.yy"
     { (yyval.op) = OperKinds::BitNeg; }
     break;
@@ -5319,5 +5319,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 496 "parser.yy"
+#line 495 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
     break;
@@ -5326,5 +5326,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 498 "parser.yy"
+#line 497 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
     break;
@@ -5333,5 +5333,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 504 "parser.yy"
+#line 503 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5340,5 +5340,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 506 "parser.yy"
+#line 505 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5347,5 +5347,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 508 "parser.yy"
+#line 507 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5354,5 +5354,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 514 "parser.yy"
+#line 513 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5361,5 +5361,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 516 "parser.yy"
+#line 515 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5368,5 +5368,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 522 "parser.yy"
+#line 521 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5375,5 +5375,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 524 "parser.yy"
+#line 523 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5382,5 +5382,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 530 "parser.yy"
+#line 529 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5389,5 +5389,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 532 "parser.yy"
+#line 531 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5396,5 +5396,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 534 "parser.yy"
+#line 533 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5403,5 +5403,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 536 "parser.yy"
+#line 535 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5410,5 +5410,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 542 "parser.yy"
+#line 541 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5417,5 +5417,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 544 "parser.yy"
+#line 543 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5424,5 +5424,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 550 "parser.yy"
+#line 549 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5431,5 +5431,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 556 "parser.yy"
+#line 555 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5438,5 +5438,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 562 "parser.yy"
+#line 561 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5445,5 +5445,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 568 "parser.yy"
+#line 567 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
     break;
@@ -5452,5 +5452,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 574 "parser.yy"
+#line 573 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
     break;
@@ -5459,5 +5459,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 580 "parser.yy"
+#line 579 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
     break;
@@ -5466,5 +5466,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 583 "parser.yy"
+#line 582 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
     break;
@@ -5473,5 +5473,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 585 "parser.yy"
+#line 584 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
     break;
@@ -5480,5 +5480,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 596 "parser.yy"
+#line 595 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5487,5 +5487,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 598 "parser.yy"
+#line 597 "parser.yy"
     { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -5494,5 +5494,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 603 "parser.yy"
+#line 602 "parser.yy"
     { (yyval.en) = nullptr; }
     break;
@@ -5501,75 +5501,75 @@
 
 /* Line 1806 of yacc.c  */
+#line 607 "parser.yy"
+    { (yyval.op) = OperKinds::Assign; }
+    break;
+
+  case 108:
+
+/* Line 1806 of yacc.c  */
 #line 608 "parser.yy"
-    { (yyval.op) = OperKinds::Assign; }
-    break;
-
-  case 108:
+    { (yyval.op) = OperKinds::MulAssn; }
+    break;
+
+  case 109:
 
 /* Line 1806 of yacc.c  */
 #line 609 "parser.yy"
-    { (yyval.op) = OperKinds::MulAssn; }
-    break;
-
-  case 109:
+    { (yyval.op) = OperKinds::DivAssn; }
+    break;
+
+  case 110:
 
 /* Line 1806 of yacc.c  */
 #line 610 "parser.yy"
-    { (yyval.op) = OperKinds::DivAssn; }
-    break;
-
-  case 110:
+    { (yyval.op) = OperKinds::ModAssn; }
+    break;
+
+  case 111:
 
 /* Line 1806 of yacc.c  */
 #line 611 "parser.yy"
-    { (yyval.op) = OperKinds::ModAssn; }
-    break;
-
-  case 111:
+    { (yyval.op) = OperKinds::PlusAssn; }
+    break;
+
+  case 112:
 
 /* Line 1806 of yacc.c  */
 #line 612 "parser.yy"
-    { (yyval.op) = OperKinds::PlusAssn; }
-    break;
-
-  case 112:
+    { (yyval.op) = OperKinds::MinusAssn; }
+    break;
+
+  case 113:
 
 /* Line 1806 of yacc.c  */
 #line 613 "parser.yy"
-    { (yyval.op) = OperKinds::MinusAssn; }
-    break;
-
-  case 113:
+    { (yyval.op) = OperKinds::LSAssn; }
+    break;
+
+  case 114:
 
 /* Line 1806 of yacc.c  */
 #line 614 "parser.yy"
-    { (yyval.op) = OperKinds::LSAssn; }
-    break;
-
-  case 114:
+    { (yyval.op) = OperKinds::RSAssn; }
+    break;
+
+  case 115:
 
 /* Line 1806 of yacc.c  */
 #line 615 "parser.yy"
-    { (yyval.op) = OperKinds::RSAssn; }
-    break;
-
-  case 115:
+    { (yyval.op) = OperKinds::AndAssn; }
+    break;
+
+  case 116:
 
 /* Line 1806 of yacc.c  */
 #line 616 "parser.yy"
-    { (yyval.op) = OperKinds::AndAssn; }
-    break;
-
-  case 116:
+    { (yyval.op) = OperKinds::ERAssn; }
+    break;
+
+  case 117:
 
 /* Line 1806 of yacc.c  */
 #line 617 "parser.yy"
-    { (yyval.op) = OperKinds::ERAssn; }
-    break;
-
-  case 117:
-
-/* Line 1806 of yacc.c  */
-#line 618 "parser.yy"
     { (yyval.op) = OperKinds::OrAssn; }
     break;
@@ -5578,5 +5578,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 625 "parser.yy"
+#line 624 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_tuple() ); }
     break;
@@ -5585,5 +5585,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 627 "parser.yy"
+#line 626 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); }
     break;
@@ -5592,5 +5592,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 629 "parser.yy"
+#line 628 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
     break;
@@ -5599,5 +5599,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 631 "parser.yy"
+#line 630 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
     break;
@@ -5606,5 +5606,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 637 "parser.yy"
+#line 636 "parser.yy"
     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5613,5 +5613,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 643 "parser.yy"
+#line 642 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5620,5 +5620,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 648 "parser.yy"
+#line 647 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -5627,5 +5627,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 657 "parser.yy"
+#line 656 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
     break;
@@ -5634,5 +5634,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 664 "parser.yy"
+#line 663 "parser.yy"
     {
 			Token fn;
@@ -5645,5 +5645,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 674 "parser.yy"
+#line 673 "parser.yy"
     {
 			(yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
@@ -5654,5 +5654,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 681 "parser.yy"
+#line 680 "parser.yy"
     { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
     break;
@@ -5661,5 +5661,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 688 "parser.yy"
+#line 687 "parser.yy"
     { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
     break;
@@ -5668,5 +5668,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 694 "parser.yy"
+#line 693 "parser.yy"
     { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
     break;
@@ -5675,5 +5675,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 699 "parser.yy"
+#line 698 "parser.yy"
     { (yyval.sn) = new StatementNode2( (yyvsp[(1) - (1)].decl) ); }
     break;
@@ -5682,5 +5682,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 701 "parser.yy"
+#line 700 "parser.yy"
     {	// mark all fields in list
 			for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_next() )
@@ -5693,5 +5693,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 707 "parser.yy"
+#line 706 "parser.yy"
     { (yyval.sn) = new StatementNode2( (yyvsp[(1) - (1)].decl) ); }
     break;
@@ -5700,5 +5700,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 714 "parser.yy"
+#line 713 "parser.yy"
     { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
     break;
@@ -5707,5 +5707,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 719 "parser.yy"
+#line 718 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_expr( (yyvsp[(1) - (2)].en) ) ); }
     break;
@@ -5714,5 +5714,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 725 "parser.yy"
+#line 724 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
     break;
@@ -5721,5 +5721,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 727 "parser.yy"
+#line 726 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
     break;
@@ -5728,5 +5728,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 729 "parser.yy"
+#line 728 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     break;
@@ -5735,5 +5735,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 731 "parser.yy"
+#line 730 "parser.yy"
     {
 			StatementNode *sw = new StatementNode2( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
@@ -5750,5 +5750,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 741 "parser.yy"
+#line 740 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     break;
@@ -5757,5 +5757,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 743 "parser.yy"
+#line 742 "parser.yy"
     {
 			StatementNode *sw = new StatementNode2( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
@@ -5767,5 +5767,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 753 "parser.yy"
+#line 752 "parser.yy"
     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
@@ -5774,5 +5774,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 755 "parser.yy"
+#line 754 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5781,5 +5781,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 760 "parser.yy"
+#line 759 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_case( (yyvsp[(1) - (1)].en) ) ); }
     break;
@@ -5788,5 +5788,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 762 "parser.yy"
+#line 761 "parser.yy"
     { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode2( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
     break;
@@ -5795,12 +5795,12 @@
 
 /* Line 1806 of yacc.c  */
+#line 765 "parser.yy"
+    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
+    break;
+
+  case 161:
+
+/* Line 1806 of yacc.c  */
 #line 766 "parser.yy"
-    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
-    break;
-
-  case 161:
-
-/* Line 1806 of yacc.c  */
-#line 767 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_default() ); }
     break;
@@ -5809,5 +5809,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 773 "parser.yy"
+#line 772 "parser.yy"
     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
     break;
@@ -5816,5 +5816,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 777 "parser.yy"
+#line 776 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); }
     break;
@@ -5823,5 +5823,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 782 "parser.yy"
+#line 781 "parser.yy"
     { (yyval.sn) = 0; }
     break;
@@ -5830,5 +5830,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 788 "parser.yy"
+#line 787 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); }
     break;
@@ -5837,5 +5837,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 790 "parser.yy"
+#line 789 "parser.yy"
     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(3) - (3)].sn) ) ) ) ); }
     break;
@@ -5844,5 +5844,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 795 "parser.yy"
+#line 794 "parser.yy"
     { (yyval.sn) = 0; }
     break;
@@ -5851,5 +5851,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 801 "parser.yy"
+#line 800 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
     break;
@@ -5858,5 +5858,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 803 "parser.yy"
+#line 802 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(2) - (3)].sn), *(yyvsp[(3) - (3)].sn) ) ) ) ); }
     break;
@@ -5865,5 +5865,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 805 "parser.yy"
+#line 804 "parser.yy"
     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
     break;
@@ -5872,5 +5872,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 807 "parser.yy"
+#line 806 "parser.yy"
     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(3) - (4)].sn), *(yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
     break;
@@ -5879,5 +5879,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 812 "parser.yy"
+#line 811 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_branch( "", BranchStmt::Break ) ); }
     break;
@@ -5886,5 +5886,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 818 "parser.yy"
+#line 817 "parser.yy"
     { (yyval.sn) = 0; }
     break;
@@ -5893,5 +5893,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 820 "parser.yy"
+#line 819 "parser.yy"
     { (yyval.sn) = 0; }
     break;
@@ -5900,5 +5900,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 825 "parser.yy"
+#line 824 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     break;
@@ -5907,5 +5907,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 827 "parser.yy"
+#line 826 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ) ); }
     break;
@@ -5914,5 +5914,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 829 "parser.yy"
+#line 828 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
     break;
@@ -5921,5 +5921,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 834 "parser.yy"
+#line 833 "parser.yy"
     { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
     break;
@@ -5928,5 +5928,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 836 "parser.yy"
+#line 835 "parser.yy"
     { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
     break;
@@ -5935,5 +5935,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 841 "parser.yy"
+#line 840 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
     break;
@@ -5942,5 +5942,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 845 "parser.yy"
+#line 844 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
     break;
@@ -5949,5 +5949,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 848 "parser.yy"
+#line 847 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_branch( "", BranchStmt::Continue ) ); }
     break;
@@ -5956,5 +5956,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 852 "parser.yy"
+#line 851 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); delete (yyvsp[(2) - (3)].tok); }
     break;
@@ -5963,5 +5963,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 855 "parser.yy"
+#line 854 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_branch( "", BranchStmt::Break ) ); }
     break;
@@ -5970,5 +5970,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 859 "parser.yy"
+#line 858 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); delete (yyvsp[(2) - (3)].tok); }
     break;
@@ -5977,5 +5977,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 861 "parser.yy"
+#line 860 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_return( (yyvsp[(2) - (3)].en) ) ); }
     break;
@@ -5984,5 +5984,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 863 "parser.yy"
+#line 862 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     break;
@@ -5991,5 +5991,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 865 "parser.yy"
+#line 864 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     break;
@@ -5998,5 +5998,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 867 "parser.yy"
+#line 866 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_throw( (yyvsp[(2) - (5)].en) ) ); }
     break;
@@ -6005,5 +6005,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 872 "parser.yy"
+#line 871 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
     break;
@@ -6012,5 +6012,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 874 "parser.yy"
+#line 873 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
     break;
@@ -6019,5 +6019,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 876 "parser.yy"
+#line 875 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
     break;
@@ -6026,5 +6026,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 883 "parser.yy"
+#line 882 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
     break;
@@ -6033,5 +6033,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 885 "parser.yy"
+#line 884 "parser.yy"
     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode2( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
     break;
@@ -6040,5 +6040,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 887 "parser.yy"
+#line 886 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
     break;
@@ -6047,5 +6047,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 889 "parser.yy"
+#line 888 "parser.yy"
     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode2( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
     break;
@@ -6054,5 +6054,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 894 "parser.yy"
+#line 893 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
     break;
@@ -6061,5 +6061,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 896 "parser.yy"
+#line 895 "parser.yy"
     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode2( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
     break;
@@ -6068,5 +6068,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 898 "parser.yy"
+#line 897 "parser.yy"
     { (yyval.sn) = new StatementNode2( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
     break;
@@ -6075,5 +6075,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 900 "parser.yy"
+#line 899 "parser.yy"
     { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode2( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
     break;
@@ -6082,5 +6082,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 905 "parser.yy"
+#line 904 "parser.yy"
     {
 			(yyval.sn) = new StatementNode2( build_finally( (yyvsp[(2) - (2)].sn) ) );
@@ -6091,5 +6091,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 918 "parser.yy"
+#line 917 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6101,5 +6101,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 923 "parser.yy"
+#line 922 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6108,5 +6108,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 925 "parser.yy"
+#line 924 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6118,6 +6118,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 934 "parser.yy"
-    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
+#line 933 "parser.yy"
+    { (yyval.sn) = new AsmStmtNode( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
     break;
 
@@ -6125,6 +6125,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 936 "parser.yy"
-    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
+#line 935 "parser.yy"
+    { (yyval.sn) = new AsmStmtNode( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
     break;
 
@@ -6132,6 +6132,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 938 "parser.yy"
-    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
+#line 937 "parser.yy"
+    { (yyval.sn) = new AsmStmtNode( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
     break;
 
@@ -6139,6 +6139,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 940 "parser.yy"
-    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ); }
+#line 939 "parser.yy"
+    { (yyval.sn) = new AsmStmtNode( (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ); }
     break;
 
@@ -6146,6 +6146,6 @@
 
 /* Line 1806 of yacc.c  */
-#line 942 "parser.yy"
-    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ); }
+#line 941 "parser.yy"
+    { (yyval.sn) = new AsmStmtNode( (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ); }
     break;
 
@@ -6153,5 +6153,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 947 "parser.yy"
+#line 946 "parser.yy"
     { (yyval.flag) = false; }
     break;
@@ -6160,5 +6160,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 949 "parser.yy"
+#line 948 "parser.yy"
     { (yyval.flag) = true; }
     break;
@@ -6167,5 +6167,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 954 "parser.yy"
+#line 953 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -6174,5 +6174,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 961 "parser.yy"
+#line 960 "parser.yy"
     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     break;
@@ -6181,5 +6181,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 966 "parser.yy"
+#line 965 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_asm( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
     break;
@@ -6188,5 +6188,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 968 "parser.yy"
+#line 967 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_asm( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
     break;
@@ -6195,5 +6195,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 973 "parser.yy"
+#line 972 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -6202,5 +6202,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 975 "parser.yy"
+#line 974 "parser.yy"
     { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
     break;
@@ -6209,5 +6209,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 977 "parser.yy"
+#line 976 "parser.yy"
     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
     break;
@@ -6216,5 +6216,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 982 "parser.yy"
+#line 981 "parser.yy"
     { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -6223,5 +6223,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 984 "parser.yy"
+#line 983 "parser.yy"
     { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
     break;
@@ -6230,5 +6230,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 991 "parser.yy"
+#line 990 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -6237,5 +6237,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 998 "parser.yy"
+#line 997 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6244,5 +6244,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1003 "parser.yy"
+#line 1002 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -6251,9 +6251,16 @@
 
 /* Line 1806 of yacc.c  */
-#line 1010 "parser.yy"
+#line 1009 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 242:
+
+/* Line 1806 of yacc.c  */
+#line 1023 "parser.yy"
+    {}
+    break;
+
+  case 243:
 
 /* Line 1806 of yacc.c  */
@@ -6262,15 +6269,8 @@
     break;
 
-  case 243:
-
-/* Line 1806 of yacc.c  */
-#line 1025 "parser.yy"
-    {}
-    break;
-
   case 251:
 
 /* Line 1806 of yacc.c  */
-#line 1054 "parser.yy"
+#line 1053 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6282,5 +6282,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1061 "parser.yy"
+#line 1060 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6292,5 +6292,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1066 "parser.yy"
+#line 1065 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
@@ -6302,5 +6302,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1076 "parser.yy"
+#line 1075 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
@@ -6312,5 +6312,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1081 "parser.yy"
+#line 1080 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
@@ -6322,5 +6322,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1086 "parser.yy"
+#line 1085 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
@@ -6332,5 +6332,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1094 "parser.yy"
+#line 1093 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6342,5 +6342,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1099 "parser.yy"
+#line 1098 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6352,5 +6352,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1104 "parser.yy"
+#line 1103 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6362,5 +6362,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1109 "parser.yy"
+#line 1108 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6372,5 +6372,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1114 "parser.yy"
+#line 1113 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
@@ -6382,5 +6382,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1122 "parser.yy"
+#line 1121 "parser.yy"
     {
 			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
@@ -6391,5 +6391,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1145 "parser.yy"
+#line 1144 "parser.yy"
     {
 			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
@@ -6400,5 +6400,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1149 "parser.yy"
+#line 1148 "parser.yy"
     {
 			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
@@ -6409,5 +6409,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1156 "parser.yy"
+#line 1155 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     break;
@@ -6416,5 +6416,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1160 "parser.yy"
+#line 1159 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
     break;
@@ -6423,5 +6423,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1165 "parser.yy"
+#line 1164 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6433,5 +6433,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1170 "parser.yy"
+#line 1169 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6443,5 +6443,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1175 "parser.yy"
+#line 1174 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
@@ -6453,5 +6453,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1186 "parser.yy"
+#line 1185 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6463,5 +6463,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1191 "parser.yy"
+#line 1190 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6473,5 +6473,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1196 "parser.yy"
+#line 1195 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6483,5 +6483,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1201 "parser.yy"
+#line 1200 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6493,5 +6493,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1206 "parser.yy"
+#line 1205 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6503,5 +6503,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1215 "parser.yy"
+#line 1214 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
@@ -6513,5 +6513,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1220 "parser.yy"
+#line 1219 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
@@ -6523,5 +6523,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1237 "parser.yy"
+#line 1236 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6533,5 +6533,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1242 "parser.yy"
+#line 1241 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6543,5 +6543,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1264 "parser.yy"
+#line 1263 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -6550,5 +6550,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1276 "parser.yy"
+#line 1275 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6557,5 +6557,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1287 "parser.yy"
+#line 1286 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     break;
@@ -6564,5 +6564,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1289 "parser.yy"
+#line 1288 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     break;
@@ -6571,5 +6571,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1291 "parser.yy"
+#line 1290 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
     break;
@@ -6578,5 +6578,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1293 "parser.yy"
+#line 1292 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
     break;
@@ -6585,5 +6585,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1295 "parser.yy"
+#line 1294 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
     break;
@@ -6592,5 +6592,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1297 "parser.yy"
+#line 1296 "parser.yy"
     {
 			typedefTable.enterScope();
@@ -6601,5 +6601,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1301 "parser.yy"
+#line 1300 "parser.yy"
     {
 			typedefTable.leaveScope();
@@ -6611,5 +6611,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1310 "parser.yy"
+#line 1309 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6618,5 +6618,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1312 "parser.yy"
+#line 1311 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6625,5 +6625,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1323 "parser.yy"
+#line 1322 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6632,5 +6632,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1332 "parser.yy"
+#line 1331 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     break;
@@ -6639,5 +6639,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1334 "parser.yy"
+#line 1333 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
     break;
@@ -6646,5 +6646,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1336 "parser.yy"
+#line 1335 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
     break;
@@ -6653,5 +6653,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1338 "parser.yy"
+#line 1337 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
     break;
@@ -6660,5 +6660,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1340 "parser.yy"
+#line 1339 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
     break;
@@ -6667,5 +6667,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1342 "parser.yy"
+#line 1341 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
     break;
@@ -6674,5 +6674,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1344 "parser.yy"
+#line 1343 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
     break;
@@ -6681,5 +6681,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1346 "parser.yy"
+#line 1345 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
     break;
@@ -6688,5 +6688,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1351 "parser.yy"
+#line 1350 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
     break;
@@ -6695,5 +6695,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1353 "parser.yy"
+#line 1352 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
     break;
@@ -6702,5 +6702,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1355 "parser.yy"
+#line 1354 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
     break;
@@ -6709,5 +6709,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1357 "parser.yy"
+#line 1356 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
     break;
@@ -6716,5 +6716,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1359 "parser.yy"
+#line 1358 "parser.yy"
     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
     break;
@@ -6723,5 +6723,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1361 "parser.yy"
+#line 1360 "parser.yy"
     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
     break;
@@ -6730,5 +6730,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1363 "parser.yy"
+#line 1362 "parser.yy"
     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
     break;
@@ -6737,5 +6737,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1365 "parser.yy"
+#line 1364 "parser.yy"
     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
     break;
@@ -6744,5 +6744,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1367 "parser.yy"
+#line 1366 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
     break;
@@ -6751,5 +6751,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1369 "parser.yy"
+#line 1368 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
     break;
@@ -6758,5 +6758,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1371 "parser.yy"
+#line 1370 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
     break;
@@ -6765,5 +6765,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1373 "parser.yy"
+#line 1372 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
     break;
@@ -6772,5 +6772,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1375 "parser.yy"
+#line 1374 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
     break;
@@ -6779,5 +6779,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1382 "parser.yy"
+#line 1381 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6786,5 +6786,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1384 "parser.yy"
+#line 1383 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6793,5 +6793,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1386 "parser.yy"
+#line 1385 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6800,5 +6800,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1388 "parser.yy"
+#line 1387 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -6807,5 +6807,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1394 "parser.yy"
+#line 1393 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6814,5 +6814,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1401 "parser.yy"
+#line 1400 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6821,5 +6821,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1403 "parser.yy"
+#line 1402 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6828,5 +6828,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1405 "parser.yy"
+#line 1404 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6835,5 +6835,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1410 "parser.yy"
+#line 1409 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
     break;
@@ -6842,5 +6842,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1412 "parser.yy"
+#line 1411 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
     break;
@@ -6849,5 +6849,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1414 "parser.yy"
+#line 1413 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -6856,5 +6856,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1416 "parser.yy"
+#line 1415 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     break;
@@ -6863,5 +6863,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1422 "parser.yy"
+#line 1421 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6870,5 +6870,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1424 "parser.yy"
+#line 1423 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6877,5 +6877,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1426 "parser.yy"
+#line 1425 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6884,5 +6884,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1432 "parser.yy"
+#line 1431 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6891,5 +6891,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1434 "parser.yy"
+#line 1433 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6898,5 +6898,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1440 "parser.yy"
+#line 1439 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6905,5 +6905,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1442 "parser.yy"
+#line 1441 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6912,5 +6912,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1444 "parser.yy"
+#line 1443 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6919,5 +6919,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1449 "parser.yy"
+#line 1448 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -6926,5 +6926,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1451 "parser.yy"
+#line 1450 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6933,5 +6933,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1453 "parser.yy"
+#line 1452 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6940,5 +6940,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1463 "parser.yy"
+#line 1462 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl), true ); }
     break;
@@ -6947,5 +6947,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1465 "parser.yy"
+#line 1464 "parser.yy"
     {
 			typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
@@ -6957,5 +6957,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1470 "parser.yy"
+#line 1469 "parser.yy"
     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     break;
@@ -6964,5 +6964,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1472 "parser.yy"
+#line 1471 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl), true ); }
     break;
@@ -6971,5 +6971,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1474 "parser.yy"
+#line 1473 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
     break;
@@ -6978,5 +6978,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1476 "parser.yy"
+#line 1475 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     break;
@@ -6985,5 +6985,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1481 "parser.yy"
+#line 1480 "parser.yy"
     { (yyval.aggKey) = DeclarationNode::Struct; }
     break;
@@ -6992,5 +6992,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1483 "parser.yy"
+#line 1482 "parser.yy"
     { (yyval.aggKey) = DeclarationNode::Union; }
     break;
@@ -6999,5 +6999,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1488 "parser.yy"
+#line 1487 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7006,5 +7006,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1490 "parser.yy"
+#line 1489 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     break;
@@ -7013,5 +7013,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1496 "parser.yy"
+#line 1495 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
     break;
@@ -7020,5 +7020,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1499 "parser.yy"
+#line 1498 "parser.yy"
     {	// mark all fields in list
 			for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_next() )
@@ -7031,5 +7031,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1509 "parser.yy"
+#line 1508 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     break;
@@ -7038,5 +7038,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1511 "parser.yy"
+#line 1510 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     break;
@@ -7045,5 +7045,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1513 "parser.yy"
+#line 1512 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
     break;
@@ -7052,5 +7052,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1518 "parser.yy"
+#line 1517 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7059,5 +7059,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1520 "parser.yy"
+#line 1519 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
     break;
@@ -7066,5 +7066,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1525 "parser.yy"
+#line 1524 "parser.yy"
     { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
     break;
@@ -7073,5 +7073,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1527 "parser.yy"
+#line 1526 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
     break;
@@ -7080,5 +7080,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1530 "parser.yy"
+#line 1529 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     break;
@@ -7087,5 +7087,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1533 "parser.yy"
+#line 1532 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     break;
@@ -7094,5 +7094,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1539 "parser.yy"
+#line 1538 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -7101,5 +7101,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1541 "parser.yy"
+#line 1540 "parser.yy"
     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
@@ -7108,5 +7108,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1546 "parser.yy"
+#line 1545 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -7115,5 +7115,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1555 "parser.yy"
+#line 1554 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
     break;
@@ -7122,5 +7122,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1557 "parser.yy"
+#line 1556 "parser.yy"
     {
 			typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
@@ -7132,5 +7132,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1562 "parser.yy"
+#line 1561 "parser.yy"
     { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     break;
@@ -7139,5 +7139,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1564 "parser.yy"
+#line 1563 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
     break;
@@ -7146,5 +7146,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1569 "parser.yy"
+#line 1568 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     break;
@@ -7153,5 +7153,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1571 "parser.yy"
+#line 1570 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
     break;
@@ -7160,5 +7160,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1576 "parser.yy"
+#line 1575 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -7167,5 +7167,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1578 "parser.yy"
+#line 1577 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -7174,5 +7174,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1585 "parser.yy"
+#line 1584 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7181,5 +7181,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1593 "parser.yy"
+#line 1592 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7188,5 +7188,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1595 "parser.yy"
+#line 1594 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
@@ -7195,5 +7195,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1597 "parser.yy"
+#line 1596 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
@@ -7202,5 +7202,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1605 "parser.yy"
+#line 1604 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7209,5 +7209,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1607 "parser.yy"
+#line 1606 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7216,5 +7216,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1609 "parser.yy"
+#line 1608 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
     break;
@@ -7223,5 +7223,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1615 "parser.yy"
+#line 1614 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7230,5 +7230,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1620 "parser.yy"
+#line 1619 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7237,5 +7237,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1627 "parser.yy"
+#line 1626 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
@@ -7244,5 +7244,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1634 "parser.yy"
+#line 1633 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7251,5 +7251,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1636 "parser.yy"
+#line 1635 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7258,5 +7258,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1645 "parser.yy"
+#line 1644 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     break;
@@ -7265,5 +7265,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1648 "parser.yy"
+#line 1647 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     break;
@@ -7272,5 +7272,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1650 "parser.yy"
+#line 1649 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
     break;
@@ -7279,5 +7279,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1660 "parser.yy"
+#line 1659 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7286,5 +7286,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1666 "parser.yy"
+#line 1665 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7296,5 +7296,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1671 "parser.yy"
+#line 1670 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7306,5 +7306,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1680 "parser.yy"
+#line 1679 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7313,5 +7313,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1689 "parser.yy"
+#line 1688 "parser.yy"
     { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -7320,5 +7320,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1691 "parser.yy"
+#line 1690 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
     break;
@@ -7327,5 +7327,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1716 "parser.yy"
+#line 1715 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7334,5 +7334,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1724 "parser.yy"
+#line 1723 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7341,5 +7341,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1729 "parser.yy"
+#line 1728 "parser.yy"
     { (yyval.in) = 0; }
     break;
@@ -7348,5 +7348,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1731 "parser.yy"
+#line 1730 "parser.yy"
     { (yyval.in) = (yyvsp[(2) - (2)].in); }
     break;
@@ -7355,5 +7355,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1733 "parser.yy"
+#line 1732 "parser.yy"
     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
     break;
@@ -7362,12 +7362,12 @@
 
 /* Line 1806 of yacc.c  */
+#line 1736 "parser.yy"
+    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
+    break;
+
+  case 456:
+
+/* Line 1806 of yacc.c  */
 #line 1737 "parser.yy"
-    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
-    break;
-
-  case 456:
-
-/* Line 1806 of yacc.c  */
-#line 1738 "parser.yy"
     { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     break;
@@ -7376,5 +7376,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1743 "parser.yy"
+#line 1742 "parser.yy"
     { (yyval.in) = 0; }
     break;
@@ -7383,12 +7383,12 @@
 
 /* Line 1806 of yacc.c  */
+#line 1744 "parser.yy"
+    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
+    break;
+
+  case 460:
+
+/* Line 1806 of yacc.c  */
 #line 1745 "parser.yy"
-    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
-    break;
-
-  case 460:
-
-/* Line 1806 of yacc.c  */
-#line 1746 "parser.yy"
     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
     break;
@@ -7397,5 +7397,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1748 "parser.yy"
+#line 1747 "parser.yy"
     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
     break;
@@ -7404,5 +7404,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1764 "parser.yy"
+#line 1763 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
     break;
@@ -7411,5 +7411,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1770 "parser.yy"
+#line 1769 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
     break;
@@ -7418,5 +7418,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1776 "parser.yy"
+#line 1775 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
     break;
@@ -7425,5 +7425,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1779 "parser.yy"
+#line 1778 "parser.yy"
     { (yyval.en) = (yyvsp[(3) - (5)].en); }
     break;
@@ -7432,5 +7432,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1781 "parser.yy"
+#line 1780 "parser.yy"
     { (yyval.en) = (yyvsp[(3) - (5)].en); }
     break;
@@ -7439,5 +7439,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1783 "parser.yy"
+#line 1782 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
     break;
@@ -7446,5 +7446,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1785 "parser.yy"
+#line 1784 "parser.yy"
     { (yyval.en) = (yyvsp[(4) - (6)].en); }
     break;
@@ -7453,5 +7453,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1809 "parser.yy"
+#line 1808 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7460,5 +7460,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1811 "parser.yy"
+#line 1810 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7467,5 +7467,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1813 "parser.yy"
+#line 1812 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -7474,5 +7474,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1819 "parser.yy"
+#line 1818 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7481,5 +7481,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1821 "parser.yy"
+#line 1820 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7488,5 +7488,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1826 "parser.yy"
+#line 1825 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     break;
@@ -7495,5 +7495,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1832 "parser.yy"
+#line 1831 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -7502,5 +7502,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1837 "parser.yy"
+#line 1836 "parser.yy"
     { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
     break;
@@ -7509,5 +7509,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1839 "parser.yy"
+#line 1838 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -7516,5 +7516,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1845 "parser.yy"
+#line 1844 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Type; }
     break;
@@ -7523,5 +7523,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1847 "parser.yy"
+#line 1846 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Ftype; }
     break;
@@ -7530,5 +7530,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1849 "parser.yy"
+#line 1848 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Dtype; }
     break;
@@ -7537,5 +7537,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1854 "parser.yy"
+#line 1853 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7544,5 +7544,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1856 "parser.yy"
+#line 1855 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     break;
@@ -7551,5 +7551,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1861 "parser.yy"
+#line 1860 "parser.yy"
     {
 			typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
@@ -7561,5 +7561,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1866 "parser.yy"
+#line 1865 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     break;
@@ -7568,5 +7568,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1868 "parser.yy"
+#line 1867 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7575,5 +7575,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1873 "parser.yy"
+#line 1872 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
     break;
@@ -7582,5 +7582,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1876 "parser.yy"
+#line 1875 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
     break;
@@ -7589,5 +7589,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1878 "parser.yy"
+#line 1877 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     break;
@@ -7596,5 +7596,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1883 "parser.yy"
+#line 1882 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     break;
@@ -7603,5 +7603,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1885 "parser.yy"
+#line 1884 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -7610,5 +7610,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1887 "parser.yy"
+#line 1886 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -7617,5 +7617,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1892 "parser.yy"
+#line 1891 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7624,5 +7624,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1894 "parser.yy"
+#line 1893 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -7631,5 +7631,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1899 "parser.yy"
+#line 1898 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
@@ -7641,5 +7641,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1904 "parser.yy"
+#line 1903 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
@@ -7651,5 +7651,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1912 "parser.yy"
+#line 1911 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
@@ -7661,5 +7661,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1917 "parser.yy"
+#line 1916 "parser.yy"
     {
 			typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
@@ -7671,5 +7671,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1922 "parser.yy"
+#line 1921 "parser.yy"
     {
 			typedefTable.leaveTrait();
@@ -7682,5 +7682,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1932 "parser.yy"
+#line 1931 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -7689,5 +7689,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1942 "parser.yy"
+#line 1941 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7699,5 +7699,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1947 "parser.yy"
+#line 1946 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7709,5 +7709,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1952 "parser.yy"
+#line 1951 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
@@ -7719,5 +7719,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1960 "parser.yy"
+#line 1959 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7729,5 +7729,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1965 "parser.yy"
+#line 1964 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7739,5 +7739,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1975 "parser.yy"
+#line 1974 "parser.yy"
     {}
     break;
@@ -7746,5 +7746,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1977 "parser.yy"
+#line 1976 "parser.yy"
     {
 			if ( theTree ) {
@@ -7759,5 +7759,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1989 "parser.yy"
+#line 1988 "parser.yy"
     { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
     break;
@@ -7766,5 +7766,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1994 "parser.yy"
+#line 1993 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7773,5 +7773,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2002 "parser.yy"
+#line 2001 "parser.yy"
     {}
     break;
@@ -7780,5 +7780,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2004 "parser.yy"
+#line 2003 "parser.yy"
     {
 			linkageStack.push( linkage );
@@ -7790,5 +7790,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2009 "parser.yy"
+#line 2008 "parser.yy"
     {
 			linkage = linkageStack.top();
@@ -7801,5 +7801,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2015 "parser.yy"
+#line 2014 "parser.yy"
     {	// mark all fields in list
 			for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_next() )
@@ -7812,5 +7812,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2030 "parser.yy"
+#line 2029 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7823,5 +7823,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2036 "parser.yy"
+#line 2035 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7834,5 +7834,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2045 "parser.yy"
+#line 2044 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7845,5 +7845,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2051 "parser.yy"
+#line 2050 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7856,5 +7856,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2057 "parser.yy"
+#line 2056 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7867,5 +7867,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2063 "parser.yy"
+#line 2062 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7878,5 +7878,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2069 "parser.yy"
+#line 2068 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7889,5 +7889,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2077 "parser.yy"
+#line 2076 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7900,5 +7900,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2083 "parser.yy"
+#line 2082 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7911,5 +7911,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2091 "parser.yy"
+#line 2090 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7922,5 +7922,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2097 "parser.yy"
+#line 2096 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7933,5 +7933,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2112 "parser.yy"
+#line 2111 "parser.yy"
     { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -7940,5 +7940,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2122 "parser.yy"
+#line 2121 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7947,5 +7947,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2129 "parser.yy"
+#line 2128 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7954,9 +7954,16 @@
 
 /* Line 1806 of yacc.c  */
-#line 2135 "parser.yy"
+#line 2134 "parser.yy"
     { (yyval.decl) = 0; }
     break;
 
   case 555:
+
+/* Line 1806 of yacc.c  */
+#line 2149 "parser.yy"
+    {}
+    break;
+
+  case 556:
 
 /* Line 1806 of yacc.c  */
@@ -7965,5 +7972,5 @@
     break;
 
-  case 556:
+  case 557:
 
 /* Line 1806 of yacc.c  */
@@ -7972,5 +7979,5 @@
     break;
 
-  case 557:
+  case 558:
 
 /* Line 1806 of yacc.c  */
@@ -7979,15 +7986,8 @@
     break;
 
-  case 558:
-
-/* Line 1806 of yacc.c  */
-#line 2153 "parser.yy"
-    {}
-    break;
-
   case 559:
 
 /* Line 1806 of yacc.c  */
-#line 2188 "parser.yy"
+#line 2187 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7996,5 +7996,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2191 "parser.yy"
+#line 2190 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8003,5 +8003,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2193 "parser.yy"
+#line 2192 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8010,5 +8010,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2198 "parser.yy"
+#line 2197 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
@@ -8020,5 +8020,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2203 "parser.yy"
+#line 2202 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8027,5 +8027,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2208 "parser.yy"
+#line 2207 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8034,5 +8034,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2210 "parser.yy"
+#line 2209 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8041,5 +8041,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2212 "parser.yy"
+#line 2211 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8048,5 +8048,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2217 "parser.yy"
+#line 2216 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8055,5 +8055,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2219 "parser.yy"
+#line 2218 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8062,5 +8062,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2221 "parser.yy"
+#line 2220 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8069,5 +8069,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2223 "parser.yy"
+#line 2222 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8076,5 +8076,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2228 "parser.yy"
+#line 2227 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8083,5 +8083,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2230 "parser.yy"
+#line 2229 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8090,5 +8090,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2239 "parser.yy"
+#line 2238 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8097,5 +8097,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2242 "parser.yy"
+#line 2241 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8104,5 +8104,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2247 "parser.yy"
+#line 2246 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8111,5 +8111,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2249 "parser.yy"
+#line 2248 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8118,5 +8118,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2251 "parser.yy"
+#line 2250 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8125,5 +8125,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2256 "parser.yy"
+#line 2255 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8132,5 +8132,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2258 "parser.yy"
+#line 2257 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8139,5 +8139,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2260 "parser.yy"
+#line 2259 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8146,5 +8146,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2265 "parser.yy"
+#line 2264 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8153,5 +8153,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2267 "parser.yy"
+#line 2266 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8160,5 +8160,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2269 "parser.yy"
+#line 2268 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8167,5 +8167,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2284 "parser.yy"
+#line 2283 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -8174,5 +8174,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2286 "parser.yy"
+#line 2285 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
     break;
@@ -8181,5 +8181,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2288 "parser.yy"
+#line 2287 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8188,5 +8188,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2293 "parser.yy"
+#line 2292 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8195,5 +8195,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2295 "parser.yy"
+#line 2294 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8202,5 +8202,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2297 "parser.yy"
+#line 2296 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8209,5 +8209,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2302 "parser.yy"
+#line 2301 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8216,5 +8216,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2304 "parser.yy"
+#line 2303 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8223,5 +8223,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2306 "parser.yy"
+#line 2305 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8230,5 +8230,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2321 "parser.yy"
+#line 2320 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8237,5 +8237,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2324 "parser.yy"
+#line 2323 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8244,5 +8244,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2326 "parser.yy"
+#line 2325 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8251,5 +8251,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2332 "parser.yy"
+#line 2331 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8258,5 +8258,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2337 "parser.yy"
+#line 2336 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8265,5 +8265,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2339 "parser.yy"
+#line 2338 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8272,5 +8272,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2341 "parser.yy"
+#line 2340 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8279,5 +8279,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2346 "parser.yy"
+#line 2345 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8286,5 +8286,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2348 "parser.yy"
+#line 2347 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8293,5 +8293,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2350 "parser.yy"
+#line 2349 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8300,5 +8300,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2352 "parser.yy"
+#line 2351 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8307,5 +8307,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2357 "parser.yy"
+#line 2356 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8314,5 +8314,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2359 "parser.yy"
+#line 2358 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8321,5 +8321,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2361 "parser.yy"
+#line 2360 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8328,5 +8328,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2371 "parser.yy"
+#line 2370 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8335,5 +8335,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2374 "parser.yy"
+#line 2373 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8342,5 +8342,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2376 "parser.yy"
+#line 2375 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8349,5 +8349,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2381 "parser.yy"
+#line 2380 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8356,5 +8356,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2383 "parser.yy"
+#line 2382 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8363,5 +8363,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2385 "parser.yy"
+#line 2384 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8370,5 +8370,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2390 "parser.yy"
+#line 2389 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8377,5 +8377,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2392 "parser.yy"
+#line 2391 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8384,5 +8384,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2394 "parser.yy"
+#line 2393 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8391,5 +8391,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2396 "parser.yy"
+#line 2395 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8398,5 +8398,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2401 "parser.yy"
+#line 2400 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8405,5 +8405,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2403 "parser.yy"
+#line 2402 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8412,5 +8412,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2405 "parser.yy"
+#line 2404 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8419,5 +8419,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2436 "parser.yy"
+#line 2435 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8426,5 +8426,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2439 "parser.yy"
+#line 2438 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8433,5 +8433,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2441 "parser.yy"
+#line 2440 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8440,5 +8440,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2446 "parser.yy"
+#line 2445 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
@@ -8450,5 +8450,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2451 "parser.yy"
+#line 2450 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
@@ -8460,5 +8460,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2459 "parser.yy"
+#line 2458 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8467,5 +8467,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2461 "parser.yy"
+#line 2460 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8474,5 +8474,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2463 "parser.yy"
+#line 2462 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8481,5 +8481,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2468 "parser.yy"
+#line 2467 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8488,5 +8488,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2470 "parser.yy"
+#line 2469 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8495,5 +8495,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2475 "parser.yy"
+#line 2474 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8502,5 +8502,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2477 "parser.yy"
+#line 2476 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8509,5 +8509,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2492 "parser.yy"
+#line 2491 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8516,5 +8516,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2494 "parser.yy"
+#line 2493 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8523,5 +8523,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2499 "parser.yy"
+#line 2498 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
@@ -8530,5 +8530,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2501 "parser.yy"
+#line 2500 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8537,5 +8537,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2503 "parser.yy"
+#line 2502 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8544,5 +8544,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2505 "parser.yy"
+#line 2504 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8551,5 +8551,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2507 "parser.yy"
+#line 2506 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8558,5 +8558,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2513 "parser.yy"
+#line 2512 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8565,5 +8565,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2515 "parser.yy"
+#line 2514 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8572,5 +8572,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2517 "parser.yy"
+#line 2516 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8579,5 +8579,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2522 "parser.yy"
+#line 2521 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     break;
@@ -8586,5 +8586,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2524 "parser.yy"
+#line 2523 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8593,5 +8593,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2526 "parser.yy"
+#line 2525 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8600,5 +8600,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2532 "parser.yy"
+#line 2531 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     break;
@@ -8607,5 +8607,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2534 "parser.yy"
+#line 2533 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -8614,5 +8614,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2540 "parser.yy"
+#line 2539 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     break;
@@ -8621,5 +8621,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2542 "parser.yy"
+#line 2541 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     break;
@@ -8628,5 +8628,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2544 "parser.yy"
+#line 2543 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
     break;
@@ -8635,5 +8635,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2546 "parser.yy"
+#line 2545 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     break;
@@ -8642,5 +8642,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2561 "parser.yy"
+#line 2560 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8649,5 +8649,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2563 "parser.yy"
+#line 2562 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8656,5 +8656,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2568 "parser.yy"
+#line 2567 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
@@ -8663,5 +8663,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2570 "parser.yy"
+#line 2569 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8670,5 +8670,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2572 "parser.yy"
+#line 2571 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8677,5 +8677,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2574 "parser.yy"
+#line 2573 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8684,5 +8684,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2576 "parser.yy"
+#line 2575 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8691,5 +8691,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2582 "parser.yy"
+#line 2581 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8698,5 +8698,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2584 "parser.yy"
+#line 2583 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8705,5 +8705,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2586 "parser.yy"
+#line 2585 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8712,5 +8712,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2591 "parser.yy"
+#line 2590 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     break;
@@ -8719,5 +8719,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2593 "parser.yy"
+#line 2592 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8726,5 +8726,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2595 "parser.yy"
+#line 2594 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8733,5 +8733,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2602 "parser.yy"
+#line 2601 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8740,5 +8740,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2613 "parser.yy"
+#line 2612 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     break;
@@ -8747,5 +8747,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2616 "parser.yy"
+#line 2615 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     break;
@@ -8754,5 +8754,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2618 "parser.yy"
+#line 2617 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     break;
@@ -8761,5 +8761,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2621 "parser.yy"
+#line 2620 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     break;
@@ -8768,5 +8768,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2623 "parser.yy"
+#line 2622 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     break;
@@ -8775,5 +8775,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2625 "parser.yy"
+#line 2624 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     break;
@@ -8782,5 +8782,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2639 "parser.yy"
+#line 2638 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8789,5 +8789,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2641 "parser.yy"
+#line 2640 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8796,5 +8796,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2646 "parser.yy"
+#line 2645 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
@@ -8803,5 +8803,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2648 "parser.yy"
+#line 2647 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8810,5 +8810,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2650 "parser.yy"
+#line 2649 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8817,5 +8817,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2652 "parser.yy"
+#line 2651 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8824,5 +8824,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2654 "parser.yy"
+#line 2653 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8831,5 +8831,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2660 "parser.yy"
+#line 2659 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8838,5 +8838,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2662 "parser.yy"
+#line 2661 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8845,5 +8845,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2664 "parser.yy"
+#line 2663 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8852,5 +8852,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2669 "parser.yy"
+#line 2668 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8859,5 +8859,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2671 "parser.yy"
+#line 2670 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8866,5 +8866,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2681 "parser.yy"
+#line 2680 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8873,5 +8873,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2691 "parser.yy"
+#line 2690 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8880,5 +8880,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2693 "parser.yy"
+#line 2692 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8887,5 +8887,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2695 "parser.yy"
+#line 2694 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8894,5 +8894,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2697 "parser.yy"
+#line 2696 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8901,5 +8901,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2699 "parser.yy"
+#line 2698 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8908,5 +8908,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2701 "parser.yy"
+#line 2700 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8915,5 +8915,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2708 "parser.yy"
+#line 2707 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -8922,5 +8922,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2710 "parser.yy"
+#line 2709 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8929,5 +8929,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2712 "parser.yy"
+#line 2711 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -8936,5 +8936,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2714 "parser.yy"
+#line 2713 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -8943,5 +8943,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2716 "parser.yy"
+#line 2715 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8950,5 +8950,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2718 "parser.yy"
+#line 2717 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -8957,5 +8957,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2720 "parser.yy"
+#line 2719 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8964,5 +8964,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2722 "parser.yy"
+#line 2721 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -8971,5 +8971,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2724 "parser.yy"
+#line 2723 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -8978,5 +8978,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2726 "parser.yy"
+#line 2725 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8985,5 +8985,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2731 "parser.yy"
+#line 2730 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     break;
@@ -8992,5 +8992,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2733 "parser.yy"
+#line 2732 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     break;
@@ -8999,5 +8999,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2738 "parser.yy"
+#line 2737 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     break;
@@ -9006,5 +9006,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2740 "parser.yy"
+#line 2739 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     break;
@@ -9013,5 +9013,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2767 "parser.yy"
+#line 2766 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9020,5 +9020,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2778 "parser.yy"
+#line 2777 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -9027,5 +9027,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2780 "parser.yy"
+#line 2779 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -9034,5 +9034,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2782 "parser.yy"
+#line 2781 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -9041,5 +9041,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2784 "parser.yy"
+#line 2783 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -9048,5 +9048,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2786 "parser.yy"
+#line 2785 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -9055,5 +9055,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2788 "parser.yy"
+#line 2787 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -9062,5 +9062,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2795 "parser.yy"
+#line 2794 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -9069,5 +9069,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2797 "parser.yy"
+#line 2796 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -9076,5 +9076,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2799 "parser.yy"
+#line 2798 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9083,5 +9083,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2801 "parser.yy"
+#line 2800 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -9090,5 +9090,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2803 "parser.yy"
+#line 2802 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -9097,5 +9097,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2805 "parser.yy"
+#line 2804 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9104,5 +9104,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2810 "parser.yy"
+#line 2809 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     break;
@@ -9111,5 +9111,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2815 "parser.yy"
+#line 2814 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
     break;
@@ -9118,5 +9118,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2817 "parser.yy"
+#line 2816 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
     break;
@@ -9125,5 +9125,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2819 "parser.yy"
+#line 2818 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
     break;
@@ -9132,5 +9132,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2843 "parser.yy"
+#line 2842 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -9139,5 +9139,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2845 "parser.yy"
+#line 2844 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -9377,5 +9377,5 @@
 
 /* Line 2067 of yacc.c  */
-#line 2848 "parser.yy"
+#line 2847 "parser.yy"
 
 // ----end of grammar----
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 1d4580a95e48c7e901f03961d6c83d9b379b8bd4)
+++ src/Parser/parser.yy	(revision 777bfcf2024415a11a10ed22ce6eebd012ce80ca)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Aug 13 18:59:02 2016
-// Update Count     : 1877
+// Last Modified On : Sun Aug 14 11:03:22 2016
+// Update Count     : 1879
 //
 
@@ -143,5 +143,4 @@
 %type<en> constant_expression			assignment_expression		assignment_expression_opt
 %type<en> comma_expression				comma_expression_opt
-//%type<en> argument_expression_list		argument_expression			for_control_expression		assignment_opt
 %type<en> argument_expression_list		argument_expression			assignment_opt
 %type<fctl> for_control_expression
@@ -932,13 +931,13 @@
 asm_statement:
 	ASM asm_volatile_opt '(' string_literal_list ')' ';'
-		{ $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, 0 ); }
+		{ $$ = new AsmStmtNode( $2, $4, 0 ); }
 	| ASM asm_volatile_opt '(' string_literal_list ':' asm_operands_opt ')' ';' // remaining GCC
-		{ $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, $6 ); }
+		{ $$ = new AsmStmtNode( $2, $4, $6 ); }
 	| ASM asm_volatile_opt '(' string_literal_list ':' asm_operands_opt ':' asm_operands_opt ')' ';'
-		{ $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, $6, $8 ); }
+		{ $$ = new AsmStmtNode( $2, $4, $6, $8 ); }
 	| ASM asm_volatile_opt '(' string_literal_list ':' asm_operands_opt ':' asm_operands_opt ':' asm_clobbers_list_opt ')' ';'
-		{ $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, $6, $8, $10 ); }
+		{ $$ = new AsmStmtNode( $2, $4, $6, $8, $10 ); }
 	| ASM asm_volatile_opt GOTO '(' string_literal_list ':' ':' asm_operands_opt ':' asm_clobbers_list_opt ':' label_list ')' ';'
-		{ $$ = new AsmStmtNode( StatementNode::Asm, $2, $5, 0, $8, $10, $12 ); }
+		{ $$ = new AsmStmtNode( $2, $5, 0, $8, $10, $12 ); }
 	;
 
Index: src/tests/.expect/64/gccExtensions.txt
===================================================================
--- src/tests/.expect/64/gccExtensions.txt	(revision 1d4580a95e48c7e901f03961d6c83d9b379b8bd4)
+++ src/tests/.expect/64/gccExtensions.txt	(revision 777bfcf2024415a11a10ed22ce6eebd012ce80ca)
@@ -5,8 +5,16 @@
 extern void exit(int __status);
 extern int printf(const char *__restrict __format, ...);
+extern int __x__i_1;
 int main(int __argc__i_1, const char **__argv__PPCc_1){
     asm ( "nop" :  :  :  );
     asm ( "nop" :  :  :  );
     asm ( "nop" :  :  :  );
+    static int __y__i_2;
+    int __src__i_2;
+    int __dst__i_2;
+    asm volatile ( "mov %1, %0\n\tadd $1, %0" :  :  :  );
+    asm volatile ( "mov %1, %0\n\tadd $1, %0" : "=r" ( __dst__i_2 ) :  :  );
+    asm volatile ( "mov %1, %0\n\tadd $1, %0" : "=r" ( __dst__i_2 ) : "r" ( __src__i_2 ) :  );
+    asm ( "mov %1, %0\n\tadd $1, %0" : "=r" ( __dst__i_2 ), "=r" ( __src__i_2 ) : [ __src__i_2 ] "r" ( __dst__i_2 ) : "r0" );
     double _Complex __c1__Xd_2;
     double _Complex __c2__Xd_2;
Index: src/tests/gccExtensions.c
===================================================================
--- src/tests/gccExtensions.c	(revision 1d4580a95e48c7e901f03961d6c83d9b379b8bd4)
+++ src/tests/gccExtensions.c	(revision 777bfcf2024415a11a10ed22ce6eebd012ce80ca)
@@ -1,2 +1,19 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// gccExtensions.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Sun Aug 14 17:28:17 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Sun Aug 14 17:36:28 2016
+// Update Count     : 3
+// 
+
+extern int x asm( "xx" );
+
 int main(int argc, char const *argv[]) {
 	asm( "nop" );
@@ -4,4 +21,35 @@
 	__asm__( "nop" );
 
+	static int y asm( "yy" );
+//	static * int z asm( "zz" );							// CFA declaration
+
+	int src;
+	int dst;
+
+	asm volatile ( "mov %1, %0\n\t"
+				   "add $1, %0" : : : );
+
+	asm volatile ( "mov %1, %0\n\t"
+				   "add $1, %0"
+				   : "=" "r" (dst));
+
+	asm volatile ( "mov %1, %0\n\t"
+				   "add $1, %0"
+				   : "=r" (dst)
+				   : "r" (src));
+
+	asm ( "mov %1, %0\n\t"
+		  "add $1, %0"
+		  : "=r" (dst), "=r" (src)
+		  : [src] "r" (dst)
+		  : "r0");
+#if 0
+  L1: L2:
+	asm goto ( "frob %%r5, %1; jc %l[L1]; mov (%2), %%r5"
+			   : /* No outputs. */
+			   : "r"(src), "r"(&dst)
+			   : "r5", "memory"
+			   : L1, L2 );
+#endif
 	__complex__ c1;
 	_Complex c2;
@@ -57,2 +105,7 @@
 	return 0;
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa gccExtensions.c" //
+// End: //
