Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision 40404257da8f22441f6123bdbff37bdb54e0e5f3)
+++ src/Parser/DeclarationNode.cc	(revision 984dce6bb5af39c6108d6d825e085c449dc9f3ad)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 12:34:05 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar  2 17:26:24 2016
-// Update Count     : 134
+// Last Modified On : Mon Mar 21 21:04:23 2016
+// Update Count     : 142
 //
 
@@ -42,5 +42,5 @@
 UniqueName DeclarationNode::anonymous( "__anonymous" );
 
-extern LinkageSpec::Type linkage;		/* defined in cfa.y */
+extern LinkageSpec::Type linkage;						// defined in parser.yy
 
 DeclarationNode *DeclarationNode::clone() const {
@@ -55,5 +55,5 @@
 	newnode->linkage = linkage;
 	return newnode;
-}
+} // DeclarationNode::clone
 
 DeclarationNode::DeclarationNode() : type( 0 ), bitfieldWidth( 0 ), initializer( 0 ), hasEllipsis( false ), linkage( ::linkage ) {
@@ -117,4 +117,5 @@
 	newnode->type->function->newStyle = newStyle;
 	newnode->type->function->body = body;
+	typedefTable.addToEnclosingScope( newnode->name, TypedefTable::ID );
 
 	if ( body ) {
@@ -129,5 +130,5 @@
 
 	return newnode;
-}
+} // DeclarationNode::newFunction
 
 DeclarationNode *DeclarationNode::newQualifier( Qualifier q ) {
@@ -136,5 +137,5 @@
 	newnode->type->qualifiers.push_back( q );
 	return newnode;
-}
+} // DeclarationNode::newQualifier
 
 DeclarationNode *DeclarationNode::newStorageClass( DeclarationNode::StorageClass sc ) {
@@ -142,5 +143,5 @@
 	newnode->storageClasses.push_back( sc );
 	return newnode;
-}
+} // DeclarationNode::newStorageClass
 
 DeclarationNode *DeclarationNode::newBasicType( BasicType bt ) {
@@ -149,5 +150,5 @@
 	newnode->type->basic->typeSpec.push_back( bt );
 	return newnode;
-}
+} // DeclarationNode::newBasicType
 
 DeclarationNode *DeclarationNode::newBuiltinType( BuiltinType bt ) {
@@ -156,5 +157,5 @@
 	newnode->type->builtin->type = bt;
 	return newnode;
-}
+} // DeclarationNode::newBuiltinType
 
 DeclarationNode *DeclarationNode::newModifier( Modifier mod ) {
@@ -163,5 +164,5 @@
 	newnode->type->basic->modifiers.push_back( mod );
 	return newnode;
-}
+} // DeclarationNode::newModifier
 
 DeclarationNode *DeclarationNode::newForall( DeclarationNode *forall ) {
@@ -170,5 +171,5 @@
 	newnode->type->forall = forall;
 	return newnode;
-}
+} // DeclarationNode::newForall
 
 DeclarationNode *DeclarationNode::newFromTypedef( std::string *name ) {
@@ -179,5 +180,5 @@
 	newnode->type->symbolic->params = 0;
 	return newnode;
-}
+} // DeclarationNode::newFromTypedef
 
 DeclarationNode *DeclarationNode::newAggregate( Aggregate kind, const std::string *name, ExpressionNode *actuals, DeclarationNode *fields ) {
@@ -188,7 +189,8 @@
 	if ( newnode->type->aggregate->name == "" ) {		// anonymous aggregate ?
 		newnode->type->aggregate->name = DeclarationNode::anonymous.newName();
-	} else {
-		// SKULLDUGGERY: generate a typedef for the aggregate name so that the aggregate does not have to be qualified
-		// by "struct"
+	} else if ( ! typedefTable.exists( newnode->type->aggregate->name ) ) {
+		// SKULLDUGGERY: Generate a typedef for the aggregate name so the aggregate does not have to be qualified by
+		// "struct". Only generate the typedef, if the name is not in use. The typedef is implicitly (silently) removed
+		// if the name is explicitly used.
 		typedefTable.addToEnclosingScope( newnode->type->aggregate->name, TypedefTable::TD );
 		DeclarationNode *typedf = new DeclarationNode;
@@ -199,5 +201,5 @@
 	newnode->type->aggregate->fields = fields;
 	return newnode;
-}
+} // DeclarationNode::newAggregate
 
 DeclarationNode *DeclarationNode::newEnum( std::string *name, DeclarationNode *constants ) {
@@ -208,7 +210,8 @@
 	if ( newnode->type->enumeration->name == "" ) {		// anonymous enumeration ?
 		newnode->type->enumeration->name = DeclarationNode::anonymous.newName();
-	} else {
-		// SKULLDUGGERY: generate a typedef for the enumeration name so that the enumeration does not have to be
-		// qualified by "enum"
+	} else if ( ! typedefTable.exists( newnode->type->enumeration->name ) ) {
+		// SKULLDUGGERY: Generate a typedef for the enumeration name so the enumeration does not have to be qualified by
+		// "enum". Only generate the typedef, if the name is not in use. The typedef is implicitly (silently) removed if
+		// the name is explicitly used.
 		typedefTable.addToEnclosingScope( newnode->type->enumeration->name, TypedefTable::TD );
 		DeclarationNode *typedf = new DeclarationNode;
@@ -218,5 +221,5 @@
 	newnode->type->enumeration->constants = constants;
 	return newnode;
-}
+} // DeclarationNode::newEnum
 
 DeclarationNode *DeclarationNode::newEnumConstant( std::string *name, ExpressionNode *constant ) {
@@ -224,6 +227,7 @@
 	newnode->name = assign_strptr( name );
 	newnode->enumeratorValue = constant;
-	return newnode;
-}
+	typedefTable.addToEnclosingScope( newnode->name, TypedefTable::ID );
+	return newnode;
+} // DeclarationNode::newEnumConstant
 
 DeclarationNode *DeclarationNode::newName( std::string *name ) {
@@ -231,5 +235,5 @@
 	newnode->name = assign_strptr( name );
 	return newnode;
-}
+} // DeclarationNode::newName
 
 DeclarationNode *DeclarationNode::newFromTypeGen( std::string *name, ExpressionNode *params ) {
@@ -240,5 +244,5 @@
 	newnode->type->symbolic->actuals = params;
 	return newnode;
-}
+} // DeclarationNode::newFromTypeGen
 
 DeclarationNode *DeclarationNode::newTypeParam( TypeClass tc, std::string *name ) {
@@ -249,5 +253,5 @@
 	newnode->type->variable->name = newnode->name;
 	return newnode;
-}
+} // DeclarationNode::newTypeParam
 
 DeclarationNode *DeclarationNode::newTrait( std::string *name, DeclarationNode *params, DeclarationNode *asserts ) {
@@ -259,5 +263,5 @@
 	newnode->type->aggregate->name = assign_strptr( name );
 	return newnode;
-}
+} // DeclarationNode::newTrait
 
 DeclarationNode *DeclarationNode::newTraitUse( std::string *name, ExpressionNode *params ) {
@@ -269,5 +273,5 @@
 	newnode->type->aggInst->params = params;
 	return newnode;
-}
+} // DeclarationNode::newTraitUse
 
 DeclarationNode *DeclarationNode::newTypeDecl( std::string *name, DeclarationNode *typeParams ) {
@@ -279,5 +283,5 @@
 	newnode->type->symbolic->name = newnode->name;
 	return newnode;
-}
+} // DeclarationNode::newTypeDecl
 
 DeclarationNode *DeclarationNode::newPointer( DeclarationNode *qualifiers ) {
@@ -285,5 +289,5 @@
 	newnode->type = new TypeData( TypeData::Pointer );
 	return newnode->addQualifiers( qualifiers );
-}
+} // DeclarationNode::newPointer
 
 DeclarationNode *DeclarationNode::newArray( ExpressionNode *size, DeclarationNode *qualifiers, bool isStatic ) {
@@ -298,5 +302,5 @@
 	} // if
 	return newnode->addQualifiers( qualifiers );
-}
+} // DeclarationNode::newArray
 
 DeclarationNode *DeclarationNode::newVarArray( DeclarationNode *qualifiers ) {
Index: src/Parser/ExpressionNode.cc
===================================================================
--- src/Parser/ExpressionNode.cc	(revision 40404257da8f22441f6123bdbff37bdb54e0e5f3)
+++ src/Parser/ExpressionNode.cc	(revision 984dce6bb5af39c6108d6d825e085c449dc9f3ad)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:17:07 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Feb  1 13:32:30 2016
-// Update Count     : 271
+// Last Modified On : Sun Mar 13 12:34:38 2016
+// Update Count     : 272
 // 
 
@@ -487,8 +487,7 @@
 		args.front() = new AddressExpr( args.front() );
 		break;
-	  default:
-		/* do nothing */
+	  default:		// do nothing
 		;
-	}
+	} // switch
 
 	switch ( op->get_type() ) {
Index: src/Parser/Parser.cc
===================================================================
--- src/Parser/Parser.cc	(revision 40404257da8f22441f6123bdbff37bdb54e0e5f3)
+++ src/Parser/Parser.cc	(revision 984dce6bb5af39c6108d6d825e085c449dc9f3ad)
@@ -10,12 +10,12 @@
 // Created On       : Sat May 16 14:54:28 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun May 31 23:45:19 2015
-// Update Count     : 4
+// Last Modified On : Mon Mar 21 18:04:47 2016
+// Update Count     : 5
 // 
 
 #include "Parser.h"
-#include "TypedefTable.h"
 #include "lex.h"
 #include "parser.h"
+#include "TypedefTable.h"
 
 // global variables in cfa.y
Index: src/Parser/TypedefTable.cc
===================================================================
--- src/Parser/TypedefTable.cc	(revision 40404257da8f22441f6123bdbff37bdb54e0e5f3)
+++ src/Parser/TypedefTable.cc	(revision 984dce6bb5af39c6108d6d825e085c449dc9f3ad)
@@ -10,12 +10,12 @@
 // Created On       : Sat May 16 15:20:13 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar  2 17:25:55 2016
-// Update Count     : 20
+// Last Modified On : Mon Mar 21 18:18:58 2016
+// Update Count     : 23
 //
 
 #include <map>
 #include <list>
+#include <cassert>
 #include "TypedefTable.h"
-#include <cassert>
 using namespace std;
 
@@ -29,33 +29,19 @@
 TypedefTable::TypedefTable() : currentScope( 0 ) {}
 
+bool TypedefTable::exists( const string &identifier ) {
+	return table.count( identifier ) > 0;
+}
+
 void TypedefTable::changeKind( const string &identifier, kind_t kind ) {
 	tableType::iterator id_pos = table.find( identifier );
-	if ( id_pos == table.end() ) {
-		return;
-	} else {
-		(*((*id_pos ).second.begin())).kind = kind;
-		return;
-	} // if
+	if ( id_pos == table.end() ) return;
+	id_pos->second.begin()->kind = kind;
 }
 
-bool TypedefTable::isKind( const string &identifier, kind_t kind ) const {
+int TypedefTable::isKind( const string &identifier ) const {
 	tableType::const_iterator id_pos = table.find( identifier );
-	if ( id_pos == table.end() ) {
-		return true;
-	} else {
-		return (*((*id_pos ).second.begin())).kind == kind;
-	} // if
-}
-
-bool TypedefTable::isIdentifier( const string &identifier ) const {
-	return isKind( identifier, ID );
-}
-
-bool TypedefTable::isTypedef( const string &identifier ) const {
-	return isKind( identifier, TD );
-}
-
-bool TypedefTable::isTypegen( const string &identifier ) const {
-	return isKind( identifier, TG );
+	// Name lookup defaults to identifier, and then the identifier's kind is set by the parser.
+	if ( id_pos == table.end() ) return IDENTIFIER;
+	return id_pos->second.begin()->kind;
 }
 
Index: src/Parser/TypedefTable.h
===================================================================
--- src/Parser/TypedefTable.h	(revision 40404257da8f22441f6123bdbff37bdb54e0e5f3)
+++ src/Parser/TypedefTable.h	(revision 984dce6bb5af39c6108d6d825e085c449dc9f3ad)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:24:36 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar  2 17:26:54 2016
-// Update Count     : 12
+// Last Modified On : Mon Mar 21 18:17:36 2016
+// Update Count     : 24
 //
 
@@ -22,7 +22,10 @@
 #include <stack>
 
+#include "lex.h"
+#include "parser.h"
+
 class TypedefTable {
   public:
-	enum kind_t { ID, TD, TG };
+	enum kind_t { ID = IDENTIFIER, TD = TYPEDEFname, TG = TYPEGENname };
   private:
 	struct Entry {
@@ -49,13 +52,10 @@
 	std::stack< std::string > nextIdentifiers;
 
-	bool isKind( const std::string &identifier, kind_t kind ) const;
 	void addToScope( const std::string &identifier, kind_t kind, int scope );
   public:
 	TypedefTable();
 
-	bool isIdentifier( const std::string &identifier ) const;
-	bool isTypedef( const std::string &identifier ) const;
-	bool isTypegen( const std::string &identifier ) const;
-
+	bool exists( const std::string &identifier );
+	int isKind( const std::string &identifier ) const;
 	void changeKind( const std::string &identifier, kind_t kind );
 	
Index: src/Parser/lex.cc
===================================================================
--- src/Parser/lex.cc	(revision 40404257da8f22441f6123bdbff37bdb54e0e5f3)
+++ src/Parser/lex.cc	(revision 984dce6bb5af39c6108d6d825e085c449dc9f3ad)
@@ -418,6 +418,6 @@
       120,  120,    0,    0,    0,  118,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  133,  112,  112,    0,  112,  112,  112,    0,    6,
-      112,  110,    0,    0,    0,  112,    0,  110,  110,  110,
+        0,  133,  112,  112,    0,  112,  112,    0,    0,    6,
+        0,  110,    0,    0,    0,  112,    0,  110,  110,  110,
       110,    0,  111,    0,    0,  109,  109,  109,  109,    0,
       171,  172,    0,  177,  175,    0,    0,    0,  103,    0,
@@ -433,5 +433,5 @@
         0,  120,    0,    0,    0,    0,    0,  120,    0,    0,
       178,    0,    0,    0,    0,    0,    0,    0,  112,    0,
-      112,    0,  112,    0,    0,  112,  112,  110,  110,    0,
+      112,    0,  112,    0,    0,  112,    0,  110,  110,    0,
         0,  111,  111,    0,  111,    0,  111,  109,  109,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,  176,
@@ -445,5 +445,5 @@
       102,  102,  102,  102,   97,  102,  102,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  120,    0,    0,    0,    0,    0,  112,  112,    0,
+        0,  120,    0,    0,    0,    0,    0,  112,    0,    0,
         0,    0,    0,    0,  111,  111,    0,  113,    0,  111,
 
@@ -459,5 +459,5 @@
         0,    0,    0,    0,    0,  113,    0,    0,  111,  113,
 
-      113,  113,  113,  113,  111,    0,    0,    0,    0,    0,
+      113,  113,  113,    0,  111,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,  102,    0,  102,  102,  102,
       102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
@@ -467,5 +467,5 @@
        81,   83,   84,  102,  102,   91,  102,  102,    0,    1,
         0,    0,    0,    0,    0,    0,  105,    0,    0,    0,
-      120,    0,    0,    0,    0,  113,  113,  113,  113,    0,
+      120,    0,    0,    0,    0,  113,    0,  113,  113,    0,
         0,    0,    0,    0,    0,    0,    0,    0,  102,  102,
 
@@ -500,12 +500,12 @@
        16,   17,   18,   19,   20,   21,   22,   23,   24,   25,
        26,   26,   26,   26,   26,   27,   28,   29,   30,   31,
-       32,   33,   34,   35,   36,   37,   38,   39,   40,   39,
-       41,   11,   42,   11,   11,   43,   11,   44,   11,   45,
-       11,   46,   47,   48,   49,   11,   11,   50,   11,   11,
-       51,   52,   53,   54,   55,   56,   57,   58,   59,   60,
-
-       61,   62,   63,   64,   65,   11,   66,   67,   68,   69,
-       70,   71,   11,   72,   73,   74,   75,   76,   77,   78,
-       79,   80,   81,   82,   83,   84,    1,    1,    1,    1,
+       32,   33,   34,   35,   36,   37,   38,   39,   40,   41,
+       42,   11,   43,   11,   11,   44,   11,   45,   11,   46,
+       11,   47,   48,   49,   50,   11,   11,   51,   11,   11,
+       52,   53,   54,   55,   56,   57,   58,   59,   60,   61,
+
+       62,   63,   64,   65,   66,   11,   67,   68,   69,   70,
+       71,   72,   11,   73,   74,   75,   76,   77,   78,   79,
+       80,   81,   82,   83,   84,   85,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -524,5 +524,5 @@
     } ;
 
-static yyconst flex_int32_t yy_meta[85] =
+static yyconst flex_int32_t yy_meta[86] =
     {   0,
         1,    1,    2,    1,    1,    1,    1,    1,    3,    1,
@@ -530,130 +530,130 @@
         6,    1,    7,    7,    7,    7,    7,    7,    1,    1,
         1,    8,    1,    1,    1,    9,    9,    9,    9,    9,
-        4,    4,   10,    4,   11,    4,    4,    4,   10,    4,
-        1,   12,    1,    1,   13,    1,    9,    9,    9,    9,
-        9,    9,    4,    4,    4,    4,   10,    4,    4,    4,
-       11,    4,    4,    4,   10,    4,    4,    4,    4,    4,
-        1,    1,    1,    1
+        9,    4,    4,   10,    4,   11,    4,    4,    4,   10,
+        4,    1,   12,    1,    1,   13,    1,    9,    9,    9,
+        9,    9,    9,    4,    4,    4,    4,   10,    4,    4,
+        4,   11,    4,    4,    4,   10,    4,    4,    4,    4,
+        4,    1,    1,    1,    1
     } ;
 
 static yyconst flex_int16_t yy_base[1062] =
     {   0,
-        0,   83, 2268, 2265,   93,    0,  175,  176,  177,  178,
-     2279, 2798,  189, 2798,  195,   54, 2798, 2226,   59,  171,
-     2798, 2798, 2798,   55,  186, 2798,  189,  187,  202,  214,
-      272,    0, 2244, 2798,  214, 2243,  150,  340,  153,  222,
-     2798,  157, 2798,  215,  224, 2798,  207,  181,  221,  249,
-      235,  289,  155,  255,  218,  231,  206,  266,  256,  323,
-      259,  192, 2798,  252, 2798, 2238,  377,  342, 2798, 2249,
-     2798, 2218,  241, 2798,    0, 2798,  421,    0, 2798,  393,
-     2798,  399,  405, 2798,  492, 2216,  276, 2798, 2798, 2798,
-     2798, 2798, 2231, 2798, 2228, 2798, 2798, 2240,  552, 2798,
-
-     2257, 2798,  413,  393,  437,  493,  377,  318,  195,  430,
-      382,    0,  384,  321,  196,  427, 2798, 2798, 2798, 2226,
-     2798, 2798, 2798, 2223, 2220,  304,  342, 2235,  381,  435,
-      422,  400,  455,  440,  494, 2216,  469, 2165,  497, 2193,
-     2798,  432, 2798, 2798,  521, 2187, 2186, 2798, 2159,  470,
-      414,  436,  325,  254,  463,  480,  486,  563,  274,  482,
-      484,  487,  495,  234,  489,  341,  488,  490,  377,  507,
-      497,  501,  503,  514,  515,  506,  529, 2186,  531,  537,
-      505,  518,  536,  534,  538,  559,  575,  571,  577,  574,
-      599,  590,  581,  592, 2798, 2798,  662,  668, 2232,  674,
-
-     2798,  680, 2798, 2180,  583, 2176, 2175,    0,  671, 2798,
-     2798,  686, 2173, 2170, 2167,    0, 2189,  568,  615,  618,
-      695,  694,  627,  654,  628,  683, 2186,  686,  687, 2163,
-     2160, 2798,    0,  680,  712,  703,  682, 2157, 2208, 2798,
-      711,    0,  702,  756,  762,  795,  774,  604, 2798, 2167,
-     2141,    0,  803, 2167,  780,  684, 2798, 2143, 2118,  804,
-     2798, 2798, 2148, 2798, 2798,  724,  728, 2126, 2126,  694,
-     2122, 2120, 2117,    0, 2114,    0, 2085,  679,  682,  696,
-      423,  722,  757,  703,  758,  741,  799,  764,  725,  789,
-      697,  774,  788,  792,  760,  784,  795, 2115,  809,  797,
-
-      816,  196,  804,  812,  817,  823,  829,  632,  831,  832,
-      836,  819,  837,  833,  840,  844,  847,  843,  853,  851,
-     2113,  854,  855,  856,  859,  857,  858,  860,  861,  867,
-      863,  866,  868,  873,  874, 2110,  877,  716,  882,  883,
-      884,  888,  894,  947,  944, 2104, 2103, 2102,    0, 2100,
-        0,  934,  939, 2097,    0, 2094,    0, 2093,    0, 2113,
-     2798,  934,  935, 2092, 2087,    0, 2086,    0, 2798,  947,
-      967,  958, 2798,  973,  988, 1012, 2085, 2798, 2798,  932,
-      962,  999,  975, 1033,  912, 1020,  956, 2798, 2798, 2083,
-     2080, 2079,    0, 2078,    0, 2076,    0, 2073,    0, 2798,
-
-      956,  936,  978,  950,  994, 1010, 1016,  973, 1019, 1020,
-     1024, 1012, 1029, 1030, 1026, 1027, 1032, 1038, 1044, 1031,
-     1051, 1049, 1041, 2072, 1055, 2068, 1054, 2066, 1057, 1058,
-     1059,  974, 1061, 1064, 1065, 2064, 1070, 2061, 1063, 1071,
-     1073, 1075, 1076, 1081, 1077, 2059, 1082, 2057, 1084, 1087,
-     1089, 1092, 1094, 1095, 1100, 1090, 1098, 1106, 1115, 1102,
-     1103, 1116, 1104, 1118, 2054, 1119, 1123, 1169, 2048,    0,
-     2047,    0, 2046,    0, 2044,    0, 1164, 2041,    0, 2038,
-        0, 2037, 2036, 2034,    0, 2031,    0, 1171, 2028, 1177,
-     1137, 1197, 1164, 1112, 1131, 2798, 1216, 1230, 1256, 2039,
-
-     2014, 2024, 2021,    0, 2018,    0, 2017,    0, 2016,    0,
-     2014,    0, 2011,    0, 1159, 1164, 2011, 1160, 1178, 1182,
-     1133, 1194, 1208, 1185,  541, 1199, 1197, 1215, 1193, 1209,
-     1211, 1225, 1210, 1254, 1235, 1237, 1239, 1241, 1242, 2010,
-     1252, 1248, 2009, 1249, 1253, 1255, 1251, 2007, 1258, 1261,
-     1262, 1264, 2004, 1265, 1271, 2001, 1263, 1273, 2000, 1269,
-     1275, 1277, 1999, 1281, 1283, 1285, 1284, 1286, 1296, 1997,
-     1295, 1287, 1994, 1299, 1300, 1991, 2039, 1986,    0, 1984,
-        0, 1981,    0, 1980,    0, 1979,    0, 1977,    0, 1974,
-        0, 1973,    0, 1336, 1346, 1369, 1357, 1972, 2798, 1375,
-
-     1311, 1347, 1313, 1970, 2798, 1937,    0, 1935,    0, 1934,
-        0, 1931,    0,    0,    0, 1931,    0, 1353, 1354, 1305,
-     1302, 1335, 1363, 1366, 1367, 1364,  586, 1370, 1365, 1374,
-     1368, 1376, 1369, 1385, 1380, 1166, 1392, 1394, 1327, 1395,
-     1396, 1399, 1930, 1398, 1400, 1401, 1929, 1927, 1924, 1403,
-     1402, 1921, 1409, 1920, 1919, 1406, 1404, 1917, 1914, 1913,
-     1912, 1910, 1907, 1416, 1417, 1906, 1419, 1405, 1954, 2798,
-     1900,    0, 1897,    0,    0,    0, 1896,    0,    0,    0,
-     2798,    0,    0,    0,    0, 1459, 1889, 2798, 2798, 1465,
-     1885,    0, 1869,    0,    0,    0,    0, 1868, 1424, 1442,
-
-     1870, 1444, 1447, 1443, 1451, 1453, 1455, 1457, 1868, 1459,
-     1460, 1476, 1461, 1463, 1494, 1477, 1478, 1504, 1483, 1482,
-     1481, 1488, 1490, 1491, 1492, 1865, 1864, 1493, 1863, 1861,
-     1497, 1496, 1499, 1858, 1500, 1502,    0,    0,    0, 1854,
-     1853, 1851, 1550,    0, 1848, 1847, 1846, 1844, 1841, 1843,
-     1842, 1840, 1837, 1507, 1513, 1505, 1514, 1509, 1515, 1528,
-     1506, 1531, 1533, 1562, 1836, 1536, 1835, 1537, 1541, 1544,
-     1549, 1542, 1543, 1833, 1830, 1829, 1828, 1550, 1826, 1823,
-     1819, 1818, 1816, 1813, 1812, 1811, 1809, 1802, 1800, 1799,
-     1796, 1795, 1551, 1797, 1554, 1556, 1555, 1559, 1560, 1561,
-
-     1795, 1565, 1592, 1568, 1778, 1569, 1576, 1577, 1584, 1570,
-     1572, 1766, 1765, 1762, 1755, 1752, 1745, 1743, 1742, 1721,
-     1720, 1719, 1712, 1710, 1712, 1582, 1587, 1595, 1590, 1589,
-     1597, 1585, 1670, 1669, 1601, 1666, 1665, 1605, 1606, 1609,
-     1660, 1659, 1655, 1654, 1651, 1650, 1649, 1593, 1610, 1611,
-     1412, 1614, 1612, 1620, 1337, 1621, 1623, 1627, 1000,  928,
-      896,  778, 1628, 1629, 1631, 1632, 1633, 1635,  709,  628,
-     1637,  373,  338, 1639, 1640,  337,  257, 1641, 1643, 1645,
-     1647, 1646, 1649, 1651,  200,  136, 2798, 1723, 1736, 1749,
-     1759, 1769, 1782, 1792, 1805, 1818, 1831, 1839, 1849, 1856,
-
-     1863, 1870, 1877, 1884, 1891, 1898, 1905, 1912, 1925, 1932,
-     1936, 1944, 1947, 1954, 1961, 1968, 1971, 1978, 1984, 1997,
-     2010, 2017, 2024, 2031, 2038, 2041, 2048, 2051, 2058, 2061,
-     2068, 2071, 2078, 2081, 2088, 2091, 2098, 2101, 2108, 2116,
-     2123, 2130, 2137, 2144, 2147, 2154, 2157, 2164, 2167, 2174,
-     2180, 2193, 2200, 2207, 2210, 2217, 2220, 2227, 2230, 2237,
-     2240, 2247, 2250, 2257, 2260, 2267, 2274, 2277, 2284, 2287,
-     2294, 2301, 2308, 2311, 2318, 2321, 2328, 2331, 2338, 2341,
-     2348, 2351, 2358, 2364, 2377, 2384, 2391, 2394, 2401, 2404,
-     2411, 2414, 2421, 2424, 2431, 2434, 2441, 2444, 2451, 2454,
-
-     2461, 2464, 2471, 2478, 2481, 2488, 2491, 2498, 2501, 2508,
-     2511, 2514, 2520, 2527, 2536, 2543, 2550, 2553, 2560, 2563,
-     2566, 2572, 2579, 2582, 2585, 2588, 2591, 2594, 2597, 2600,
-     2607, 2610, 2617, 2620, 2623, 2626, 2629, 2639, 2646, 2649,
-     2652, 2655, 2662, 2669, 2676, 2679, 2686, 2693, 2700, 2707,
-     2714, 2721, 2728, 2735, 2742, 2749, 2756, 2763, 2770, 2777,
-     2784
+        0,   84, 2272, 2269,   94,    0,  177,  178,  179,  180,
+     2285, 2822,  191, 2822,  197,   55, 2822, 2231,   60,  173,
+     2822, 2822, 2822,   56,  188, 2822,  191,  189,  204,  216,
+      275,    0, 2249, 2822,  216, 2247,  152,  344,  155,  220,
+     2822,  159, 2822,  217,  226, 2822,  185,  154,  212,  251,
+      237,  270,  235,  257,  241,  205,  193,  305,  314,  333,
+      238,  228, 2822,  225, 2822, 2242,  402,  390, 2822, 2253,
+     2822, 2221,  235, 2822,    0, 2822,  426,    0, 2822,  417,
+     2822,  439,  451, 2822,  498, 2219,  264, 2822, 2822, 2822,
+     2822, 2822, 2235, 2822, 2232, 2822, 2822, 2244,  559, 2822,
+
+     2261, 2822,  438,  444,  511,  534,  289,  253,  197,  380,
+      305,    0,  319,  280,  198,  322, 2822, 2822, 2822, 2230,
+     2822, 2822, 2822, 2227, 2224,  218,  255, 2239,  298,  350,
+      368,  312,  440,  398,  405, 2220,  441, 2168,  446, 2196,
+     2822,  335, 2822, 2822,  468, 2190, 2189, 2822, 2162,  439,
+      282,  433,  372,  281,  437,  434,  428,  570,  444,  466,
+      464,  469,  475,  321,  492,  438,  471,  445,  474,  512,
+      489,  503,  496,  521,  276,  515,  516, 2189,  526,  510,
+      519,  525,  543,  522,  560,  553,  523,  561,  551,  544,
+      599,  582,  593,  584, 2822, 2822,  660,  651, 2236,  666,
+
+     2822,  678, 2822, 2183,  607, 2179, 2178,    0,  693, 2822,
+     2822,  684, 2176, 2156, 2154,    0, 2177,  578,  608,  617,
+      654,  679,  650,  683,  684,  687, 2172,  690,  691, 2147,
+     2146, 2822,    0,  683,  710,  686,  700, 2145, 2196, 2822,
+      714,    0,  427,  746,  764,  786,  808,  621, 2822, 2152,
+     2125,    0,  794, 2171,  795,  709, 2822, 2147, 2121,  832,
+     2822, 2822, 2152, 2822, 2822,  711,  714, 2129, 2129,  717,
+     2125, 2123, 2120,    0, 2117,    0, 2088,  694,  679,  712,
+      709,  711,  698,  566,  726,  743,  771,  741,  790,  784,
+      800,  795,  742,  744,  814,  816,  818, 2118,  819,  745,
+
+      820,  821,  822,  823,  824,  746,  825,  748,  659,  831,
+      826,  833,  838,  839,  848,  850,  851,  844,  834,  857,
+     2116,  858,  859,  860,  862,  861,  864,  865,  867,  868,
+      866,  871,  876,  872,  878, 2113,  880,  689,  881,  882,
+      892,  896,  893,  953,  954, 2109, 2108, 2106,    0, 2103,
+        0,  941,  945, 2102,    0, 2101,    0, 2099,    0, 2118,
+     2822,  940,  941, 2094, 2088,    0, 2086,    0, 2822,  953,
+      975,  964, 2822,  981,  997, 1021, 2084, 2822, 2822,  939,
+      940, 1006,  982, 1041,  310, 1039, 1004, 2822, 2822, 2081,
+     2079, 2077,    0, 2074,    0, 2071,    0, 2070,    0, 2822,
+
+      886,  941,  960,  962,  977,  976,  980,  982, 1017, 1010,
+     1002,  998, 1022, 1031, 1028, 1033, 1034, 1037, 1040, 1043,
+     1038, 1041, 1053, 2072, 1055, 2070, 1045, 2067, 1056, 1061,
+     1063, 1065, 1066, 1067, 1070, 2064, 1071, 2063, 1073, 1074,
+     1075, 1078, 1080, 1081, 1085, 2062, 1087, 2060, 1084, 1089,
+     1091, 1097, 1099, 1092, 1102, 1103, 1105, 1106, 1108,  905,
+     1109, 1116, 1110, 1122, 2057, 1120, 1123, 1179, 2051,    0,
+     2050,    0, 2049,    0, 2047,    0, 1166, 2044,    0, 2041,
+        0, 2040, 2039, 2037,    0, 2034,    0, 1173, 2031, 1179,
+     1137, 1195, 1181, 1178, 1176, 2822, 1219, 1231, 1253, 2042,
+
+     2017, 2027, 2024,    0, 2021,    0, 2020,    0, 2019,    0,
+     2017,    0, 2014,    0, 1141, 1172, 2014, 1180, 1155, 1196,
+     1157, 1216, 1207, 1231, 1125, 1210, 1232, 1214, 1187, 1236,
+     1235, 1237, 1238, 1272, 1249, 1252, 1250, 1253, 1254, 2013,
+     1261, 1256, 2012, 1260, 1263, 1264, 1257, 2010, 1271, 1268,
+     1269, 1273, 2007, 1275, 1282, 2006, 1283, 1284, 2005, 1276,
+     1286, 1289, 2003, 1294, 1291, 1296, 1295, 1297, 1310, 2000,
+     1305, 1308, 1999, 1307, 1300, 1998, 2046, 1960,    0, 1958,
+        0, 1957,    0, 1954,    0, 1951,    0, 1950,    0, 1949,
+        0, 1947,    0, 1355, 1361, 1389, 1372, 1944, 2822, 1378,
+
+     1325, 1365, 1379, 1941, 2822, 1940,    0, 1939,    0, 1937,
+        0, 1934,    0,    0,    0, 1936,    0, 1366, 1312, 1311,
+     1341, 1323, 1368, 1369, 1374, 1356, 1383, 1372, 1388, 1390,
+     1393, 1395, 1396, 1398, 1400, 1431, 1406, 1407, 1411, 1408,
+     1413, 1414, 1935, 1409, 1416, 1419, 1933, 1930, 1929, 1422,
+     1424, 1928, 1429, 1926, 1923, 1425, 1430, 1919, 1915, 1911,
+     1895, 1894, 1893, 1436, 1433, 1891, 1439, 1440, 1938, 2822,
+     1884,    0, 1883,    0,    0,    0, 1884,    0,    0,    0,
+     2822,    0,    0,    0,    0, 1486, 1878, 2822, 2822, 1492,
+     1877,    0, 1876,    0,    0,    0,    0, 1874, 1447, 1444,
+
+     1874, 1449, 1471, 1479, 1450, 1480, 1482, 1469, 1873, 1486,
+     1490, 1488, 1502, 1452, 1510, 1504, 1491, 1519, 1506, 1498,
+     1508, 1512, 1513, 1514, 1515, 1872, 1870, 1517, 1867, 1866,
+     1518, 1520, 1523, 1865, 1521, 1525,    0,    0,    0, 1860,
+     1857, 1856, 1575,    0, 1855, 1853, 1850, 1849, 1848, 1849,
+     1846, 1845, 1844, 1531, 1536, 1527, 1528, 1552, 1533, 1537,
+     1539, 1555, 1557, 1569, 1842, 1560, 1839, 1561, 1559, 1568,
+     1572, 1567, 1573, 1838, 1837, 1835, 1828, 1574, 1826, 1825,
+     1819, 1818, 1817, 1815, 1798, 1789, 1788, 1785, 1778, 1775,
+     1768, 1766, 1576, 1768, 1577, 1581, 1580, 1579, 1584, 1585,
+
+     1747, 1586, 1615, 1590, 1746, 1591, 1592, 1602, 1600, 1594,
+     1606, 1742, 1735, 1733, 1732, 1690, 1689, 1686, 1685, 1683,
+     1682, 1678, 1677, 1674, 1676, 1607, 1611, 1614, 1612, 1608,
+     1616, 1620, 1675, 1623, 1624, 1530, 1453, 1630, 1625, 1629,
+     1438, 1354, 1319, 1318, 1267, 1212, 1210, 1208, 1631, 1636,
+     1178, 1639, 1635, 1643, 1177, 1644, 1646, 1650, 1126,  964,
+      937,  903, 1651, 1652, 1654, 1655, 1656, 1658,  788,  752,
+     1660,  607,  487, 1662, 1663,  394,  357, 1664, 1666, 1668,
+     1670, 1669, 1672, 1674,  233,  137, 2822, 1747, 1760, 1773,
+     1783, 1793, 1806, 1816, 1829, 1842, 1855, 1863, 1873, 1880,
+
+     1887, 1894, 1901, 1908, 1915, 1922, 1929, 1936, 1949, 1956,
+     1960, 1968, 1971, 1978, 1985, 1992, 1995, 2002, 2008, 2021,
+     2034, 2041, 2048, 2055, 2062, 2065, 2072, 2075, 2082, 2085,
+     2092, 2095, 2102, 2105, 2112, 2115, 2122, 2125, 2132, 2140,
+     2147, 2154, 2161, 2168, 2171, 2178, 2181, 2188, 2191, 2198,
+     2204, 2217, 2224, 2231, 2234, 2241, 2244, 2251, 2254, 2261,
+     2264, 2271, 2274, 2281, 2284, 2291, 2298, 2301, 2308, 2311,
+     2318, 2325, 2332, 2335, 2342, 2345, 2352, 2355, 2362, 2365,
+     2372, 2375, 2382, 2388, 2401, 2408, 2415, 2418, 2425, 2428,
+     2435, 2438, 2445, 2448, 2455, 2458, 2465, 2468, 2475, 2478,
+
+     2485, 2488, 2495, 2502, 2505, 2512, 2515, 2522, 2525, 2532,
+     2535, 2538, 2544, 2551, 2560, 2567, 2574, 2577, 2584, 2587,
+     2590, 2596, 2603, 2606, 2609, 2612, 2615, 2618, 2621, 2624,
+     2631, 2634, 2641, 2644, 2647, 2650, 2653, 2663, 2670, 2673,
+     2676, 2679, 2686, 2693, 2700, 2703, 2710, 2717, 2724, 2731,
+     2738, 2745, 2752, 2759, 2766, 2773, 2780, 2787, 2794, 2801,
+     2808
     } ;
 
@@ -779,5 +779,5 @@
     } ;
 
-static yyconst flex_int16_t yy_nxt[2883] =
+static yyconst flex_int16_t yy_nxt[2908] =
     {   0,
        12,   13,   14,   15,   15,   15,   13,   16,   17,   12,
@@ -785,308 +785,311 @@
        28,   29,   30,   31,   32,   32,   32,   32,   33,   34,
        35,   36,   37,   38,   39,   18,   18,   18,   18,   18,
-       18,   18,   40,   18,   18,   18,   18,   18,   40,   18,
-       41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
-       51,   52,   53,   18,   54,   18,   55,   18,   18,   56,
-       18,   57,   58,   59,   60,   61,   62,   18,   18,   18,
-       63,   64,   65,   66,   67,   84,   92,   85,   85,   67,
-       88,   89,   68,   71,   71,   71,   71,   71,   71,   71,
-
-       71,   71,   71,   72,   71,   71,   71,   71,   71,   71,
+       18,   18,   18,   40,   18,   18,   18,   18,   18,   40,
+       18,   41,   42,   43,   44,   45,   46,   47,   48,   49,
+       50,   51,   52,   53,   18,   54,   18,   55,   18,   18,
+       56,   18,   57,   58,   59,   60,   61,   62,   18,   18,
+       18,   63,   64,   65,   66,   67,   84,   92,   85,   85,
+       67,   88,   89,   68,   71,   71,   71,   71,   71,   71,
+
+       71,   71,   71,   71,   72,   71,   71,   71,   71,   71,
        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   72,   72,
+       71,   71,   71,   71,   71,   71,   71,   71,   71,   72,
        72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
-       72,   72,   72,   71,   73,   71,   71,   72,   74,   72,
+       72,   72,   72,   72,   72,   71,   73,   71,   71,   72,
+       74,   72,   72,   72,   72,   72,   72,   72,   72,   72,
        72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
-       72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
-       72,   72,   72,   71,   71,   71,   71,   76,   76,   79,
-       79,  123,  124,   90,  141,   79,   79,   87,   76,   76,
-       80,   81,   82,   82,   82,   80,   82,   81,   83,   83,
-
-       83,   82,   91,   93,  142,  146,   87,   98,   95,   99,
-       99,   99,   99,   99,   99,  252,  887,   94,  100,   85,
-       96,   97,   85,  101,  177,  118,   77,   77,   77,   77,
-      143,  147,   87,  102,  103,  144,  104,  104,  104,  104,
-      105,  105,  119,   87,  120,  121,  148,   87,  149,  254,
-      260,   87,  161,  106,  427,  194,  107,   87,   87,  150,
-      151,  152,  108,  109,  153,  154,  183,  155,  110,   87,
-      156,  157,   87,   87,  106,   87,  145,  162,  158,  159,
-      111,  160,   87,  195,  163,   87,   87,  180,  108,  206,
-      164,  109,  103,  181,  112,  112,  112,  112,  112,  112,
-
-       87,  169,  305,  170,  182,   87,   87,   87,   87,  165,
-       87,  106,  171,  166,  113,  207,  178,   87,  167,  188,
-      114,  283,  168,  179,  230,   87,  115,  189,  193,  184,
-      185,  143,  106,  196,  190,  263,  144,  264,  116,  186,
-       87,  298,  187,  200,  201,  172,  114,  125,  200,  191,
-      231,  126,  127,  173,  128,  174,  129,  130,  175,  131,
-      250,  132,  176,  258,  202,  202,  202,  202,  202,  202,
-      133,  134,  135,  263,   87,  264,   87,  145,  197,   81,
-       82,   82,   82,  197,  251,  282,  198,  259,   87,   87,
-      136,  192,   87,  137,   80,   81,   82,   82,   82,   80,
-
-       82,   81,   82,   82,   82,   82,   82,   81,   83,   83,
-       83,   82,  263,  307,  264,  242,  242,  242,  242,  248,
-      138,  139,  209,  210,   87,  249,  256,  209,   87,  211,
-      249,  263,  257,  264,  211,   99,   99,   99,   99,   99,
-       99,  265,  887,  212,  212,  212,  212,  243,  248,  310,
-      887,  249,  265,  263,  211,  264,  249,  103,  257,  105,
-      105,  105,  105,  105,  105,   87,  263,  241,  264,  213,
-      887,  263,  211,  264,   87,  257,  106,  211,  211,  887,
-      271,  211,  211,  280,  255,  266,  263,   87,  264,  211,
-      404,  244,  211,  256,  211,  214,  211,  106,  215,  217,
-
-      263,  257,  264,  218,  219,  281,  272,  887,  220,  221,
-      245,  222,  245,  223,   87,  246,  246,  246,  246,  246,
-      246,   87,  224,  225,  226,  263,  267,  264,  263,  143,
-      264,   87,  284,   87,  144,   87,  278,   87,   87,   87,
-       87,   87,  227,  279,  300,  228,   87,  247,   87,  286,
-      306,  303,   87,  285,   87,  299,   87,   87,   87,  301,
-      302,  323,  308,  311,  304,   87,   87,  314,  309,   87,
-      313,  315,   87,  229,  233,  233,  233,  233,  233,  233,
-       87,  312,   87,  316,  318,   87,  317,   87,   87,   87,
-      234,  235,   87,  236,  237,  627,  324,  320,  325,  360,
-
-      329,  361,  319,  328,  321,  322,  238,  143,  326,  327,
-       87,  234,  235,  234,   87,  331,  236,  330,  237,  287,
-      288,  289,   87,  290,  291,   87,   87,  292,   87,  293,
-      332,  346,   87,  335,  294,  295,  296,   87,  297,  333,
-      709,   87,  334,   87,  337,  341,  360,  342,  361,  360,
-       87,  361,  378,  338,  339,  336,  343,  347,  360,  360,
-      361,  361,  340,  197,   81,   82,   82,   82,  197,  200,
-      201,  198,  209,  210,  200,  200,  201,  209,  378,   87,
-      200,  344,  201,   87,  362,  360,  344,  361,  345,  434,
-      202,  202,  202,  202,  202,  202,  202,  202,  202,  202,
-
-      202,  202,  202,  202,  202,  202,  202,  202,  352,  352,
-      352,  352,  361,  361,  360,  363,  361,  360,  360,  361,
-      361,  369,  887,  369,  143,  360,  360,  361,  361,  370,
-       87,  370,  388,   87,  371,  371,  371,  371,  371,  371,
-      353,  373,  390,  401,  369,  373,  369,   87,   87,  234,
-      235,  402,  236,  237,   87,  263,  375,  264,  388,  263,
-       87,  264,  373,  416,  373,  403,  372,   87,  391,  373,
-      234,  235,  234,   87,  407,  236,   87,  237,  105,  105,
-      105,  105,  105,  105,  246,  246,  246,  246,  246,  246,
-      405,  245,   87,  245,  414,  106,  246,  246,  246,  246,
-
-      246,  246,  105,  105,  105,  105,  105,  105,   87,   87,
-      255,   87,  409,  406,  408,   87,  106,  376,  376,  376,
-      376,  376,  376,  381,  421,   87,  112,  112,  112,  112,
-      112,  112,  887,  234,  255,   87,  236,  237,  413,   87,
-       87,  417,  418,   87,  419,  383,   87,  384,   87,  377,
-       87,  385,  420,  425,  234,   87,  234,  386,  260,  236,
-       87,  237,  422,   87,  423,  410,  415,   87,   87,  387,
-       87,  411,  412,  384,   87,  428,  426,  385,  424,  432,
-       87,  429,   87,   87,   87,  433,  438,   87,   87,  430,
-      431,   87,  436,  437,   87,   87,  441,  439,   87,  440,
-
-      442,  435,   87,  443,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,  445,   87,  447,  448,   87,   87,   87,
-      444,  449,  446,  451,   87,   87,  450,  456,   87,  455,
-      452,  454,  453,   87,   87,   87,  457,  462,  461,   87,
-      458,  459,  460,  465,  466,   87,  201,  464,  344,  201,
-      887,  463,  199,  344,  500,  345,  211,  211,  211,  211,
-      467,  352,  352,  352,  352,  360,  360,  361,  361,  371,
-      371,  371,  371,  371,  371,  370,  492,  370,  501,   87,
-      371,  371,  371,  371,  371,  371,  493,   87,  477,  488,
-      488,  488,  488,  488,  488,  233,  233,  233,  233,  233,
-
-      233,   87,  492,  516,  496,  234,  492,   87,  236,  237,
-      242,  242,  242,  242,  105,  105,  494,  495,  515,  381,
-      518,  489,  495,  496,   87,   87,  234,  374,  234,   87,
-      496,  236,  492,  237,  376,  376,  376,  376,  376,  376,
-      887,  383,  375,  384,  517,   87,  522,  385,  545,  496,
-      497,   87,  497,  386,  519,  498,  498,  498,  498,  498,
-      498,   87,  383,   87,  384,  387,  377,   87,  385,  384,
-       87,   87,  520,  385,  502,   87,  521,   87,   87,  523,
-       87,   87,   87,   87,  524,  526,  387,  499,  532,   87,
-      384,  525,   87,  527,  385,   87,  531,  528,  529,  530,
-
-       87,  535,   87,  536,  533,   87,   87,  539,   87,   87,
-       87,  534,   87,  537,   87,   87,   87,  541,  546,  538,
-      540,   87,   87,  544,   87,  548,   87,   87,   87,  542,
-      547,  543,   87,   87,  550,   87,  549,  556,   87,  552,
-       87,   87,  554,   87,  551,   87,   87,  559,  553,   87,
-      557,   87,  555,   87,   87,   87,  492,   87,  558,  565,
-      564,  560,  566,  561,  567,  562,   87,   87,  563,   87,
-       87,  201,  573,  568,   87,  571,  570,  577,  569,  599,
-      574,  492,  492,  576,   87,  572,  211,  211,  211,  211,
-      718,  493,  575,  488,  488,  488,  488,  488,  488,  376,
-
-      376,  376,  376,  376,  376,  599,  623,  492,  492,  234,
-       87,   87,  236,  237,  595,   87,  595,   87,  598,  596,
-      596,  596,  596,  596,  596,  489,  620,  618,  619,   87,
-      234,  490,  234,   87,  492,  236,   87,  237,  498,  498,
-      498,  498,  498,  498,   87,   87,  622,  626,   87,  621,
-       87,  597,  600,  600,  600,  600,  600,  600,  624,   87,
-       87,   87,   87,  629,  625,  631,   87,  633,  601,  632,
-      628,  602,  603,  497,  635,  497,   87,  636,  498,  498,
-      498,  498,  498,  498,  604,  630,   87,  634,   87,  601,
-       87,  601,   87,   87,  602,  637,  603,  642,  641,   87,
-
-       87,  640,   87,   87,   87,   87,   87,  639,  643,   87,
-      638,  647,   87,   87,   87,   87,   87,  644,  648,  645,
-       87,  646,   87,  654,   87,  650,   87,  653,   87,  649,
-      651,  652,   87,  655,   87,   87,   87,   87,   87,  657,
-      659,  664,  656,  661,  660,  658,   87,   87,  666,  663,
-       87,   87,  688,   87,  688,  665,   87,  662,  488,  488,
-      488,  488,  488,  488,  668,  702,  703,  667,  596,  596,
-      596,  596,  596,  596,  595,  688,  595,  688,   87,  596,
-      596,  596,  596,  596,  596,  689,   87,  721,   87,  689,
-      594,  686,  686,  686,  686,  686,  686,  600,  600,  600,
-
-      600,  600,  600,  704,   87,   87,  689,  601,  689,  699,
-      602,  603,  701,  689,   87,   87,   87,   87,   87,   87,
-       87,   87,  700,  687,  706,   87,  707,   87,  601,  604,
-      601,   87,  708,  602,  710,  603,   87,  705,  711,  716,
-      712,  713,  715,   87,  714,   87,   87,   87,  717,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,  719,  724,
-       87,  727,  732,   87,  722,  720,  731,   87,   87,  723,
-       87,  736,  725,  726,  728,   87,  733,  730,  734,  735,
-      729,  686,  686,  686,  686,  686,  686,  600,  600,  600,
-      600,  600,  600,   87,   87,   87,  750,  601,   87,  754,
-
-      602,  603,   87,  751,   87,  753,   87,  756,   87,  757,
-       87,   87,   87,  687,   87,  762,  759,  764,  601,  690,
-      601,  752,  755,  602,  760,  603,  758,   87,   87,   87,
-      767,  765,   87,   87,   87,  763,  761,  768,  766,   87,
-      770,   87,   87,   87,   87,   87,  769,   87,   87,  771,
-       87,   87,  774,   87,  772,   87,   87,   87,   87,  779,
-       87,  795,  780,  773,   87,   87,   87,  775,  776,  777,
-      797,  778,  686,  686,  686,  686,  686,  686,  793,   87,
-      796,  794,   87,  800,   87,  801,  803,   87,   87,  798,
-      804,  805,   87,   87,   87,   87,  799,  802,  807,  806,
-
-       87,   87,   87,  808,  743,   87,   87,   87,  809,  828,
-       87,   87,   87,   87,  830,  831,   87,  810,  833,   87,
-       87,   87,  834,   87,  811,  827,  826,   87,   87,  825,
-      836,  837,  829,   87,  832,   87,   87,  839,   87,  840,
-       87,   87,  835,   87,  838,  850,   87,  887,   87,  851,
-      852,  855,   87,  856,  849,  857,   87,   87,  853,  858,
-       87,   87,   87,   87,  854,   87,  859,  864,  865,  860,
-      863,   87,   87,  866,   87,  868,  867,  869,   87,   87,
-       87,  870,   87,   87,   87,  873,   87,  875,   87,  876,
-       87,   87,   87,  874,   87,  872,   87,   87,   87,  871,
-
-       87,  880,   87,  887,  862,  887,  879,  881,  887,  887,
-      877,  878,  886,  887,  861,  884,   87,   87,  882,  883,
-       87,   87,  885,   69,   69,   69,   69,   69,   69,   69,
-       69,   69,   69,   69,   69,   69,   75,   75,   75,   75,
-       75,   75,   75,   75,   75,   75,   75,   75,   75,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   86,   87,  887,   86,  887,   86,   86,   86,
-       86,   86,  140,  848,  887,  847,  140,  140,  140,  140,
-      140,  140,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  204,  887,  845,  204,  887,
-
-      204,  204,  204,  204,  204,  208,  844,  208,  208,  887,
-      208,  208,  208,  208,  208,  208,  843,  208,  216,  887,
-      842,  216,  216,  216,  216,  216,  216,  216,  216,   87,
-      216,  239,  239,  239,  239,  239,  239,  239,  239,  239,
-      239,  239,  239,  239,  253,  253,   87,  253,   87,  887,
-      824,  253,  269,  887,  823,  269,  821,  269,  269,  269,
-      269,  269,  273,  887,  273,  819,  887,  817,  273,  275,
-      887,  275,  815,  813,   87,  275,  348,   87,  348,   87,
-       87,   87,  348,  350,   87,  350,   87,   87,   87,  350,
-      354,   87,  354,   87,   87,  887,  354,  356,  792,  356,
-
-      790,  887,  887,  356,  358,  787,  358,  785,  783,   87,
-      358,  365,   87,  365,   87,   87,   87,  365,  367,   87,
-      367,   87,  749,  746,  367,  239,  239,  239,  239,  239,
-      239,  239,  239,  239,  239,  239,  239,  239,  380,  745,
-      380,  382,  382,  743,  382,  382,  382,  205,  382,  253,
-      253,  739,  253,  392,  738,  392,  670,   87,   87,  392,
-      394,   87,  394,   87,   87,   87,  394,  396,   87,  396,
-       87,   87,   87,  396,  273,   87,  273,  398,   87,  398,
-       87,   87,   87,  398,  275,  697,  275,   86,  696,  694,
-       86,  692,   86,   86,   86,   86,   86,  199,  199,  199,
-
-      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+       72,   72,   72,   72,   72,   71,   71,   71,   71,   76,
+       76,   79,   79,  123,  124,   90,  141,   79,   79,   87,
+       76,   76,   80,   81,   82,   82,   82,   80,   82,   81,
+
+       83,   83,   83,   82,   91,   93,   87,  142,  146,   98,
+       95,   99,   99,   99,   99,   99,   99,  252,  887,   94,
+      100,   85,   96,   97,   85,  101,  161,  118,  143,   77,
+       77,   77,   77,  144,  147,  102,  103,   87,  104,  104,
+      104,  104,  105,  105,  119,   87,  120,  121,  148,  263,
+      149,  264,  254,  260,  183,  106,  195,   87,  159,  107,
+      160,  150,  151,  152,   87,  108,  109,  153,  154,  162,
+      155,  110,   87,  156,  157,  145,  163,  106,   87,  182,
+       87,  158,  164,  111,  206,   87,  263,   87,  264,   87,
+       87,  108,  194,   87,  109,  103,  250,  112,  112,  112,
+
+      112,  112,  112,   87,  169,  177,  170,  196,  193,   87,
+      207,  180,  165,  230,  106,  171,  166,  181,  113,  178,
+      251,  167,   87,  258,  114,  168,  179,  172,   87,  263,
+      115,  264,  248,   87,   87,  173,  106,  174,  249,  231,
+      175,  143,  116,  263,  176,  264,  144,  259,  317,  283,
+      114,  125,  280,  500,  249,  126,  127,   87,  128,  191,
+      129,  130,  256,  131,  249,  132,   87,  265,  257,  184,
+      185,  257,  248,   87,  133,  134,  135,  501,  188,  186,
+      249,  263,  187,  264,  271,   87,  189,  265,  145,  256,
+      305,  200,  201,  190,  257,  136,  200,  257,  137,  263,
+
+      887,  264,  192,  197,   81,   82,   82,   82,  197,   87,
+      272,  198,  202,  202,  202,  202,  202,  202,   80,   81,
+       82,   82,   82,   80,   87,  138,  139,  209,  210,  263,
+      887,  264,  209,  282,  211,  255,  263,  267,  264,  211,
+       82,   81,   82,   82,   82,   82,   87,  887,  212,  212,
+      212,  212,   82,   81,   83,   83,   83,   82,  887,  211,
+       99,   99,   99,   99,   99,   99,  242,  242,  242,  242,
+      266,  263,  263,  264,  264,  213,  143,  263,  211,  264,
+       87,  144,  375,  211,  211,   87,   87,  211,  211,   87,
+       87,   87,  286,  241,  887,  211,   87,   87,  211,  243,
+
+      211,  214,  211,  281,  215,  217,  278,  284,  285,  218,
+      219,  307,  298,  279,  220,  221,   87,  222,   87,  223,
+       87,   87,  887,   87,  309,  300,   87,   87,  224,  225,
+      226,  103,  303,  105,  105,  105,  105,  105,  105,   87,
+      299,   87,  301,  302,   87,  304,  308,  310,   87,  227,
+      106,  245,  228,  245,  306,   87,  246,  246,  246,  246,
+      246,  246,   87,  313,   87,  315,  244,   87,   87,  311,
+      314,   87,  106,   87,   87,   87,  323,   87,   87,  322,
+      229,  233,  233,  233,  233,  233,  233,  312,  333,  247,
+      319,  316,  328,  320,  318,   87,   87,  234,  235,  236,
+
+      321,  237,  236,   87,  324,   87,  325,  143,  335,  360,
+      331,  361,   87,   87,  238,  337,  326,  327,   87,  236,
+      235,  236,   87,  329,  237,  332,  236,  287,  288,  289,
+      336,  290,  291,  334,   87,  292,   87,  293,  407,  360,
+      330,  361,  294,  295,  296,   87,  297,  339,  360,  343,
+      361,   87,  200,  201,  338,  340,  346,  200,  341,   87,
+      342,  197,   81,   82,   82,   82,  197,  200,  201,  198,
+      378,  361,  200,  202,  202,  202,  202,  202,  202,  344,
+      201,  360,  347,  361,  344,  360,  345,  361,  202,  202,
+      202,  202,  202,  202,  209,  210,  378,  143,  361,  209,
+
+      202,  202,  202,  202,  202,  202,  352,  352,  352,  352,
+      360,   87,  361,  362,  360,  360,  361,  361,  360,  363,
+      361,  360,  360,  361,  361,  369,  369,  370,  369,  370,
+      435,   87,  371,  371,  371,  371,  371,  371,  373,  353,
+      373,   87,  263,  373,  264,  263,   87,  264,  369,  402,
+       87,  369,  234,  235,  236,  406,  237,  236,  388,  401,
+      373,   87,  373,   87,   87,  372,  390,  373,  105,  105,
+      105,  105,  105,  105,  236,  235,  236,  404,   87,  237,
+      405,  236,  403,  408,  388,  106,  246,  246,  246,  246,
+      246,  246,  391,   87,   87,   87,   87,   87,   87,  419,
+
+       87,  255,  425,  432,   87,  420,  434,  106,  376,  376,
+      376,  376,  376,  376,  381,  409,  413,  105,  105,  105,
+      105,  105,  105,   87,  234,  245,  236,  245,  237,  236,
+      246,  246,  246,  246,  246,  246,   87,  383,  410,  384,
+       87,  377,   87,  385,  411,  412,  236,   87,  236,  386,
+      255,  237,   87,  236,  112,  112,  112,  112,  112,  112,
+      414,  387,  415,  417,  418,  384,   87,  416,   87,  385,
+       87,   87,   87,   87,   87,   87,   87,   87,   87,  421,
+      427,  426,  433,   87,  437,   87,   87,  260,  423,  424,
+       87,   87,  436,  429,  428,  422,   87,  430,  431,  439,
+
+       87,  438,   87,   87,  446,  441,  440,  442,  443,   87,
+       87,   87,   87,   87,   87,  445,   87,   87,   87,   87,
+       87,  448,  447,   87,   87,  444,  449,  451,   87,  456,
+       87,  450,   87,   87,   87,  452,  455,  454,   87,  453,
+      457,  462,  460,  461,   87,   87,  458,  464,   87,  515,
+      459,  463,  465,  466,  344,  201,  201,   87,  887,  344,
+      467,  345,  199,  211,  211,  211,  211,  352,  352,  352,
+      352,  360,  360,  361,  361,  371,  371,  371,  371,  371,
+      371,  370,  569,  370,  492,  492,  371,  371,  371,  371,
+      371,  371,  887,   87,  493,  494,  477,  488,  488,  488,
+
+      488,  488,  488,  233,  233,  233,  233,  233,  233,  516,
+      492,  492,   87,  234,   87,  236,   87,  237,  236,  242,
+      242,  242,  242,  105,  105,  495,  381,  517,   87,   87,
+      489,  496,   87,  518,   87,  236,  374,  236,  519,  520,
+      237,  521,  236,  376,  376,  376,  376,  376,  376,  383,
+       87,  384,  375,  496,   87,  385,  522,  496,  497,  887,
+      497,  386,   87,  498,  498,  498,  498,  498,  498,   87,
+      525,  495,  526,  387,   87,  524,  377,  384,  523,  496,
+       87,  385,  383,   87,  384,   87,   87,  527,  385,   87,
+       87,  532,   87,   87,  502,   87,  499,   87,  535,  528,
+
+      529,  537,  530,  531,  533,   87,  387,   87,   87,  541,
+      384,  534,  538,   87,  385,   87,  536,   87,   87,   87,
+      539,  540,   87,   87,  546,   87,   87,   87,  544,  542,
+       87,  548,   87,   87,  547,  543,   87,   87,  549,   87,
+      545,   87,  552,   87,   87,  550,  556,  554,  551,   87,
+      559,   87,  553,  555,   87,   87,  557,   87,   87,  558,
+       87,   87,   87,  564,  560,  567,  563,  568,   87,  561,
+      566,  562,   87,  565,   87,   87,  571,   87,   87,  573,
+      627,  201,  492,  570,  576,  574,  572,  577,  211,  211,
+      211,  211,  493,   87,  575,  488,  488,  488,  488,  488,
+
+      488,  376,  376,  376,  376,  376,  376,   87,  492,   87,
+      618,  234,  595,  236,  595,  237,  236,  596,  596,  596,
+      596,  596,  596,  492,   87,  599,  492,  621,  489,   87,
+       87,  623,   87,  236,  490,  236,  598,  619,  237,   87,
+      236,  498,  498,  498,  498,  498,  498,  620,   87,  492,
+      597,  599,  492,  600,  600,  600,  600,  600,  600,   87,
+      631,  622,   87,  887,  625,  887,   87,  862,   87,  601,
+      497,  602,  497,  603,  602,  498,  498,  498,  498,  498,
+      498,  624,  628,   87,   87,  630,  604,   87,   87,   87,
+       87,  602,  633,  602,  626,  636,  603,  632,  602,  629,
+
+      634,   87,   87,  635,   87,   87,   87,  642,   87,   87,
+      637,  641,   87,   87,  640,   87,   87,  643,  647,  639,
+       87,   87,  887,   87,   87,   87,  638,   87,   87,  644,
+      645,  646,  648,  650,   87,   87,   87,  649,   87,  653,
+      651,   87,  652,   87,  654,  655,   87,   87,   87,   87,
+      656,  657,   87,  660,  659,  661,  664,   87,  658,   87,
+       87,  663,   87,   87,   87,  668,  665,  688,  688,  662,
+      666,  701,  702,  887,  887,   87,  667,  488,  488,  488,
+      488,  488,  488,  596,  596,  596,  596,  596,  596,  595,
+      688,  595,  704,   87,  596,  596,  596,  596,  596,  596,
+
+      600,  600,  600,  600,  600,  600,  703,  688,   87,  887,
+      594,  686,  686,  686,  686,  686,  686,  689,   87,  689,
+       87,   87,  689,  699,   87,  708,   87,  601,  706,  602,
+      688,  603,  602,  604,  707,   87,  700,  710,  709,  689,
+       87,  689,   87,  705,  687,   87,  689,   87,   87,  602,
+       87,  602,   87,  716,  603,  718,  602,  712,   87,   87,
+       87,   87,  711,   87,  714,   87,   87,  713,   87,  717,
+      715,   87,  721,  719,   87,  724,   87,   87,  722,  720,
+      727,   87,   87,   87,  725,   87,  731,  723,   87,  732,
+      726,   87,   87,  861,  728,  734,   87,  733,  730,   87,
+
+      735,   87,   87,  729,   87,   87,  751,  736,  686,  686,
+      686,  686,  686,  686,  600,  600,  600,  600,  600,  600,
+      750,   87,  755,   87,  601,  763,  602,  752,  603,  602,
+      753,   87,   87,  764,   87,  756,  754,  757,   87,  758,
+       87,  687,   87,   87,  759,  767,  602,  690,  602,  761,
+       87,  603,  766,  602,   87,  760,   87,  762,   87,  765,
+       87,  768,   87,  769,   87,   87,   87,   87,  770,   87,
+       87,   87,   87,   87,  771,   87,  774,   87,  772,   87,
+       87,  779,   87,   87,  795,   87,  780,  773,   87,   87,
+      776,   87,  775,  803,  777,  796,  778,  686,  686,  686,
+
+      686,  686,  686,  793,   87,  794,  799,   87,  798,   87,
+      801,   87,   87,   87,  797,  804,  805,  800,  806,   87,
+       87,   87,  802,  807,   87,   87,   87,  808,   87,   87,
+      743,   87,   87,   87,  809,  828,   87,   87,   87,  830,
+      831,  833,   87,   87,   87,  834,   87,  836,  810,  811,
+      826,  827,   87,  829,   87,  825,  832,  837,   87,   87,
+       87,  838,  839,   87,   87,  835,   87,   87,   87,  851,
+      850,  855,   87,  852,  840,   87,   87,   87,  853,  857,
+      849,   87,   87,   87,  854,  858,  859,   87,   87,  856,
+      860,   87,  863,  864,  865,   87,   87,  866,   87,  868,
+
+      867,  869,   87,   87,   87,  870,   87,   87,   87,  873,
+       87,  875,   87,  876,   87,   87,   87,  874,   87,  872,
+       87,   87,   87,  871,   87,  880,   87,   87,   87,  887,
+      879,  881,  887,  848,  877,  878,  886,  887,  847,  884,
+      887,  845,  882,  883,  887,  844,  885,   69,   69,   69,
+       69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
+       75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
+       75,   75,   75,   78,   78,   78,   78,   78,   78,   78,
+       78,   78,   78,   78,   78,   78,   86,  887,  843,   86,
+      887,   86,   86,   86,   86,   86,  140,  842,   87,   87,
+
+      140,  140,  140,  140,  140,  140,  199,  199,  199,  199,
+      199,  199,  199,  199,  199,  199,  199,  199,  199,  204,
+       87,  887,  204,  824,  204,  204,  204,  204,  204,  208,
+      887,  208,  208,  823,  208,  208,  208,  208,  208,  208,
+      821,  208,  216,  887,  819,  216,  216,  216,  216,  216,
+      216,  216,  216,  887,  216,  239,  239,  239,  239,  239,
+      239,  239,  239,  239,  239,  239,  239,  239,  253,  253,
+      817,  253,  887,  815,  813,  253,  269,   87,   87,  269,
+       87,  269,  269,  269,  269,  269,  273,   87,  273,   87,
+       87,   87,  273,  275,   87,  275,   87,   87,   87,  275,
+
+      348,   87,  348,  887,  792,  790,  348,  350,  887,  350,
+      887,  787,  785,  350,  354,  783,  354,   87,   87,   87,
+      354,  356,   87,  356,   87,   87,   87,  356,  358,  749,
+      358,  746,  745,  743,  358,  365,  205,  365,  739,  738,
+      670,  365,  367,   87,  367,   87,   87,   87,  367,  239,
+      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
+      239,  239,  380,   87,  380,  382,  382,   87,  382,  382,
+      382,   87,  382,  253,  253,   87,  253,  392,   87,  392,
+       87,   87,   87,  392,  394,   87,  394,   87,   87,  697,
+      394,  396,  696,  396,  694,  692,  690,  396,  273,  598,
+
+      273,  398,  685,  398,  684,  682,  680,  398,  275,  678,
+      275,   86,  676,  674,   86,  672,   86,   86,   86,   86,
+       86,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+      199,  199,  199,  199,  468,  468,  468,  468,  468,  468,
+      468,  468,  468,  468,  468,  468,  468,  469,  670,  469,
+       87,   87,   87,  469,  471,   87,  471,   87,   87,   87,
+      471,  473,   87,  473,   87,   87,   87,  473,  348,  617,
+      348,  475,  615,  475,  613,  611,  609,  475,  350,  607,
+      350,  478,  502,  478,  605,  605,  594,  478,  354,  593,
+      354,  480,  591,  480,  483,  483,  589,  480,  356,  587,
+
+      356,  482,  585,  482,  583,  581,  579,  482,  358,   87,
+      358,  484,   87,  484,   87,   87,   87,  484,  365,   87,
+      365,  486,   87,  486,   87,  514,  512,  486,  367,  510,
+      367,  491,  508,  491,  506,  491,  504,  491,  380,  490,
+      380,  487,  380,  485,  380,  382,  382,  361,  382,  382,
+      382,  361,  382,  503,  483,  503,  481,  479,  476,  503,
+      505,  474,  505,  472,  470,   87,  505,  507,   87,  507,
+       87,  400,  399,  507,  392,  397,  392,  509,  395,  509,
+      393,  270,  265,  509,  394,  264,  394,  511,  389,  511,
+      389,  252,  379,  511,  396,  379,  396,  513,  240,  513,
+
+      374,  368,  366,  513,  398,  364,  398,   86,  360,  359,
+       86,  357,   86,   86,   86,   86,   86,  468,  468,  468,
       468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
-      468,  468,  468,  469,  690,  469,  598,  685,  684,  469,
-      471,  682,  471,  680,  678,  676,  471,  473,  674,  473,
-      672,  670,   87,  473,  348,   87,  348,  475,   87,  475,
-       87,   87,   87,  475,  350,   87,  350,  478,   87,  478,
-       87,   87,   87,  478,  354,  617,  354,  480,  615,  480,
-      613,  611,  609,  480,  356,  607,  356,  482,  502,  482,
-      605,  605,  594,  482,  358,  593,  358,  484,  591,  484,
-      483,  483,  589,  484,  365,  587,  365,  486,  585,  486,
-
-      583,  581,  579,  486,  367,   87,  367,  491,   87,  491,
-       87,  491,   87,  491,  380,   87,  380,   87,  380,   87,
-      380,  382,  382,   87,  382,  382,  382,  514,  382,  503,
-      512,  503,  510,  508,  506,  503,  505,  504,  505,  490,
-      487,  485,  505,  507,  361,  507,  361,  483,  481,  507,
-      392,  479,  392,  509,  476,  509,  474,  472,  470,  509,
-      394,   87,  394,  511,   87,  511,   87,  400,  399,  511,
-      396,  397,  396,  513,  395,  513,  393,  270,  265,  513,
-      398,  264,  398,   86,  389,  389,   86,  252,   86,   86,
-       86,   86,   86,  468,  468,  468,  468,  468,  468,  468,
-
-      468,  468,  468,  468,  468,  468,  578,  379,  578,  379,
-      240,  374,  578,  469,  368,  469,  580,  366,  580,  364,
-      360,  359,  580,  471,  357,  471,  582,  355,  582,  351,
-      349,  205,  582,  473,  201,  473,  584,   87,  584,  277,
-      276,  274,  584,  475,  270,  475,  586,  265,  586,  268,
-      265,  263,  586,  478,  262,  478,  588,  261,  588,  240,
-      232,   85,  588,  480,   85,  480,  482,   87,  482,  205,
-      203,   85,  482,  590,  122,  590,  117,   87,  887,  590,
-      484,   70,  484,  592,   70,  592,  887,  887,  887,  592,
-      486,  887,  486,  491,  887,  491,  887,  491,  887,  491,
-
-      382,  887,  382,  887,  887,  887,  382,  606,  887,  606,
-      887,  887,  887,  606,  503,  887,  503,  608,  887,  608,
-      887,  887,  887,  608,  505,  887,  505,  610,  887,  610,
-      887,  887,  887,  610,  507,  887,  507,  612,  887,  612,
-      887,  887,  887,  612,  509,  887,  509,  614,  887,  614,
-      887,  887,  887,  614,  511,  887,  511,  616,  887,  616,
-      887,  887,  887,  616,  513,  887,  513,   86,  887,  887,
-       86,  887,   86,   86,   86,   86,   86,  669,  669,  669,
+      578,  355,  578,  351,  349,  205,  578,  469,  201,  469,
+      580,   87,  580,  277,  276,  274,  580,  471,  270,  471,
+      582,  265,  582,  268,  265,  263,  582,  473,  262,  473,
+      584,  261,  584,  240,  232,   85,  584,  475,   85,  475,
+      586,   87,  586,  205,  203,   85,  586,  478,  122,  478,
+      588,  117,  588,   87,  887,   70,  588,  480,   70,  480,
+      482,  887,  482,  887,  887,  887,  482,  590,  887,  590,
+
+      887,  887,  887,  590,  484,  887,  484,  592,  887,  592,
+      887,  887,  887,  592,  486,  887,  486,  491,  887,  491,
+      887,  491,  887,  491,  382,  887,  382,  887,  887,  887,
+      382,  606,  887,  606,  887,  887,  887,  606,  503,  887,
+      503,  608,  887,  608,  887,  887,  887,  608,  505,  887,
+      505,  610,  887,  610,  887,  887,  887,  610,  507,  887,
+      507,  612,  887,  612,  887,  887,  887,  612,  509,  887,
+      509,  614,  887,  614,  887,  887,  887,  614,  511,  887,
+      511,  616,  887,  616,  887,  887,  887,  616,  513,  887,
+      513,   86,  887,  887,   86,  887,   86,   86,   86,   86,
+
+       86,  669,  669,  669,  669,  669,  669,  669,  669,  669,
+      669,  669,  669,  669,  671,  887,  671,  887,  887,  887,
+      671,  578,  887,  578,  673,  887,  673,  887,  887,  887,
+      673,  580,  887,  580,  675,  887,  675,  887,  887,  887,
+      675,  582,  887,  582,  677,  887,  677,  887,  887,  887,
+      677,  584,  887,  584,  679,  887,  679,  887,  887,  887,
+      679,  586,  887,  586,  681,  887,  681,  887,  887,  887,
+      681,  588,  887,  588,  683,  887,  683,  887,  887,  887,
+      683,  590,  887,  590,   86,  887,   86,  887,  887,  887,
+       86,  592,  887,  592,  491,  887,  491,  887,  887,  887,
+
+      491,  691,  887,  691,  887,  887,  887,  691,  606,  887,
+      606,  693,  887,  693,  887,  887,  887,  693,  608,  887,
+      608,  695,  887,  695,  887,  887,  887,  695,  610,  887,
+      610,  140,  887,  140,  887,  887,  887,  140,  612,  887,
+      612,  698,  887,  698,  614,  887,  614,   86,  887,  887,
+       86,  887,   86,   86,   86,   86,   86,  616,  887,  616,
       669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
-      671,  887,  671,  887,  887,  887,  671,  578,  887,  578,
-
-      673,  887,  673,  887,  887,  887,  673,  580,  887,  580,
-      675,  887,  675,  887,  887,  887,  675,  582,  887,  582,
-      677,  887,  677,  887,  887,  887,  677,  584,  887,  584,
-      679,  887,  679,  887,  887,  887,  679,  586,  887,  586,
-      681,  887,  681,  887,  887,  887,  681,  588,  887,  588,
-      683,  887,  683,  887,  887,  887,  683,  590,  887,  590,
-       86,  887,   86,  887,  887,  887,   86,  592,  887,  592,
-      491,  887,  491,  887,  887,  887,  491,  691,  887,  691,
-      887,  887,  887,  691,  606,  887,  606,  693,  887,  693,
-      887,  887,  887,  693,  608,  887,  608,  695,  887,  695,
-
-      887,  887,  887,  695,  610,  887,  610,  140,  887,  140,
-      887,  887,  887,  140,  612,  887,  612,  698,  887,  698,
-      614,  887,  614,   86,  887,  887,   86,  887,   86,   86,
-       86,   86,   86,  616,  887,  616,  669,  669,  669,  669,
-      669,  669,  669,  669,  669,  669,  669,  669,  669,  737,
-      887,  737,  887,  887,  887,  737,  671,  887,  671,  204,
-      887,  204,  887,  887,  887,  204,  673,  887,  673,  740,
-      887,  740,  675,  887,  675,  204,  887,  887,  204,  887,
-      204,  204,  204,  204,  204,  677,  887,  677,  741,  887,
-      741,  679,  887,  679,  681,  887,  681,  742,  887,  742,
-
-      683,  887,  683,   86,  887,   86,  744,  887,  744,  887,
-      887,  887,  744,  691,  887,  691,  269,  887,  269,  887,
-      887,  887,  269,  693,  887,  693,  747,  887,  747,  695,
-      887,  695,  140,  887,  140,  748,  887,  748,  887,  887,
-      887,  748,   86,  887,  887,   86,  887,   86,   86,   86,
-       86,   86,  781,  887,  781,  737,  887,  737,  204,  887,
-      204,  782,  887,  782,  887,  887,  887,  782,  784,  887,
-      784,  887,  887,  887,  784,  786,  887,  786,  887,  887,
-      887,  786,  788,  887,  788,  789,  887,  789,  887,  887,
-      887,  789,  791,  887,  791,  887,  887,  887,  791,  812,
-
-      887,  812,  887,  887,  887,  812,  814,  887,  814,  887,
-      887,  887,  814,  816,  887,  816,  887,  887,  887,  816,
-      818,  887,  818,  887,  887,  887,  818,  820,  887,  820,
-      887,  887,  887,  820,  822,  887,  822,  887,  887,  887,
-      822,  616,  887,  616,  887,  887,  887,  616,  841,  887,
-      841,  887,  887,  887,  841,  677,  887,  677,  887,  887,
-      887,  677,  681,  887,  681,  887,  887,  887,  681,   86,
-      887,   86,  887,  887,  887,   86,  846,  887,  846,  887,
-      887,  887,  846,  140,  887,  140,  887,  887,  887,  140,
-      204,  887,  204,  887,  887,  887,  204,   11,  887,  887,
-
+      669,  669,  669,  737,  887,  737,  887,  887,  887,  737,
+      671,  887,  671,  204,  887,  204,  887,  887,  887,  204,
+      673,  887,  673,  740,  887,  740,  675,  887,  675,  204,
+
+      887,  887,  204,  887,  204,  204,  204,  204,  204,  677,
+      887,  677,  741,  887,  741,  679,  887,  679,  681,  887,
+      681,  742,  887,  742,  683,  887,  683,   86,  887,   86,
+      744,  887,  744,  887,  887,  887,  744,  691,  887,  691,
+      269,  887,  269,  887,  887,  887,  269,  693,  887,  693,
+      747,  887,  747,  695,  887,  695,  140,  887,  140,  748,
+      887,  748,  887,  887,  887,  748,   86,  887,  887,   86,
+      887,   86,   86,   86,   86,   86,  781,  887,  781,  737,
+      887,  737,  204,  887,  204,  782,  887,  782,  887,  887,
+      887,  782,  784,  887,  784,  887,  887,  887,  784,  786,
+
+      887,  786,  887,  887,  887,  786,  788,  887,  788,  789,
+      887,  789,  887,  887,  887,  789,  791,  887,  791,  887,
+      887,  887,  791,  812,  887,  812,  887,  887,  887,  812,
+      814,  887,  814,  887,  887,  887,  814,  816,  887,  816,
+      887,  887,  887,  816,  818,  887,  818,  887,  887,  887,
+      818,  820,  887,  820,  887,  887,  887,  820,  822,  887,
+      822,  887,  887,  887,  822,  616,  887,  616,  887,  887,
+      887,  616,  841,  887,  841,  887,  887,  887,  841,  677,
+      887,  677,  887,  887,  887,  677,  681,  887,  681,  887,
+      887,  887,  681,   86,  887,   86,  887,  887,  887,   86,
+
+      846,  887,  846,  887,  887,  887,  846,  140,  887,  140,
+      887,  887,  887,  140,  204,  887,  204,  887,  887,  887,
+      204,   11,  887,  887,  887,  887,  887,  887,  887,  887,
       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
@@ -1096,9 +1099,9 @@
       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
-      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
-      887,  887
+
+      887,  887,  887,  887,  887,  887,  887
     } ;
 
-static yyconst flex_int16_t yy_chk[2883] =
+static yyconst flex_int16_t yy_chk[2908] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1110,6 +1113,6 @@
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    2,   16,   24,   16,   24,    2,
-       19,   19,    2,    5,    5,    5,    5,    5,    5,    5,
+        1,    1,    1,    1,    1,    2,   16,   24,   16,   24,
+        2,   19,   19,    2,    5,    5,    5,    5,    5,    5,
 
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
@@ -1120,294 +1123,297 @@
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
-        5,    5,    5,    5,    5,    5,    5,    7,    8,    9,
-       10,   37,   37,   20,   39,    9,   10,  886,    7,    8,
-       13,   13,   13,   13,   13,   13,   15,   15,   15,   15,
-
-       15,   15,   20,   25,   39,   42,   53,   28,   27,   28,
-       28,   28,   28,   28,   28,  109,  115,   25,   29,   25,
-       27,   27,   27,   29,   53,   35,    7,    8,    9,   10,
-       40,   42,   48,   29,   30,   40,   30,   30,   30,   30,
-       30,   30,   35,   62,   35,   35,   44,  302,   44,  109,
-      115,  885,   48,   30,  302,   62,   30,   57,   47,   45,
-       45,   45,   30,   30,   45,   45,   57,   45,   30,   55,
-       45,   45,   49,   40,   30,   45,   40,   49,   45,   47,
-       30,   47,   56,   64,   49,  164,   51,   55,   30,   73,
-       49,   30,   31,   55,   31,   31,   31,   31,   31,   31,
-
-       50,   51,  164,   51,   56,  154,   54,   59,  877,   50,
-       61,   31,   51,   50,   31,   73,   54,   58,   50,   59,
-       31,  154,   50,   54,   87,  159,   31,   59,   61,   58,
-       58,   60,   31,   64,   59,  126,   60,  126,   31,   58,
-       52,  159,   58,   68,   68,   52,   31,   38,   68,   60,
-       87,   38,   38,   52,   38,   52,   38,   38,   52,   38,
-      108,   38,   52,  114,   68,   68,   68,   68,   68,   68,
-       38,   38,   38,  127,   60,  127,  153,   60,   67,   67,
-       67,   67,   67,   67,  108,  153,   67,  114,  876,  873,
-       38,   60,  166,   38,   80,   80,   80,   80,   80,   80,
-
-       82,   82,   82,   82,   82,   82,   83,   83,   83,   83,
-       83,   83,  129,  166,  129,  104,  104,  104,  104,  107,
-       38,   38,   77,   77,  872,  107,  113,   77,  169,   77,
-      111,  132,  113,  132,   77,  103,  103,  103,  103,  103,
-      103,  131,  104,   77,   77,   77,   77,  104,  111,  169,
-      110,  107,  130,  131,   77,  131,  111,  105,  113,  105,
-      105,  105,  105,  105,  105,  151,  130,  103,  130,   77,
-      104,  134,   77,  134,  281,  116,  105,   77,   77,  110,
-      142,   77,   77,  151,  110,  133,  133,  152,  133,   77,
-      281,  105,   77,  116,   77,   77,   77,  105,   77,   85,
-
-      137,  116,  137,   85,   85,  152,  142,  110,   85,   85,
-      106,   85,  106,   85,  155,  106,  106,  106,  106,  106,
-      106,  150,   85,   85,   85,  135,  135,  135,  139,  145,
-      139,  156,  155,  160,  145,  161,  150,  157,  162,  167,
-      165,  168,   85,  150,  161,   85,  163,  106,  171,  157,
-      165,  163,  172,  156,  173,  160,  181,  176,  170,  162,
-      162,  181,  167,  170,  163,  174,  175,  172,  168,  182,
-      171,  173,  145,   85,   99,   99,   99,   99,   99,   99,
-      177,  170,  179,  174,  176,  184,  175,  183,  180,  185,
-       99,   99,  525,   99,   99,  525,  182,  179,  183,  218,
-
-      185,  218,  177,  184,  179,  180,   99,  191,  183,  183,
-      186,   99,   99,   99,  158,  186,   99,  185,   99,  158,
-      158,  158,  188,  158,  158,  190,  187,  158,  189,  158,
-      186,  205,  193,  189,  158,  158,  158,  627,  158,  187,
-      627,  192,  188,  194,  190,  193,  219,  193,  219,  220,
-      191,  220,  248,  191,  192,  189,  194,  205,  223,  225,
-      223,  225,  192,  197,  197,  197,  197,  197,  197,  198,
-      198,  197,  209,  209,  198,  200,  200,  209,  248,  870,
-      200,  202,  202,  308,  224,  224,  202,  224,  202,  308,
-      198,  198,  198,  198,  198,  198,  200,  200,  200,  200,
-
-      200,  200,  202,  202,  202,  202,  202,  202,  212,  212,
-      212,  212,  221,  222,  226,  226,  226,  228,  229,  228,
-      229,  234,  243,  237,  338,  222,  221,  222,  221,  235,
-      278,  235,  256,  279,  235,  235,  235,  235,  235,  235,
-      212,  236,  270,  278,  234,  236,  237,  280,  291,  241,
-      241,  279,  241,  241,  284,  266,  243,  266,  256,  267,
-      869,  267,  236,  291,  236,  280,  235,  338,  270,  236,
-      241,  241,  241,  282,  284,  241,  289,  241,  244,  244,
-      244,  244,  244,  244,  245,  245,  245,  245,  245,  245,
-      282,  247,  286,  247,  289,  244,  247,  247,  247,  247,
-
-      247,  247,  255,  255,  255,  255,  255,  255,  283,  285,
-      244,  295,  286,  283,  285,  288,  244,  246,  246,  246,
-      246,  246,  246,  253,  295,  292,  260,  260,  260,  260,
-      260,  260,  862,  246,  255,  296,  246,  246,  288,  293,
-      290,  292,  292,  294,  293,  253,  297,  253,  300,  246,
-      287,  253,  294,  300,  246,  303,  246,  253,  260,  246,
-      299,  246,  296,  304,  297,  287,  290,  301,  305,  253,
-      312,  287,  287,  253,  306,  303,  301,  253,  299,  306,
-      307,  304,  309,  310,  314,  307,  312,  311,  313,  305,
-      305,  315,  310,  311,  318,  316,  315,  313,  317,  314,
-
-      316,  309,  320,  317,  319,  322,  323,  324,  326,  327,
-      325,  328,  329,  318,  331,  320,  322,  332,  330,  333,
-      317,  323,  319,  325,  334,  335,  324,  330,  337,  329,
-      326,  328,  327,  339,  340,  341,  331,  337,  335,  342,
-      332,  333,  334,  341,  342,  343,  345,  340,  344,  344,
-      861,  339,  345,  344,  385,  344,  352,  352,  352,  352,
-      343,  353,  353,  353,  353,  362,  363,  362,  363,  370,
-      370,  370,  370,  370,  370,  372,  380,  372,  385,  860,
-      372,  372,  372,  372,  372,  372,  380,  402,  352,  371,
-      371,  371,  371,  371,  371,  374,  374,  374,  374,  374,
-
-      374,  404,  380,  402,  387,  371,  381,  401,  371,  371,
-      375,  375,  375,  375,  375,  375,  381,  383,  401,  382,
-      404,  371,  387,  383,  408,  432,  371,  374,  371,  403,
-      387,  371,  381,  371,  376,  376,  376,  376,  376,  376,
-      386,  382,  375,  382,  403,  405,  408,  382,  432,  383,
-      384,  859,  384,  382,  405,  384,  384,  384,  384,  384,
-      384,  406,  386,  412,  386,  382,  376,  407,  386,  382,
-      409,  410,  406,  382,  386,  411,  407,  415,  416,  409,
-      413,  414,  420,  417,  410,  412,  386,  384,  417,  418,
-      386,  411,  423,  413,  386,  419,  416,  414,  414,  415,
-
-      422,  419,  421,  420,  418,  427,  425,  423,  429,  430,
-      431,  418,  433,  421,  439,  434,  435,  427,  433,  422,
-      425,  437,  440,  431,  441,  435,  442,  443,  445,  429,
-      434,  430,  444,  447,  439,  449,  437,  445,  450,  441,
-      451,  456,  443,  452,  440,  453,  454,  450,  442,  457,
-      447,  455,  444,  460,  461,  463,  494,  458,  449,  456,
-      455,  451,  457,  452,  458,  453,  459,  462,  454,  464,
-      466,  468,  463,  459,  467,  462,  461,  468,  460,  495,
-      464,  491,  494,  467,  521,  462,  477,  477,  477,  477,
-      636,  491,  466,  488,  488,  488,  488,  488,  488,  490,
-
-      490,  490,  490,  490,  490,  495,  521,  491,  493,  488,
-      515,  518,  488,  488,  492,  516,  492,  636,  493,  492,
-      492,  492,  492,  492,  492,  488,  518,  515,  516,  519,
-      488,  490,  488,  520,  493,  488,  524,  488,  497,  497,
-      497,  497,  497,  497,  529,  522,  520,  524,  527,  519,
-      526,  492,  498,  498,  498,  498,  498,  498,  522,  523,
-      530,  533,  531,  527,  523,  529,  528,  531,  498,  530,
-      526,  498,  498,  499,  533,  499,  532,  534,  499,  499,
-      499,  499,  499,  499,  498,  528,  535,  532,  536,  498,
-      537,  498,  538,  539,  498,  535,  498,  541,  539,  542,
-
-      544,  538,  547,  541,  545,  534,  546,  537,  542,  549,
-      536,  547,  550,  551,  557,  552,  554,  544,  549,  545,
-      560,  546,  555,  557,  558,  551,  561,  555,  562,  550,
-      552,  554,  564,  558,  565,  567,  566,  568,  572,  561,
-      564,  569,  560,  566,  565,  562,  571,  569,  572,  568,
-      574,  575,  601,  621,  603,  571,  620,  567,  594,  594,
-      594,  594,  594,  594,  575,  620,  621,  574,  595,  595,
-      595,  595,  595,  595,  597,  601,  597,  603,  639,  597,
-      597,  597,  597,  597,  597,  602,  622,  639,  855,  602,
-      594,  596,  596,  596,  596,  596,  596,  600,  600,  600,
-
-      600,  600,  600,  622,  618,  619,  602,  596,  602,  618,
-      596,  596,  619,  602,  623,  626,  629,  624,  625,  631,
-      633,  628,  618,  596,  624,  630,  625,  632,  596,  600,
-      596,  635,  626,  596,  628,  596,  634,  623,  629,  634,
-      630,  631,  633,  637,  632,  638,  640,  641,  635,  644,
-      642,  645,  646,  651,  650,  657,  668,  656,  637,  642,
-      653,  646,  657,  851,  640,  638,  656,  664,  665,  641,
-      667,  668,  644,  645,  650,  699,  664,  653,  665,  667,
-      651,  686,  686,  686,  686,  686,  686,  690,  690,  690,
-      690,  690,  690,  700,  704,  702,  699,  686,  703,  704,
-
-      686,  686,  705,  700,  706,  703,  707,  706,  708,  707,
-      710,  711,  713,  686,  714,  713,  710,  715,  686,  690,
-      686,  702,  705,  686,  711,  686,  708,  712,  716,  717,
-      718,  716,  721,  720,  719,  714,  712,  719,  717,  722,
-      721,  723,  724,  725,  728,  715,  720,  732,  731,  722,
-      733,  735,  725,  736,  723,  718,  756,  761,  754,  735,
-      758,  756,  736,  724,  755,  757,  759,  728,  731,  732,
-      758,  733,  743,  743,  743,  743,  743,  743,  754,  760,
-      757,  755,  762,  761,  763,  762,  764,  766,  768,  759,
-      766,  768,  769,  772,  773,  770,  760,  763,  770,  769,
-
-      771,  778,  793,  771,  743,  795,  797,  796,  772,  797,
-      798,  799,  800,  764,  799,  800,  802,  773,  803,  804,
-      806,  810,  804,  811,  778,  796,  795,  807,  808,  793,
-      807,  808,  798,  826,  802,  809,  832,  810,  827,  811,
-      830,  829,  806,  803,  809,  827,  828,  848,  831,  828,
-      829,  831,  835,  832,  826,  835,  838,  839,  830,  838,
-      840,  849,  850,  853,  830,  852,  839,  850,  852,  840,
-      849,  854,  856,  853,  857,  856,  854,  857,  858,  863,
-      864,  858,  865,  866,  867,  865,  868,  867,  871,  868,
-      874,  875,  878,  866,  879,  864,  880,  882,  881,  863,
-
-      883,  878,  884,  847,  846,  845,  875,  879,  844,  843,
-      871,  874,  884,  842,  841,  882,  837,  836,  880,  881,
-      834,  833,  883,  888,  888,  888,  888,  888,  888,  888,
-      888,  888,  888,  888,  888,  888,  889,  889,  889,  889,
-      889,  889,  889,  889,  889,  889,  889,  889,  889,  890,
-      890,  890,  890,  890,  890,  890,  890,  890,  890,  890,
-      890,  890,  891,  825,  824,  891,  823,  891,  891,  891,
-      891,  891,  892,  822,  821,  820,  892,  892,  892,  892,
-      892,  892,  893,  893,  893,  893,  893,  893,  893,  893,
-      893,  893,  893,  893,  893,  894,  819,  818,  894,  817,
-
-      894,  894,  894,  894,  894,  895,  816,  895,  895,  815,
-      895,  895,  895,  895,  895,  895,  814,  895,  896,  813,
-      812,  896,  896,  896,  896,  896,  896,  896,  896,  805,
-      896,  897,  897,  897,  897,  897,  897,  897,  897,  897,
-      897,  897,  897,  897,  898,  898,  801,  898,  794,  792,
-      791,  898,  899,  790,  789,  899,  788,  899,  899,  899,
-      899,  899,  900,  787,  900,  786,  785,  784,  900,  901,
-      783,  901,  782,  781,  780,  901,  902,  779,  902,  777,
-      776,  775,  902,  903,  774,  903,  767,  765,  753,  903,
-      904,  752,  904,  751,  750,  749,  904,  905,  748,  905,
-
-      747,  746,  745,  905,  906,  742,  906,  741,  740,  734,
-      906,  907,  730,  907,  729,  727,  726,  907,  908,  709,
-      908,  701,  698,  693,  908,  909,  909,  909,  909,  909,
-      909,  909,  909,  909,  909,  909,  909,  909,  910,  691,
-      910,  911,  911,  687,  911,  911,  911,  677,  911,  912,
-      912,  673,  912,  913,  671,  913,  669,  666,  663,  913,
-      914,  662,  914,  661,  660,  659,  914,  915,  658,  915,
-      655,  654,  652,  915,  916,  649,  916,  917,  648,  917,
-      647,  643,  616,  917,  918,  612,  918,  919,  610,  608,
-      919,  606,  919,  919,  919,  919,  919,  920,  920,  920,
-
-      920,  920,  920,  920,  920,  920,  920,  920,  920,  920,
-      921,  921,  921,  921,  921,  921,  921,  921,  921,  921,
-      921,  921,  921,  922,  604,  922,  598,  592,  590,  922,
-      923,  588,  923,  586,  584,  582,  923,  924,  580,  924,
-      578,  577,  576,  924,  925,  573,  925,  926,  570,  926,
-      563,  559,  556,  926,  927,  553,  927,  928,  548,  928,
-      543,  540,  517,  928,  929,  513,  929,  930,  511,  930,
-      509,  507,  505,  930,  931,  503,  931,  932,  502,  932,
-      501,  500,  489,  932,  933,  486,  933,  934,  484,  934,
-      483,  482,  480,  934,  935,  478,  935,  936,  475,  936,
-
-      473,  471,  469,  936,  937,  465,  937,  938,  448,  938,
-      446,  938,  438,  938,  939,  436,  939,  428,  939,  426,
-      939,  940,  940,  424,  940,  940,  940,  398,  940,  941,
-      396,  941,  394,  392,  391,  941,  942,  390,  942,  377,
-      367,  365,  942,  943,  364,  943,  360,  358,  356,  943,
-      944,  354,  944,  945,  350,  945,  348,  347,  346,  945,
-      946,  336,  946,  947,  321,  947,  298,  277,  275,  947,
-      948,  273,  948,  949,  272,  949,  271,  269,  268,  949,
-      950,  263,  950,  951,  259,  258,  951,  254,  951,  951,
-      951,  951,  951,  952,  952,  952,  952,  952,  952,  952,
-
-      952,  952,  952,  952,  952,  952,  953,  251,  953,  250,
-      239,  238,  953,  954,  231,  954,  955,  230,  955,  227,
-      217,  215,  955,  956,  214,  956,  957,  213,  957,  207,
-      206,  204,  957,  958,  199,  958,  959,  178,  959,  149,
-      147,  146,  959,  960,  140,  960,  961,  138,  961,  136,
-      128,  125,  961,  962,  124,  962,  963,  120,  963,  101,
-       98,   95,  963,  964,   93,  964,  965,   86,  965,   72,
-       70,   66,  965,  966,   36,  966,   33,   18,   11,  966,
-      967,    4,  967,  968,    3,  968,    0,    0,    0,  968,
-      969,    0,  969,  970,    0,  970,    0,  970,    0,  970,
-
-      971,    0,  971,    0,    0,    0,  971,  972,    0,  972,
-        0,    0,    0,  972,  973,    0,  973,  974,    0,  974,
-        0,    0,    0,  974,  975,    0,  975,  976,    0,  976,
-        0,    0,    0,  976,  977,    0,  977,  978,    0,  978,
-        0,    0,    0,  978,  979,    0,  979,  980,    0,  980,
-        0,    0,    0,  980,  981,    0,  981,  982,    0,  982,
-        0,    0,    0,  982,  983,    0,  983,  984,    0,    0,
-      984,    0,  984,  984,  984,  984,  984,  985,  985,  985,
-      985,  985,  985,  985,  985,  985,  985,  985,  985,  985,
-      986,    0,  986,    0,    0,    0,  986,  987,    0,  987,
-
-      988,    0,  988,    0,    0,    0,  988,  989,    0,  989,
-      990,    0,  990,    0,    0,    0,  990,  991,    0,  991,
-      992,    0,  992,    0,    0,    0,  992,  993,    0,  993,
-      994,    0,  994,    0,    0,    0,  994,  995,    0,  995,
-      996,    0,  996,    0,    0,    0,  996,  997,    0,  997,
-      998,    0,  998,    0,    0,    0,  998,  999,    0,  999,
-     1000,    0, 1000,    0,    0,    0, 1000, 1001,    0, 1001,
-     1002,    0, 1002,    0,    0,    0, 1002, 1003,    0, 1003,
-        0,    0,    0, 1003, 1004,    0, 1004, 1005,    0, 1005,
-        0,    0,    0, 1005, 1006,    0, 1006, 1007,    0, 1007,
-
-        0,    0,    0, 1007, 1008,    0, 1008, 1009,    0, 1009,
-        0,    0,    0, 1009, 1010,    0, 1010, 1011,    0, 1011,
-     1012,    0, 1012, 1013,    0,    0, 1013,    0, 1013, 1013,
-     1013, 1013, 1013, 1014,    0, 1014, 1015, 1015, 1015, 1015,
-     1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1016,
-        0, 1016,    0,    0,    0, 1016, 1017,    0, 1017, 1018,
-        0, 1018,    0,    0,    0, 1018, 1019,    0, 1019, 1020,
-        0, 1020, 1021,    0, 1021, 1022,    0,    0, 1022,    0,
-     1022, 1022, 1022, 1022, 1022, 1023,    0, 1023, 1024,    0,
-     1024, 1025,    0, 1025, 1026,    0, 1026, 1027,    0, 1027,
-
-     1028,    0, 1028, 1029,    0, 1029, 1030,    0, 1030,    0,
-        0,    0, 1030, 1031,    0, 1031, 1032,    0, 1032,    0,
-        0,    0, 1032, 1033,    0, 1033, 1034,    0, 1034, 1035,
-        0, 1035, 1036,    0, 1036, 1037,    0, 1037,    0,    0,
-        0, 1037, 1038,    0,    0, 1038,    0, 1038, 1038, 1038,
-     1038, 1038, 1039,    0, 1039, 1040,    0, 1040, 1041,    0,
-     1041, 1042,    0, 1042,    0,    0,    0, 1042, 1043,    0,
-     1043,    0,    0,    0, 1043, 1044,    0, 1044,    0,    0,
-        0, 1044, 1045,    0, 1045, 1046,    0, 1046,    0,    0,
-        0, 1046, 1047,    0, 1047,    0,    0,    0, 1047, 1048,
-
-        0, 1048,    0,    0,    0, 1048, 1049,    0, 1049,    0,
-        0,    0, 1049, 1050,    0, 1050,    0,    0,    0, 1050,
-     1051,    0, 1051,    0,    0,    0, 1051, 1052,    0, 1052,
-        0,    0,    0, 1052, 1053,    0, 1053,    0,    0,    0,
-     1053, 1054,    0, 1054,    0,    0,    0, 1054, 1055,    0,
-     1055,    0,    0,    0, 1055, 1056,    0, 1056,    0,    0,
-        0, 1056, 1057,    0, 1057,    0,    0,    0, 1057, 1058,
-        0, 1058,    0,    0,    0, 1058, 1059,    0, 1059,    0,
-        0,    0, 1059, 1060,    0, 1060,    0,    0,    0, 1060,
-     1061,    0, 1061,    0,    0,    0, 1061,  887,  887,  887,
-
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    7,
+        8,    9,   10,   37,   37,   20,   39,    9,   10,  886,
+        7,    8,   13,   13,   13,   13,   13,   13,   15,   15,
+
+       15,   15,   15,   15,   20,   25,   48,   39,   42,   28,
+       27,   28,   28,   28,   28,   28,   28,  109,  115,   25,
+       29,   25,   27,   27,   27,   29,   48,   35,   40,    7,
+        8,    9,   10,   40,   42,   29,   30,   47,   30,   30,
+       30,   30,   30,   30,   35,   57,   35,   35,   44,  126,
+       44,  126,  109,  115,   57,   30,   64,   56,   47,   30,
+       47,   45,   45,   45,   49,   30,   30,   45,   45,   49,
+       45,   30,   40,   45,   45,   40,   49,   30,   45,   56,
+       62,   45,   49,   30,   73,  885,  127,   53,  127,   51,
+       61,   30,   62,   55,   30,   31,  108,   31,   31,   31,
+
+       31,   31,   31,   50,   51,   53,   51,   64,   61,   54,
+       73,   55,   50,   87,   31,   51,   50,   55,   31,   54,
+      108,   50,   52,  114,   31,   50,   54,   52,  175,  129,
+       31,  129,  107,  154,  151,   52,   31,   52,  107,   87,
+       52,   60,   31,  132,   52,  132,   60,  114,  175,  154,
+       31,   38,  151,  385,  111,   38,   38,   58,   38,   60,
+       38,   38,  113,   38,  107,   38,   59,  130,  113,   58,
+       58,  116,  111,  164,   38,   38,   38,  385,   59,   58,
+      111,  130,   58,  130,  142,   60,   59,  131,   60,  116,
+      164,   68,   68,   59,  113,   38,   68,  116,   38,  131,
+
+      110,  131,   60,   67,   67,   67,   67,   67,   67,  877,
+      142,   67,   68,   68,   68,   68,   68,   68,   80,   80,
+       80,   80,   80,   80,  153,   38,   38,   77,   77,  134,
+      110,  134,   77,  153,   77,  110,  135,  135,  135,   77,
+       82,   82,   82,   82,   82,   82,  876,  243,   77,   77,
+       77,   77,   83,   83,   83,   83,   83,   83,  110,   77,
+      103,  103,  103,  103,  103,  103,  104,  104,  104,  104,
+      133,  133,  137,  133,  137,   77,  145,  139,   77,  139,
+      157,  145,  243,   77,   77,  152,  156,   77,   77,  155,
+      166,  150,  157,  103,  104,   77,  159,  168,   77,  104,
+
+       77,   77,   77,  152,   77,   85,  150,  155,  156,   85,
+       85,  166,  159,  150,   85,   85,  161,   85,  160,   85,
+      145,  162,  104,  167,  168,  161,  169,  163,   85,   85,
+       85,  105,  163,  105,  105,  105,  105,  105,  105,  873,
+      160,  171,  162,  162,  165,  163,  167,  169,  173,   85,
+      105,  106,   85,  106,  165,  172,  106,  106,  106,  106,
+      106,  106,  180,  171,  170,  173,  105,  176,  177,  170,
+      172,  181,  105,  174,  184,  187,  181,  182,  179,  180,
+       85,   99,   99,   99,   99,   99,   99,  170,  187,  106,
+      177,  174,  184,  179,  176,  183,  190,   99,   99,   99,
+
+      179,   99,   99,  189,  182,  186,  183,  191,  189,  218,
+      186,  218,  185,  188,   99,  190,  183,  183,  284,   99,
+       99,   99,  158,  185,   99,  186,   99,  158,  158,  158,
+      189,  158,  158,  188,  192,  158,  194,  158,  284,  219,
+      185,  219,  158,  158,  158,  193,  158,  192,  220,  194,
+      220,  191,  198,  198,  191,  192,  205,  198,  193,  872,
+      193,  197,  197,  197,  197,  197,  197,  200,  200,  197,
+      248,  221,  200,  198,  198,  198,  198,  198,  198,  202,
+      202,  223,  205,  223,  202,  221,  202,  221,  200,  200,
+      200,  200,  200,  200,  209,  209,  248,  338,  222,  209,
+
+      202,  202,  202,  202,  202,  202,  212,  212,  212,  212,
+      222,  309,  222,  224,  224,  225,  224,  225,  226,  226,
+      226,  228,  229,  228,  229,  234,  234,  235,  236,  235,
+      309,  279,  235,  235,  235,  235,  235,  235,  237,  212,
+      237,  338,  266,  237,  266,  267,  278,  267,  234,  279,
+      283,  236,  241,  241,  241,  283,  241,  241,  256,  278,
+      237,  281,  237,  282,  280,  235,  270,  237,  244,  244,
+      244,  244,  244,  244,  241,  241,  241,  281,  285,  241,
+      282,  241,  280,  285,  256,  244,  245,  245,  245,  245,
+      245,  245,  270,  288,  293,  286,  294,  300,  306,  293,
+
+      308,  244,  300,  306,  870,  294,  308,  244,  246,  246,
+      246,  246,  246,  246,  253,  286,  288,  255,  255,  255,
+      255,  255,  255,  287,  246,  247,  246,  247,  246,  246,
+      247,  247,  247,  247,  247,  247,  290,  253,  287,  253,
+      869,  246,  289,  253,  287,  287,  246,  292,  246,  253,
+      255,  246,  291,  246,  260,  260,  260,  260,  260,  260,
+      289,  253,  290,  292,  292,  253,  295,  291,  296,  253,
+      297,  299,  301,  302,  303,  304,  305,  307,  311,  295,
+      302,  301,  307,  310,  311,  312,  319,  260,  297,  299,
+      313,  314,  310,  304,  303,  296,  318,  305,  305,  313,
+
+      315,  312,  316,  317,  319,  315,  314,  316,  317,  320,
+      322,  323,  324,  326,  325,  318,  327,  328,  331,  329,
+      330,  322,  320,  332,  334,  317,  323,  325,  333,  330,
+      335,  324,  337,  339,  340,  326,  329,  328,  401,  327,
+      331,  337,  334,  335,  341,  343,  332,  340,  342,  401,
+      333,  339,  341,  342,  344,  344,  345,  460,  862,  344,
+      343,  344,  345,  352,  352,  352,  352,  353,  353,  353,
+      353,  362,  363,  362,  363,  370,  370,  370,  370,  370,
+      370,  372,  460,  372,  380,  381,  372,  372,  372,  372,
+      372,  372,  861,  402,  380,  381,  352,  371,  371,  371,
+
+      371,  371,  371,  374,  374,  374,  374,  374,  374,  402,
+      380,  381,  403,  371,  404,  371,  860,  371,  371,  375,
+      375,  375,  375,  375,  375,  383,  382,  403,  406,  405,
+      371,  383,  407,  404,  408,  371,  374,  371,  405,  406,
+      371,  407,  371,  376,  376,  376,  376,  376,  376,  382,
+      412,  382,  375,  387,  411,  382,  408,  383,  384,  386,
+      384,  382,  410,  384,  384,  384,  384,  384,  384,  409,
+      411,  387,  412,  382,  413,  410,  376,  382,  409,  387,
+      415,  382,  386,  414,  386,  416,  417,  413,  386,  418,
+      421,  417,  419,  422,  386,  420,  384,  427,  419,  414,
+
+      414,  421,  415,  416,  418,  423,  386,  425,  429,  427,
+      386,  418,  422,  430,  386,  431,  420,  432,  433,  434,
+      423,  425,  435,  437,  433,  439,  440,  441,  431,  429,
+      442,  435,  443,  444,  434,  430,  449,  445,  437,  447,
+      432,  450,  441,  451,  454,  439,  445,  443,  440,  452,
+      450,  453,  442,  444,  455,  456,  447,  457,  458,  449,
+      459,  461,  463,  455,  451,  458,  454,  459,  462,  452,
+      457,  453,  466,  456,  464,  467,  462,  525,  859,  463,
+      525,  468,  491,  461,  467,  464,  462,  468,  477,  477,
+      477,  477,  491,  515,  466,  488,  488,  488,  488,  488,
+
+      488,  490,  490,  490,  490,  490,  490,  519,  491,  521,
+      515,  488,  492,  488,  492,  488,  488,  492,  492,  492,
+      492,  492,  492,  494,  516,  495,  493,  519,  488,  855,
+      851,  521,  518,  488,  490,  488,  493,  516,  488,  529,
+      488,  497,  497,  497,  497,  497,  497,  518,  520,  494,
+      492,  495,  493,  498,  498,  498,  498,  498,  498,  523,
+      529,  520,  526,  848,  523,  847,  528,  846,  522,  498,
+      499,  498,  499,  498,  498,  499,  499,  499,  499,  499,
+      499,  522,  526,  524,  527,  528,  498,  531,  530,  532,
+      533,  498,  531,  498,  524,  534,  498,  530,  498,  527,
+
+      532,  535,  537,  533,  536,  538,  539,  541,  542,  547,
+      535,  539,  544,  541,  538,  545,  546,  542,  547,  537,
+      550,  551,  845,  549,  534,  552,  536,  554,  560,  544,
+      545,  546,  549,  551,  555,  557,  558,  550,  561,  555,
+      552,  562,  554,  565,  557,  558,  564,  567,  566,  568,
+      560,  561,  575,  565,  564,  566,  569,  571,  562,  574,
+      572,  568,  569,  620,  619,  575,  571,  601,  601,  567,
+      572,  619,  620,  844,  843,  622,  574,  594,  594,  594,
+      594,  594,  594,  595,  595,  595,  595,  595,  595,  597,
+      601,  597,  622,  621,  597,  597,  597,  597,  597,  597,
+
+      600,  600,  600,  600,  600,  600,  621,  602,  626,  842,
+      594,  596,  596,  596,  596,  596,  596,  603,  618,  603,
+      623,  624,  603,  618,  628,  626,  625,  596,  624,  596,
+      602,  596,  596,  600,  625,  627,  618,  628,  627,  603,
+      629,  603,  630,  623,  596,  631,  603,  632,  633,  596,
+      634,  596,  635,  634,  596,  636,  596,  630,  637,  638,
+      640,  644,  629,  639,  632,  641,  642,  631,  645,  635,
+      633,  646,  639,  637,  650,  642,  651,  656,  640,  638,
+      646,  653,  657,  636,  644,  665,  656,  641,  664,  657,
+      645,  667,  668,  841,  650,  665,  700,  664,  653,  699,
+
+      667,  702,  705,  651,  714,  837,  700,  668,  686,  686,
+      686,  686,  686,  686,  690,  690,  690,  690,  690,  690,
+      699,  708,  705,  703,  686,  714,  686,  702,  686,  686,
+      703,  704,  706,  715,  707,  706,  704,  707,  710,  708,
+      712,  686,  711,  717,  710,  718,  686,  690,  686,  712,
+      720,  686,  717,  686,  713,  711,  716,  713,  719,  716,
+      721,  719,  715,  720,  722,  723,  724,  725,  721,  728,
+      731,  718,  732,  735,  722,  733,  725,  736,  723,  756,
+      757,  735,  836,  754,  756,  759,  736,  724,  755,  760,
+      731,  761,  728,  764,  732,  757,  733,  743,  743,  743,
+
+      743,  743,  743,  754,  758,  755,  760,  762,  759,  763,
+      762,  769,  766,  768,  758,  766,  768,  761,  769,  772,
+      770,  764,  763,  770,  771,  773,  778,  771,  793,  795,
+      743,  798,  797,  796,  772,  797,  799,  800,  802,  799,
+      800,  803,  804,  806,  807,  804,  810,  807,  773,  778,
+      795,  796,  809,  798,  808,  793,  802,  808,  811,  826,
+      830,  809,  810,  827,  829,  806,  828,  803,  831,  828,
+      827,  831,  832,  829,  811,  834,  835,  839,  830,  835,
+      826,  840,  838,  849,  830,  838,  839,  853,  850,  832,
+      840,  852,  849,  850,  852,  854,  856,  853,  857,  856,
+
+      854,  857,  858,  863,  864,  858,  865,  866,  867,  865,
+      868,  867,  871,  868,  874,  875,  878,  866,  879,  864,
+      880,  882,  881,  863,  883,  878,  884,  833,  825,  824,
+      875,  879,  823,  822,  871,  874,  884,  821,  820,  882,
+      819,  818,  880,  881,  817,  816,  883,  888,  888,  888,
+      888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
+      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
+      889,  889,  889,  890,  890,  890,  890,  890,  890,  890,
+      890,  890,  890,  890,  890,  890,  891,  815,  814,  891,
+      813,  891,  891,  891,  891,  891,  892,  812,  805,  801,
+
+      892,  892,  892,  892,  892,  892,  893,  893,  893,  893,
+      893,  893,  893,  893,  893,  893,  893,  893,  893,  894,
+      794,  792,  894,  791,  894,  894,  894,  894,  894,  895,
+      790,  895,  895,  789,  895,  895,  895,  895,  895,  895,
+      788,  895,  896,  787,  786,  896,  896,  896,  896,  896,
+      896,  896,  896,  785,  896,  897,  897,  897,  897,  897,
+      897,  897,  897,  897,  897,  897,  897,  897,  898,  898,
+      784,  898,  783,  782,  781,  898,  899,  780,  779,  899,
+      777,  899,  899,  899,  899,  899,  900,  776,  900,  775,
+      774,  767,  900,  901,  765,  901,  753,  752,  751,  901,
+
+      902,  750,  902,  749,  748,  747,  902,  903,  746,  903,
+      745,  742,  741,  903,  904,  740,  904,  734,  730,  729,
+      904,  905,  727,  905,  726,  709,  701,  905,  906,  698,
+      906,  693,  691,  687,  906,  907,  677,  907,  673,  671,
+      669,  907,  908,  666,  908,  663,  662,  661,  908,  909,
+      909,  909,  909,  909,  909,  909,  909,  909,  909,  909,
+      909,  909,  910,  660,  910,  911,  911,  659,  911,  911,
+      911,  658,  911,  912,  912,  655,  912,  913,  654,  913,
+      652,  649,  648,  913,  914,  647,  914,  643,  616,  612,
+      914,  915,  610,  915,  608,  606,  604,  915,  916,  598,
+
+      916,  917,  592,  917,  590,  588,  586,  917,  918,  584,
+      918,  919,  582,  580,  919,  578,  919,  919,  919,  919,
+      919,  920,  920,  920,  920,  920,  920,  920,  920,  920,
+      920,  920,  920,  920,  921,  921,  921,  921,  921,  921,
+      921,  921,  921,  921,  921,  921,  921,  922,  577,  922,
+      576,  573,  570,  922,  923,  563,  923,  559,  556,  553,
+      923,  924,  548,  924,  543,  540,  517,  924,  925,  513,
+      925,  926,  511,  926,  509,  507,  505,  926,  927,  503,
+      927,  928,  502,  928,  501,  500,  489,  928,  929,  486,
+      929,  930,  484,  930,  483,  482,  480,  930,  931,  478,
+
+      931,  932,  475,  932,  473,  471,  469,  932,  933,  465,
+      933,  934,  448,  934,  446,  438,  436,  934,  935,  428,
+      935,  936,  426,  936,  424,  398,  396,  936,  937,  394,
+      937,  938,  392,  938,  391,  938,  390,  938,  939,  377,
+      939,  367,  939,  365,  939,  940,  940,  364,  940,  940,
+      940,  360,  940,  941,  358,  941,  356,  354,  350,  941,
+      942,  348,  942,  347,  346,  336,  942,  943,  321,  943,
+      298,  277,  275,  943,  944,  273,  944,  945,  272,  945,
+      271,  269,  268,  945,  946,  263,  946,  947,  259,  947,
+      258,  254,  251,  947,  948,  250,  948,  949,  239,  949,
+
+      238,  231,  230,  949,  950,  227,  950,  951,  217,  215,
+      951,  214,  951,  951,  951,  951,  951,  952,  952,  952,
+      952,  952,  952,  952,  952,  952,  952,  952,  952,  952,
+      953,  213,  953,  207,  206,  204,  953,  954,  199,  954,
+      955,  178,  955,  149,  147,  146,  955,  956,  140,  956,
+      957,  138,  957,  136,  128,  125,  957,  958,  124,  958,
+      959,  120,  959,  101,   98,   95,  959,  960,   93,  960,
+      961,   86,  961,   72,   70,   66,  961,  962,   36,  962,
+      963,   33,  963,   18,   11,    4,  963,  964,    3,  964,
+      965,    0,  965,    0,    0,    0,  965,  966,    0,  966,
+
+        0,    0,    0,  966,  967,    0,  967,  968,    0,  968,
+        0,    0,    0,  968,  969,    0,  969,  970,    0,  970,
+        0,  970,    0,  970,  971,    0,  971,    0,    0,    0,
+      971,  972,    0,  972,    0,    0,    0,  972,  973,    0,
+      973,  974,    0,  974,    0,    0,    0,  974,  975,    0,
+      975,  976,    0,  976,    0,    0,    0,  976,  977,    0,
+      977,  978,    0,  978,    0,    0,    0,  978,  979,    0,
+      979,  980,    0,  980,    0,    0,    0,  980,  981,    0,
+      981,  982,    0,  982,    0,    0,    0,  982,  983,    0,
+      983,  984,    0,    0,  984,    0,  984,  984,  984,  984,
+
+      984,  985,  985,  985,  985,  985,  985,  985,  985,  985,
+      985,  985,  985,  985,  986,    0,  986,    0,    0,    0,
+      986,  987,    0,  987,  988,    0,  988,    0,    0,    0,
+      988,  989,    0,  989,  990,    0,  990,    0,    0,    0,
+      990,  991,    0,  991,  992,    0,  992,    0,    0,    0,
+      992,  993,    0,  993,  994,    0,  994,    0,    0,    0,
+      994,  995,    0,  995,  996,    0,  996,    0,    0,    0,
+      996,  997,    0,  997,  998,    0,  998,    0,    0,    0,
+      998,  999,    0,  999, 1000,    0, 1000,    0,    0,    0,
+     1000, 1001,    0, 1001, 1002,    0, 1002,    0,    0,    0,
+
+     1002, 1003,    0, 1003,    0,    0,    0, 1003, 1004,    0,
+     1004, 1005,    0, 1005,    0,    0,    0, 1005, 1006,    0,
+     1006, 1007,    0, 1007,    0,    0,    0, 1007, 1008,    0,
+     1008, 1009,    0, 1009,    0,    0,    0, 1009, 1010,    0,
+     1010, 1011,    0, 1011, 1012,    0, 1012, 1013,    0,    0,
+     1013,    0, 1013, 1013, 1013, 1013, 1013, 1014,    0, 1014,
+     1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
+     1015, 1015, 1015, 1016,    0, 1016,    0,    0,    0, 1016,
+     1017,    0, 1017, 1018,    0, 1018,    0,    0,    0, 1018,
+     1019,    0, 1019, 1020,    0, 1020, 1021,    0, 1021, 1022,
+
+        0,    0, 1022,    0, 1022, 1022, 1022, 1022, 1022, 1023,
+        0, 1023, 1024,    0, 1024, 1025,    0, 1025, 1026,    0,
+     1026, 1027,    0, 1027, 1028,    0, 1028, 1029,    0, 1029,
+     1030,    0, 1030,    0,    0,    0, 1030, 1031,    0, 1031,
+     1032,    0, 1032,    0,    0,    0, 1032, 1033,    0, 1033,
+     1034,    0, 1034, 1035,    0, 1035, 1036,    0, 1036, 1037,
+        0, 1037,    0,    0,    0, 1037, 1038,    0,    0, 1038,
+        0, 1038, 1038, 1038, 1038, 1038, 1039,    0, 1039, 1040,
+        0, 1040, 1041,    0, 1041, 1042,    0, 1042,    0,    0,
+        0, 1042, 1043,    0, 1043,    0,    0,    0, 1043, 1044,
+
+        0, 1044,    0,    0,    0, 1044, 1045,    0, 1045, 1046,
+        0, 1046,    0,    0,    0, 1046, 1047,    0, 1047,    0,
+        0,    0, 1047, 1048,    0, 1048,    0,    0,    0, 1048,
+     1049,    0, 1049,    0,    0,    0, 1049, 1050,    0, 1050,
+        0,    0,    0, 1050, 1051,    0, 1051,    0,    0,    0,
+     1051, 1052,    0, 1052,    0,    0,    0, 1052, 1053,    0,
+     1053,    0,    0,    0, 1053, 1054,    0, 1054,    0,    0,
+        0, 1054, 1055,    0, 1055,    0,    0,    0, 1055, 1056,
+        0, 1056,    0,    0,    0, 1056, 1057,    0, 1057,    0,
+        0,    0, 1057, 1058,    0, 1058,    0,    0,    0, 1058,
+
+     1059,    0, 1059,    0,    0,    0, 1059, 1060,    0, 1060,
+        0,    0,    0, 1060, 1061,    0, 1061,    0,    0,    0,
+     1061,  887,  887,  887,  887,  887,  887,  887,  887,  887,
       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
@@ -1417,6 +1423,6 @@
       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
       887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
-      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
-      887,  887
+
+      887,  887,  887,  887,  887,  887,  887
     } ;
 
@@ -1461,6 +1467,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Wed Mar  2 18:07:20 2016
- * Update Count     : 434
+ * Last Modified On : Mon Mar 21 23:33:46 2016
+ * Update Count     : 450
  */
 #line 20 "lex.ll"
@@ -1474,6 +1480,7 @@
 
 #include "lex.h"
+#include "parser.h"										// YACC generated definitions based on C++ grammar
 #include "ParseNode.h"
-#include "parser.h"										// YACC generated definitions based on C++ grammar
+#include "TypedefTable.h"
 
 char *yyfilename;
@@ -1491,5 +1498,5 @@
 #define NUMERIC_RETURN(x)	rm_underscore(); RETURN_VAL( x ) // numeric constant
 #define KEYWORD_RETURN(x)	RETURN_CHAR( x )			// keyword
-#define IDENTIFIER_RETURN()	RETURN_VAL( (typedefTable.isIdentifier( yytext ) ? IDENTIFIER : typedefTable.isTypedef( yytext ) ? TYPEDEFname : TYPEGENname ) )
+#define IDENTIFIER_RETURN()	RETURN_VAL( typedefTable.isKind( yytext ) )
 #define ATTRIBUTE_RETURN()	RETURN_VAL( ATTR_IDENTIFIER )
 
@@ -1511,5 +1518,6 @@
 // attribute identifier, GCC: $ in identifier
 // numeric constants, CFA: '_' in constant
-// GCC: D (double), LD (long double) and iI (imaginary) suffixes
+// GCC: D (double), DL (long double) and iI (imaginary) suffixes
+//floating_suffix "_"?([fFdD]|[lL]|[D][L])|([iI][lLfFdD])|([lLfFdD][iI]))
 // character escape sequence, GCC: \e => esc character
 // ' stop highlighting
@@ -1520,5 +1528,5 @@
 
 
-#line 1523 "Parser/lex.cc"
+#line 1531 "Parser/lex.cc"
 
 #define INITIAL 0
@@ -1712,8 +1720,8 @@
 	register int yy_act;
     
-#line 137 "lex.ll"
+#line 139 "lex.ll"
 
 				   /* line directives */
-#line 1718 "Parser/lex.cc"
+#line 1726 "Parser/lex.cc"
 
 	if ( !(yy_init) )
@@ -1775,5 +1783,5 @@
 			++yy_cp;
 			}
-		while ( yy_base[yy_current_state] != 2798 );
+		while ( yy_base[yy_current_state] != 2822 );
 
 yy_find_action:
@@ -1812,5 +1820,5 @@
 /* rule 1 can match eol */
 YY_RULE_SETUP
-#line 139 "lex.ll"
+#line 141 "lex.ll"
 {
 	/* " stop highlighting */
@@ -1839,5 +1847,5 @@
 /* rule 2 can match eol */
 YY_RULE_SETUP
-#line 162 "lex.ll"
+#line 164 "lex.ll"
 ;
 	YY_BREAK
@@ -1845,5 +1853,5 @@
 case 3:
 YY_RULE_SETUP
-#line 165 "lex.ll"
+#line 167 "lex.ll"
 { BEGIN COMMENT; }
 	YY_BREAK
@@ -1851,10 +1859,10 @@
 /* rule 4 can match eol */
 YY_RULE_SETUP
-#line 166 "lex.ll"
+#line 168 "lex.ll"
 ;
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 167 "lex.ll"
+#line 169 "lex.ll"
 { BEGIN 0; }
 	YY_BREAK
@@ -1863,5 +1871,5 @@
 /* rule 6 can match eol */
 YY_RULE_SETUP
-#line 170 "lex.ll"
+#line 172 "lex.ll"
 ;
 	YY_BREAK
@@ -1869,10 +1877,10 @@
 case 7:
 YY_RULE_SETUP
-#line 173 "lex.ll"
+#line 175 "lex.ll"
 { WHITE_RETURN(' '); }
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 174 "lex.ll"
+#line 176 "lex.ll"
 { WHITE_RETURN(' '); }
 	YY_BREAK
@@ -1880,5 +1888,5 @@
 /* rule 9 can match eol */
 YY_RULE_SETUP
-#line 175 "lex.ll"
+#line 177 "lex.ll"
 { NEWLINE_RETURN(); }
 	YY_BREAK
@@ -1886,460 +1894,460 @@
 case 10:
 YY_RULE_SETUP
-#line 178 "lex.ll"
+#line 180 "lex.ll"
 { KEYWORD_RETURN(ALIGNAS); }			// C11
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 179 "lex.ll"
+#line 181 "lex.ll"
 { KEYWORD_RETURN(ALIGNOF); }			// C11
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 180 "lex.ll"
+#line 182 "lex.ll"
 { KEYWORD_RETURN(ALIGNOF); }			// GCC
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 181 "lex.ll"
+#line 183 "lex.ll"
 { KEYWORD_RETURN(ALIGNOF); }			// GCC
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 182 "lex.ll"
+#line 184 "lex.ll"
 { KEYWORD_RETURN(ASM); }
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 183 "lex.ll"
+#line 185 "lex.ll"
 { KEYWORD_RETURN(ASM); }				// GCC
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 184 "lex.ll"
+#line 186 "lex.ll"
 { KEYWORD_RETURN(ASM); }				// GCC
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 185 "lex.ll"
+#line 187 "lex.ll"
 { KEYWORD_RETURN(AT); }					// CFA
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 186 "lex.ll"
+#line 188 "lex.ll"
 { KEYWORD_RETURN(ATOMIC); }				// C11
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 187 "lex.ll"
+#line 189 "lex.ll"
 { KEYWORD_RETURN(ATTRIBUTE); }			// GCC
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 188 "lex.ll"
+#line 190 "lex.ll"
 { KEYWORD_RETURN(ATTRIBUTE); }			// GCC
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 189 "lex.ll"
+#line 191 "lex.ll"
 { KEYWORD_RETURN(AUTO); }
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 190 "lex.ll"
+#line 192 "lex.ll"
 { KEYWORD_RETURN(BOOL); }				// C99
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 191 "lex.ll"
+#line 193 "lex.ll"
 { KEYWORD_RETURN(BREAK); }
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 192 "lex.ll"
+#line 194 "lex.ll"
 { KEYWORD_RETURN(CASE); }
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 193 "lex.ll"
+#line 195 "lex.ll"
 { KEYWORD_RETURN(CATCH); }				// CFA
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 194 "lex.ll"
+#line 196 "lex.ll"
 { KEYWORD_RETURN(CATCHRESUME); }		// CFA
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 195 "lex.ll"
+#line 197 "lex.ll"
 { KEYWORD_RETURN(CHAR); }
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 196 "lex.ll"
+#line 198 "lex.ll"
 { KEYWORD_RETURN(CHOOSE); }				// CFA
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 197 "lex.ll"
+#line 199 "lex.ll"
 { KEYWORD_RETURN(COMPLEX); }			// C99
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 198 "lex.ll"
+#line 200 "lex.ll"
 { KEYWORD_RETURN(COMPLEX); }			// GCC
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 199 "lex.ll"
+#line 201 "lex.ll"
 { KEYWORD_RETURN(COMPLEX); }			// GCC
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 200 "lex.ll"
+#line 202 "lex.ll"
 { KEYWORD_RETURN(CONST); }
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 201 "lex.ll"
+#line 203 "lex.ll"
 { KEYWORD_RETURN(CONST); }				// GCC
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 202 "lex.ll"
+#line 204 "lex.ll"
 { KEYWORD_RETURN(CONST); }				// GCC
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 203 "lex.ll"
+#line 205 "lex.ll"
 { KEYWORD_RETURN(CONTINUE); }
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 204 "lex.ll"
+#line 206 "lex.ll"
 { KEYWORD_RETURN(DEFAULT); }
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 205 "lex.ll"
+#line 207 "lex.ll"
 { KEYWORD_RETURN(DISABLE); }			// CFA
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 206 "lex.ll"
+#line 208 "lex.ll"
 { KEYWORD_RETURN(DO); }
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 207 "lex.ll"
+#line 209 "lex.ll"
 { KEYWORD_RETURN(DOUBLE); }
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 208 "lex.ll"
+#line 210 "lex.ll"
 { KEYWORD_RETURN(DTYPE); }				// CFA
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 209 "lex.ll"
+#line 211 "lex.ll"
 { KEYWORD_RETURN(ELSE); }
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 210 "lex.ll"
+#line 212 "lex.ll"
 { KEYWORD_RETURN(ENABLE); }				// CFA
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 211 "lex.ll"
+#line 213 "lex.ll"
 { KEYWORD_RETURN(ENUM); }
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 212 "lex.ll"
+#line 214 "lex.ll"
 { KEYWORD_RETURN(EXTENSION); }			// GCC
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 213 "lex.ll"
+#line 215 "lex.ll"
 { KEYWORD_RETURN(EXTERN); }
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 214 "lex.ll"
+#line 216 "lex.ll"
 { KEYWORD_RETURN(FALLTHRU); }			// CFA
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 215 "lex.ll"
+#line 217 "lex.ll"
 { KEYWORD_RETURN(FINALLY); }			// CFA
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 216 "lex.ll"
+#line 218 "lex.ll"
 { KEYWORD_RETURN(FLOAT); }
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 217 "lex.ll"
+#line 219 "lex.ll"
 { KEYWORD_RETURN(FLOAT); }				// GCC
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 218 "lex.ll"
+#line 220 "lex.ll"
 { KEYWORD_RETURN(FOR); }
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 219 "lex.ll"
+#line 221 "lex.ll"
 { KEYWORD_RETURN(FORALL); }				// CFA
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 220 "lex.ll"
+#line 222 "lex.ll"
 { KEYWORD_RETURN(FORTRAN); }
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 221 "lex.ll"
+#line 223 "lex.ll"
 { KEYWORD_RETURN(FTYPE); }				// CFA
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 222 "lex.ll"
+#line 224 "lex.ll"
 { KEYWORD_RETURN(GENERIC); }			// C11
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 223 "lex.ll"
+#line 225 "lex.ll"
 { KEYWORD_RETURN(GOTO); }
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 224 "lex.ll"
+#line 226 "lex.ll"
 { KEYWORD_RETURN(IF); }
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 225 "lex.ll"
+#line 227 "lex.ll"
 { KEYWORD_RETURN(IMAGINARY); }			// C99
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 226 "lex.ll"
+#line 228 "lex.ll"
 { KEYWORD_RETURN(IMAGINARY); }			// GCC
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 227 "lex.ll"
+#line 229 "lex.ll"
 { KEYWORD_RETURN(IMAGINARY); }			// GCC
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 228 "lex.ll"
+#line 230 "lex.ll"
 { KEYWORD_RETURN(INLINE); }				// C99
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 229 "lex.ll"
+#line 231 "lex.ll"
 { KEYWORD_RETURN(INLINE); }				// GCC
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 230 "lex.ll"
+#line 232 "lex.ll"
 { KEYWORD_RETURN(INLINE); }				// GCC
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 231 "lex.ll"
+#line 233 "lex.ll"
 { KEYWORD_RETURN(INT); }
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 232 "lex.ll"
+#line 234 "lex.ll"
 { KEYWORD_RETURN(INT); }				// GCC
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 233 "lex.ll"
+#line 235 "lex.ll"
 { KEYWORD_RETURN(LABEL); }				// GCC
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 234 "lex.ll"
+#line 236 "lex.ll"
 { KEYWORD_RETURN(LONG); }
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 235 "lex.ll"
+#line 237 "lex.ll"
 { KEYWORD_RETURN(LVALUE); }				// CFA
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 236 "lex.ll"
+#line 238 "lex.ll"
 { KEYWORD_RETURN(NORETURN); }			// C11
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 237 "lex.ll"
+#line 239 "lex.ll"
 { KEYWORD_RETURN(OFFSETOF); }		// GCC
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 238 "lex.ll"
+#line 240 "lex.ll"
 { KEYWORD_RETURN(OTYPE); }				// CFA
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 239 "lex.ll"
+#line 241 "lex.ll"
 { KEYWORD_RETURN(REGISTER); }
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 240 "lex.ll"
+#line 242 "lex.ll"
 { KEYWORD_RETURN(RESTRICT); }			// C99
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 241 "lex.ll"
+#line 243 "lex.ll"
 { KEYWORD_RETURN(RESTRICT); }			// GCC
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 242 "lex.ll"
+#line 244 "lex.ll"
 { KEYWORD_RETURN(RESTRICT); }			// GCC
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 243 "lex.ll"
+#line 245 "lex.ll"
 { KEYWORD_RETURN(RETURN); }
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 244 "lex.ll"
+#line 246 "lex.ll"
 { KEYWORD_RETURN(SHORT); }
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 245 "lex.ll"
+#line 247 "lex.ll"
 { KEYWORD_RETURN(SIGNED); }
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 246 "lex.ll"
+#line 248 "lex.ll"
 { KEYWORD_RETURN(SIGNED); }				// GCC
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 247 "lex.ll"
+#line 249 "lex.ll"
 { KEYWORD_RETURN(SIGNED); }				// GCC
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 248 "lex.ll"
+#line 250 "lex.ll"
 { KEYWORD_RETURN(SIZEOF); }
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 249 "lex.ll"
+#line 251 "lex.ll"
 { KEYWORD_RETURN(STATIC); }
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 250 "lex.ll"
+#line 252 "lex.ll"
 { KEYWORD_RETURN(STATICASSERT); }		// C11
 	YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 251 "lex.ll"
+#line 253 "lex.ll"
 { KEYWORD_RETURN(STRUCT); }
 	YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 252 "lex.ll"
+#line 254 "lex.ll"
 { KEYWORD_RETURN(SWITCH); }
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 253 "lex.ll"
+#line 255 "lex.ll"
 { KEYWORD_RETURN(THREADLOCAL); }		// C11
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 254 "lex.ll"
+#line 256 "lex.ll"
 { KEYWORD_RETURN(THROW); }				// CFA
 	YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 255 "lex.ll"
+#line 257 "lex.ll"
 { KEYWORD_RETURN(THROWRESUME); }		// CFA
 	YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 256 "lex.ll"
+#line 258 "lex.ll"
 { KEYWORD_RETURN(TRAIT); }				// CFA
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 257 "lex.ll"
+#line 259 "lex.ll"
 { KEYWORD_RETURN(TRY); }				// CFA
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 258 "lex.ll"
+#line 260 "lex.ll"
 { KEYWORD_RETURN(TYPEDEF); }
 	YY_BREAK
 case 91:
-YY_RULE_SETUP
-#line 259 "lex.ll"
-{ KEYWORD_RETURN(TYPEOF); }				// GCC
-	YY_BREAK
-case 92:
-YY_RULE_SETUP
-#line 260 "lex.ll"
-{ KEYWORD_RETURN(TYPEOF); }				// GCC
-	YY_BREAK
-case 93:
 YY_RULE_SETUP
 #line 261 "lex.ll"
 { KEYWORD_RETURN(TYPEOF); }				// GCC
 	YY_BREAK
+case 92:
+YY_RULE_SETUP
+#line 262 "lex.ll"
+{ KEYWORD_RETURN(TYPEOF); }				// GCC
+	YY_BREAK
+case 93:
+YY_RULE_SETUP
+#line 263 "lex.ll"
+{ KEYWORD_RETURN(TYPEOF); }				// GCC
+	YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 262 "lex.ll"
+#line 264 "lex.ll"
 { KEYWORD_RETURN(UNION); }
 	YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 263 "lex.ll"
+#line 265 "lex.ll"
 { KEYWORD_RETURN(UNSIGNED); }
 	YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 264 "lex.ll"
+#line 266 "lex.ll"
 { KEYWORD_RETURN(VALIST); }			// GCC
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 265 "lex.ll"
+#line 267 "lex.ll"
 { KEYWORD_RETURN(VOID); }
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 266 "lex.ll"
+#line 268 "lex.ll"
 { KEYWORD_RETURN(VOLATILE); }
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 267 "lex.ll"
+#line 269 "lex.ll"
 { KEYWORD_RETURN(VOLATILE); }			// GCC
 	YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 268 "lex.ll"
+#line 270 "lex.ll"
 { KEYWORD_RETURN(VOLATILE); }			// GCC
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 269 "lex.ll"
+#line 271 "lex.ll"
 { KEYWORD_RETURN(WHILE); }
 	YY_BREAK
@@ -2347,25 +2355,25 @@
 case 102:
 YY_RULE_SETUP
-#line 272 "lex.ll"
+#line 274 "lex.ll"
 { IDENTIFIER_RETURN(); }
 	YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 273 "lex.ll"
+#line 275 "lex.ll"
 { ATTRIBUTE_RETURN(); }
 	YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 274 "lex.ll"
+#line 276 "lex.ll"
 { BEGIN BKQUOTE; }
 	YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 275 "lex.ll"
+#line 277 "lex.ll"
 { IDENTIFIER_RETURN(); }
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 276 "lex.ll"
+#line 278 "lex.ll"
 { BEGIN 0; }
 	YY_BREAK
@@ -2373,35 +2381,35 @@
 case 107:
 YY_RULE_SETUP
-#line 279 "lex.ll"
+#line 281 "lex.ll"
 { NUMERIC_RETURN(ZERO); }				// CFA
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 280 "lex.ll"
+#line 282 "lex.ll"
 { NUMERIC_RETURN(ONE); }				// CFA
 	YY_BREAK
 case 109:
-YY_RULE_SETUP
-#line 281 "lex.ll"
-{ NUMERIC_RETURN(INTEGERconstant); }
-	YY_BREAK
-case 110:
-YY_RULE_SETUP
-#line 282 "lex.ll"
-{ NUMERIC_RETURN(INTEGERconstant); }
-	YY_BREAK
-case 111:
 YY_RULE_SETUP
 #line 283 "lex.ll"
 { NUMERIC_RETURN(INTEGERconstant); }
 	YY_BREAK
+case 110:
+YY_RULE_SETUP
+#line 284 "lex.ll"
+{ NUMERIC_RETURN(INTEGERconstant); }
+	YY_BREAK
+case 111:
+YY_RULE_SETUP
+#line 285 "lex.ll"
+{ NUMERIC_RETURN(INTEGERconstant); }
+	YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 284 "lex.ll"
+#line 286 "lex.ll"
 { NUMERIC_RETURN(FLOATINGconstant); }
 	YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 285 "lex.ll"
+#line 287 "lex.ll"
 { NUMERIC_RETURN(FLOATINGconstant); }
 	YY_BREAK
@@ -2409,10 +2417,10 @@
 case 114:
 YY_RULE_SETUP
-#line 288 "lex.ll"
+#line 290 "lex.ll"
 { BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
 	YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 289 "lex.ll"
+#line 291 "lex.ll"
 { *strtext += std::string( yytext ); }
 	YY_BREAK
@@ -2420,5 +2428,5 @@
 /* rule 116 can match eol */
 YY_RULE_SETUP
-#line 290 "lex.ll"
+#line 292 "lex.ll"
 { BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }
 	YY_BREAK
@@ -2427,10 +2435,10 @@
 case 117:
 YY_RULE_SETUP
-#line 294 "lex.ll"
+#line 296 "lex.ll"
 { BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
 	YY_BREAK
 case 118:
 YY_RULE_SETUP
-#line 295 "lex.ll"
+#line 297 "lex.ll"
 { *strtext += std::string( yytext ); }
 	YY_BREAK
@@ -2438,5 +2446,5 @@
 /* rule 119 can match eol */
 YY_RULE_SETUP
-#line 296 "lex.ll"
+#line 298 "lex.ll"
 { BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); }
 	YY_BREAK
@@ -2445,5 +2453,5 @@
 case 120:
 YY_RULE_SETUP
-#line 300 "lex.ll"
+#line 302 "lex.ll"
 { rm_underscore(); *strtext += std::string( yytext ); }
 	YY_BREAK
@@ -2451,10 +2459,10 @@
 /* rule 121 can match eol */
 YY_RULE_SETUP
-#line 301 "lex.ll"
+#line 303 "lex.ll"
 {}						// continuation (ALSO HANDLED BY CPP)
 	YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 302 "lex.ll"
+#line 304 "lex.ll"
 { *strtext += std::string( yytext ); } // unknown escape character
 	YY_BREAK
@@ -2462,55 +2470,55 @@
 case 123:
 YY_RULE_SETUP
-#line 305 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 124:
-YY_RULE_SETUP
-#line 306 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 125:
-YY_RULE_SETUP
 #line 307 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 126:
+case 124:
 YY_RULE_SETUP
 #line 308 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 127:
+case 125:
 YY_RULE_SETUP
 #line 309 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 128:
+case 126:
 YY_RULE_SETUP
 #line 310 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 129:
+case 127:
 YY_RULE_SETUP
 #line 311 "lex.ll"
-{ ASCIIOP_RETURN(); }					// also operator
-	YY_BREAK
-case 130:
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 128:
 YY_RULE_SETUP
 #line 312 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
+case 129:
+YY_RULE_SETUP
+#line 313 "lex.ll"
+{ ASCIIOP_RETURN(); }					// also operator
+	YY_BREAK
+case 130:
+YY_RULE_SETUP
+#line 314 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
 case 131:
 YY_RULE_SETUP
-#line 313 "lex.ll"
+#line 315 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
 case 132:
 YY_RULE_SETUP
-#line 314 "lex.ll"
+#line 316 "lex.ll"
 { ASCIIOP_RETURN(); }					// also operator
 	YY_BREAK
 case 133:
 YY_RULE_SETUP
-#line 315 "lex.ll"
+#line 317 "lex.ll"
 { NAMEDOP_RETURN(ELLIPSIS); }
 	YY_BREAK
@@ -2518,20 +2526,20 @@
 case 134:
 YY_RULE_SETUP
-#line 318 "lex.ll"
+#line 320 "lex.ll"
 { RETURN_VAL('['); }
 	YY_BREAK
 case 135:
 YY_RULE_SETUP
-#line 319 "lex.ll"
+#line 321 "lex.ll"
 { RETURN_VAL(']'); }
 	YY_BREAK
 case 136:
 YY_RULE_SETUP
-#line 320 "lex.ll"
+#line 322 "lex.ll"
 { RETURN_VAL('{'); }
 	YY_BREAK
 case 137:
 YY_RULE_SETUP
-#line 321 "lex.ll"
+#line 323 "lex.ll"
 { RETURN_VAL('}'); }
 	YY_BREAK
@@ -2539,180 +2547,180 @@
 case 138:
 YY_RULE_SETUP
-#line 324 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 139:
-YY_RULE_SETUP
-#line 325 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 140:
-YY_RULE_SETUP
 #line 326 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 141:
+case 139:
 YY_RULE_SETUP
 #line 327 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 142:
+case 140:
 YY_RULE_SETUP
 #line 328 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 143:
+case 141:
 YY_RULE_SETUP
 #line 329 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 144:
+case 142:
 YY_RULE_SETUP
 #line 330 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 145:
+case 143:
 YY_RULE_SETUP
 #line 331 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 146:
+case 144:
 YY_RULE_SETUP
 #line 332 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 147:
+case 145:
 YY_RULE_SETUP
 #line 333 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 148:
+case 146:
 YY_RULE_SETUP
 #line 334 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 149:
+case 147:
 YY_RULE_SETUP
 #line 335 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 150:
+case 148:
 YY_RULE_SETUP
 #line 336 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 151:
+case 149:
 YY_RULE_SETUP
 #line 337 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
+case 150:
+YY_RULE_SETUP
+#line 338 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 151:
+YY_RULE_SETUP
+#line 339 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
 case 152:
 YY_RULE_SETUP
-#line 339 "lex.ll"
+#line 341 "lex.ll"
 { NAMEDOP_RETURN(ICR); }
 	YY_BREAK
 case 153:
 YY_RULE_SETUP
-#line 340 "lex.ll"
+#line 342 "lex.ll"
 { NAMEDOP_RETURN(DECR); }
 	YY_BREAK
 case 154:
 YY_RULE_SETUP
-#line 341 "lex.ll"
+#line 343 "lex.ll"
 { NAMEDOP_RETURN(EQ); }
 	YY_BREAK
 case 155:
 YY_RULE_SETUP
-#line 342 "lex.ll"
+#line 344 "lex.ll"
 { NAMEDOP_RETURN(NE); }
 	YY_BREAK
 case 156:
 YY_RULE_SETUP
-#line 343 "lex.ll"
+#line 345 "lex.ll"
 { NAMEDOP_RETURN(LS); }
 	YY_BREAK
 case 157:
 YY_RULE_SETUP
-#line 344 "lex.ll"
+#line 346 "lex.ll"
 { NAMEDOP_RETURN(RS); }
 	YY_BREAK
 case 158:
 YY_RULE_SETUP
-#line 345 "lex.ll"
+#line 347 "lex.ll"
 { NAMEDOP_RETURN(LE); }
 	YY_BREAK
 case 159:
 YY_RULE_SETUP
-#line 346 "lex.ll"
+#line 348 "lex.ll"
 { NAMEDOP_RETURN(GE); }
 	YY_BREAK
 case 160:
 YY_RULE_SETUP
-#line 347 "lex.ll"
+#line 349 "lex.ll"
 { NAMEDOP_RETURN(ANDAND); }
 	YY_BREAK
 case 161:
 YY_RULE_SETUP
-#line 348 "lex.ll"
+#line 350 "lex.ll"
 { NAMEDOP_RETURN(OROR); }
 	YY_BREAK
 case 162:
 YY_RULE_SETUP
-#line 349 "lex.ll"
+#line 351 "lex.ll"
 { NAMEDOP_RETURN(ARROW); }
 	YY_BREAK
 case 163:
 YY_RULE_SETUP
-#line 350 "lex.ll"
+#line 352 "lex.ll"
 { NAMEDOP_RETURN(PLUSassign); }
 	YY_BREAK
 case 164:
 YY_RULE_SETUP
-#line 351 "lex.ll"
+#line 353 "lex.ll"
 { NAMEDOP_RETURN(MINUSassign); }
 	YY_BREAK
 case 165:
 YY_RULE_SETUP
-#line 352 "lex.ll"
+#line 354 "lex.ll"
 { NAMEDOP_RETURN(MULTassign); }
 	YY_BREAK
 case 166:
 YY_RULE_SETUP
-#line 353 "lex.ll"
+#line 355 "lex.ll"
 { NAMEDOP_RETURN(DIVassign); }
 	YY_BREAK
 case 167:
 YY_RULE_SETUP
-#line 354 "lex.ll"
+#line 356 "lex.ll"
 { NAMEDOP_RETURN(MODassign); }
 	YY_BREAK
 case 168:
 YY_RULE_SETUP
-#line 355 "lex.ll"
+#line 357 "lex.ll"
 { NAMEDOP_RETURN(ANDassign); }
 	YY_BREAK
 case 169:
 YY_RULE_SETUP
-#line 356 "lex.ll"
+#line 358 "lex.ll"
 { NAMEDOP_RETURN(ORassign); }
 	YY_BREAK
 case 170:
 YY_RULE_SETUP
-#line 357 "lex.ll"
+#line 359 "lex.ll"
 { NAMEDOP_RETURN(ERassign); }
 	YY_BREAK
 case 171:
 YY_RULE_SETUP
-#line 358 "lex.ll"
+#line 360 "lex.ll"
 { NAMEDOP_RETURN(LSassign); }
 	YY_BREAK
 case 172:
 YY_RULE_SETUP
-#line 359 "lex.ll"
+#line 361 "lex.ll"
 { NAMEDOP_RETURN(RSassign); }
 	YY_BREAK
 case 173:
 YY_RULE_SETUP
-#line 361 "lex.ll"
+#line 363 "lex.ll"
 { NAMEDOP_RETURN(ATassign); }
 	YY_BREAK
@@ -2720,20 +2728,20 @@
 case 174:
 YY_RULE_SETUP
-#line 364 "lex.ll"
+#line 366 "lex.ll"
 { IDENTIFIER_RETURN(); }				// unary
 	YY_BREAK
 case 175:
 YY_RULE_SETUP
-#line 365 "lex.ll"
+#line 367 "lex.ll"
 { IDENTIFIER_RETURN(); }
 	YY_BREAK
 case 176:
 YY_RULE_SETUP
-#line 366 "lex.ll"
+#line 368 "lex.ll"
 { IDENTIFIER_RETURN(); }
 	YY_BREAK
 case 177:
 YY_RULE_SETUP
-#line 367 "lex.ll"
+#line 369 "lex.ll"
 { IDENTIFIER_RETURN(); }		// binary
 	YY_BREAK
@@ -2766,5 +2774,5 @@
 case 178:
 YY_RULE_SETUP
-#line 394 "lex.ll"
+#line 396 "lex.ll"
 {
 	// 1 or 2 character unary operator ?
@@ -2781,13 +2789,13 @@
 case 179:
 YY_RULE_SETUP
-#line 406 "lex.ll"
+#line 408 "lex.ll"
 { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
 	YY_BREAK
 case 180:
 YY_RULE_SETUP
-#line 408 "lex.ll"
+#line 410 "lex.ll"
 ECHO;
 	YY_BREAK
-#line 2792 "Parser/lex.cc"
+#line 2800 "Parser/lex.cc"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(COMMENT):
@@ -3764,5 +3772,5 @@
 #define YYTABLES_NAME "yytables"
 
-#line 408 "lex.ll"
+#line 410 "lex.ll"
 
 
Index: src/Parser/lex.h
===================================================================
--- src/Parser/lex.h	(revision 40404257da8f22441f6123bdbff37bdb54e0e5f3)
+++ src/Parser/lex.h	(revision 984dce6bb5af39c6108d6d825e085c449dc9f3ad)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep 22 08:58:10 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Jun  8 20:28:48 2015
-// Update Count     : 341
+// Last Modified On : Mon Mar 21 18:18:06 2016
+// Update Count     : 346
 //
 
@@ -20,6 +20,8 @@
 void yyerror( const char * );
 
+#include <string>
+#include "ParseNode.h"
 // External declarations for information sharing between lexer and scanner
-#include "TypedefTable.h"
+class TypedefTable;
 extern TypedefTable typedefTable;
 
Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision 40404257da8f22441f6123bdbff37bdb54e0e5f3)
+++ src/Parser/lex.ll	(revision 984dce6bb5af39c6108d6d825e085c449dc9f3ad)
@@ -10,6 +10,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Wed Mar  2 18:07:20 2016
- * Update Count     : 434
+ * Last Modified On : Mon Mar 21 23:33:46 2016
+ * Update Count     : 450
  */
 
@@ -27,6 +27,7 @@
 
 #include "lex.h"
+#include "parser.h"										// YACC generated definitions based on C++ grammar
 #include "ParseNode.h"
-#include "parser.h"										// YACC generated definitions based on C++ grammar
+#include "TypedefTable.h"
 
 char *yyfilename;
@@ -44,5 +45,5 @@
 #define NUMERIC_RETURN(x)	rm_underscore(); RETURN_VAL( x ) // numeric constant
 #define KEYWORD_RETURN(x)	RETURN_CHAR( x )			// keyword
-#define IDENTIFIER_RETURN()	RETURN_VAL( (typedefTable.isIdentifier( yytext ) ? IDENTIFIER : typedefTable.isTypedef( yytext ) ? TYPEDEFname : TYPEGENname ) )
+#define IDENTIFIER_RETURN()	RETURN_VAL( typedefTable.isKind( yytext ) )
 #define ATTRIBUTE_RETURN()	RETURN_VAL( ATTR_IDENTIFIER )
 
@@ -95,6 +96,7 @@
 fractional_constant ({decimal_digits}?"."{decimal_digits})|({decimal_digits}".")
 exponent "_"?[eE]"_"?[+-]?{decimal_digits}
-				// GCC: D (double), LD (long double) and iI (imaginary) suffixes
-floating_suffix "_"?([fFdD]?|([lL]?)|([iI][lLfFdD]?)|([lLfFdD][iI]))
+				// GCC: D (double), DL (long double) and iI (imaginary) suffixes
+floating_suffix "_"?([fFdDlL][iI]?|"DL"|[iI][lLfFdD]?)
+				//floating_suffix "_"?([fFdD]|[lL]|[D][L])|([iI][lLfFdD])|([lLfFdD][iI]))
 floating_constant (({fractional_constant}{exponent}?)|({decimal_digits}{exponent})){floating_suffix}?
 
Index: src/Parser/parser.cc
===================================================================
--- src/Parser/parser.cc	(revision 40404257da8f22441f6123bdbff37bdb54e0e5f3)
+++ src/Parser/parser.cc	(revision 984dce6bb5af39c6108d6d825e085c449dc9f3ad)
@@ -77,7 +77,8 @@
 #include <cstdio>
 #include <stack>
+#include "lex.h"
+#include "parser.h"
+#include "ParseNode.h"
 #include "TypedefTable.h"
-#include "lex.h"
-#include "ParseNode.h"
 #include "TypeData.h"
 #include "LinkageSpec.h"
@@ -90,5 +91,5 @@
 
 /* Line 268 of yacc.c  */
-#line 93 "Parser/parser.cc"
+#line 94 "Parser/parser.cc"
 
 /* Enabling traces.  */
@@ -341,5 +342,5 @@
 
 /* Line 293 of yacc.c  */
-#line 111 "parser.yy"
+#line 112 "parser.yy"
 
 	Token tok;
@@ -358,5 +359,5 @@
 
 /* Line 293 of yacc.c  */
-#line 361 "Parser/parser.cc"
+#line 362 "Parser/parser.cc"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
@@ -370,5 +371,5 @@
 
 /* Line 343 of yacc.c  */
-#line 373 "Parser/parser.cc"
+#line 374 "Parser/parser.cc"
 
 #ifdef short
@@ -1015,80 +1016,80 @@
 static const yytype_uint16 yyrline[] =
 {
-       0,   291,   291,   297,   306,   307,   308,   312,   313,   314,
-     318,   319,   323,   324,   328,   329,   333,   334,   340,   342,
-     344,   346,   351,   352,   358,   362,   364,   365,   367,   368,
-     370,   372,   374,   382,   383,   389,   390,   391,   396,   398,
-     403,   404,   408,   412,   414,   416,   418,   423,   426,   428,
-     430,   432,   434,   436,   438,   440,   446,   448,   450,   452,
-     454,   456,   458,   460,   462,   467,   468,   469,   470,   474,
-     475,   477,   482,   483,   485,   487,   492,   493,   495,   500,
-     501,   503,   508,   509,   511,   513,   515,   520,   521,   523,
-     528,   529,   534,   535,   540,   541,   546,   547,   552,   553,
-     558,   559,   561,   563,   568,   573,   574,   576,   578,   584,
-     585,   591,   593,   595,   597,   602,   603,   608,   609,   610,
-     611,   612,   613,   614,   615,   616,   617,   621,   622,   628,
-     629,   635,   636,   637,   638,   639,   640,   641,   642,   643,
-     652,   659,   661,   671,   672,   677,   679,   681,   683,   687,
-     688,   693,   698,   701,   703,   705,   710,   712,   720,   721,
-     723,   727,   728,   733,   734,   739,   740,   744,   749,   750,
-     754,   756,   762,   763,   767,   769,   771,   773,   779,   780,
-     784,   785,   789,   791,   793,   798,   800,   805,   807,   811,
-     814,   818,   821,   825,   827,   831,   833,   840,   842,   844,
-     853,   855,   857,   859,   861,   866,   868,   870,   872,   877,
-     890,   891,   896,   898,   903,   907,   909,   911,   913,   915,
-     921,   922,   928,   929,   933,   934,   939,   941,   947,   948,
-     950,   955,   957,   964,   966,   970,   971,   976,   978,   982,
-     983,   987,   989,   993,   994,   998,   999,  1003,  1004,  1019,
-    1020,  1021,  1022,  1023,  1027,  1032,  1039,  1049,  1054,  1059,
-    1067,  1072,  1077,  1082,  1087,  1095,  1117,  1122,  1129,  1131,
-    1138,  1143,  1148,  1159,  1164,  1169,  1174,  1179,  1188,  1193,
-    1201,  1202,  1203,  1204,  1210,  1215,  1223,  1224,  1225,  1226,
-    1230,  1231,  1232,  1233,  1238,  1239,  1248,  1249,  1254,  1255,
-    1260,  1262,  1264,  1266,  1268,  1271,  1270,  1282,  1283,  1285,
-    1295,  1296,  1301,  1305,  1307,  1309,  1311,  1313,  1315,  1317,
-    1319,  1324,  1326,  1328,  1330,  1332,  1334,  1336,  1338,  1340,
-    1342,  1344,  1346,  1348,  1354,  1355,  1357,  1359,  1361,  1366,
-    1367,  1373,  1374,  1376,  1378,  1383,  1385,  1387,  1389,  1394,
-    1395,  1397,  1399,  1404,  1405,  1407,  1412,  1413,  1415,  1417,
-    1422,  1424,  1426,  1431,  1432,  1436,  1438,  1440,  1442,  1444,
-    1449,  1451,  1456,  1458,  1463,  1464,  1466,  1467,  1472,  1473,
-    1475,  1477,  1482,  1484,  1490,  1491,  1493,  1496,  1499,  1504,
-    1505,  1510,  1515,  1519,  1521,  1523,  1528,  1530,  1536,  1537,
-    1545,  1546,  1550,  1551,  1552,  1554,  1556,  1563,  1564,  1566,
-    1568,  1573,  1574,  1580,  1581,  1585,  1586,  1591,  1592,  1593,
-    1595,  1603,  1604,  1606,  1609,  1611,  1615,  1616,  1617,  1619,
-    1621,  1625,  1630,  1638,  1639,  1648,  1650,  1655,  1656,  1657,
-    1661,  1662,  1663,  1667,  1668,  1669,  1673,  1674,  1675,  1680,
-    1681,  1682,  1683,  1689,  1690,  1692,  1697,  1698,  1703,  1704,
-    1705,  1706,  1707,  1722,  1723,  1728,  1729,  1737,  1739,  1741,
-    1744,  1746,  1748,  1771,  1772,  1774,  1776,  1781,  1782,  1784,
-    1789,  1794,  1795,  1801,  1800,  1804,  1808,  1810,  1812,  1818,
-    1819,  1824,  1829,  1831,  1836,  1838,  1839,  1841,  1846,  1848,
-    1850,  1855,  1857,  1862,  1867,  1875,  1881,  1880,  1894,  1895,
-    1900,  1901,  1905,  1910,  1915,  1923,  1928,  1939,  1940,  1951,
-    1952,  1958,  1959,  1963,  1964,  1965,  1968,  1967,  1978,  1983,
-    1988,  1994,  2003,  2009,  2015,  2021,  2027,  2035,  2041,  2049,
-    2055,  2064,  2065,  2066,  2070,  2074,  2076,  2081,  2082,  2086,
-    2087,  2092,  2098,  2099,  2102,  2104,  2105,  2109,  2110,  2111,
-    2112,  2146,  2148,  2149,  2151,  2156,  2161,  2166,  2168,  2170,
-    2175,  2177,  2179,  2181,  2186,  2188,  2198,  2200,  2201,  2206,
-    2208,  2210,  2215,  2217,  2219,  2224,  2226,  2228,  2237,  2238,
-    2239,  2243,  2245,  2247,  2252,  2254,  2256,  2261,  2263,  2265,
-    2280,  2282,  2283,  2285,  2290,  2291,  2296,  2298,  2300,  2305,
-    2307,  2309,  2311,  2316,  2318,  2320,  2330,  2332,  2333,  2335,
-    2340,  2342,  2344,  2349,  2351,  2353,  2355,  2360,  2362,  2364,
-    2395,  2397,  2398,  2400,  2405,  2410,  2418,  2420,  2422,  2427,
-    2429,  2434,  2436,  2450,  2451,  2453,  2458,  2460,  2462,  2464,
-    2466,  2471,  2472,  2474,  2476,  2481,  2483,  2485,  2491,  2493,
-    2495,  2499,  2501,  2503,  2505,  2519,  2520,  2522,  2527,  2529,
-    2531,  2533,  2535,  2540,  2541,  2543,  2545,  2550,  2552,  2554,
-    2560,  2561,  2563,  2572,  2575,  2577,  2580,  2582,  2584,  2597,
-    2598,  2600,  2605,  2607,  2609,  2611,  2613,  2618,  2619,  2621,
-    2623,  2628,  2630,  2638,  2639,  2640,  2645,  2646,  2650,  2652,
-    2654,  2656,  2658,  2660,  2667,  2669,  2671,  2673,  2675,  2677,
-    2679,  2681,  2683,  2685,  2690,  2692,  2694,  2699,  2725,  2726,
-    2728,  2732,  2733,  2737,  2739,  2741,  2743,  2745,  2747,  2754,
-    2756,  2758,  2760,  2762,  2764,  2769,  2774,  2776,  2778,  2796,
-    2798,  2803,  2804
+       0,   292,   292,   298,   307,   308,   309,   313,   314,   315,
+     319,   320,   324,   325,   329,   330,   334,   335,   341,   343,
+     345,   347,   352,   353,   359,   363,   365,   366,   368,   369,
+     371,   373,   375,   383,   384,   390,   391,   392,   397,   399,
+     404,   405,   409,   413,   415,   417,   419,   424,   427,   429,
+     431,   433,   435,   437,   439,   441,   447,   449,   451,   453,
+     455,   457,   459,   461,   463,   468,   469,   470,   471,   475,
+     476,   478,   483,   484,   486,   488,   493,   494,   496,   501,
+     502,   504,   509,   510,   512,   514,   516,   521,   522,   524,
+     529,   530,   535,   536,   541,   542,   547,   548,   553,   554,
+     559,   560,   562,   564,   569,   574,   575,   577,   579,   585,
+     586,   592,   594,   596,   598,   603,   604,   609,   610,   611,
+     612,   613,   614,   615,   616,   617,   618,   622,   623,   629,
+     630,   636,   637,   638,   639,   640,   641,   642,   643,   644,
+     653,   660,   662,   672,   673,   678,   680,   682,   684,   688,
+     689,   694,   699,   702,   704,   706,   711,   713,   721,   722,
+     724,   728,   729,   734,   735,   740,   741,   745,   750,   751,
+     755,   757,   763,   764,   768,   770,   772,   774,   780,   781,
+     785,   786,   790,   792,   794,   799,   801,   806,   808,   812,
+     815,   819,   822,   826,   828,   832,   834,   841,   843,   845,
+     854,   856,   858,   860,   862,   867,   869,   871,   873,   878,
+     891,   892,   897,   899,   904,   908,   910,   912,   914,   916,
+     922,   923,   929,   930,   934,   935,   940,   942,   948,   949,
+     951,   956,   958,   965,   967,   971,   972,   977,   979,   983,
+     984,   988,   990,   994,   995,   999,  1000,  1004,  1005,  1020,
+    1021,  1022,  1023,  1024,  1028,  1033,  1040,  1050,  1055,  1060,
+    1068,  1073,  1078,  1083,  1088,  1096,  1118,  1123,  1130,  1132,
+    1139,  1144,  1149,  1160,  1165,  1170,  1175,  1180,  1189,  1194,
+    1202,  1203,  1204,  1205,  1211,  1216,  1224,  1225,  1226,  1227,
+    1231,  1232,  1233,  1234,  1239,  1240,  1249,  1250,  1255,  1256,
+    1261,  1263,  1265,  1267,  1269,  1272,  1271,  1283,  1284,  1286,
+    1296,  1297,  1302,  1306,  1308,  1310,  1312,  1314,  1316,  1318,
+    1320,  1325,  1327,  1329,  1331,  1333,  1335,  1337,  1339,  1341,
+    1343,  1345,  1347,  1349,  1355,  1356,  1358,  1360,  1362,  1367,
+    1368,  1374,  1375,  1377,  1379,  1384,  1386,  1388,  1390,  1395,
+    1396,  1398,  1400,  1405,  1406,  1408,  1413,  1414,  1416,  1418,
+    1423,  1425,  1427,  1432,  1433,  1437,  1439,  1441,  1443,  1445,
+    1450,  1452,  1457,  1459,  1464,  1465,  1467,  1468,  1473,  1474,
+    1476,  1478,  1483,  1485,  1491,  1492,  1494,  1497,  1500,  1505,
+    1506,  1511,  1516,  1520,  1522,  1524,  1529,  1531,  1537,  1538,
+    1546,  1547,  1551,  1552,  1553,  1555,  1557,  1564,  1565,  1567,
+    1569,  1574,  1575,  1581,  1582,  1586,  1587,  1592,  1593,  1594,
+    1596,  1604,  1605,  1607,  1610,  1612,  1616,  1617,  1618,  1620,
+    1622,  1626,  1631,  1639,  1640,  1649,  1651,  1656,  1657,  1658,
+    1662,  1663,  1664,  1668,  1669,  1670,  1674,  1675,  1676,  1681,
+    1682,  1683,  1684,  1690,  1691,  1693,  1698,  1699,  1704,  1705,
+    1706,  1707,  1708,  1723,  1724,  1729,  1730,  1738,  1740,  1742,
+    1745,  1747,  1749,  1772,  1773,  1775,  1777,  1782,  1783,  1785,
+    1790,  1795,  1796,  1802,  1801,  1805,  1809,  1811,  1813,  1819,
+    1820,  1825,  1830,  1832,  1837,  1839,  1840,  1842,  1847,  1849,
+    1851,  1856,  1858,  1863,  1868,  1876,  1882,  1881,  1895,  1896,
+    1901,  1902,  1906,  1911,  1916,  1924,  1929,  1940,  1941,  1952,
+    1953,  1959,  1960,  1964,  1965,  1966,  1969,  1968,  1979,  1984,
+    1989,  1995,  2004,  2010,  2016,  2022,  2028,  2036,  2042,  2050,
+    2056,  2065,  2066,  2067,  2071,  2075,  2077,  2082,  2083,  2087,
+    2088,  2093,  2099,  2100,  2103,  2105,  2106,  2110,  2111,  2112,
+    2113,  2147,  2149,  2150,  2152,  2157,  2162,  2167,  2169,  2171,
+    2176,  2178,  2180,  2182,  2187,  2189,  2199,  2201,  2202,  2207,
+    2209,  2211,  2216,  2218,  2220,  2225,  2227,  2229,  2238,  2239,
+    2240,  2244,  2246,  2248,  2253,  2255,  2257,  2262,  2264,  2266,
+    2281,  2283,  2284,  2286,  2291,  2292,  2297,  2299,  2301,  2306,
+    2308,  2310,  2312,  2317,  2319,  2321,  2331,  2333,  2334,  2336,
+    2341,  2343,  2345,  2350,  2352,  2354,  2356,  2361,  2363,  2365,
+    2396,  2398,  2399,  2401,  2406,  2411,  2419,  2421,  2423,  2428,
+    2430,  2435,  2437,  2451,  2452,  2454,  2459,  2461,  2463,  2465,
+    2467,  2472,  2473,  2475,  2477,  2482,  2484,  2486,  2492,  2494,
+    2496,  2500,  2502,  2504,  2506,  2520,  2521,  2523,  2528,  2530,
+    2532,  2534,  2536,  2541,  2542,  2544,  2546,  2551,  2553,  2555,
+    2561,  2562,  2564,  2573,  2576,  2578,  2581,  2583,  2585,  2598,
+    2599,  2601,  2606,  2608,  2610,  2612,  2614,  2619,  2620,  2622,
+    2624,  2629,  2631,  2639,  2640,  2641,  2646,  2647,  2651,  2653,
+    2655,  2657,  2659,  2661,  2668,  2670,  2672,  2674,  2676,  2678,
+    2680,  2682,  2684,  2686,  2691,  2693,  2695,  2700,  2726,  2727,
+    2729,  2733,  2734,  2738,  2740,  2742,  2744,  2746,  2748,  2755,
+    2757,  2759,  2761,  2763,  2765,  2770,  2775,  2777,  2779,  2797,
+    2799,  2804,  2805
 };
 #endif
@@ -5055,5 +5056,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 291 "parser.yy"
+#line 292 "parser.yy"
     {
 			typedefTable.enterScope();
@@ -5064,5 +5065,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 297 "parser.yy"
+#line 298 "parser.yy"
     {
 			typedefTable.leaveScope();
@@ -5073,5 +5074,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 306 "parser.yy"
+#line 307 "parser.yy"
     { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -5080,5 +5081,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 307 "parser.yy"
+#line 308 "parser.yy"
     { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -5087,5 +5088,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 308 "parser.yy"
+#line 309 "parser.yy"
     { (yyval.constant) = new ConstantNode( ConstantNode::Character, (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -5094,5 +5095,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 333 "parser.yy"
+#line 334 "parser.yy"
     { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -5101,5 +5102,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 334 "parser.yy"
+#line 335 "parser.yy"
     { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); }
     break;
@@ -5108,5 +5109,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 341 "parser.yy"
+#line 342 "parser.yy"
     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -5115,5 +5116,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 343 "parser.yy"
+#line 344 "parser.yy"
     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -5122,5 +5123,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 345 "parser.yy"
+#line 346 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (3)].en); }
     break;
@@ -5129,5 +5130,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 347 "parser.yy"
+#line 348 "parser.yy"
     { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); }
     break;
@@ -5136,5 +5137,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 357 "parser.yy"
+#line 358 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ); }
     break;
@@ -5143,5 +5144,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 359 "parser.yy"
+#line 360 "parser.yy"
     { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); }
     break;
@@ -5150,5 +5151,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 363 "parser.yy"
+#line 364 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
     break;
@@ -5157,5 +5158,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 366 "parser.yy"
+#line 367 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
     break;
@@ -5164,5 +5165,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 369 "parser.yy"
+#line 370 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); }
     break;
@@ -5171,5 +5172,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 371 "parser.yy"
+#line 372 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); }
     break;
@@ -5178,5 +5179,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 373 "parser.yy"
+#line 374 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -5185,5 +5186,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 375 "parser.yy"
+#line 376 "parser.yy"
     {
 			Token fn; fn.str = new std::string( "?{}" ); // location undefined
@@ -5195,5 +5196,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 384 "parser.yy"
+#line 385 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
     break;
@@ -5202,5 +5203,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 389 "parser.yy"
+#line 390 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -5209,5 +5210,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 392 "parser.yy"
+#line 393 "parser.yy"
     { (yyval.en) = (yyvsp[(3) - (3)].en)->set_argName( (yyvsp[(1) - (3)].tok) ); }
     break;
@@ -5216,5 +5217,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 397 "parser.yy"
+#line 398 "parser.yy"
     { (yyval.en) = (yyvsp[(7) - (7)].en)->set_argName( (yyvsp[(3) - (7)].en) ); }
     break;
@@ -5223,5 +5224,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 399 "parser.yy"
+#line 400 "parser.yy"
     { (yyval.en) = (yyvsp[(9) - (9)].en)->set_argName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( flattenCommas( (yyvsp[(5) - (9)].en) )))); }
     break;
@@ -5230,5 +5231,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 404 "parser.yy"
+#line 405 "parser.yy"
     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5237,5 +5238,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 409 "parser.yy"
+#line 410 "parser.yy"
     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -5244,5 +5245,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 413 "parser.yy"
+#line 414 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5251,5 +5252,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 415 "parser.yy"
+#line 416 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
     break;
@@ -5258,5 +5259,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 417 "parser.yy"
+#line 418 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5265,5 +5266,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 419 "parser.yy"
+#line 420 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
     break;
@@ -5272,5 +5273,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 427 "parser.yy"
+#line 428 "parser.yy"
     { (yyval.en) = (yyvsp[(1) - (1)].constant); }
     break;
@@ -5279,5 +5280,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 429 "parser.yy"
+#line 430 "parser.yy"
     { (yyval.en) = (yyvsp[(1) - (1)].constant); }
     break;
@@ -5286,5 +5287,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 431 "parser.yy"
+#line 432 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); }
     break;
@@ -5293,5 +5294,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 433 "parser.yy"
+#line 434 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); }
     break;
@@ -5300,5 +5301,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 435 "parser.yy"
+#line 436 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -5307,5 +5308,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 437 "parser.yy"
+#line 438 "parser.yy"
     { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
     break;
@@ -5314,5 +5315,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 439 "parser.yy"
+#line 440 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); }
     break;
@@ -5321,5 +5322,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 441 "parser.yy"
+#line 442 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); }
     break;
@@ -5328,5 +5329,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 447 "parser.yy"
+#line 448 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); }
     break;
@@ -5335,5 +5336,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 449 "parser.yy"
+#line 450 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
     break;
@@ -5342,5 +5343,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 451 "parser.yy"
+#line 452 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::OffsetOf ), new TypeValueNode( (yyvsp[(3) - (6)].decl) ), new VarRefNode( (yyvsp[(5) - (6)].tok) )); }
     break;
@@ -5349,5 +5350,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 453 "parser.yy"
+#line 454 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); }
     break;
@@ -5356,5 +5357,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 455 "parser.yy"
+#line 456 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
     break;
@@ -5363,5 +5364,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 457 "parser.yy"
+#line 458 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); }
     break;
@@ -5370,5 +5371,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 459 "parser.yy"
+#line 460 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); }
     break;
@@ -5377,5 +5378,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 461 "parser.yy"
+#line 462 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ); }
     break;
@@ -5384,5 +5385,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 463 "parser.yy"
+#line 464 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true ) ); }
     break;
@@ -5391,5 +5392,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 467 "parser.yy"
+#line 468 "parser.yy"
     { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); }
     break;
@@ -5398,5 +5399,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 468 "parser.yy"
+#line 469 "parser.yy"
     { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); }
     break;
@@ -5405,5 +5406,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 469 "parser.yy"
+#line 470 "parser.yy"
     { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }
     break;
@@ -5412,5 +5413,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 470 "parser.yy"
+#line 471 "parser.yy"
     { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); }
     break;
@@ -5419,5 +5420,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 476 "parser.yy"
+#line 477 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
     break;
@@ -5426,5 +5427,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 478 "parser.yy"
+#line 479 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
     break;
@@ -5433,5 +5434,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 484 "parser.yy"
+#line 485 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5440,5 +5441,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 486 "parser.yy"
+#line 487 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5447,5 +5448,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 488 "parser.yy"
+#line 489 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5454,5 +5455,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 494 "parser.yy"
+#line 495 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5461,5 +5462,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 496 "parser.yy"
+#line 497 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5468,5 +5469,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 502 "parser.yy"
+#line 503 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5475,5 +5476,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 504 "parser.yy"
+#line 505 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5482,5 +5483,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 510 "parser.yy"
+#line 511 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5489,5 +5490,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 512 "parser.yy"
+#line 513 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5496,5 +5497,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 514 "parser.yy"
+#line 515 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5503,5 +5504,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 516 "parser.yy"
+#line 517 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5510,5 +5511,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 522 "parser.yy"
+#line 523 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5517,5 +5518,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 524 "parser.yy"
+#line 525 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5524,5 +5525,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 530 "parser.yy"
+#line 531 "parser.yy"
     { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5531,5 +5532,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 536 "parser.yy"
+#line 537 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5538,5 +5539,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 542 "parser.yy"
+#line 543 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5545,5 +5546,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 548 "parser.yy"
+#line 549 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5552,5 +5553,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 554 "parser.yy"
+#line 555 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5559,5 +5560,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 560 "parser.yy"
+#line 561 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
     break;
@@ -5566,5 +5567,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 562 "parser.yy"
+#line 563 "parser.yy"
     { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); }
     break;
@@ -5573,5 +5574,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 564 "parser.yy"
+#line 565 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
     break;
@@ -5580,5 +5581,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 575 "parser.yy"
+#line 576 "parser.yy"
     { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5587,5 +5588,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 577 "parser.yy"
+#line 578 "parser.yy"
     { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5594,5 +5595,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 579 "parser.yy"
+#line 580 "parser.yy"
     { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
     break;
@@ -5601,5 +5602,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 584 "parser.yy"
+#line 585 "parser.yy"
     { (yyval.en) = new NullExprNode; }
     break;
@@ -5608,5 +5609,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 592 "parser.yy"
+#line 593 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
     break;
@@ -5615,5 +5616,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 594 "parser.yy"
+#line 595 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); }
     break;
@@ -5622,5 +5623,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 596 "parser.yy"
+#line 597 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); }
     break;
@@ -5629,5 +5630,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 598 "parser.yy"
+#line 599 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); }
     break;
@@ -5636,5 +5637,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 604 "parser.yy"
+#line 605 "parser.yy"
     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5643,5 +5644,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 608 "parser.yy"
+#line 609 "parser.yy"
     { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); }
     break;
@@ -5650,5 +5651,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 609 "parser.yy"
+#line 610 "parser.yy"
     { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); }
     break;
@@ -5657,5 +5658,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 610 "parser.yy"
+#line 611 "parser.yy"
     { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); }
     break;
@@ -5664,5 +5665,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 611 "parser.yy"
+#line 612 "parser.yy"
     { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); }
     break;
@@ -5671,5 +5672,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 612 "parser.yy"
+#line 613 "parser.yy"
     { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); }
     break;
@@ -5678,5 +5679,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 613 "parser.yy"
+#line 614 "parser.yy"
     { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); }
     break;
@@ -5685,5 +5686,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 614 "parser.yy"
+#line 615 "parser.yy"
     { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); }
     break;
@@ -5692,5 +5693,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 615 "parser.yy"
+#line 616 "parser.yy"
     { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); }
     break;
@@ -5699,5 +5700,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 616 "parser.yy"
+#line 617 "parser.yy"
     { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); }
     break;
@@ -5706,5 +5707,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 617 "parser.yy"
+#line 618 "parser.yy"
     { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); }
     break;
@@ -5713,5 +5714,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 623 "parser.yy"
+#line 624 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5720,5 +5721,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 628 "parser.yy"
+#line 629 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -5727,5 +5728,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 637 "parser.yy"
+#line 638 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
     break;
@@ -5734,5 +5735,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 644 "parser.yy"
+#line 645 "parser.yy"
     {
 			Token fn; fn.str = new std::string( "^?{}" ); // location undefined
@@ -5745,5 +5746,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 653 "parser.yy"
+#line 654 "parser.yy"
     {
 			(yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
@@ -5754,5 +5755,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 660 "parser.yy"
+#line 661 "parser.yy"
     { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
     break;
@@ -5761,5 +5762,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 667 "parser.yy"
+#line 668 "parser.yy"
     { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
     break;
@@ -5768,5 +5769,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 673 "parser.yy"
+#line 674 "parser.yy"
     { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
     break;
@@ -5775,5 +5776,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 678 "parser.yy"
+#line 679 "parser.yy"
     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     break;
@@ -5782,5 +5783,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 680 "parser.yy"
+#line 681 "parser.yy"
     { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -5789,5 +5790,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 682 "parser.yy"
+#line 683 "parser.yy"
     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     break;
@@ -5796,5 +5797,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 689 "parser.yy"
+#line 690 "parser.yy"
     { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
     break;
@@ -5803,5 +5804,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 694 "parser.yy"
+#line 695 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
     break;
@@ -5810,5 +5811,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 700 "parser.yy"
+#line 701 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     break;
@@ -5817,5 +5818,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 702 "parser.yy"
+#line 703 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); }
     break;
@@ -5824,5 +5825,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 704 "parser.yy"
+#line 705 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     break;
@@ -5831,5 +5832,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 706 "parser.yy"
+#line 707 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ }
     break;
@@ -5838,5 +5839,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 711 "parser.yy"
+#line 712 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     break;
@@ -5845,5 +5846,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 713 "parser.yy"
+#line 714 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); }
     break;
@@ -5852,5 +5853,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 720 "parser.yy"
+#line 721 "parser.yy"
     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
@@ -5859,5 +5860,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 722 "parser.yy"
+#line 723 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -5866,5 +5867,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 729 "parser.yy"
+#line 730 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); }
     break;
@@ -5873,5 +5874,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 733 "parser.yy"
+#line 734 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); }
     break;
@@ -5880,5 +5881,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 734 "parser.yy"
+#line 735 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Default ); }
     break;
@@ -5887,5 +5888,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 740 "parser.yy"
+#line 741 "parser.yy"
     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
     break;
@@ -5894,5 +5895,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 744 "parser.yy"
+#line 745 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
     break;
@@ -5901,5 +5902,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 749 "parser.yy"
+#line 750 "parser.yy"
     { (yyval.sn) = 0; }
     break;
@@ -5908,5 +5909,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 755 "parser.yy"
+#line 756 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
     break;
@@ -5915,5 +5916,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 757 "parser.yy"
+#line 758 "parser.yy"
     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
     break;
@@ -5922,5 +5923,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 762 "parser.yy"
+#line 763 "parser.yy"
     { (yyval.sn) = 0; }
     break;
@@ -5929,5 +5930,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 768 "parser.yy"
+#line 769 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
     break;
@@ -5936,5 +5937,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 770 "parser.yy"
+#line 771 "parser.yy"
     { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); }
     break;
@@ -5943,5 +5944,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 772 "parser.yy"
+#line 773 "parser.yy"
     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
     break;
@@ -5950,5 +5951,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 774 "parser.yy"
+#line 775 "parser.yy"
     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(3) - (4)].sn),*(yyvsp[(4) - (4)].sn) ))))); }
     break;
@@ -5957,16 +5958,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 779 "parser.yy"
+#line 780 "parser.yy"
     { (yyval.sn) = 0; }
     break;
 
   case 180:
-
-/* Line 1806 of yacc.c  */
-#line 784 "parser.yy"
-    { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
-    break;
-
-  case 181:
 
 /* Line 1806 of yacc.c  */
@@ -5975,8 +5969,15 @@
     break;
 
+  case 181:
+
+/* Line 1806 of yacc.c  */
+#line 786 "parser.yy"
+    { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
+    break;
+
   case 182:
 
 /* Line 1806 of yacc.c  */
-#line 790 "parser.yy"
+#line 791 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     break;
@@ -5985,5 +5986,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 792 "parser.yy"
+#line 793 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }
     break;
@@ -5992,5 +5993,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 794 "parser.yy"
+#line 795 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }
     break;
@@ -5999,5 +6000,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 799 "parser.yy"
+#line 800 "parser.yy"
     { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
     break;
@@ -6006,5 +6007,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 801 "parser.yy"
+#line 802 "parser.yy"
     { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
     break;
@@ -6013,5 +6014,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 806 "parser.yy"
+#line 807 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); }
     break;
@@ -6020,5 +6021,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 810 "parser.yy"
+#line 811 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
     break;
@@ -6027,5 +6028,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 813 "parser.yy"
+#line 814 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Continue ); }
     break;
@@ -6034,5 +6035,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 817 "parser.yy"
+#line 818 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); }
     break;
@@ -6041,5 +6042,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 820 "parser.yy"
+#line 821 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Break ); }
     break;
@@ -6048,5 +6049,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 824 "parser.yy"
+#line 825 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
     break;
@@ -6055,5 +6056,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 826 "parser.yy"
+#line 827 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
     break;
@@ -6062,5 +6063,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 828 "parser.yy"
+#line 829 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
     break;
@@ -6069,5 +6070,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 832 "parser.yy"
+#line 833 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
     break;
@@ -6076,5 +6077,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 834 "parser.yy"
+#line 835 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (5)].en), 0 ); }
     break;
@@ -6083,5 +6084,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 841 "parser.yy"
+#line 842 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
     break;
@@ -6090,5 +6091,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 843 "parser.yy"
+#line 844 "parser.yy"
     { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
     break;
@@ -6097,5 +6098,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 845 "parser.yy"
+#line 846 "parser.yy"
     {
 			(yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) );
@@ -6107,5 +6108,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 856 "parser.yy"
+#line 857 "parser.yy"
     { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
     break;
@@ -6114,5 +6115,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 858 "parser.yy"
+#line 859 "parser.yy"
     { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
     break;
@@ -6121,5 +6122,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 860 "parser.yy"
+#line 861 "parser.yy"
     { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
     break;
@@ -6128,5 +6129,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 862 "parser.yy"
+#line 863 "parser.yy"
     { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
     break;
@@ -6135,5 +6136,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 867 "parser.yy"
+#line 868 "parser.yy"
     { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
     break;
@@ -6142,5 +6143,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 869 "parser.yy"
+#line 870 "parser.yy"
     { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
     break;
@@ -6149,5 +6150,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 871 "parser.yy"
+#line 872 "parser.yy"
     { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
     break;
@@ -6156,5 +6157,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 873 "parser.yy"
+#line 874 "parser.yy"
     { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
     break;
@@ -6163,5 +6164,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 878 "parser.yy"
+#line 879 "parser.yy"
     {
 			(yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) );
@@ -6173,5 +6174,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 892 "parser.yy"
+#line 893 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6183,5 +6184,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 897 "parser.yy"
+#line 898 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6190,5 +6191,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 899 "parser.yy"
+#line 900 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6200,5 +6201,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 908 "parser.yy"
+#line 909 "parser.yy"
     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
     break;
@@ -6207,5 +6208,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 910 "parser.yy"
+#line 911 "parser.yy"
     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
     break;
@@ -6214,5 +6215,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 912 "parser.yy"
+#line 913 "parser.yy"
     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
     break;
@@ -6221,5 +6222,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 914 "parser.yy"
+#line 915 "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)].constant) ); }
     break;
@@ -6228,5 +6229,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 916 "parser.yy"
+#line 917 "parser.yy"
     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].constant), (yyvsp[(12) - (14)].label) ); }
     break;
@@ -6235,5 +6236,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 921 "parser.yy"
+#line 922 "parser.yy"
     { (yyval.flag) = false; }
     break;
@@ -6242,5 +6243,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 923 "parser.yy"
+#line 924 "parser.yy"
     { (yyval.flag) = true; }
     break;
@@ -6249,5 +6250,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 928 "parser.yy"
+#line 929 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -6256,5 +6257,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 935 "parser.yy"
+#line 936 "parser.yy"
     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     break;
@@ -6263,5 +6264,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 940 "parser.yy"
+#line 941 "parser.yy"
     { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); }
     break;
@@ -6270,5 +6271,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 942 "parser.yy"
+#line 943 "parser.yy"
     { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); }
     break;
@@ -6277,5 +6278,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 947 "parser.yy"
+#line 948 "parser.yy"
     { (yyval.constant) = 0; }
     break;
@@ -6284,5 +6285,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 949 "parser.yy"
+#line 950 "parser.yy"
     { (yyval.constant) = (yyvsp[(1) - (1)].constant); }
     break;
@@ -6291,5 +6292,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 951 "parser.yy"
+#line 952 "parser.yy"
     { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); }
     break;
@@ -6298,5 +6299,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 956 "parser.yy"
+#line 957 "parser.yy"
     { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -6305,5 +6306,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 958 "parser.yy"
+#line 959 "parser.yy"
     { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
     break;
@@ -6312,5 +6313,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 965 "parser.yy"
+#line 966 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -6319,5 +6320,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 972 "parser.yy"
+#line 973 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6326,5 +6327,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 977 "parser.yy"
+#line 978 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -6333,16 +6334,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 984 "parser.yy"
+#line 985 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 245:
-
-/* Line 1806 of yacc.c  */
-#line 998 "parser.yy"
-    {}
-    break;
-
-  case 246:
 
 /* Line 1806 of yacc.c  */
@@ -6351,8 +6345,15 @@
     break;
 
+  case 246:
+
+/* Line 1806 of yacc.c  */
+#line 1000 "parser.yy"
+    {}
+    break;
+
   case 254:
 
 /* Line 1806 of yacc.c  */
-#line 1028 "parser.yy"
+#line 1029 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6364,5 +6365,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1035 "parser.yy"
+#line 1036 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6374,5 +6375,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1040 "parser.yy"
+#line 1041 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
@@ -6384,5 +6385,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1050 "parser.yy"
+#line 1051 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
@@ -6394,5 +6395,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1055 "parser.yy"
+#line 1056 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
@@ -6404,5 +6405,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1060 "parser.yy"
+#line 1061 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
@@ -6414,5 +6415,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1068 "parser.yy"
+#line 1069 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6424,5 +6425,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1073 "parser.yy"
+#line 1074 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6434,5 +6435,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1078 "parser.yy"
+#line 1079 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6444,5 +6445,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1083 "parser.yy"
+#line 1084 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6454,5 +6455,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1088 "parser.yy"
+#line 1089 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
@@ -6464,5 +6465,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1096 "parser.yy"
+#line 1097 "parser.yy"
     {
 			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
@@ -6473,5 +6474,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1119 "parser.yy"
+#line 1120 "parser.yy"
     {
 			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
@@ -6482,5 +6483,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1123 "parser.yy"
+#line 1124 "parser.yy"
     {
 			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
@@ -6491,5 +6492,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1130 "parser.yy"
+#line 1131 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     break;
@@ -6498,5 +6499,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1134 "parser.yy"
+#line 1135 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
     break;
@@ -6505,5 +6506,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1139 "parser.yy"
+#line 1140 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6515,5 +6516,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1144 "parser.yy"
+#line 1145 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6525,5 +6526,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1149 "parser.yy"
+#line 1150 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
@@ -6535,5 +6536,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1160 "parser.yy"
+#line 1161 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6545,5 +6546,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1165 "parser.yy"
+#line 1166 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6555,5 +6556,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1170 "parser.yy"
+#line 1171 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6565,5 +6566,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1175 "parser.yy"
+#line 1176 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6575,5 +6576,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1180 "parser.yy"
+#line 1181 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
@@ -6585,5 +6586,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1189 "parser.yy"
+#line 1190 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
@@ -6595,5 +6596,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1194 "parser.yy"
+#line 1195 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
@@ -6605,5 +6606,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1211 "parser.yy"
+#line 1212 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6615,5 +6616,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1216 "parser.yy"
+#line 1217 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6625,5 +6626,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1238 "parser.yy"
+#line 1239 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -6632,5 +6633,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1250 "parser.yy"
+#line 1251 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6639,5 +6640,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1261 "parser.yy"
+#line 1262 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     break;
@@ -6646,5 +6647,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1263 "parser.yy"
+#line 1264 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     break;
@@ -6653,5 +6654,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1265 "parser.yy"
+#line 1266 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
     break;
@@ -6660,5 +6661,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1267 "parser.yy"
+#line 1268 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
     break;
@@ -6667,5 +6668,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1269 "parser.yy"
+#line 1270 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
     break;
@@ -6674,5 +6675,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1271 "parser.yy"
+#line 1272 "parser.yy"
     {
 			typedefTable.enterScope();
@@ -6683,5 +6684,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1275 "parser.yy"
+#line 1276 "parser.yy"
     {
 			typedefTable.leaveScope();
@@ -6693,5 +6694,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1284 "parser.yy"
+#line 1285 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6700,5 +6701,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1286 "parser.yy"
+#line 1287 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6707,5 +6708,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1297 "parser.yy"
+#line 1298 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6714,5 +6715,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1306 "parser.yy"
+#line 1307 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     break;
@@ -6721,5 +6722,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1308 "parser.yy"
+#line 1309 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
     break;
@@ -6728,5 +6729,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1310 "parser.yy"
+#line 1311 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
     break;
@@ -6735,5 +6736,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1312 "parser.yy"
+#line 1313 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
     break;
@@ -6742,5 +6743,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1314 "parser.yy"
+#line 1315 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
     break;
@@ -6749,5 +6750,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1316 "parser.yy"
+#line 1317 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
     break;
@@ -6756,5 +6757,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1318 "parser.yy"
+#line 1319 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
     break;
@@ -6763,5 +6764,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1320 "parser.yy"
+#line 1321 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
     break;
@@ -6770,5 +6771,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1325 "parser.yy"
+#line 1326 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
     break;
@@ -6777,5 +6778,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1327 "parser.yy"
+#line 1328 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
     break;
@@ -6784,5 +6785,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1329 "parser.yy"
+#line 1330 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
     break;
@@ -6791,5 +6792,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1331 "parser.yy"
+#line 1332 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
     break;
@@ -6798,5 +6799,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1333 "parser.yy"
+#line 1334 "parser.yy"
     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
     break;
@@ -6805,5 +6806,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1335 "parser.yy"
+#line 1336 "parser.yy"
     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
     break;
@@ -6812,5 +6813,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1337 "parser.yy"
+#line 1338 "parser.yy"
     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
     break;
@@ -6819,5 +6820,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1339 "parser.yy"
+#line 1340 "parser.yy"
     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
     break;
@@ -6826,5 +6827,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1341 "parser.yy"
+#line 1342 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
     break;
@@ -6833,5 +6834,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1343 "parser.yy"
+#line 1344 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
     break;
@@ -6840,5 +6841,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1345 "parser.yy"
+#line 1346 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
     break;
@@ -6847,5 +6848,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1347 "parser.yy"
+#line 1348 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
     break;
@@ -6854,5 +6855,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1349 "parser.yy"
+#line 1350 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
     break;
@@ -6861,5 +6862,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1356 "parser.yy"
+#line 1357 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6868,5 +6869,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1358 "parser.yy"
+#line 1359 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6875,5 +6876,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1360 "parser.yy"
+#line 1361 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6882,5 +6883,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1362 "parser.yy"
+#line 1363 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -6889,5 +6890,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1368 "parser.yy"
+#line 1369 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6896,5 +6897,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1375 "parser.yy"
+#line 1376 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6903,5 +6904,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1377 "parser.yy"
+#line 1378 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6910,5 +6911,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1379 "parser.yy"
+#line 1380 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6917,5 +6918,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1384 "parser.yy"
+#line 1385 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
     break;
@@ -6924,5 +6925,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1386 "parser.yy"
+#line 1387 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
     break;
@@ -6931,5 +6932,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1388 "parser.yy"
+#line 1389 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -6938,5 +6939,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1390 "parser.yy"
+#line 1391 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     break;
@@ -6945,5 +6946,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1396 "parser.yy"
+#line 1397 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6952,5 +6953,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1398 "parser.yy"
+#line 1399 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6959,5 +6960,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1400 "parser.yy"
+#line 1401 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6966,5 +6967,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1406 "parser.yy"
+#line 1407 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6973,5 +6974,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1408 "parser.yy"
+#line 1409 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6980,5 +6981,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1414 "parser.yy"
+#line 1415 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6987,5 +6988,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1416 "parser.yy"
+#line 1417 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6994,5 +6995,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1418 "parser.yy"
+#line 1419 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -7001,5 +7002,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1423 "parser.yy"
+#line 1424 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -7008,5 +7009,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1425 "parser.yy"
+#line 1426 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7015,5 +7016,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1427 "parser.yy"
+#line 1428 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7022,5 +7023,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1437 "parser.yy"
+#line 1438 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -7029,5 +7030,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1439 "parser.yy"
+#line 1440 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0 ); }
     break;
@@ -7036,5 +7037,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1441 "parser.yy"
+#line 1442 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, (yyvsp[(4) - (5)].decl) ); }
     break;
@@ -7043,5 +7044,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1443 "parser.yy"
+#line 1444 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl) ); }
     break;
@@ -7050,5 +7051,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1445 "parser.yy"
+#line 1446 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     break;
@@ -7057,5 +7058,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1450 "parser.yy"
+#line 1451 "parser.yy"
     { (yyval.aggKey) = DeclarationNode::Struct; }
     break;
@@ -7064,5 +7065,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1452 "parser.yy"
+#line 1453 "parser.yy"
     { (yyval.aggKey) = DeclarationNode::Union; }
     break;
@@ -7071,5 +7072,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1457 "parser.yy"
+#line 1458 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (1)].decl); }
     break;
@@ -7078,5 +7079,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1459 "parser.yy"
+#line 1460 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7085,5 +7086,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1465 "parser.yy"
+#line 1466 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -7092,5 +7093,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1468 "parser.yy"
+#line 1469 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -7099,5 +7100,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1474 "parser.yy"
+#line 1475 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     break;
@@ -7106,5 +7107,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1476 "parser.yy"
+#line 1477 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     break;
@@ -7113,5 +7114,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1478 "parser.yy"
+#line 1479 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
     break;
@@ -7120,5 +7121,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1483 "parser.yy"
+#line 1484 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7127,5 +7128,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1485 "parser.yy"
+#line 1486 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
     break;
@@ -7134,5 +7135,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1490 "parser.yy"
+#line 1491 "parser.yy"
     { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
     break;
@@ -7141,5 +7142,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1492 "parser.yy"
+#line 1493 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
     break;
@@ -7148,5 +7149,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1495 "parser.yy"
+#line 1496 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     break;
@@ -7155,5 +7156,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1498 "parser.yy"
+#line 1499 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     break;
@@ -7162,5 +7163,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1504 "parser.yy"
+#line 1505 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -7169,5 +7170,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1506 "parser.yy"
+#line 1507 "parser.yy"
     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
@@ -7176,5 +7177,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1511 "parser.yy"
+#line 1512 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -7183,5 +7184,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1520 "parser.yy"
+#line 1521 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
     break;
@@ -7190,5 +7191,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1522 "parser.yy"
+#line 1523 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -7197,5 +7198,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1524 "parser.yy"
+#line 1525 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); }
     break;
@@ -7204,5 +7205,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1529 "parser.yy"
+#line 1530 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     break;
@@ -7211,5 +7212,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1531 "parser.yy"
+#line 1532 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
     break;
@@ -7218,5 +7219,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1536 "parser.yy"
+#line 1537 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -7225,5 +7226,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1538 "parser.yy"
+#line 1539 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -7232,5 +7233,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1545 "parser.yy"
+#line 1546 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7239,5 +7240,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1553 "parser.yy"
+#line 1554 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7246,5 +7247,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1555 "parser.yy"
+#line 1556 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
@@ -7253,5 +7254,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1557 "parser.yy"
+#line 1558 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
@@ -7260,5 +7261,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1565 "parser.yy"
+#line 1566 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7267,5 +7268,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1567 "parser.yy"
+#line 1568 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7274,5 +7275,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1569 "parser.yy"
+#line 1570 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
     break;
@@ -7281,5 +7282,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1575 "parser.yy"
+#line 1576 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7288,5 +7289,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1580 "parser.yy"
+#line 1581 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7295,5 +7296,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1587 "parser.yy"
+#line 1588 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
@@ -7302,5 +7303,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1594 "parser.yy"
+#line 1595 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7309,5 +7310,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1596 "parser.yy"
+#line 1597 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7316,5 +7317,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1605 "parser.yy"
+#line 1606 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     break;
@@ -7323,5 +7324,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1608 "parser.yy"
+#line 1609 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     break;
@@ -7330,5 +7331,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1610 "parser.yy"
+#line 1611 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
     break;
@@ -7337,5 +7338,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1620 "parser.yy"
+#line 1621 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7344,5 +7345,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1626 "parser.yy"
+#line 1627 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7354,5 +7355,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1631 "parser.yy"
+#line 1632 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7364,5 +7365,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1640 "parser.yy"
+#line 1641 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7371,5 +7372,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1649 "parser.yy"
+#line 1650 "parser.yy"
     { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -7378,5 +7379,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1651 "parser.yy"
+#line 1652 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
     break;
@@ -7385,5 +7386,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1676 "parser.yy"
+#line 1677 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7392,5 +7393,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1684 "parser.yy"
+#line 1685 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7399,5 +7400,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1689 "parser.yy"
+#line 1690 "parser.yy"
     { (yyval.in) = 0; }
     break;
@@ -7406,5 +7407,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1691 "parser.yy"
+#line 1692 "parser.yy"
     { (yyval.in) = (yyvsp[(2) - (2)].in); }
     break;
@@ -7413,5 +7414,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1693 "parser.yy"
+#line 1694 "parser.yy"
     { (yyval.in) = (yyvsp[(2) - (2)].in); }
     break;
@@ -7420,5 +7421,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1697 "parser.yy"
+#line 1698 "parser.yy"
     { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     break;
@@ -7427,5 +7428,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1698 "parser.yy"
+#line 1699 "parser.yy"
     { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     break;
@@ -7434,5 +7435,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1703 "parser.yy"
+#line 1704 "parser.yy"
     { (yyval.in) = 0; }
     break;
@@ -7441,5 +7442,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1705 "parser.yy"
+#line 1706 "parser.yy"
     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
     break;
@@ -7448,5 +7449,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1706 "parser.yy"
+#line 1707 "parser.yy"
     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
     break;
@@ -7455,5 +7456,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1708 "parser.yy"
+#line 1709 "parser.yy"
     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
     break;
@@ -7462,5 +7463,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1724 "parser.yy"
+#line 1725 "parser.yy"
     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
     break;
@@ -7469,5 +7470,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1730 "parser.yy"
+#line 1731 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
     break;
@@ -7476,5 +7477,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1738 "parser.yy"
+#line 1739 "parser.yy"
     { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); }
     break;
@@ -7483,5 +7484,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1740 "parser.yy"
+#line 1741 "parser.yy"
     { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); }
     break;
@@ -7490,5 +7491,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1743 "parser.yy"
+#line 1744 "parser.yy"
     { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
     break;
@@ -7497,5 +7498,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1745 "parser.yy"
+#line 1746 "parser.yy"
     { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
     break;
@@ -7504,5 +7505,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1747 "parser.yy"
+#line 1748 "parser.yy"
     { (yyval.en) = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ), true ); }
     break;
@@ -7511,5 +7512,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1749 "parser.yy"
+#line 1750 "parser.yy"
     { (yyval.en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); }
     break;
@@ -7518,5 +7519,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1773 "parser.yy"
+#line 1774 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7525,5 +7526,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1775 "parser.yy"
+#line 1776 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7532,5 +7533,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1777 "parser.yy"
+#line 1778 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -7539,5 +7540,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1783 "parser.yy"
+#line 1784 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7546,5 +7547,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1785 "parser.yy"
+#line 1786 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7553,5 +7554,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1790 "parser.yy"
+#line 1791 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     break;
@@ -7560,5 +7561,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1796 "parser.yy"
+#line 1797 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -7567,5 +7568,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1801 "parser.yy"
+#line 1802 "parser.yy"
     { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
     break;
@@ -7574,5 +7575,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1803 "parser.yy"
+#line 1804 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -7581,5 +7582,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1809 "parser.yy"
+#line 1810 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Type; }
     break;
@@ -7588,5 +7589,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1811 "parser.yy"
+#line 1812 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Ftype; }
     break;
@@ -7595,5 +7596,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1813 "parser.yy"
+#line 1814 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Dtype; }
     break;
@@ -7602,5 +7603,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1818 "parser.yy"
+#line 1819 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7609,5 +7610,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1820 "parser.yy"
+#line 1821 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7616,5 +7617,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1825 "parser.yy"
+#line 1826 "parser.yy"
     {
 			typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
@@ -7626,5 +7627,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1830 "parser.yy"
+#line 1831 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     break;
@@ -7633,5 +7634,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1832 "parser.yy"
+#line 1833 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7640,5 +7641,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1837 "parser.yy"
+#line 1838 "parser.yy"
     { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
     break;
@@ -7647,5 +7648,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1840 "parser.yy"
+#line 1841 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
     break;
@@ -7654,5 +7655,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1842 "parser.yy"
+#line 1843 "parser.yy"
     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
     break;
@@ -7661,5 +7662,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1847 "parser.yy"
+#line 1848 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     break;
@@ -7668,5 +7669,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1849 "parser.yy"
+#line 1850 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -7675,5 +7676,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1851 "parser.yy"
+#line 1852 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -7682,5 +7683,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1856 "parser.yy"
+#line 1857 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7689,5 +7690,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1858 "parser.yy"
+#line 1859 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -7696,5 +7697,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1863 "parser.yy"
+#line 1864 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
@@ -7706,5 +7707,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1868 "parser.yy"
+#line 1869 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
@@ -7716,5 +7717,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1876 "parser.yy"
+#line 1877 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
@@ -7726,5 +7727,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1881 "parser.yy"
+#line 1882 "parser.yy"
     {
 			typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
@@ -7736,5 +7737,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1886 "parser.yy"
+#line 1887 "parser.yy"
     {
 			typedefTable.leaveTrait();
@@ -7747,5 +7748,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1896 "parser.yy"
+#line 1897 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -7754,5 +7755,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1906 "parser.yy"
+#line 1907 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7764,5 +7765,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1911 "parser.yy"
+#line 1912 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7774,5 +7775,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1916 "parser.yy"
+#line 1917 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
@@ -7784,5 +7785,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1924 "parser.yy"
+#line 1925 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7794,5 +7795,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1929 "parser.yy"
+#line 1930 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7804,5 +7805,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1939 "parser.yy"
+#line 1940 "parser.yy"
     {}
     break;
@@ -7811,5 +7812,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1941 "parser.yy"
+#line 1942 "parser.yy"
     {
 			if ( theTree ) {
@@ -7824,5 +7825,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1953 "parser.yy"
+#line 1954 "parser.yy"
     { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
     break;
@@ -7831,5 +7832,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1958 "parser.yy"
+#line 1959 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7838,5 +7839,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1966 "parser.yy"
+#line 1967 "parser.yy"
     {}
     break;
@@ -7845,5 +7846,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1968 "parser.yy"
+#line 1969 "parser.yy"
     {
 			linkageStack.push( linkage );
@@ -7855,5 +7856,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1973 "parser.yy"
+#line 1974 "parser.yy"
     {
 			linkage = linkageStack.top();
@@ -7866,5 +7867,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1979 "parser.yy"
+#line 1980 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     break;
@@ -7873,5 +7874,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1989 "parser.yy"
+#line 1990 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7884,5 +7885,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1995 "parser.yy"
+#line 1996 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7895,5 +7896,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2004 "parser.yy"
+#line 2005 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7906,5 +7907,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2010 "parser.yy"
+#line 2011 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7917,5 +7918,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2016 "parser.yy"
+#line 2017 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7928,5 +7929,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2022 "parser.yy"
+#line 2023 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7939,5 +7940,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2028 "parser.yy"
+#line 2029 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7950,5 +7951,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2036 "parser.yy"
+#line 2037 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7961,5 +7962,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2042 "parser.yy"
+#line 2043 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7972,5 +7973,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2050 "parser.yy"
+#line 2051 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7983,5 +7984,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2056 "parser.yy"
+#line 2057 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7994,5 +7995,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2071 "parser.yy"
+#line 2072 "parser.yy"
     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     break;
@@ -8001,5 +8002,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2081 "parser.yy"
+#line 2082 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -8008,5 +8009,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2088 "parser.yy"
+#line 2089 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8015,16 +8016,9 @@
 
 /* Line 1806 of yacc.c  */
-#line 2094 "parser.yy"
+#line 2095 "parser.yy"
     { (yyval.decl) = 0; }
     break;
 
   case 557:
-
-/* Line 1806 of yacc.c  */
-#line 2109 "parser.yy"
-    {}
-    break;
-
-  case 558:
 
 /* Line 1806 of yacc.c  */
@@ -8033,5 +8027,5 @@
     break;
 
-  case 559:
+  case 558:
 
 /* Line 1806 of yacc.c  */
@@ -8040,5 +8034,5 @@
     break;
 
-  case 560:
+  case 559:
 
 /* Line 1806 of yacc.c  */
@@ -8047,8 +8041,15 @@
     break;
 
+  case 560:
+
+/* Line 1806 of yacc.c  */
+#line 2113 "parser.yy"
+    {}
+    break;
+
   case 561:
 
 /* Line 1806 of yacc.c  */
-#line 2147 "parser.yy"
+#line 2148 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8057,5 +8058,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2150 "parser.yy"
+#line 2151 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8064,5 +8065,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2152 "parser.yy"
+#line 2153 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8071,5 +8072,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2157 "parser.yy"
+#line 2158 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
@@ -8081,5 +8082,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2162 "parser.yy"
+#line 2163 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8088,5 +8089,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2167 "parser.yy"
+#line 2168 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8095,5 +8096,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2169 "parser.yy"
+#line 2170 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8102,5 +8103,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2171 "parser.yy"
+#line 2172 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8109,5 +8110,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2176 "parser.yy"
+#line 2177 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8116,5 +8117,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2178 "parser.yy"
+#line 2179 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8123,5 +8124,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2180 "parser.yy"
+#line 2181 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8130,5 +8131,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2182 "parser.yy"
+#line 2183 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8137,5 +8138,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2187 "parser.yy"
+#line 2188 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8144,5 +8145,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2189 "parser.yy"
+#line 2190 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8151,5 +8152,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2199 "parser.yy"
+#line 2200 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8158,5 +8159,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2202 "parser.yy"
+#line 2203 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8165,5 +8166,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2207 "parser.yy"
+#line 2208 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8172,5 +8173,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2209 "parser.yy"
+#line 2210 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8179,5 +8180,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2211 "parser.yy"
+#line 2212 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8186,5 +8187,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2216 "parser.yy"
+#line 2217 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8193,5 +8194,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2218 "parser.yy"
+#line 2219 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8200,5 +8201,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2220 "parser.yy"
+#line 2221 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8207,5 +8208,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2225 "parser.yy"
+#line 2226 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8214,5 +8215,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2227 "parser.yy"
+#line 2228 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8221,5 +8222,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2229 "parser.yy"
+#line 2230 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8228,5 +8229,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2244 "parser.yy"
+#line 2245 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -8235,5 +8236,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2246 "parser.yy"
+#line 2247 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
     break;
@@ -8242,5 +8243,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2248 "parser.yy"
+#line 2249 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8249,5 +8250,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2253 "parser.yy"
+#line 2254 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8256,5 +8257,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2255 "parser.yy"
+#line 2256 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8263,5 +8264,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2257 "parser.yy"
+#line 2258 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8270,5 +8271,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2262 "parser.yy"
+#line 2263 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8277,5 +8278,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2264 "parser.yy"
+#line 2265 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8284,5 +8285,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2266 "parser.yy"
+#line 2267 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8291,5 +8292,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2281 "parser.yy"
+#line 2282 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8298,5 +8299,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2284 "parser.yy"
+#line 2285 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8305,5 +8306,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2286 "parser.yy"
+#line 2287 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8312,5 +8313,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2292 "parser.yy"
+#line 2293 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8319,5 +8320,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2297 "parser.yy"
+#line 2298 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8326,5 +8327,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2299 "parser.yy"
+#line 2300 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8333,5 +8334,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2301 "parser.yy"
+#line 2302 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8340,5 +8341,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2306 "parser.yy"
+#line 2307 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8347,5 +8348,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2308 "parser.yy"
+#line 2309 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8354,5 +8355,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2310 "parser.yy"
+#line 2311 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8361,5 +8362,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2312 "parser.yy"
+#line 2313 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8368,5 +8369,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2317 "parser.yy"
+#line 2318 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8375,5 +8376,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2319 "parser.yy"
+#line 2320 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8382,5 +8383,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2321 "parser.yy"
+#line 2322 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8389,5 +8390,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2331 "parser.yy"
+#line 2332 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8396,5 +8397,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2334 "parser.yy"
+#line 2335 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8403,5 +8404,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2336 "parser.yy"
+#line 2337 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8410,5 +8411,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2341 "parser.yy"
+#line 2342 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8417,5 +8418,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2343 "parser.yy"
+#line 2344 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8424,5 +8425,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2345 "parser.yy"
+#line 2346 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8431,5 +8432,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2350 "parser.yy"
+#line 2351 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8438,5 +8439,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2352 "parser.yy"
+#line 2353 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8445,5 +8446,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2354 "parser.yy"
+#line 2355 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8452,5 +8453,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2356 "parser.yy"
+#line 2357 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8459,5 +8460,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2361 "parser.yy"
+#line 2362 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8466,5 +8467,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2363 "parser.yy"
+#line 2364 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8473,5 +8474,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2365 "parser.yy"
+#line 2366 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8480,5 +8481,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2396 "parser.yy"
+#line 2397 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8487,5 +8488,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2399 "parser.yy"
+#line 2400 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8494,5 +8495,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2401 "parser.yy"
+#line 2402 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8501,5 +8502,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2406 "parser.yy"
+#line 2407 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
@@ -8511,5 +8512,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2411 "parser.yy"
+#line 2412 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
@@ -8521,5 +8522,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2419 "parser.yy"
+#line 2420 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8528,5 +8529,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2421 "parser.yy"
+#line 2422 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8535,5 +8536,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2423 "parser.yy"
+#line 2424 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8542,5 +8543,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2428 "parser.yy"
+#line 2429 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8549,5 +8550,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2430 "parser.yy"
+#line 2431 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8556,5 +8557,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2435 "parser.yy"
+#line 2436 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8563,5 +8564,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2437 "parser.yy"
+#line 2438 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8570,5 +8571,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2452 "parser.yy"
+#line 2453 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8577,5 +8578,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2454 "parser.yy"
+#line 2455 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8584,5 +8585,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2459 "parser.yy"
+#line 2460 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
@@ -8591,5 +8592,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2461 "parser.yy"
+#line 2462 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8598,5 +8599,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2463 "parser.yy"
+#line 2464 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8605,5 +8606,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2465 "parser.yy"
+#line 2466 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8612,5 +8613,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2467 "parser.yy"
+#line 2468 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8619,5 +8620,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2473 "parser.yy"
+#line 2474 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8626,5 +8627,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2475 "parser.yy"
+#line 2476 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8633,5 +8634,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2477 "parser.yy"
+#line 2478 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8640,5 +8641,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2482 "parser.yy"
+#line 2483 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     break;
@@ -8647,5 +8648,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2484 "parser.yy"
+#line 2485 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8654,5 +8655,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2486 "parser.yy"
+#line 2487 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8661,5 +8662,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2492 "parser.yy"
+#line 2493 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     break;
@@ -8668,5 +8669,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2494 "parser.yy"
+#line 2495 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -8675,5 +8676,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2500 "parser.yy"
+#line 2501 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     break;
@@ -8682,5 +8683,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2502 "parser.yy"
+#line 2503 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     break;
@@ -8689,5 +8690,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2504 "parser.yy"
+#line 2505 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
     break;
@@ -8696,5 +8697,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2506 "parser.yy"
+#line 2507 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     break;
@@ -8703,5 +8704,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2521 "parser.yy"
+#line 2522 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8710,5 +8711,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2523 "parser.yy"
+#line 2524 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8717,5 +8718,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2528 "parser.yy"
+#line 2529 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
@@ -8724,5 +8725,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2530 "parser.yy"
+#line 2531 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8731,5 +8732,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2532 "parser.yy"
+#line 2533 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8738,5 +8739,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2534 "parser.yy"
+#line 2535 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8745,5 +8746,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2536 "parser.yy"
+#line 2537 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8752,5 +8753,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2542 "parser.yy"
+#line 2543 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8759,5 +8760,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2544 "parser.yy"
+#line 2545 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8766,5 +8767,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2546 "parser.yy"
+#line 2547 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8773,5 +8774,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2551 "parser.yy"
+#line 2552 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     break;
@@ -8780,5 +8781,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2553 "parser.yy"
+#line 2554 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8787,5 +8788,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2555 "parser.yy"
+#line 2556 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8794,5 +8795,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2562 "parser.yy"
+#line 2563 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8801,5 +8802,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2573 "parser.yy"
+#line 2574 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     break;
@@ -8808,5 +8809,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2576 "parser.yy"
+#line 2577 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     break;
@@ -8815,5 +8816,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2578 "parser.yy"
+#line 2579 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     break;
@@ -8822,5 +8823,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2581 "parser.yy"
+#line 2582 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     break;
@@ -8829,5 +8830,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2583 "parser.yy"
+#line 2584 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     break;
@@ -8836,5 +8837,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2585 "parser.yy"
+#line 2586 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     break;
@@ -8843,5 +8844,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2599 "parser.yy"
+#line 2600 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8850,5 +8851,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2601 "parser.yy"
+#line 2602 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8857,5 +8858,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2606 "parser.yy"
+#line 2607 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
@@ -8864,5 +8865,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2608 "parser.yy"
+#line 2609 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8871,5 +8872,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2610 "parser.yy"
+#line 2611 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8878,5 +8879,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2612 "parser.yy"
+#line 2613 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8885,5 +8886,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2614 "parser.yy"
+#line 2615 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8892,5 +8893,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2620 "parser.yy"
+#line 2621 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8899,5 +8900,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2622 "parser.yy"
+#line 2623 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8906,5 +8907,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2624 "parser.yy"
+#line 2625 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8913,5 +8914,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2629 "parser.yy"
+#line 2630 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8920,5 +8921,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2631 "parser.yy"
+#line 2632 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8927,5 +8928,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2641 "parser.yy"
+#line 2642 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8934,5 +8935,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2651 "parser.yy"
+#line 2652 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8941,5 +8942,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2653 "parser.yy"
+#line 2654 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8948,5 +8949,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2655 "parser.yy"
+#line 2656 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8955,5 +8956,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2657 "parser.yy"
+#line 2658 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8962,5 +8963,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2659 "parser.yy"
+#line 2660 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8969,5 +8970,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2661 "parser.yy"
+#line 2662 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8976,5 +8977,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2668 "parser.yy"
+#line 2669 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -8983,5 +8984,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2670 "parser.yy"
+#line 2671 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8990,5 +8991,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2672 "parser.yy"
+#line 2673 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -8997,5 +8998,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2674 "parser.yy"
+#line 2675 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -9004,5 +9005,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2676 "parser.yy"
+#line 2677 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9011,5 +9012,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2678 "parser.yy"
+#line 2679 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -9018,5 +9019,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2680 "parser.yy"
+#line 2681 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9025,5 +9026,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2682 "parser.yy"
+#line 2683 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -9032,5 +9033,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2684 "parser.yy"
+#line 2685 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -9039,5 +9040,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2686 "parser.yy"
+#line 2687 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9046,5 +9047,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2691 "parser.yy"
+#line 2692 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     break;
@@ -9053,5 +9054,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2693 "parser.yy"
+#line 2694 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     break;
@@ -9060,5 +9061,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2698 "parser.yy"
+#line 2699 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     break;
@@ -9067,5 +9068,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2700 "parser.yy"
+#line 2701 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     break;
@@ -9074,5 +9075,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2727 "parser.yy"
+#line 2728 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9081,5 +9082,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2738 "parser.yy"
+#line 2739 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -9088,5 +9089,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2740 "parser.yy"
+#line 2741 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -9095,5 +9096,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2742 "parser.yy"
+#line 2743 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -9102,5 +9103,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2744 "parser.yy"
+#line 2745 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -9109,5 +9110,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2746 "parser.yy"
+#line 2747 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -9116,5 +9117,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2748 "parser.yy"
+#line 2749 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -9123,5 +9124,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2755 "parser.yy"
+#line 2756 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -9130,5 +9131,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2757 "parser.yy"
+#line 2758 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -9137,5 +9138,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2759 "parser.yy"
+#line 2760 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9144,5 +9145,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2761 "parser.yy"
+#line 2762 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -9151,5 +9152,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2763 "parser.yy"
+#line 2764 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -9158,5 +9159,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2765 "parser.yy"
+#line 2766 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -9165,5 +9166,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2770 "parser.yy"
+#line 2771 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     break;
@@ -9172,5 +9173,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2775 "parser.yy"
+#line 2776 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
     break;
@@ -9179,5 +9180,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2777 "parser.yy"
+#line 2778 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
     break;
@@ -9186,5 +9187,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2779 "parser.yy"
+#line 2780 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
     break;
@@ -9193,5 +9194,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2803 "parser.yy"
+#line 2804 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -9200,5 +9201,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2805 "parser.yy"
+#line 2806 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -9207,5 +9208,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 9210 "Parser/parser.cc"
+#line 9211 "Parser/parser.cc"
       default: break;
     }
@@ -9438,5 +9439,5 @@
 
 /* Line 2067 of yacc.c  */
-#line 2808 "parser.yy"
+#line 2809 "parser.yy"
 
 // ----end of grammar----
Index: src/Parser/parser.h
===================================================================
--- src/Parser/parser.h	(revision 40404257da8f22441f6123bdbff37bdb54e0e5f3)
+++ src/Parser/parser.h	(revision 984dce6bb5af39c6108d6d825e085c449dc9f3ad)
@@ -262,5 +262,5 @@
 
 /* Line 2068 of yacc.c  */
-#line 111 "parser.yy"
+#line 112 "parser.yy"
 
 	Token tok;
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 40404257da8f22441f6123bdbff37bdb54e0e5f3)
+++ src/Parser/parser.yy	(revision 984dce6bb5af39c6108d6d825e085c449dc9f3ad)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Mar  2 17:24:45 2016
-// Update Count     : 1495
+// Last Modified On : Mon Mar 21 18:18:34 2016
+// Update Count     : 1497
 // 
 
@@ -51,7 +51,8 @@
 #include <cstdio>
 #include <stack>
+#include "lex.h"
+#include "parser.h"
+#include "ParseNode.h"
 #include "TypedefTable.h"
-#include "lex.h"
-#include "ParseNode.h"
 #include "TypeData.h"
 #include "LinkageSpec.h"
