Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision 2ee54263027122487a901500411985c80c241f9e)
+++ src/Parser/DeclarationNode.cc	(revision 6a1bdfdbaf1e60268cb7d469339ab09f961202ac)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 12:34:05 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Oct  3 18:03:08 2016
-// Update Count     : 651
+// Last Modified On : Tue Dec 13 14:43:38 2016
+// Update Count     : 660
 //
 
@@ -48,10 +48,11 @@
 		type( nullptr ),
 		storageClass( NoStorageClass ),
+		bitfieldWidth( nullptr ),
 		isInline( false ),
 		isNoreturn( false ),
-		bitfieldWidth( nullptr ),
-		initializer( nullptr ),
 		hasEllipsis( false ),
 		linkage( ::linkage ),
+		asmName( nullptr ),
+		initializer( nullptr ),
 		extension( false ) {
 
@@ -75,4 +76,5 @@
 	delete type;
 	delete bitfieldWidth;
+	// asmName, no delete, passed to next stage
 	delete initializer;
 }
@@ -90,4 +92,5 @@
 	newnode->set_next( maybeClone( get_next() ) );
 	newnode->linkage = linkage;
+	newnode->asmName = maybeClone( asmName );
 
 //	newnode->variable.name = variable.name ? new string( *variable.name ) : nullptr;
@@ -641,4 +644,10 @@
 }
 
+DeclarationNode * DeclarationNode::addAsmName( ConstantExpr * newname ) {
+	assert( ! asmName );
+	asmName = newname;
+	return this;
+}
+
 DeclarationNode * DeclarationNode::addBitfield( ExpressionNode * size ) {
 	bitfieldWidth = size;
@@ -947,10 +956,10 @@
 
 	if ( type ) {
-		return buildDecl( type, name ? *name : string( "" ), storageClass, maybeBuild< Expression >( bitfieldWidth ), isInline, isNoreturn, linkage, maybeBuild< Initializer >(initializer) )->set_extension( extension );
+		return buildDecl( type, name ? *name : string( "" ), storageClass, maybeBuild< Expression >( bitfieldWidth ), isInline, isNoreturn, linkage, asmName, maybeBuild< Initializer >(initializer) )->set_extension( extension );
 	} // if
 
 	if ( ! isInline && ! isNoreturn ) {
 		assertf( name, "ObjectDecl are assumed to have names\n" );
-		return (new ObjectDecl( *name, storageClass, linkage, maybeBuild< Expression >( bitfieldWidth ), nullptr, maybeBuild< Initializer >( initializer ) ))->set_extension( extension );
+		return (new ObjectDecl( *name, storageClass, linkage, maybeBuild< Expression >( bitfieldWidth ), nullptr, maybeBuild< Initializer >( initializer ) ))->set_asmName( asmName )->set_extension( extension );
 	} // if
 
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision 2ee54263027122487a901500411985c80c241f9e)
+++ src/Parser/ParseNode.h	(revision 6a1bdfdbaf1e60268cb7d469339ab09f961202ac)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:28:16 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Oct  3 18:03:08 2016
-// Update Count     : 636
+// Last Modified On : Tue Dec 13 13:26:56 2016
+// Update Count     : 642
 //
 
@@ -73,5 +73,5 @@
 	InitializerNode( InitializerNode *, bool aggrp = false, ExpressionNode * des = nullptr );
 	~InitializerNode();
-	virtual InitializerNode * clone() const { assert( false ); return nullptr; }
+	virtual InitializerNode * clone() const { return nullptr; }
 
 	ExpressionNode * get_expression() const { return expr; }
@@ -257,4 +257,5 @@
 	DeclarationNode * addAssertions( DeclarationNode * );
 	DeclarationNode * addName( std::string * );
+	DeclarationNode * addAsmName( ConstantExpr * );
 	DeclarationNode * addBitfield( ExpressionNode * size );
 	DeclarationNode * addVarArgs();
@@ -309,11 +310,12 @@
 	TypeData * type;
 	StorageClass storageClass;
+	ExpressionNode * bitfieldWidth;
 	bool isInline, isNoreturn;
-	std::list< std::string > attributes;
-	ExpressionNode * bitfieldWidth;
 	std::unique_ptr<ExpressionNode> enumeratorValue;
-	InitializerNode * initializer;
 	bool hasEllipsis;
 	LinkageSpec::Spec linkage;
+	ConstantExpr *asmName;
+	std::list< std::string > attributes;
+	InitializerNode * initializer;
 	bool extension = false;
 	std::string error;
Index: src/Parser/TypeData.cc
===================================================================
--- src/Parser/TypeData.cc	(revision 2ee54263027122487a901500411985c80c241f9e)
+++ src/Parser/TypeData.cc	(revision 6a1bdfdbaf1e60268cb7d469339ab09f961202ac)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:12:51 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Sep 24 11:14:26 2016
-// Update Count     : 415
+// Last Modified On : Tue Dec 13 13:40:33 2016
+// Update Count     : 420
 //
 
@@ -721,5 +721,5 @@
 } // buildTypeof
 
-Declaration * buildDecl( const TypeData * td, const string &name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, Initializer * init ) {
+Declaration * buildDecl( const TypeData * td, const string &name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, ConstantExpr *asmName, Initializer * init ) {
 	if ( td->kind == TypeData::Function ) {
 		FunctionDecl * decl;
@@ -743,5 +743,5 @@
 		} // for
 		buildList( td->function.oldDeclList, decl->get_oldDecls() );
-		return decl;
+		return decl->set_asmName( asmName );
 	} else if ( td->kind == TypeData::Aggregate ) {
 		return buildAggregate( td );
@@ -751,5 +751,5 @@
 		return buildSymbolic( td, name, sc );
 	} else {
-		return new ObjectDecl( name, sc, linkage, bitfieldWidth, typebuild( td ), init, list< Attribute * >(), isInline, isNoreturn );
+		return (new ObjectDecl( name, sc, linkage, bitfieldWidth, typebuild( td ), init, list< Attribute * >(), isInline, isNoreturn ))->set_asmName( asmName );
 	} // if
 	return nullptr;
@@ -769,5 +769,5 @@
 			break;
 		  default:
-			ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( buildDecl( td->base,  "", DeclarationNode::NoStorageClass, nullptr, false, false, LinkageSpec::Cforall ) ) );
+			ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( buildDecl( td->base,  "", DeclarationNode::NoStorageClass, nullptr, false, false, LinkageSpec::Cforall, nullptr ) ) );
 		} // switch
 	} else {
Index: src/Parser/TypeData.h
===================================================================
--- src/Parser/TypeData.h	(revision 2ee54263027122487a901500411985c80c241f9e)
+++ src/Parser/TypeData.h	(revision 6a1bdfdbaf1e60268cb7d469339ab09f961202ac)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:18:36 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Oct  3 12:34:08 2016
-// Update Count     : 142
+// Last Modified On : Tue Dec 13 13:39:39 2016
+// Update Count     : 143
 //
 
@@ -111,5 +111,5 @@
 TupleType * buildTuple( const TypeData * );
 TypeofType * buildTypeof( const TypeData * );
-Declaration * buildDecl( const TypeData *, const std::string &, DeclarationNode::StorageClass, Expression *, bool isInline, bool isNoreturn, LinkageSpec::Spec, Initializer * init = nullptr );
+Declaration * buildDecl( const TypeData *, const std::string &, DeclarationNode::StorageClass, Expression *, bool isInline, bool isNoreturn, LinkageSpec::Spec, ConstantExpr *asmName, Initializer * init = nullptr );
 FunctionType * buildFunction( const TypeData * );
 
Index: src/Parser/parser.cc
===================================================================
--- src/Parser/parser.cc	(revision 2ee54263027122487a901500411985c80c241f9e)
+++ src/Parser/parser.cc	(revision 6a1bdfdbaf1e60268cb7d469339ab09f961202ac)
@@ -1,18 +1,18 @@
-/* A Bison parser, made by GNU Bison 3.0.2.  */
+/* A Bison parser, made by GNU Bison 2.5.  */
 
 /* Bison implementation for Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
-
+   
+      Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+   
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
@@ -27,5 +27,5 @@
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-
+   
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
@@ -45,5 +45,5 @@
 
 /* Bison version.  */
-#define YYBISON_VERSION "3.0.2"
+#define YYBISON_VERSION "2.5"
 
 /* Skeleton name.  */
@@ -59,9 +59,13 @@
 #define YYPULL 1
 
+/* Using locations.  */
+#define YYLSP_NEEDED 0
 
 
 
 /* Copy the first part of user declarations.  */
-#line 42 "parser.yy" /* yacc.c:339  */
+
+/* Line 268 of yacc.c  */
+#line 42 "parser.yy"
 
 #define YYDEBUG_LEXER_TEXT (yylval)						// lexer loads this up each time
@@ -91,13 +95,12 @@
 } // appendStr
 
-#line 94 "Parser/parser.cc" /* yacc.c:339  */
-
-# ifndef YY_NULLPTR
-#  if defined __cplusplus && 201103L <= __cplusplus
-#   define YY_NULLPTR nullptr
-#  else
-#   define YY_NULLPTR 0
-#  endif
-# endif
+
+/* Line 268 of yacc.c  */
+#line 100 "Parser/parser.cc"
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 1
+#endif
 
 /* Enabling verbose error messages.  */
@@ -109,132 +112,127 @@
 #endif
 
-/* In a future release of Bison, this section will be replaced
-   by #include "y.tab.h".  */
-#ifndef YY_YY_Y_TAB_H_INCLUDED
-# define YY_YY_Y_TAB_H_INCLUDED
-/* Debug traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 1
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
 #endif
-#if YYDEBUG
-extern int yydebug;
-#endif
-
-/* Token type.  */
+
+
+/* Tokens.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-  enum yytokentype
-  {
-    TYPEDEF = 258,
-    AUTO = 259,
-    EXTERN = 260,
-    REGISTER = 261,
-    STATIC = 262,
-    INLINE = 263,
-    FORTRAN = 264,
-    CONST = 265,
-    VOLATILE = 266,
-    RESTRICT = 267,
-    FORALL = 268,
-    LVALUE = 269,
-    VOID = 270,
-    CHAR = 271,
-    SHORT = 272,
-    INT = 273,
-    LONG = 274,
-    FLOAT = 275,
-    DOUBLE = 276,
-    SIGNED = 277,
-    UNSIGNED = 278,
-    ZERO_T = 279,
-    ONE_T = 280,
-    VALIST = 281,
-    BOOL = 282,
-    COMPLEX = 283,
-    IMAGINARY = 284,
-    TYPEOF = 285,
-    LABEL = 286,
-    ENUM = 287,
-    STRUCT = 288,
-    UNION = 289,
-    OTYPE = 290,
-    FTYPE = 291,
-    DTYPE = 292,
-    TRAIT = 293,
-    SIZEOF = 294,
-    OFFSETOF = 295,
-    ATTRIBUTE = 296,
-    EXTENSION = 297,
-    IF = 298,
-    ELSE = 299,
-    SWITCH = 300,
-    CASE = 301,
-    DEFAULT = 302,
-    DO = 303,
-    WHILE = 304,
-    FOR = 305,
-    BREAK = 306,
-    CONTINUE = 307,
-    GOTO = 308,
-    RETURN = 309,
-    CHOOSE = 310,
-    DISABLE = 311,
-    ENABLE = 312,
-    FALLTHRU = 313,
-    TRY = 314,
-    CATCH = 315,
-    CATCHRESUME = 316,
-    FINALLY = 317,
-    THROW = 318,
-    THROWRESUME = 319,
-    AT = 320,
-    ASM = 321,
-    ALIGNAS = 322,
-    ALIGNOF = 323,
-    ATOMIC = 324,
-    GENERIC = 325,
-    NORETURN = 326,
-    STATICASSERT = 327,
-    THREADLOCAL = 328,
-    IDENTIFIER = 329,
-    QUOTED_IDENTIFIER = 330,
-    TYPEDEFname = 331,
-    TYPEGENname = 332,
-    ATTR_IDENTIFIER = 333,
-    ATTR_TYPEDEFname = 334,
-    ATTR_TYPEGENname = 335,
-    INTEGERconstant = 336,
-    CHARACTERconstant = 337,
-    STRINGliteral = 338,
-    REALDECIMALconstant = 339,
-    REALFRACTIONconstant = 340,
-    FLOATINGconstant = 341,
-    ZERO = 342,
-    ONE = 343,
-    ARROW = 344,
-    ICR = 345,
-    DECR = 346,
-    LS = 347,
-    RS = 348,
-    LE = 349,
-    GE = 350,
-    EQ = 351,
-    NE = 352,
-    ANDAND = 353,
-    OROR = 354,
-    ELLIPSIS = 355,
-    MULTassign = 356,
-    DIVassign = 357,
-    MODassign = 358,
-    PLUSassign = 359,
-    MINUSassign = 360,
-    LSassign = 361,
-    RSassign = 362,
-    ANDassign = 363,
-    ERassign = 364,
-    ORassign = 365,
-    ATassign = 366,
-    THEN = 367
-  };
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     TYPEDEF = 258,
+     AUTO = 259,
+     EXTERN = 260,
+     REGISTER = 261,
+     STATIC = 262,
+     INLINE = 263,
+     FORTRAN = 264,
+     CONST = 265,
+     VOLATILE = 266,
+     RESTRICT = 267,
+     FORALL = 268,
+     LVALUE = 269,
+     VOID = 270,
+     CHAR = 271,
+     SHORT = 272,
+     INT = 273,
+     LONG = 274,
+     FLOAT = 275,
+     DOUBLE = 276,
+     SIGNED = 277,
+     UNSIGNED = 278,
+     ZERO_T = 279,
+     ONE_T = 280,
+     VALIST = 281,
+     BOOL = 282,
+     COMPLEX = 283,
+     IMAGINARY = 284,
+     TYPEOF = 285,
+     LABEL = 286,
+     ENUM = 287,
+     STRUCT = 288,
+     UNION = 289,
+     OTYPE = 290,
+     FTYPE = 291,
+     DTYPE = 292,
+     TRAIT = 293,
+     SIZEOF = 294,
+     OFFSETOF = 295,
+     ATTRIBUTE = 296,
+     EXTENSION = 297,
+     IF = 298,
+     ELSE = 299,
+     SWITCH = 300,
+     CASE = 301,
+     DEFAULT = 302,
+     DO = 303,
+     WHILE = 304,
+     FOR = 305,
+     BREAK = 306,
+     CONTINUE = 307,
+     GOTO = 308,
+     RETURN = 309,
+     CHOOSE = 310,
+     DISABLE = 311,
+     ENABLE = 312,
+     FALLTHRU = 313,
+     TRY = 314,
+     CATCH = 315,
+     CATCHRESUME = 316,
+     FINALLY = 317,
+     THROW = 318,
+     THROWRESUME = 319,
+     AT = 320,
+     ASM = 321,
+     ALIGNAS = 322,
+     ALIGNOF = 323,
+     ATOMIC = 324,
+     GENERIC = 325,
+     NORETURN = 326,
+     STATICASSERT = 327,
+     THREADLOCAL = 328,
+     IDENTIFIER = 329,
+     QUOTED_IDENTIFIER = 330,
+     TYPEDEFname = 331,
+     TYPEGENname = 332,
+     ATTR_IDENTIFIER = 333,
+     ATTR_TYPEDEFname = 334,
+     ATTR_TYPEGENname = 335,
+     INTEGERconstant = 336,
+     CHARACTERconstant = 337,
+     STRINGliteral = 338,
+     REALDECIMALconstant = 339,
+     REALFRACTIONconstant = 340,
+     FLOATINGconstant = 341,
+     ZERO = 342,
+     ONE = 343,
+     ARROW = 344,
+     ICR = 345,
+     DECR = 346,
+     LS = 347,
+     RS = 348,
+     LE = 349,
+     GE = 350,
+     EQ = 351,
+     NE = 352,
+     ANDAND = 353,
+     OROR = 354,
+     ELLIPSIS = 355,
+     MULTassign = 356,
+     DIVassign = 357,
+     MODassign = 358,
+     PLUSassign = 359,
+     MINUSassign = 360,
+     LSassign = 361,
+     RSassign = 362,
+     ANDassign = 363,
+     ERassign = 364,
+     ORassign = 365,
+     ATassign = 366,
+     THEN = 367
+   };
 #endif
 /* Tokens.  */
@@ -350,10 +348,13 @@
 #define THEN 367
 
-/* Value type.  */
+
+
+
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE YYSTYPE;
-union YYSTYPE
+typedef union YYSTYPE
 {
-#line 120 "parser.yy" /* yacc.c:355  */
+
+/* Line 293 of yacc.c  */
+#line 120 "parser.yy"
 
 	Token tok;
@@ -372,20 +373,20 @@
 	bool flag;
 
-#line 375 "Parser/parser.cc" /* yacc.c:355  */
-};
+
+
+/* Line 293 of yacc.c  */
+#line 379 "Parser/parser.cc"
+} YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
 
-extern YYSTYPE yylval;
-
-int yyparse (void);
-
-#endif /* !YY_YY_Y_TAB_H_INCLUDED  */
-
 /* Copy the second part of user declarations.  */
 
-#line 390 "Parser/parser.cc" /* yacc.c:358  */
+
+/* Line 343 of yacc.c  */
+#line 391 "Parser/parser.cc"
 
 #ifdef short
@@ -401,6 +402,9 @@
 #ifdef YYTYPE_INT8
 typedef YYTYPE_INT8 yytype_int8;
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+typedef signed char yytype_int8;
 #else
-typedef signed char yytype_int8;
+typedef short int yytype_int8;
 #endif
 
@@ -422,5 +426,6 @@
 # elif defined size_t
 #  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
@@ -436,65 +441,36 @@
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
 #  endif
 # endif
 # ifndef YY_
-#  define YY_(Msgid) Msgid
+#  define YY_(msgid) msgid
 # endif
 #endif
 
-#ifndef YY_ATTRIBUTE
-# if (defined __GNUC__                                               \
-      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
-     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
-#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
-# else
-#  define YY_ATTRIBUTE(Spec) /* empty */
-# endif
-#endif
-
-#ifndef YY_ATTRIBUTE_PURE
-# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
-#endif
-
-#ifndef YY_ATTRIBUTE_UNUSED
-# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
-#endif
-
-#if !defined _Noreturn \
-     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
-# if defined _MSC_VER && 1200 <= _MSC_VER
-#  define _Noreturn __declspec (noreturn)
-# else
-#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
-# endif
-#endif
-
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
+# define YYUSE(e) ((void) (e))
 #else
-# define YYUSE(E) /* empty */
+# define YYUSE(e) /* empty */
 #endif
 
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
-/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
-    _Pragma ("GCC diagnostic push") \
-    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
-    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
-    _Pragma ("GCC diagnostic pop")
+/* Identity function, used to suppress warnings about constant conditions.  */
+#ifndef lint
+# define YYID(n) (n)
 #else
-# define YY_INITIAL_VALUE(Value) Value
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int yyi)
+#else
+static int
+YYID (yyi)
+    int yyi;
 #endif
-#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+{
+  return yyi;
+}
 #endif
-#ifndef YY_INITIAL_VALUE
-# define YY_INITIAL_VALUE(Value) /* Nothing. */
-#endif
-
 
 #if ! defined yyoverflow || YYERROR_VERBOSE
@@ -515,7 +491,7 @@
 #   else
 #    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
+#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
 #     ifndef EXIT_SUCCESS
 #      define EXIT_SUCCESS 0
@@ -527,6 +503,6 @@
 
 # ifdef YYSTACK_ALLOC
-   /* Pacify GCC's 'empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+   /* Pacify GCC's `empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
 #  ifndef YYSTACK_ALLOC_MAXIMUM
     /* The OS might guarantee only one guard page at the bottom of the stack,
@@ -544,5 +520,5 @@
 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
        && ! ((defined YYMALLOC || defined malloc) \
-             && (defined YYFREE || defined free)))
+	     && (defined YYFREE || defined free)))
 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
 #   ifndef EXIT_SUCCESS
@@ -552,5 +528,6 @@
 #  ifndef YYMALLOC
 #   define YYMALLOC malloc
-#   if ! defined malloc && ! defined EXIT_SUCCESS
+#   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 #   endif
@@ -558,5 +535,6 @@
 #  ifndef YYFREE
 #   define YYFREE free
-#   if ! defined free && ! defined EXIT_SUCCESS
+#   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 void free (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
@@ -568,5 +546,5 @@
 #if (! defined yyoverflow \
      && (! defined __cplusplus \
-         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
 
 /* A type that is properly aligned for any stack member.  */
@@ -593,33 +571,33 @@
    stack.  Advance YYPTR to a properly aligned location for the next
    stack.  */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
-    do                                                                  \
-      {                                                                 \
-        YYSIZE_T yynewbytes;                                            \
-        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
-        Stack = &yyptr->Stack_alloc;                                    \
-        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-        yyptr += yynewbytes / sizeof (*yyptr);                          \
-      }                                                                 \
-    while (0)
+# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
+    do									\
+      {									\
+	YYSIZE_T yynewbytes;						\
+	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
+	Stack = &yyptr->Stack_alloc;					\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+	yyptr += yynewbytes / sizeof (*yyptr);				\
+      }									\
+    while (YYID (0))
 
 #endif
 
 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
-/* Copy COUNT objects from SRC to DST.  The source and destination do
+/* Copy COUNT objects from FROM to TO.  The source and destination do
    not overlap.  */
 # ifndef YYCOPY
 #  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(Dst, Src, Count) \
-      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
 #  else
-#   define YYCOPY(Dst, Src, Count)              \
-      do                                        \
-        {                                       \
-          YYSIZE_T yyi;                         \
-          for (yyi = 0; yyi < (Count); yyi++)   \
-            (Dst)[yyi] = (Src)[yyi];            \
-        }                                       \
-      while (0)
+#   define YYCOPY(To, From, Count)		\
+      do					\
+	{					\
+	  YYSIZE_T yyi;				\
+	  for (yyi = 0; yyi < (Count); yyi++)	\
+	    (To)[yyi] = (From)[yyi];		\
+	}					\
+      while (YYID (0))
 #  endif
 # endif
@@ -637,17 +615,15 @@
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  757
-/* YYNSTATES -- Number of states.  */
+/* YYNRULES -- Number of states.  */
 #define YYNSTATES  1540
 
-/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
-   by yylex, with out-of-bounds checking.  */
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
 #define YYMAXUTOK   367
 
-#define YYTRANSLATE(YYX)                                                \
+#define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
-/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
-   as returned by yylex, without out-of-bounds checking.  */
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
 static const yytype_uint8 yytranslate[] =
 {
@@ -692,87 +668,446 @@
 
 #if YYDEBUG
-  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const yytype_uint16 yyprhs[] =
+{
+       0,     0,     3,     4,     5,     7,     9,    11,    13,    15,
+      17,    19,    21,    23,    25,    27,    29,    31,    33,    35,
+      37,    40,    42,    44,    46,    50,    54,    56,    63,    68,
+      72,    80,    83,    87,    95,    98,   101,   109,   114,   116,
+     120,   121,   123,   125,   129,   131,   134,   141,   145,   153,
+     157,   165,   168,   171,   174,   175,   178,   180,   182,   184,
+     187,   190,   193,   196,   199,   202,   207,   210,   215,   222,
+     224,   229,   234,   236,   238,   240,   242,   244,   246,   248,
+     253,   255,   259,   263,   267,   269,   273,   277,   279,   283,
+     287,   289,   293,   297,   301,   305,   307,   311,   315,   317,
+     321,   323,   327,   329,   333,   335,   339,   341,   345,   347,
+     353,   358,   360,   362,   366,   367,   369,   371,   373,   375,
+     377,   379,   381,   383,   385,   387,   389,   391,   393,   400,
+     408,   410,   414,   416,   420,   421,   423,   425,   427,   429,
+     431,   433,   435,   437,   439,   446,   451,   454,   462,   464,
+     468,   470,   473,   475,   478,   480,   483,   486,   492,   500,
+     506,   516,   522,   532,   534,   538,   540,   542,   546,   550,
+     553,   555,   558,   561,   562,   564,   567,   571,   572,   574,
+     577,   581,   585,   590,   591,   593,   595,   598,   604,   612,
+     619,   626,   631,   635,   640,   643,   647,   650,   654,   658,
+     662,   666,   672,   676,   680,   685,   687,   693,   700,   706,
+     713,   723,   734,   744,   755,   758,   760,   763,   766,   769,
+     771,   778,   787,   798,   811,   826,   827,   829,   830,   832,
+     834,   838,   843,   851,   852,   854,   858,   860,   864,   866,
+     868,   870,   874,   876,   878,   880,   884,   885,   887,   891,
+     896,   898,   902,   904,   906,   910,   914,   918,   922,   926,
+     929,   933,   940,   944,   948,   953,   955,   958,   961,   965,
+     971,   979,   987,   993,  1003,  1006,  1009,  1015,  1019,  1025,
+    1030,  1034,  1039,  1044,  1052,  1056,  1060,  1064,  1068,  1073,
+    1080,  1082,  1084,  1086,  1088,  1090,  1092,  1094,  1096,  1097,
+    1099,  1101,  1104,  1106,  1108,  1110,  1112,  1114,  1116,  1118,
+    1119,  1125,  1127,  1130,  1134,  1136,  1139,  1141,  1143,  1145,
+    1147,  1149,  1151,  1153,  1155,  1157,  1159,  1161,  1163,  1165,
+    1167,  1169,  1171,  1173,  1175,  1177,  1179,  1181,  1183,  1185,
+    1187,  1190,  1193,  1197,  1201,  1203,  1207,  1209,  1212,  1215,
+    1218,  1223,  1228,  1233,  1238,  1240,  1243,  1246,  1250,  1252,
+    1255,  1258,  1260,  1263,  1266,  1270,  1272,  1275,  1278,  1280,
+    1282,  1287,  1290,  1291,  1298,  1306,  1309,  1312,  1315,  1316,
+    1319,  1322,  1326,  1329,  1333,  1335,  1338,  1342,  1345,  1348,
+    1353,  1354,  1356,  1359,  1362,  1364,  1365,  1367,  1370,  1373,
+    1379,  1382,  1383,  1391,  1394,  1399,  1400,  1403,  1404,  1406,
+    1408,  1410,  1416,  1422,  1428,  1430,  1436,  1442,  1452,  1454,
+    1460,  1461,  1463,  1465,  1471,  1473,  1475,  1481,  1487,  1489,
+    1493,  1497,  1502,  1504,  1506,  1508,  1510,  1513,  1515,  1519,
+    1523,  1525,  1528,  1530,  1534,  1536,  1538,  1540,  1542,  1544,
+    1546,  1548,  1550,  1552,  1554,  1556,  1559,  1561,  1563,  1565,
+    1568,  1569,  1572,  1575,  1577,  1582,  1583,  1585,  1588,  1592,
+    1597,  1600,  1603,  1605,  1608,  1611,  1617,  1623,  1631,  1638,
+    1640,  1643,  1646,  1650,  1652,  1655,  1658,  1663,  1666,  1671,
+    1672,  1677,  1680,  1682,  1684,  1686,  1687,  1690,  1696,  1702,
+    1716,  1718,  1720,  1724,  1728,  1731,  1735,  1739,  1742,  1747,
+    1749,  1756,  1766,  1767,  1779,  1781,  1785,  1789,  1793,  1795,
+    1797,  1803,  1806,  1812,  1813,  1815,  1817,  1821,  1822,  1824,
+    1826,  1828,  1830,  1831,  1838,  1841,  1843,  1846,  1851,  1854,
+    1858,  1862,  1866,  1871,  1877,  1883,  1889,  1896,  1898,  1900,
+    1902,  1906,  1907,  1913,  1914,  1916,  1918,  1921,  1928,  1930,
+    1934,  1935,  1937,  1942,  1944,  1946,  1948,  1950,  1953,  1955,
+    1958,  1961,  1963,  1967,  1970,  1974,  1978,  1981,  1986,  1991,
+    1995,  2004,  2008,  2011,  2013,  2016,  2023,  2032,  2036,  2039,
+    2043,  2047,  2052,  2057,  2061,  2063,  2065,  2067,  2072,  2079,
+    2083,  2086,  2090,  2094,  2099,  2104,  2108,  2111,  2113,  2116,
+    2119,  2121,  2125,  2128,  2132,  2136,  2139,  2144,  2149,  2153,
+    2160,  2169,  2173,  2176,  2178,  2181,  2184,  2187,  2191,  2195,
+    2198,  2203,  2208,  2212,  2219,  2228,  2232,  2235,  2237,  2240,
+    2243,  2245,  2247,  2250,  2254,  2258,  2261,  2266,  2273,  2282,
+    2284,  2287,  2290,  2292,  2295,  2298,  2302,  2306,  2308,  2313,
+    2318,  2322,  2328,  2337,  2341,  2344,  2348,  2350,  2356,  2362,
+    2369,  2376,  2378,  2381,  2384,  2386,  2389,  2392,  2396,  2400,
+    2402,  2407,  2412,  2416,  2422,  2431,  2435,  2437,  2440,  2442,
+    2445,  2452,  2458,  2465,  2473,  2481,  2483,  2486,  2489,  2491,
+    2494,  2497,  2501,  2505,  2507,  2512,  2517,  2521,  2530,  2534,
+    2536,  2538,  2541,  2543,  2545,  2548,  2552,  2555,  2559,  2562,
+    2566,  2570,  2573,  2578,  2582,  2585,  2589,  2592,  2597,  2601,
+    2604,  2611,  2618,  2625,  2633,  2635,  2638,  2640,  2642,  2644,
+    2647,  2651,  2654,  2658,  2661,  2665,  2669,  2674,  2677,  2681,
+    2686,  2689,  2695,  2702,  2709,  2710,  2712,  2713
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
+static const yytype_int16 yyrhs[] =
+{
+     308,     0,    -1,    -1,    -1,    81,    -1,    84,    -1,    85,
+      -1,    86,    -1,    82,    -1,    74,    -1,    78,    -1,   144,
+      -1,    74,    -1,    78,    -1,    74,    -1,   144,    -1,    87,
+      -1,    88,    -1,   146,    -1,    83,    -1,   146,    83,    -1,
+      74,    -1,   144,    -1,   174,    -1,   113,   176,   114,    -1,
+     113,   180,   114,    -1,   147,    -1,   148,   115,   138,   171,
+     139,   116,    -1,   148,   113,   149,   114,    -1,   148,   117,
+     143,    -1,   148,   117,   115,   138,   151,   139,   116,    -1,
+     148,    85,    -1,   148,    89,   143,    -1,   148,    89,   115,
+     138,   151,   139,   116,    -1,   148,    90,    -1,   148,    91,
+      -1,   113,   281,   114,   118,   285,   378,   119,    -1,   148,
+     118,   149,   119,    -1,   150,    -1,   149,   120,   150,    -1,
+      -1,   171,    -1,   152,    -1,   151,   120,   152,    -1,   153,
+      -1,    84,   152,    -1,    84,   115,   138,   151,   139,   116,
+      -1,   153,   117,   152,    -1,   153,   117,   115,   138,   151,
+     139,   116,    -1,   153,    89,   152,    -1,   153,    89,   115,
+     138,   151,   139,   116,    -1,    81,   154,    -1,    86,   154,
+      -1,   143,   154,    -1,    -1,   154,    85,    -1,   148,    -1,
+     140,    -1,   145,    -1,    42,   158,    -1,   156,   158,    -1,
+     157,   158,    -1,    90,   155,    -1,    91,   155,    -1,    39,
+     155,    -1,    39,   113,   281,   114,    -1,    68,   155,    -1,
+      68,   113,   281,   114,    -1,    40,   113,   281,   120,   143,
+     114,    -1,    78,    -1,    78,   113,   150,   114,    -1,    78,
+     113,   282,   114,    -1,   121,    -1,   122,    -1,   123,    -1,
+     124,    -1,   125,    -1,   126,    -1,   155,    -1,   113,   281,
+     114,   158,    -1,   158,    -1,   159,   121,   158,    -1,   159,
+     127,   158,    -1,   159,   128,   158,    -1,   159,    -1,   160,
+     123,   159,    -1,   160,   124,   159,    -1,   160,    -1,   161,
+      92,   160,    -1,   161,    93,   160,    -1,   161,    -1,   162,
+     129,   161,    -1,   162,   130,   161,    -1,   162,    94,   161,
+      -1,   162,    95,   161,    -1,   162,    -1,   163,    96,   162,
+      -1,   163,    97,   162,    -1,   163,    -1,   164,   122,   163,
+      -1,   164,    -1,   165,   131,   164,    -1,   165,    -1,   166,
+     132,   165,    -1,   166,    -1,   167,    98,   166,    -1,   167,
+      -1,   168,    99,   167,    -1,   168,    -1,   168,   133,   176,
+     134,   169,    -1,   168,   133,   134,   169,    -1,   169,    -1,
+     169,    -1,   155,   173,   171,    -1,    -1,   171,    -1,   135,
+      -1,   111,    -1,   101,    -1,   102,    -1,   103,    -1,   104,
+      -1,   105,    -1,   106,    -1,   107,    -1,   108,    -1,   109,
+      -1,   110,    -1,   115,   138,   120,   175,   139,   116,    -1,
+     115,   138,   171,   120,   175,   139,   116,    -1,   172,    -1,
+     175,   120,   172,    -1,   171,    -1,   176,   120,   171,    -1,
+      -1,   176,    -1,   179,    -1,   180,    -1,   184,    -1,   185,
+      -1,   197,    -1,   199,    -1,   200,    -1,   205,    -1,   131,
+     148,   118,   149,   119,   136,    -1,    74,   134,   318,   178,
+      -1,   118,   119,    -1,   118,   138,   138,   216,   181,   139,
+     119,    -1,   182,    -1,   181,   138,   182,    -1,   219,    -1,
+      42,   219,    -1,   314,    -1,   178,   139,    -1,   178,    -1,
+     183,   178,    -1,   177,   136,    -1,    43,   113,   176,   114,
+     178,    -1,    43,   113,   176,   114,   178,    44,   178,    -1,
+      45,   113,   176,   114,   190,    -1,    45,   113,   176,   114,
+     118,   138,   212,   191,   119,    -1,    55,   113,   176,   114,
+     190,    -1,    55,   113,   176,   114,   118,   138,   212,   193,
+     119,    -1,   170,    -1,   170,   100,   170,    -1,   316,    -1,
+     186,    -1,   187,   120,   186,    -1,    46,   187,   134,    -1,
+      47,   134,    -1,   188,    -1,   189,   188,    -1,   189,   178,
+      -1,    -1,   192,    -1,   189,   183,    -1,   192,   189,   183,
+      -1,    -1,   194,    -1,   189,   196,    -1,   189,   183,   195,
+      -1,   194,   189,   196,    -1,   194,   189,   183,   195,    -1,
+      -1,   196,    -1,    58,    -1,    58,   136,    -1,    49,   113,
+     176,   114,   178,    -1,    48,   178,    49,   113,   176,   114,
+     136,    -1,    50,   113,   138,   198,   114,   178,    -1,   177,
+     139,   136,   177,   136,   177,    -1,   219,   177,   136,   177,
+      -1,    53,    74,   136,    -1,    53,   121,   176,   136,    -1,
+      52,   136,    -1,    52,    74,   136,    -1,    51,   136,    -1,
+      51,    74,   136,    -1,    54,   177,   136,    -1,    63,   172,
+     136,    -1,    64,   172,   136,    -1,    64,   172,    65,   171,
+     136,    -1,    59,   180,   201,    -1,    59,   180,   203,    -1,
+      59,   180,   201,   203,    -1,   202,    -1,    60,   113,   100,
+     114,   180,    -1,   202,    60,   113,   100,   114,   180,    -1,
+      61,   113,   100,   114,   180,    -1,   202,    61,   113,   100,
+     114,   180,    -1,    60,   113,   138,   138,   204,   139,   114,
+     180,   139,    -1,   202,    60,   113,   138,   138,   204,   139,
+     114,   180,   139,    -1,    61,   113,   138,   138,   204,   139,
+     114,   180,   139,    -1,   202,    61,   113,   138,   138,   204,
+     139,   114,   180,   139,    -1,    62,   180,    -1,   232,    -1,
+     232,   315,    -1,   232,   363,    -1,   372,   143,    -1,   372,
+      -1,    66,   206,   113,   145,   114,   136,    -1,    66,   206,
+     113,   145,   134,   207,   114,   136,    -1,    66,   206,   113,
+     145,   134,   207,   134,   207,   114,   136,    -1,    66,   206,
+     113,   145,   134,   207,   134,   207,   134,   210,   114,   136,
+      -1,    66,   206,    53,   113,   145,   134,   134,   207,   134,
+     210,   134,   211,   114,   136,    -1,    -1,    11,    -1,    -1,
+     208,    -1,   209,    -1,   208,   120,   209,    -1,   145,   113,
+     170,   114,    -1,   115,   170,   116,   145,   113,   170,   114,
+      -1,    -1,   145,    -1,   210,   120,   145,    -1,   143,    -1,
+     211,   120,   143,    -1,   139,    -1,   213,    -1,   219,    -1,
+     213,   138,   219,    -1,   139,    -1,   215,    -1,   229,    -1,
+     215,   138,   229,    -1,    -1,   217,    -1,    31,   218,   136,
+      -1,   217,    31,   218,   136,    -1,   280,    -1,   218,   120,
+     280,    -1,   220,    -1,   229,    -1,   221,   139,   136,    -1,
+     226,   139,   136,    -1,   223,   139,   136,    -1,   299,   139,
+     136,    -1,   302,   139,   136,    -1,   222,   283,    -1,   238,
+     222,   283,    -1,   221,   139,   120,   138,   278,   283,    -1,
+     373,   278,   317,    -1,   376,   278,   317,    -1,   234,   376,
+     278,   317,    -1,   224,    -1,   234,   224,    -1,   238,   224,
+      -1,   238,   234,   224,    -1,   223,   139,   120,   138,   278,
+      -1,   376,   278,   113,   138,   266,   139,   114,    -1,   225,
+     278,   113,   138,   266,   139,   114,    -1,   115,   138,   268,
+     139,   116,    -1,   115,   138,   268,   139,   120,   138,   269,
+     139,   116,    -1,     3,   222,    -1,     3,   224,    -1,   226,
+     139,   120,   138,   143,    -1,     3,   232,   315,    -1,   227,
+     139,   120,   138,   315,    -1,   234,     3,   232,   315,    -1,
+     232,     3,   315,    -1,   232,     3,   234,   315,    -1,     3,
+     143,   135,   171,    -1,   228,   139,   120,   138,   143,   135,
+     171,    -1,   230,   139,   136,    -1,   227,   139,   136,    -1,
+     228,   139,   136,    -1,   246,   139,   136,    -1,   231,   315,
+     317,   283,    -1,   230,   120,   318,   315,   317,   283,    -1,
+     242,    -1,   246,    -1,   248,    -1,   289,    -1,   243,    -1,
+     247,    -1,   249,    -1,   290,    -1,    -1,   234,    -1,   235,
+      -1,   234,   235,    -1,   236,    -1,   320,    -1,    10,    -1,
+      12,    -1,    11,    -1,    14,    -1,    69,    -1,    -1,    13,
+     113,   237,   292,   114,    -1,   239,    -1,   234,   239,    -1,
+     238,   234,   239,    -1,   240,    -1,   239,   240,    -1,     5,
+      -1,     7,    -1,     4,    -1,     6,    -1,     8,    -1,     9,
+      -1,    71,    -1,    73,    -1,    16,    -1,    21,    -1,    20,
+      -1,    18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,
+      -1,    15,    -1,    27,    -1,    28,    -1,    29,    -1,    26,
+      -1,    24,    -1,    25,    -1,   243,    -1,   238,   243,    -1,
+     242,   240,    -1,   242,   240,   234,    -1,   242,   240,   243,
+      -1,   244,    -1,   233,   245,   233,    -1,   241,    -1,   234,
+     241,    -1,   244,   235,    -1,   244,   241,    -1,    30,   113,
+     282,   114,    -1,    30,   113,   176,   114,    -1,    80,   113,
+     282,   114,    -1,    80,   113,   176,   114,    -1,   247,    -1,
+     238,   247,    -1,   246,   240,    -1,   246,   240,   234,    -1,
+     250,    -1,   234,   250,    -1,   247,   235,    -1,   249,    -1,
+     238,   249,    -1,   248,   240,    -1,   248,   240,   234,    -1,
+      76,    -1,   234,    76,    -1,   249,   235,    -1,   251,    -1,
+     262,    -1,   253,   118,   254,   119,    -1,   253,   280,    -1,
+      -1,   253,   280,   252,   118,   254,   119,    -1,   253,   113,
+     298,   114,   118,   254,   119,    -1,   253,   291,    -1,    33,
+     318,    -1,    34,   318,    -1,    -1,   254,   255,    -1,   256,
+     136,    -1,    42,   256,   136,    -1,   257,   136,    -1,    42,
+     257,   136,    -1,   372,    -1,   372,   280,    -1,   256,   120,
+     280,    -1,   256,   120,    -1,   232,   258,    -1,   257,   120,
+     318,   258,    -1,    -1,   260,    -1,   324,   259,    -1,   337,
+     259,    -1,   363,    -1,    -1,   260,    -1,   134,   170,    -1,
+      32,   318,    -1,   261,   118,   264,   378,   119,    -1,   261,
+     280,    -1,    -1,   261,   280,   263,   118,   264,   378,   119,
+      -1,   280,   265,    -1,   264,   120,   280,   265,    -1,    -1,
+     135,   170,    -1,    -1,   267,    -1,   269,    -1,   268,    -1,
+     268,   139,   120,   138,   269,    -1,   269,   139,   120,   138,
+     100,    -1,   268,   139,   120,   138,   100,    -1,   273,    -1,
+     269,   139,   120,   138,   273,    -1,   268,   139,   120,   138,
+     273,    -1,   268,   139,   120,   138,   269,   139,   120,   138,
+     273,    -1,   274,    -1,   269,   139,   120,   138,   274,    -1,
+      -1,   271,    -1,   272,    -1,   272,   139,   120,   138,   100,
+      -1,   276,    -1,   275,    -1,   272,   139,   120,   138,   276,
+      -1,   272,   139,   120,   138,   275,    -1,   275,    -1,   368,
+     278,   379,    -1,   376,   278,   379,    -1,   234,   376,   278,
+     379,    -1,   224,    -1,   276,    -1,   368,    -1,   376,    -1,
+     234,   376,    -1,   377,    -1,   231,   342,   379,    -1,   231,
+     346,   379,    -1,   231,    -1,   231,   357,    -1,   143,    -1,
+     277,   120,   143,    -1,   141,    -1,    76,    -1,    77,    -1,
+     142,    -1,    76,    -1,    77,    -1,   143,    -1,    76,    -1,
+      77,    -1,   372,    -1,   232,    -1,   232,   363,    -1,   372,
+      -1,   377,    -1,   232,    -1,   232,   351,    -1,    -1,   135,
+     284,    -1,   111,   284,    -1,   171,    -1,   118,   285,   378,
+     119,    -1,    -1,   284,    -1,   286,   284,    -1,   285,   120,
+     284,    -1,   285,   120,   286,   284,    -1,   287,   134,    -1,
+     280,   134,    -1,   288,    -1,   287,   288,    -1,   117,   280,
+      -1,   115,   138,   171,   139,   116,    -1,   115,   138,   316,
+     139,   116,    -1,   115,   138,   170,   100,   170,   139,   116,
+      -1,   117,   115,   138,   151,   139,   116,    -1,   290,    -1,
+     238,   290,    -1,   289,   240,    -1,   289,   240,   234,    -1,
+     291,    -1,   234,   291,    -1,   290,   235,    -1,    77,   113,
+     298,   114,    -1,   293,   379,    -1,   292,   120,   293,   379,
+      -1,    -1,   295,   280,   294,   296,    -1,   232,   342,    -1,
+      35,    -1,    37,    -1,    36,    -1,    -1,   296,   297,    -1,
+     132,   280,   113,   298,   114,    -1,   132,   118,   138,   304,
+     119,    -1,   132,   113,   138,   292,   139,   114,   118,   138,
+     304,   119,   113,   298,   114,    -1,   282,    -1,   171,    -1,
+     298,   120,   282,    -1,   298,   120,   171,    -1,    35,   300,
+      -1,   239,    35,   300,    -1,   299,   120,   300,    -1,   301,
+     296,    -1,   301,   296,   135,   282,    -1,   280,    -1,   279,
+     113,   138,   292,   139,   114,    -1,    38,   280,   113,   138,
+     292,   139,   114,   118,   119,    -1,    -1,    38,   280,   113,
+     138,   292,   139,   114,   118,   303,   304,   119,    -1,   305,
+      -1,   304,   138,   305,    -1,   306,   139,   136,    -1,   307,
+     139,   136,    -1,   222,    -1,   224,    -1,   306,   139,   120,
+     138,   278,    -1,   232,   315,    -1,   307,   139,   120,   138,
+     315,    -1,    -1,   309,    -1,   311,    -1,   309,   138,   311,
+      -1,    -1,   309,    -1,   219,    -1,   313,    -1,   205,    -1,
+      -1,     5,    83,   312,   118,   310,   119,    -1,    42,   311,
+      -1,   314,    -1,   329,   180,    -1,   333,   138,   214,   180,
+      -1,   223,   180,    -1,   231,   329,   180,    -1,   234,   329,
+     180,    -1,   238,   329,   180,    -1,   238,   234,   329,   180,
+      -1,   231,   333,   138,   214,   180,    -1,   234,   333,   138,
+     214,   180,    -1,   238,   333,   138,   214,   180,    -1,   238,
+     234,   333,   138,   214,   180,    -1,   324,    -1,   337,    -1,
+     329,    -1,   170,   126,   170,    -1,    -1,    66,   113,   145,
+     114,   318,    -1,    -1,   319,    -1,   320,    -1,   319,   320,
+      -1,    41,   113,   113,   321,   114,   114,    -1,   322,    -1,
+     321,   120,   322,    -1,    -1,   323,    -1,   323,   113,   177,
+     114,    -1,   278,    -1,   240,    -1,   241,    -1,   235,    -1,
+     325,   318,    -1,   326,    -1,   327,   318,    -1,   328,   318,
+      -1,   141,    -1,   113,   325,   114,    -1,   156,   324,    -1,
+     156,   234,   324,    -1,   113,   326,   114,    -1,   325,   355,
+      -1,   113,   326,   114,   355,    -1,   113,   327,   114,   356,
+      -1,   113,   327,   114,    -1,   113,   326,   114,   113,   138,
+     270,   139,   114,    -1,   113,   328,   114,    -1,   330,   318,
+      -1,   331,    -1,   332,   318,    -1,   325,   113,   138,   270,
+     139,   114,    -1,   113,   331,   114,   113,   138,   270,   139,
+     114,    -1,   113,   330,   114,    -1,   156,   329,    -1,   156,
+     234,   329,    -1,   113,   331,   114,    -1,   113,   331,   114,
+     355,    -1,   113,   332,   114,   356,    -1,   113,   332,   114,
+      -1,   334,    -1,   335,    -1,   336,    -1,   325,   113,   277,
+     114,    -1,   113,   335,   114,   113,   277,   114,    -1,   113,
+     334,   114,    -1,   156,   333,    -1,   156,   234,   333,    -1,
+     113,   335,   114,    -1,   113,   335,   114,   355,    -1,   113,
+     336,   114,   356,    -1,   113,   336,   114,    -1,   338,   318,
+      -1,   339,    -1,   340,   318,    -1,   341,   318,    -1,   347,
+      -1,   113,   338,   114,    -1,   156,   337,    -1,   156,   234,
+     337,    -1,   113,   339,   114,    -1,   338,   355,    -1,   113,
+     339,   114,   355,    -1,   113,   340,   114,   356,    -1,   113,
+     340,   114,    -1,   338,   113,   138,   270,   139,   114,    -1,
+     113,   339,   114,   113,   138,   270,   139,   114,    -1,   113,
+     341,   114,    -1,   325,   318,    -1,   343,    -1,   344,   318,
+      -1,   345,   318,    -1,   156,   342,    -1,   156,   234,   342,
+      -1,   113,   343,   114,    -1,   325,   361,    -1,   113,   343,
+     114,   355,    -1,   113,   344,   114,   356,    -1,   113,   344,
+     114,    -1,   325,   113,   138,   270,   139,   114,    -1,   113,
+     343,   114,   113,   138,   270,   139,   114,    -1,   113,   345,
+     114,    -1,   347,   318,    -1,   348,    -1,   349,   318,    -1,
+     350,   318,    -1,    76,    -1,    77,    -1,   156,   346,    -1,
+     156,   234,   346,    -1,   113,   348,   114,    -1,   347,   361,
+      -1,   113,   348,   114,   361,    -1,   347,   113,   138,   270,
+     139,   114,    -1,   113,   348,   114,   113,   138,   270,   139,
+     114,    -1,   352,    -1,   353,   318,    -1,   354,   318,    -1,
+     156,    -1,   156,   234,    -1,   156,   351,    -1,   156,   234,
+     351,    -1,   113,   352,   114,    -1,   355,    -1,   113,   352,
+     114,   355,    -1,   113,   353,   114,   356,    -1,   113,   353,
+     114,    -1,   113,   138,   270,   139,   114,    -1,   113,   352,
+     114,   113,   138,   270,   139,   114,    -1,   113,   354,   114,
+      -1,   115,   116,    -1,   115,   116,   356,    -1,   356,    -1,
+     115,   138,   171,   139,   116,    -1,   115,   138,   121,   139,
+     116,    -1,   356,   115,   138,   171,   139,   116,    -1,   356,
+     115,   138,   121,   139,   116,    -1,   358,    -1,   359,   318,
+      -1,   360,   318,    -1,   156,    -1,   156,   234,    -1,   156,
+     357,    -1,   156,   234,   357,    -1,   113,   358,   114,    -1,
+     361,    -1,   113,   358,   114,   361,    -1,   113,   359,   114,
+     356,    -1,   113,   359,   114,    -1,   113,   138,   270,   139,
+     114,    -1,   113,   358,   114,   113,   138,   270,   139,   114,
+      -1,   113,   360,   114,    -1,   362,    -1,   362,   356,    -1,
+     356,    -1,   115,   116,    -1,   115,   138,   234,   121,   139,
+     116,    -1,   115,   138,   234,   139,   116,    -1,   115,   138,
+     234,   171,   139,   116,    -1,   115,   138,     7,   233,   171,
+     139,   116,    -1,   115,   138,   234,     7,   171,   139,   116,
+      -1,   364,    -1,   365,   318,    -1,   366,   318,    -1,   156,
+      -1,   156,   234,    -1,   156,   363,    -1,   156,   234,   363,
+      -1,   113,   364,   114,    -1,   355,    -1,   113,   364,   114,
+     355,    -1,   113,   365,   114,   356,    -1,   113,   365,   114,
+      -1,   113,   364,   114,   113,   138,   270,   139,   114,    -1,
+     113,   366,   114,    -1,   368,    -1,   376,    -1,   234,   376,
+      -1,   369,    -1,   370,    -1,   156,   232,    -1,   234,   156,
+     232,    -1,   156,   377,    -1,   234,   156,   377,    -1,   156,
+     367,    -1,   234,   156,   367,    -1,   115,   116,   232,    -1,
+     371,   232,    -1,   115,   116,   356,   232,    -1,   371,   356,
+     232,    -1,   356,   232,    -1,   115,   116,   369,    -1,   371,
+     369,    -1,   115,   116,   356,   369,    -1,   371,   356,   369,
+      -1,   356,   369,    -1,   115,   138,   234,   121,   139,   116,
+      -1,   115,   138,   234,   171,   139,   116,    -1,   115,   138,
+     238,   171,   139,   116,    -1,   115,   138,   238,   234,   171,
+     139,   116,    -1,   376,    -1,   234,   376,    -1,   373,    -1,
+     374,    -1,   375,    -1,   156,   232,    -1,   234,   156,   232,
+      -1,   156,   377,    -1,   234,   156,   377,    -1,   156,   372,
+      -1,   234,   156,   372,    -1,   115,   116,   232,    -1,   115,
+     116,   356,   232,    -1,   356,   232,    -1,   115,   116,   374,
+      -1,   115,   116,   356,   374,    -1,   356,   374,    -1,   115,
+     138,   269,   139,   116,    -1,   376,   113,   138,   266,   139,
+     114,    -1,   225,   113,   138,   266,   139,   114,    -1,    -1,
+     120,    -1,    -1,   135,   171,    -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   305,   305,   309,   316,   317,   318,   319,   320,   324,
-     325,   326,   330,   331,   335,   336,   340,   341,   345,   349,
-     350,   361,   363,   365,   366,   368,   373,   374,   380,   382,
-     384,   386,   388,   390,   392,   394,   396,   398,   407,   408,
-     414,   415,   419,   420,   424,   425,   427,   429,   431,   433,
-     435,   440,   442,   444,   456,   457,   465,   468,   470,   472,
-     477,   490,   492,   494,   496,   498,   500,   502,   504,   506,
-     508,   510,   517,   518,   524,   525,   526,   527,   531,   532,
-     539,   540,   542,   544,   549,   550,   552,   557,   558,   560,
-     565,   566,   568,   570,   572,   577,   578,   580,   585,   586,
-     591,   592,   597,   598,   603,   604,   609,   610,   615,   616,
-     619,   626,   631,   632,   640,   641,   645,   646,   647,   648,
-     649,   650,   651,   652,   653,   654,   655,   656,   666,   668,
-     673,   674,   679,   680,   686,   687,   693,   694,   695,   696,
-     697,   698,   699,   700,   701,   711,   718,   720,   730,   731,
-     736,   738,   744,   746,   750,   751,   756,   761,   764,   766,
-     768,   778,   780,   791,   792,   794,   798,   800,   804,   805,
-     810,   811,   815,   820,   821,   825,   827,   833,   834,   838,
-     840,   842,   844,   850,   851,   855,   857,   862,   864,   866,
-     871,   873,   878,   880,   884,   887,   891,   894,   898,   900,
-     902,   904,   909,   911,   913,   918,   920,   922,   924,   926,
-     931,   933,   935,   937,   942,   954,   955,   960,   962,   967,
-     971,   973,   975,   977,   979,   985,   986,   992,   993,   997,
-     998,  1003,  1005,  1011,  1012,  1014,  1019,  1024,  1034,  1036,
-    1040,  1041,  1046,  1048,  1052,  1053,  1057,  1059,  1063,  1064,
-    1068,  1069,  1073,  1074,  1089,  1090,  1091,  1092,  1093,  1097,
-    1102,  1109,  1119,  1124,  1129,  1137,  1142,  1147,  1152,  1157,
-    1187,  1192,  1199,  1201,  1208,  1213,  1218,  1229,  1234,  1239,
-    1244,  1249,  1258,  1263,  1271,  1272,  1273,  1274,  1280,  1285,
-    1293,  1294,  1295,  1296,  1300,  1301,  1302,  1303,  1308,  1309,
-    1318,  1319,  1324,  1325,  1330,  1332,  1334,  1336,  1338,  1341,
-    1340,  1352,  1353,  1355,  1365,  1366,  1371,  1373,  1375,  1377,
-    1379,  1382,  1384,  1387,  1392,  1394,  1396,  1398,  1400,  1402,
-    1404,  1406,  1408,  1410,  1412,  1414,  1416,  1418,  1420,  1426,
-    1427,  1429,  1431,  1433,  1438,  1439,  1445,  1446,  1448,  1450,
-    1455,  1457,  1459,  1461,  1466,  1467,  1469,  1471,  1476,  1477,
-    1479,  1484,  1485,  1487,  1489,  1494,  1496,  1498,  1503,  1504,
-    1508,  1510,  1516,  1515,  1519,  1521,  1526,  1528,  1534,  1535,
-    1540,  1541,  1543,  1544,  1553,  1554,  1556,  1558,  1563,  1565,
-    1571,  1572,  1574,  1577,  1580,  1585,  1586,  1591,  1596,  1600,
-    1602,  1608,  1607,  1614,  1616,  1622,  1623,  1631,  1632,  1636,
-    1637,  1638,  1640,  1642,  1649,  1650,  1652,  1654,  1659,  1660,
-    1666,  1667,  1671,  1672,  1677,  1678,  1679,  1681,  1689,  1690,
-    1692,  1695,  1697,  1701,  1702,  1703,  1705,  1707,  1711,  1716,
-    1724,  1725,  1734,  1736,  1741,  1742,  1743,  1747,  1748,  1749,
-    1753,  1754,  1755,  1759,  1760,  1761,  1766,  1767,  1768,  1769,
-    1775,  1776,  1778,  1783,  1784,  1789,  1790,  1791,  1792,  1793,
-    1808,  1809,  1814,  1815,  1821,  1823,  1826,  1828,  1830,  1853,
-    1854,  1856,  1858,  1863,  1864,  1866,  1871,  1876,  1877,  1883,
-    1882,  1886,  1890,  1892,  1894,  1900,  1901,  1906,  1911,  1913,
-    1918,  1920,  1921,  1923,  1928,  1930,  1932,  1937,  1939,  1944,
-    1949,  1957,  1963,  1962,  1976,  1977,  1982,  1983,  1987,  1992,
-    1997,  2005,  2010,  2021,  2022,  2027,  2028,  2034,  2035,  2039,
-    2040,  2041,  2044,  2043,  2054,  2063,  2069,  2075,  2084,  2090,
-    2096,  2102,  2108,  2116,  2122,  2130,  2136,  2145,  2146,  2147,
-    2151,  2155,  2157,  2162,  2163,  2167,  2168,  2173,  2179,  2180,
-    2183,  2185,  2186,  2190,  2191,  2192,  2193,  2227,  2229,  2230,
-    2232,  2237,  2242,  2247,  2249,  2251,  2256,  2258,  2260,  2262,
-    2267,  2269,  2278,  2280,  2281,  2286,  2288,  2290,  2295,  2297,
-    2299,  2304,  2306,  2308,  2317,  2318,  2319,  2323,  2325,  2327,
-    2332,  2334,  2336,  2341,  2343,  2345,  2360,  2362,  2363,  2365,
-    2370,  2371,  2376,  2378,  2380,  2385,  2387,  2389,  2391,  2396,
-    2398,  2400,  2410,  2412,  2413,  2415,  2420,  2422,  2424,  2429,
-    2431,  2433,  2435,  2440,  2442,  2444,  2475,  2477,  2478,  2480,
-    2485,  2490,  2498,  2500,  2502,  2507,  2509,  2514,  2516,  2530,
-    2531,  2533,  2538,  2540,  2542,  2544,  2546,  2551,  2552,  2554,
-    2556,  2561,  2563,  2565,  2571,  2573,  2575,  2579,  2581,  2583,
-    2585,  2599,  2600,  2602,  2607,  2609,  2611,  2613,  2615,  2620,
-    2621,  2623,  2625,  2630,  2632,  2634,  2640,  2641,  2643,  2652,
-    2655,  2657,  2660,  2662,  2664,  2677,  2678,  2680,  2685,  2687,
-    2689,  2691,  2693,  2698,  2699,  2701,  2703,  2708,  2710,  2718,
-    2719,  2720,  2725,  2726,  2730,  2732,  2734,  2736,  2738,  2740,
-    2747,  2749,  2751,  2753,  2755,  2758,  2760,  2762,  2764,  2766,
-    2771,  2773,  2775,  2780,  2806,  2807,  2809,  2813,  2814,  2818,
-    2820,  2822,  2824,  2826,  2828,  2835,  2837,  2839,  2841,  2843,
-    2845,  2850,  2857,  2859,  2877,  2879,  2884,  2885
+       0,   306,   306,   310,   317,   318,   319,   320,   321,   325,
+     326,   327,   331,   332,   336,   337,   341,   342,   346,   350,
+     351,   362,   364,   366,   367,   369,   374,   375,   381,   383,
+     385,   387,   389,   391,   393,   395,   397,   399,   408,   409,
+     415,   416,   420,   421,   425,   426,   428,   430,   432,   434,
+     436,   441,   443,   445,   457,   458,   466,   469,   471,   473,
+     478,   491,   493,   495,   497,   499,   501,   503,   505,   507,
+     509,   511,   518,   519,   525,   526,   527,   528,   532,   533,
+     540,   541,   543,   545,   550,   551,   553,   558,   559,   561,
+     566,   567,   569,   571,   573,   578,   579,   581,   586,   587,
+     592,   593,   598,   599,   604,   605,   610,   611,   616,   617,
+     620,   627,   632,   633,   641,   642,   646,   647,   648,   649,
+     650,   651,   652,   653,   654,   655,   656,   657,   667,   669,
+     674,   675,   680,   681,   687,   688,   694,   695,   696,   697,
+     698,   699,   700,   701,   702,   712,   719,   721,   731,   732,
+     737,   739,   745,   747,   751,   752,   757,   762,   765,   767,
+     769,   779,   781,   792,   793,   795,   799,   801,   805,   806,
+     811,   812,   816,   821,   822,   826,   828,   834,   835,   839,
+     841,   843,   845,   851,   852,   856,   858,   863,   865,   867,
+     872,   874,   879,   881,   885,   888,   892,   895,   899,   901,
+     903,   905,   910,   912,   914,   919,   921,   923,   925,   927,
+     932,   934,   936,   938,   943,   955,   956,   961,   963,   968,
+     972,   974,   976,   978,   980,   986,   987,   993,   994,   998,
+     999,  1004,  1006,  1012,  1013,  1015,  1020,  1025,  1035,  1037,
+    1041,  1042,  1047,  1049,  1053,  1054,  1058,  1060,  1064,  1065,
+    1069,  1070,  1074,  1075,  1090,  1091,  1092,  1093,  1094,  1098,
+    1103,  1110,  1120,  1125,  1130,  1138,  1143,  1148,  1153,  1158,
+    1188,  1193,  1200,  1202,  1209,  1214,  1219,  1230,  1235,  1240,
+    1245,  1250,  1259,  1264,  1272,  1273,  1274,  1275,  1281,  1286,
+    1294,  1295,  1296,  1297,  1301,  1302,  1303,  1304,  1309,  1310,
+    1319,  1320,  1325,  1326,  1331,  1333,  1335,  1337,  1339,  1342,
+    1341,  1353,  1354,  1356,  1366,  1367,  1372,  1374,  1376,  1378,
+    1380,  1383,  1385,  1388,  1393,  1395,  1397,  1399,  1401,  1403,
+    1405,  1407,  1409,  1411,  1413,  1415,  1417,  1419,  1421,  1427,
+    1428,  1430,  1432,  1434,  1439,  1440,  1446,  1447,  1449,  1451,
+    1456,  1458,  1460,  1462,  1467,  1468,  1470,  1472,  1477,  1478,
+    1480,  1485,  1486,  1488,  1490,  1495,  1497,  1499,  1504,  1505,
+    1509,  1511,  1517,  1516,  1520,  1522,  1527,  1529,  1535,  1536,
+    1541,  1542,  1544,  1545,  1554,  1555,  1557,  1559,  1564,  1566,
+    1572,  1573,  1575,  1578,  1581,  1586,  1587,  1592,  1597,  1601,
+    1603,  1609,  1608,  1615,  1617,  1623,  1624,  1632,  1633,  1637,
+    1638,  1639,  1641,  1643,  1650,  1651,  1653,  1655,  1660,  1661,
+    1667,  1668,  1672,  1673,  1678,  1679,  1680,  1682,  1690,  1691,
+    1693,  1696,  1698,  1702,  1703,  1704,  1706,  1708,  1712,  1717,
+    1725,  1726,  1735,  1737,  1742,  1743,  1744,  1748,  1749,  1750,
+    1754,  1755,  1756,  1760,  1761,  1762,  1767,  1768,  1769,  1770,
+    1776,  1777,  1779,  1784,  1785,  1790,  1791,  1792,  1793,  1794,
+    1809,  1810,  1815,  1816,  1822,  1824,  1827,  1829,  1831,  1854,
+    1855,  1857,  1859,  1864,  1865,  1867,  1872,  1877,  1878,  1884,
+    1883,  1887,  1891,  1893,  1895,  1901,  1902,  1907,  1912,  1914,
+    1919,  1921,  1922,  1924,  1929,  1931,  1933,  1938,  1940,  1945,
+    1950,  1958,  1964,  1963,  1977,  1978,  1983,  1984,  1988,  1993,
+    1998,  2006,  2011,  2022,  2023,  2028,  2029,  2035,  2036,  2040,
+    2041,  2042,  2045,  2044,  2055,  2064,  2070,  2076,  2085,  2091,
+    2097,  2103,  2109,  2117,  2123,  2131,  2137,  2146,  2147,  2148,
+    2152,  2158,  2159,  2165,  2166,  2170,  2171,  2176,  2182,  2183,
+    2186,  2188,  2189,  2193,  2194,  2195,  2196,  2230,  2232,  2233,
+    2235,  2240,  2245,  2250,  2252,  2254,  2259,  2261,  2263,  2265,
+    2270,  2272,  2281,  2283,  2284,  2289,  2291,  2293,  2298,  2300,
+    2302,  2307,  2309,  2311,  2320,  2321,  2322,  2326,  2328,  2330,
+    2335,  2337,  2339,  2344,  2346,  2348,  2363,  2365,  2366,  2368,
+    2373,  2374,  2379,  2381,  2383,  2388,  2390,  2392,  2394,  2399,
+    2401,  2403,  2413,  2415,  2416,  2418,  2423,  2425,  2427,  2432,
+    2434,  2436,  2438,  2443,  2445,  2447,  2478,  2480,  2481,  2483,
+    2488,  2493,  2501,  2503,  2505,  2510,  2512,  2517,  2519,  2533,
+    2534,  2536,  2541,  2543,  2545,  2547,  2549,  2554,  2555,  2557,
+    2559,  2564,  2566,  2568,  2574,  2576,  2578,  2582,  2584,  2586,
+    2588,  2602,  2603,  2605,  2610,  2612,  2614,  2616,  2618,  2623,
+    2624,  2626,  2628,  2633,  2635,  2637,  2643,  2644,  2646,  2655,
+    2658,  2660,  2663,  2665,  2667,  2680,  2681,  2683,  2688,  2690,
+    2692,  2694,  2696,  2701,  2702,  2704,  2706,  2711,  2713,  2721,
+    2722,  2723,  2728,  2729,  2733,  2735,  2737,  2739,  2741,  2743,
+    2750,  2752,  2754,  2756,  2758,  2761,  2763,  2765,  2767,  2769,
+    2774,  2776,  2778,  2783,  2809,  2810,  2812,  2816,  2817,  2821,
+    2823,  2825,  2827,  2829,  2831,  2838,  2840,  2842,  2844,  2846,
+    2848,  2853,  2860,  2862,  2880,  2882,  2887,  2888
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || 0
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
@@ -885,11 +1220,11 @@
   "new_abstract_declarator_no_tuple", "new_abstract_ptr",
   "new_abstract_array", "new_abstract_tuple", "new_abstract_function",
-  "comma_opt", "assignment_opt", YY_NULLPTR
+  "comma_opt", "assignment_opt", 0
 };
 #endif
 
 # ifdef YYPRINT
-/* YYTOKNUM[NUM] -- (External) token number corresponding to the
-   (internal) symbol number NUM (which must be that of a token).  */
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
 static const yytype_uint16 yytoknum[] =
 {
@@ -911,177 +1246,169 @@
 # endif
 
-#define YYPACT_NINF -1267
-
-#define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-1267)))
-
-#define YYTABLE_NINF -529
-
-#define yytable_value_is_error(Yytable_value) \
-  0
-
-  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-     STATE-NUM.  */
-static const yytype_int16 yypact[] =
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const yytype_uint16 yyr1[] =
 {
-    5235,  8510, -1267,   -14, -1267, -1267, -1267, -1267, -1267, -1267,
-   -1267,   -27, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
-   -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,    84,    84,
-      84,  1541,   905,   123,  6677,   163, -1267, -1267, -1267, -1267,
-   -1267,   157, -1267, -1267, -1267,  1043,   172, -1267, -1267, -1267,
-   -1267,  4048, -1267, -1267, -1267, -1267,   225,   198, -1267,  1956,
-   -1267, -1267, -1267, -1267,   217,  1716,   380,    37,  6797, -1267,
-   -1267,  4048,   829, -1267, -1267,  1101,   436,  3172,   661,   839,
-    1101,   977, -1267, -1267,  1289,   340, -1267,  1101,  1140, -1267,
-     327, -1267,   450,   467, -1267, -1267, -1267, -1267,   378,   198,
-      84, -1267,    84, -1267, -1267, -1267, -1267,  7269,  1956, -1267,
-   -1267,  1956, -1267,   386, -1267,  7582, -1267, -1267,  2178,  8744,
-   -1267,   675,   675,   675, -1267, -1267, -1267,    84, -1267, -1267,
-   -1267,   400,   425,   466, -1267, -1267, -1267,   503, -1267, -1267,
-   -1267, -1267, -1267,   515,   527, -1267, -1267,   272,  8119,  1675,
-     732,   435,   568,   593,   612,   625,   639,  8828,  6307,   586,
-   -1267,  4677, -1267, -1267, -1267, -1267,   652, -1267,   339,  9583,
-    9583, -1267,   651,   348, -1267, -1267, -1267, -1267,   665,   379,
-     421,   471,    84,   654, -1267, -1267,  1716,  2591,   717, -1267,
-      90, -1267,    84,    84,   198, -1267, -1267,    91, -1267,    84,
-      84, -1267,  2973,   690,   712,   675,  6831, -1267, -1267, -1267,
-    4048, -1267, -1267,  1101, -1267, -1267, -1267,   198, -1267,  1956,
-     225, -1267,  7235, -1267,   675,   675,   675,   198, -1267,  1541,
-   -1267,  3826, -1267, -1267,   722,   675, -1267,   675, -1267,   157,
-    8119, -1267,   748, -1267,   905,   763,   675, -1267,  1541,   768,
-     779, -1267,  6677,   605, -1267, -1267, -1267,  8477, -1267, -1267,
-    4354, -1267,   717,     8,  9760,  8744,  2178,  2973, -1267,   101,
-   -1267, -1267,  7582,  1956,   807, 10515, -1267, -1267,   473, -1267,
-   10178,   816,   862,  9819,   849,  9760,  9878, -1267,   860, -1267,
-   -1267, -1267, -1267, -1267, -1267,  9937,  9937,  7885,   172, -1267,
-   -1267, -1267, -1267, -1267, -1267, -1267,   866, -1267,  1184,  2546,
-    8119,  9760, -1267,   525,   813,   848,   509,   861,   847,   853,
-     879,   915,    56, -1267, -1267, -1267,   658, -1267,   474, -1267,
-   -1267,  1675, -1267, -1267,   456,   900, -1267,   518,   900, -1267,
-   -1267,  7269, -1267,   917,   933,  8236, -1267, -1267,   536,  1525,
-    7667,  6831,  1101, -1267,  1101,   675,   675, -1267, -1267, -1267,
-   -1267, -1267, -1267,   675,  7269,  1956, -1267, -1267,  8828,  1786,
-   -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,  9524,
-    9760, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
-   -1267, -1267, -1267, -1267, -1267,  2178, -1267,   446,   942,   951,
-     953,   885,   956,   968,   973,  2591, -1267, -1267,   985,   225,
-     974, -1267, -1267,   987, -1267, -1267, -1267,  8477, -1267, -1267,
-   -1267, -1267, -1267,  2973, -1267,  8119,  8119, -1267,   675,  2178,
-   10547,  7742, -1267, -1267, -1267, -1267,  8477,     8, -1267, -1267,
-    1101,   198, -1267, -1267,  8477, -1267,  5404, -1267, -1267,   675,
-     675,   528,  8594,   998,  1002,   983,  1007,   675, -1267, -1267,
-   -1267, -1267,  9019, -1267,   627, 10212, -1267,   198,  1008, -1267,
-    2178, 10298,  9996, -1267, -1267, -1267, -1267,   922,  2973, -1267,
-    7742,   717,  5806, -1267, -1267, -1267,  1900,   640,   994,   905,
-   10515,  1647,  7582, -1267, 10515, -1267, -1267, -1267, -1267,   643,
-   -1267,  1026,   862,   190,  7885, -1267,  8860, -1267, -1267,  7885,
-   -1267,  8002,  7885, -1267, -1267,   172, -1267,   647,  1027,   694,
-    1028, -1267, -1267,  6061, -1267, -1267,   315, -1267, -1267,  9760,
-   -1267,   368,  9760, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
-   -1267, -1267, -1267, -1267, -1267,  9760, -1267, -1267,  9760,  9760,
-    9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,
-    9760,  9760,  9760,  9760,  9760,  9760,  3432,   658,  1212, -1267,
-   -1267,    84,    84, -1267, -1267,  8119, -1267, -1267,   987,   605,
-   -1267,   987, 10055, -1267, -1267,  8828,  6061,  1029, -1267,  8744,
-   -1267, -1267,   652, -1267,  1030,  1793,  1039,  1950,   136,   994,
-   -1267,    84,    84,   994,   407, -1267,    84,    84,   987, -1267,
-   -1267,    84,    84, -1267,   900,  8944,  1956, 10447,   258,   304,
-    8944, -1267,  4354, -1267,   994, -1267,  7269, -1267,   126,  7354,
-    7354,  1956,  9642,  1010, -1267,   345,  1025,  1032, -1267,  1040,
-    9583,   449, -1267,  1130,  1956,  7354,   605,  2178,   605,   717,
-     581,   900, -1267, -1267,   616,   900, -1267, -1267, -1267,   862,
-   -1267,   900,   198,  9019, -1267,   679,  1056,   691,  1057, -1267,
-     917,   198, -1267, -1267,  8477,   198,  1058,  8860,   172, -1267,
-    1307, -1267,   481,   505,   905, -1267,   905,  1060,  9760, -1267,
-     905, 10447, -1267, -1267,  1061, -1267, -1267, -1267,   605, -1267,
-   10373,   933, -1267,  7354,   792,  7667, -1267, -1267,   652,  1063,
-    1065,  1900,  2267, -1267, -1267, 10515,  9760, -1267, -1267,  1067,
-   -1267, -1267,  1064, -1267,  1067,  1066, 10178,  9760,  1054,  1059,
-     117,  1082,  1077,  1085,  1086, -1267,  1087,  1089,  6061, -1267,
-    9760, -1267,   694,  1520, -1267, -1267, -1267,    84,    84,  9701,
-    9760,  1090, -1267, -1267,   704, -1267,  9760, -1267, -1267,   876,
-   -1267, -1267, -1267, -1267,   525,   525,   813,   813,   848,   848,
-     848,   848,   509,   509,   861,   847,   853,   879,   915,  9760,
-      77,  9019,  1091,  1092,  1093,  1212, -1267, -1267, -1267, -1267,
-   -1267,  9019,   709, -1267,  7269, -1267,  6430,  8353, -1267, -1267,
-   -1267,  1793,  9019,   980,  1098,  1104,  1105,  1106,  1113,  1114,
-    1116, -1267,  3291,  1950, -1267, -1267, -1267, -1267, -1267, -1267,
-   -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
-   -1267,   987, -1267, -1267, -1267,   994, -1267, -1267, -1267, -1267,
-   -1267, -1267, -1267, -1267, -1267, -1267,  1117,  1119, -1267,   225,
-    1090,  9642, -1267, -1267, -1267,  9524,  1115, -1267, -1267, -1267,
-   -1267,   905,  5524,  1204, -1267, -1267, -1267, -1267,  1103,   225,
-   -1267, -1267,   987, -1267, -1267,   987,   154,   987, -1267, -1267,
-   -1267, -1267, -1267, -1267,  6307, -1267,   198, -1267, -1267,   507,
-     540,  6307,  1549,  9760,  2098, -1267, -1267,  1109,    38,  1109,
-   -1267,   905, -1267,    84, -1267, -1267,  8627,   983, -1267, -1267,
-   -1267,  1002,  1125,  1120, -1267, -1267,  1129,  1133, -1267,   792,
-    1698, -1267,   356, -1267,  2267,   994, -1267, -1267,  1138, 10515,
-    7582,  8119,  1142, -1267, -1267,  1134,  1146,  1127, -1267,  9760,
-    1153,   256,  1148, -1267,  1159,   605,  1159, -1267, -1267,  1159,
-   -1267,  1164,  1165,  1166,  1520, -1267, -1267, -1267,  9524, -1267,
-   -1267, -1267,  1163,  9760,   791, -1267,  9760, -1267,   791, -1267,
-   -1267,  9760, -1267,   673,   900, -1267, -1267, -1267, -1267, -1267,
-   -1267, -1267,   933,  8236, -1267, -1267,  6553,  1171, -1267,   707,
-     900, -1267,   728,   773,   900, -1267,   675,  7112, -1267, -1267,
-   -1267,  9019,  9019, -1267,  7742,  7742,  1172,  1167,  1168,  1175,
-   -1267,   419,   240,  1090, -1267,   791, -1267,  9583, -1267,  9760,
-     554, -1267,  5932,  1180,  1181,  9465,  1182,  1185,    -8,    40,
-      86,  9760,  1191,   198,  9760,  9760,  1177,   585,  1169, -1267,
-   -1267, -1267,  1187, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
-   -1267, -1267,   905,  1195,  9760, -1267,  9019,  9019,    84,  1201,
-   -1267,  8711, -1267, -1267,   906, -1267,  2098, -1267, -1267, -1267,
-   -1267,  1307, -1267, -1267,  1197, -1267, -1267, -1267, -1267,  1203,
-    1698, -1267, -1267,  1196, -1267,  1067, -1267, -1267,  2178,  1210,
-   -1267, -1267, -1267,   749,  1217, -1267,   117,  1214,  9760,  1200,
-     117,   117,  1224,   894,   900, -1267, -1267,  1040,  9760,  1230,
-    1163, -1267,   943, -1267, -1267,  1220, -1267,    78, -1267,  1231,
-    1220, -1267,  1234, -1267, -1267,   987,  1236,  6184,  1235,  1239,
-    1241, -1267, -1267,  1238, -1267, -1267,   987, -1267, -1267, -1267,
-   -1267,   987,  9760,  9760,   933,  1243, -1267, -1267, -1267, -1267,
-   -1267, -1267, -1267, -1267, -1267, -1267, -1267,  9760,  9760,  1244,
-    1248,  1220, -1267, -1267,   905, -1267, -1267, -1267,  7070,  7582,
-    9760,  9760,  1318,  9760, -1267,  1233, -1267,  1246, -1267,  1250,
-    9760,  1254,  9760,  1075,  1255,    47,    84,  1805, -1267, -1267,
-    5524,  1256,   555, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
-   -1267, -1267,  9281, -1267,  7742,  1260, -1267, -1267,  7582,   561,
-     582, -1267,  1273,  1262,   862,  1283, -1267,   273, -1267, -1267,
-   -1267, -1267,   987,  1282, -1267, -1267,  1288,  1321, -1267, -1267,
-    1321,  1321,   791,  1292,  1699,  1866, -1267,  1295, -1267,  9019,
-   -1267, -1267, -1267, -1267,  1298, -1267,  9019,  9019,  9019, -1267,
-   -1267,  1300, -1267,  1301,  1310,  1311,   541,  7429,  7548, -1267,
-   -1267, -1267, -1267,  1305, -1267,  7817,   762,   783,  1317,   797,
-    5667, -1267, -1267, -1267,   610, -1267,   802,  1319,  1323,   198,
-    1369,   965, -1267, -1267,  9760, -1267,  9465,  9760, -1267, -1267,
-   -1267,  1320,  1326, -1267, -1267, -1267,  1324, -1267, -1267, -1267,
-   -1267, -1267, -1267,  7582,   862,  1330, -1267,  1313,   862,  9019,
-   -1267, -1267, -1267,   791, -1267, -1267, -1267, -1267, -1267, -1267,
-   -1267, -1267, -1267, -1267, -1267, -1267,  1337,  1340, -1267, -1267,
-   -1267, -1267, -1267, -1267, -1267,  1343, -1267,  1342, -1267,  9465,
-     276,  9760,  9465, -1267,  1346,  9760, -1267,   281,  1361,  1363,
-   -1267, -1267,  1355,  1356,  1339, -1267,   921, -1267, -1267, -1267,
-    1956,  2178,  1347, -1267,   259,  9760, -1267,   814, -1267,  1220,
-     791,   791,  1362,  1364,  1365,  1367, -1267, -1267,  7742,  1357,
-   -1267,  1438,  9760,  1352, -1267, -1267,  9375, -1267,   836, -1267,
-    1360,  9465,  1368, -1267, -1267,  1386, -1267,  1389, -1267,  1407,
-    1409, -1267,  1376,  7582, -1267, -1267, -1267,   862,   605,  1403,
-    1382,  1405,  1404,  1220,  1220, -1267, -1267, -1267, -1267, -1267,
-    9465,   265, -1267,   397, -1267, -1267,  6917, -1267, -1267,  1385,
-    9760, -1267,  9760,  6917,   198,  8860,   198,  8860,  1410, -1267,
-    1411, -1267, -1267,  1408, -1267, -1267,   856, -1267, -1267, -1267,
-   -1267,  1422,  1423, -1267,  9760,  9760, -1267, -1267,  1005,    59,
-   -1267, -1267,  1390, -1267,  1005, -1267, -1267,  2042,   605, -1267,
-   -1267,   198,  8860,   198,  8860,  1427,  1412,   605, -1267, -1267,
-   -1267, -1267,  9375,  1425,  1005,  6995,  9760,  9285,  1426,  1005,
-    1435,  2042,  2360, -1267, -1267, -1267,  1436, -1267, -1267, -1267,
-   -1267,  8119, -1267, -1267, -1267,  9148, -1267,  9375, -1267, -1267,
-    1416,  9058, -1267, -1267,  9285,   198,  2360,   198,  1441,  1445,
-     857, -1267,  9148, -1267, -1267, -1267,  9058, -1267, -1267, -1267,
-     198,   198, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267
+       0,   137,   138,   139,   140,   140,   140,   140,   140,   141,
+     141,   141,   142,   142,   143,   143,   144,   144,   145,   146,
+     146,   147,   147,   147,   147,   147,   148,   148,   148,   148,
+     148,   148,   148,   148,   148,   148,   148,   148,   149,   149,
+     150,   150,   151,   151,   152,   152,   152,   152,   152,   152,
+     152,   153,   153,   153,   154,   154,   155,   155,   155,   155,
+     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
+     155,   155,   156,   156,   157,   157,   157,   157,   158,   158,
+     159,   159,   159,   159,   160,   160,   160,   161,   161,   161,
+     162,   162,   162,   162,   162,   163,   163,   163,   164,   164,
+     165,   165,   166,   166,   167,   167,   168,   168,   169,   169,
+     169,   170,   171,   171,   172,   172,   173,   173,   173,   173,
+     173,   173,   173,   173,   173,   173,   173,   173,   174,   174,
+     175,   175,   176,   176,   177,   177,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   179,   180,   180,   181,   181,
+     182,   182,   182,   182,   183,   183,   184,   185,   185,   185,
+     185,   185,   185,   186,   186,   186,   187,   187,   188,   188,
+     189,   189,   190,   191,   191,   192,   192,   193,   193,   194,
+     194,   194,   194,   195,   195,   196,   196,   197,   197,   197,
+     198,   198,   199,   199,   199,   199,   199,   199,   199,   199,
+     199,   199,   200,   200,   200,   201,   201,   201,   201,   201,
+     202,   202,   202,   202,   203,   204,   204,   204,   204,   204,
+     205,   205,   205,   205,   205,   206,   206,   207,   207,   208,
+     208,   209,   209,   210,   210,   210,   211,   211,   212,   212,
+     213,   213,   214,   214,   215,   215,   216,   216,   217,   217,
+     218,   218,   219,   219,   220,   220,   220,   220,   220,   221,
+     221,   221,   222,   222,   222,   223,   223,   223,   223,   223,
+     224,   224,   225,   225,   226,   226,   226,   227,   227,   227,
+     227,   227,   228,   228,   229,   229,   229,   229,   230,   230,
+     231,   231,   231,   231,   232,   232,   232,   232,   233,   233,
+     234,   234,   235,   235,   236,   236,   236,   236,   236,   237,
+     236,   238,   238,   238,   239,   239,   240,   240,   240,   240,
+     240,   240,   240,   240,   241,   241,   241,   241,   241,   241,
+     241,   241,   241,   241,   241,   241,   241,   241,   241,   242,
+     242,   242,   242,   242,   243,   243,   244,   244,   244,   244,
+     245,   245,   245,   245,   246,   246,   246,   246,   247,   247,
+     247,   248,   248,   248,   248,   249,   249,   249,   250,   250,
+     251,   251,   252,   251,   251,   251,   253,   253,   254,   254,
+     255,   255,   255,   255,   256,   256,   256,   256,   257,   257,
+     258,   258,   258,   258,   258,   259,   259,   260,   261,   262,
+     262,   263,   262,   264,   264,   265,   265,   266,   266,   267,
+     267,   267,   267,   267,   268,   268,   268,   268,   269,   269,
+     270,   270,   271,   271,   272,   272,   272,   272,   273,   273,
+     273,   273,   273,   274,   274,   274,   274,   274,   275,   275,
+     276,   276,   277,   277,   278,   278,   278,   279,   279,   279,
+     280,   280,   280,   281,   281,   281,   282,   282,   282,   282,
+     283,   283,   283,   284,   284,   285,   285,   285,   285,   285,
+     286,   286,   287,   287,   288,   288,   288,   288,   288,   289,
+     289,   289,   289,   290,   290,   290,   291,   292,   292,   294,
+     293,   293,   295,   295,   295,   296,   296,   297,   297,   297,
+     298,   298,   298,   298,   299,   299,   299,   300,   300,   301,
+     301,   302,   303,   302,   304,   304,   305,   305,   306,   306,
+     306,   307,   307,   308,   308,   309,   309,   310,   310,   311,
+     311,   311,   312,   311,   311,   313,   313,   313,   314,   314,
+     314,   314,   314,   314,   314,   314,   314,   315,   315,   315,
+     316,   317,   317,   318,   318,   319,   319,   320,   321,   321,
+     322,   322,   322,   323,   323,   323,   323,   324,   324,   324,
+     324,   325,   325,   326,   326,   326,   327,   327,   327,   327,
+     328,   328,   329,   329,   329,   330,   330,   330,   331,   331,
+     331,   332,   332,   332,   333,   333,   333,   334,   334,   334,
+     335,   335,   335,   336,   336,   336,   337,   337,   337,   337,
+     338,   338,   339,   339,   339,   340,   340,   340,   340,   341,
+     341,   341,   342,   342,   342,   342,   343,   343,   343,   344,
+     344,   344,   344,   345,   345,   345,   346,   346,   346,   346,
+     347,   347,   348,   348,   348,   349,   349,   350,   350,   351,
+     351,   351,   352,   352,   352,   352,   352,   353,   353,   353,
+     353,   354,   354,   354,   355,   355,   355,   356,   356,   356,
+     356,   357,   357,   357,   358,   358,   358,   358,   358,   359,
+     359,   359,   359,   360,   360,   360,   361,   361,   361,   362,
+     362,   362,   362,   362,   362,   363,   363,   363,   364,   364,
+     364,   364,   364,   365,   365,   365,   365,   366,   366,   367,
+     367,   367,   368,   368,   369,   369,   369,   369,   369,   369,
+     370,   370,   370,   370,   370,   370,   370,   370,   370,   370,
+     371,   371,   371,   371,   372,   372,   372,   373,   373,   374,
+     374,   374,   374,   374,   374,   375,   375,   375,   375,   375,
+     375,   376,   377,   377,   378,   378,   379,   379
 };
 
-  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
-     Performed when YYTABLE does not specify something else to do.  Zero
-     means the default is an error.  */
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const yytype_uint8 yyr2[] =
+{
+       0,     2,     0,     0,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       2,     1,     1,     1,     3,     3,     1,     6,     4,     3,
+       7,     2,     3,     7,     2,     2,     7,     4,     1,     3,
+       0,     1,     1,     3,     1,     2,     6,     3,     7,     3,
+       7,     2,     2,     2,     0,     2,     1,     1,     1,     2,
+       2,     2,     2,     2,     2,     4,     2,     4,     6,     1,
+       4,     4,     1,     1,     1,     1,     1,     1,     1,     4,
+       1,     3,     3,     3,     1,     3,     3,     1,     3,     3,
+       1,     3,     3,     3,     3,     1,     3,     3,     1,     3,
+       1,     3,     1,     3,     1,     3,     1,     3,     1,     5,
+       4,     1,     1,     3,     0,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     6,     7,
+       1,     3,     1,     3,     0,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     6,     4,     2,     7,     1,     3,
+       1,     2,     1,     2,     1,     2,     2,     5,     7,     5,
+       9,     5,     9,     1,     3,     1,     1,     3,     3,     2,
+       1,     2,     2,     0,     1,     2,     3,     0,     1,     2,
+       3,     3,     4,     0,     1,     1,     2,     5,     7,     6,
+       6,     4,     3,     4,     2,     3,     2,     3,     3,     3,
+       3,     5,     3,     3,     4,     1,     5,     6,     5,     6,
+       9,    10,     9,    10,     2,     1,     2,     2,     2,     1,
+       6,     8,    10,    12,    14,     0,     1,     0,     1,     1,
+       3,     4,     7,     0,     1,     3,     1,     3,     1,     1,
+       1,     3,     1,     1,     1,     3,     0,     1,     3,     4,
+       1,     3,     1,     1,     3,     3,     3,     3,     3,     2,
+       3,     6,     3,     3,     4,     1,     2,     2,     3,     5,
+       7,     7,     5,     9,     2,     2,     5,     3,     5,     4,
+       3,     4,     4,     7,     3,     3,     3,     3,     4,     6,
+       1,     1,     1,     1,     1,     1,     1,     1,     0,     1,
+       1,     2,     1,     1,     1,     1,     1,     1,     1,     0,
+       5,     1,     2,     3,     1,     2,     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,     2,     3,     3,     1,     3,     1,     2,     2,     2,
+       4,     4,     4,     4,     1,     2,     2,     3,     1,     2,
+       2,     1,     2,     2,     3,     1,     2,     2,     1,     1,
+       4,     2,     0,     6,     7,     2,     2,     2,     0,     2,
+       2,     3,     2,     3,     1,     2,     3,     2,     2,     4,
+       0,     1,     2,     2,     1,     0,     1,     2,     2,     5,
+       2,     0,     7,     2,     4,     0,     2,     0,     1,     1,
+       1,     5,     5,     5,     1,     5,     5,     9,     1,     5,
+       0,     1,     1,     5,     1,     1,     5,     5,     1,     3,
+       3,     4,     1,     1,     1,     1,     2,     1,     3,     3,
+       1,     2,     1,     3,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     2,     1,     1,     1,     2,
+       0,     2,     2,     1,     4,     0,     1,     2,     3,     4,
+       2,     2,     1,     2,     2,     5,     5,     7,     6,     1,
+       2,     2,     3,     1,     2,     2,     4,     2,     4,     0,
+       4,     2,     1,     1,     1,     0,     2,     5,     5,    13,
+       1,     1,     3,     3,     2,     3,     3,     2,     4,     1,
+       6,     9,     0,    11,     1,     3,     3,     3,     1,     1,
+       5,     2,     5,     0,     1,     1,     3,     0,     1,     1,
+       1,     1,     0,     6,     2,     1,     2,     4,     2,     3,
+       3,     3,     4,     5,     5,     5,     6,     1,     1,     1,
+       3,     0,     5,     0,     1,     1,     2,     6,     1,     3,
+       0,     1,     4,     1,     1,     1,     1,     2,     1,     2,
+       2,     1,     3,     2,     3,     3,     2,     4,     4,     3,
+       8,     3,     2,     1,     2,     6,     8,     3,     2,     3,
+       3,     4,     4,     3,     1,     1,     1,     4,     6,     3,
+       2,     3,     3,     4,     4,     3,     2,     1,     2,     2,
+       1,     3,     2,     3,     3,     2,     4,     4,     3,     6,
+       8,     3,     2,     1,     2,     2,     2,     3,     3,     2,
+       4,     4,     3,     6,     8,     3,     2,     1,     2,     2,
+       1,     1,     2,     3,     3,     2,     4,     6,     8,     1,
+       2,     2,     1,     2,     2,     3,     3,     1,     4,     4,
+       3,     5,     8,     3,     2,     3,     1,     5,     5,     6,
+       6,     1,     2,     2,     1,     2,     2,     3,     3,     1,
+       4,     4,     3,     5,     8,     3,     1,     2,     1,     2,
+       6,     5,     6,     7,     7,     1,     2,     2,     1,     2,
+       2,     3,     3,     1,     4,     4,     3,     8,     3,     1,
+       1,     2,     1,     1,     2,     3,     2,     3,     2,     3,
+       3,     2,     4,     3,     2,     3,     2,     4,     3,     2,
+       6,     6,     6,     7,     1,     2,     1,     1,     1,     2,
+       3,     2,     3,     2,     3,     3,     4,     2,     3,     4,
+       2,     5,     6,     6,     0,     1,     0,     2
+};
+
+/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+   Performed when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
@@ -1242,35 +1569,5 @@
 };
 
-  /* YYPGOTO[NTERM-NUM].  */
-static const yytype_int16 yypgoto[] =
-{
-   -1267,  4051,  2784, -1267,   133, -1267,  1353,   867,  -240,   882,
-   -1267,   523,  -528,  -489,  -834, -1001, -1267,   -51,  4776,     0,
-   -1267,   793,   508,   531,   517,   553,  1006,  1001,  1009,  1004,
-    1015, -1267,   711,  -584,  4023,  -739, -1267, -1267,   606,  -227,
-    -674,  -263, -1267,   335, -1267,   384,  -963, -1267, -1267,   116,
-   -1267,  -732, -1049,   228, -1267, -1267, -1267, -1267,    57, -1266,
-   -1267, -1267, -1267, -1267, -1267, -1267,   302,  -964,    23, -1267,
-    -360, -1267,   484,   278, -1267,   155, -1267,  -355, -1267, -1267,
-   -1267,   538,  -612, -1267, -1267,     9,  -990,   219,  2319, -1267,
-   -1267, -1267,  -124, -1267,   110,    36,  -188,  1213,  3869, -1267,
-   -1267,    12,    61,   970,  1623, -1267,  1495, -1267, -1267,    21,
-    1827, -1267,  2153,  1937, -1267, -1267, -1267,  -641, -1267,   914,
-     919,   521,   695,   -93, -1267, -1267, -1267,   907,   693,  -521,
-   -1267,  -507,  -417,  -420, -1267, -1267,  -914,  -941,  -147,   -54,
-    1019,    19, -1267,  2311,   381,  -366,  -185,  -122,   649,   750,
-   -1267,   969, -1267,  2435,  1823,  -463,   901, -1267, -1267,   697,
-   -1267,  -225, -1267,   103, -1267, -1267, -1267, -1263,   412, -1267,
-   -1267, -1267,  1139, -1267,    42, -1267, -1267,  -832,   -94, -1230,
-    -162,  2364, -1267,  3117, -1267,   908, -1267,  -103,   120,  -184,
-    -183,  -178,     7,   -40,   -39,   -36,  1505,     4,    32,    71,
-      92,  -173,  -172,  -170,  -168,  -306,  -510,  -503,  -496,  -559,
-    -313,  -498, -1267, -1267,  -514,  1072,  1076,  1081,  1925,  4399,
-    -524,  -566,  -556,  -543,  -548, -1267,  -508,  -723,  -722,  -717,
-    -582,  -166,  -229, -1267, -1267,   283,   102,     6, -1267,  3380,
-     108,  -611,  -462
-};
-
-  /* YYDEFGOTO[NTERM-NUM].  */
+/* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
@@ -1302,7 +1599,199 @@
 };
 
-  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
-     positive, shift that token.  If negative, reduce the rule whose
-     number is the opposite.  If YYTABLE_NINF, syntax error.  */
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -1267
+static const yytype_int16 yypact[] =
+{
+    5235,  8510, -1267,   -14, -1267, -1267, -1267, -1267, -1267, -1267,
+   -1267,   -27, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
+   -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,    84,    84,
+      84,  1541,   905,   123,  6677,   163, -1267, -1267, -1267, -1267,
+   -1267,   157, -1267, -1267, -1267,  1043,    81, -1267, -1267, -1267,
+   -1267,  4048, -1267, -1267, -1267, -1267,   225,   198, -1267,  1956,
+   -1267, -1267, -1267, -1267,   217,  1716,   371,    37,  6797, -1267,
+   -1267,  4048,   829, -1267, -1267,  1101,   380,  3172,   661,   839,
+    1101,   977, -1267, -1267,  1289,   340, -1267,  1101,  1140, -1267,
+     273, -1267,   439,   447, -1267, -1267, -1267, -1267,   337,   198,
+      84, -1267,    84, -1267, -1267, -1267, -1267,  7269,  1956, -1267,
+   -1267,  1956, -1267,   325, -1267,  7582, -1267, -1267,  2178,  8744,
+   -1267,   675,   675,   675, -1267, -1267, -1267,    84, -1267, -1267,
+   -1267,   360,   395,   436, -1267, -1267, -1267,   466, -1267, -1267,
+   -1267, -1267, -1267,   503,   515, -1267, -1267,   272,  8119,  1675,
+     307,   370,   377,   524,   565,   568,   580,  8828,  6307,   594,
+   -1267,  4677, -1267, -1267, -1267, -1267,   613, -1267,   271,  9583,
+    9583, -1267,   610,   339, -1267, -1267, -1267, -1267,   618,   379,
+     421,   468,    84,   603, -1267, -1267,  1716,  2591,   687, -1267,
+      90, -1267,    84,    84,   198, -1267, -1267,    91, -1267,    84,
+      84, -1267,  2973,   652,   657,   675,  6831, -1267, -1267, -1267,
+    4048, -1267, -1267,  1101, -1267, -1267, -1267,   198, -1267,  1956,
+     225, -1267,  7235, -1267,   675,   675,   675,   198, -1267,  1541,
+   -1267,  3826, -1267, -1267,   642,   675, -1267,   675, -1267,   157,
+    8119, -1267,   665, -1267,   905,   685,   675, -1267,  1541,   689,
+     710, -1267,  6677,   291, -1267, -1267, -1267,  8477, -1267, -1267,
+    4354, -1267,   687,     8,  9760,  8744,  2178,  2973, -1267,   101,
+   -1267, -1267,  7582,  1956,   740, 10515, -1267, -1267,   378, -1267,
+   10178,   730,   705,  9819,   773,  9760,  9878, -1267,   794, -1267,
+   -1267, -1267, -1267, -1267, -1267,  9937,  9937,  7885,    81, -1267,
+   -1267, -1267, -1267, -1267, -1267, -1267,   834, -1267,  1184,  2546,
+    8119,  9760, -1267,   525,   415,   844,   338,   853,   823,   831,
+     841,   886,    56, -1267, -1267, -1267,   518, -1267,   528, -1267,
+   -1267,  1675, -1267, -1267,   456,   900, -1267,   490,   900, -1267,
+   -1267,  7269, -1267,   940,   946,  8236, -1267, -1267,   536,  1525,
+    7667,  6831,  1101, -1267,  1101,   675,   675, -1267, -1267, -1267,
+   -1267, -1267, -1267,   675,  7269,  1956, -1267, -1267,  8828,  1786,
+   -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,  9524,
+    9760, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
+   -1267, -1267, -1267, -1267, -1267,  2178, -1267,   446,   945,   961,
+     968,   800,   973,   976,   981,  2591, -1267, -1267,   939,   225,
+     982, -1267, -1267,   987, -1267, -1267, -1267,  8477, -1267, -1267,
+   -1267, -1267, -1267,  2973, -1267,  8119,  8119, -1267,   675,  2178,
+   10547,  7742, -1267, -1267, -1267, -1267,  8477,     8, -1267, -1267,
+    1101,   198, -1267, -1267,  8477, -1267,  5404, -1267, -1267,   675,
+     675,   579,  8594,   994,   993,   983,   998,   675, -1267, -1267,
+   -1267, -1267,  9019, -1267,   616, 10212, -1267,   198,  1004, -1267,
+    2178, 10298,  9996, -1267, -1267, -1267, -1267,   843,  2973, -1267,
+    7742,   687,  5806, -1267, -1267, -1267,  1900,   626,   990,   905,
+   10515,  1647,  7582, -1267, 10515, -1267, -1267, -1267, -1267,   627,
+   -1267,  1013,   705,   154,  7885, -1267,  8860, -1267, -1267,  7885,
+   -1267,  8002,  7885, -1267, -1267,    81, -1267,   640,  1015,   658,
+    1021, -1267, -1267,  6061, -1267, -1267,   315, -1267, -1267,  9760,
+   -1267,   368,  9760, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
+   -1267, -1267, -1267, -1267, -1267,  9760, -1267, -1267,  9760,  9760,
+    9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,  9760,
+    9760,  9760,  9760,  9760,  9760,  9760,  3432,   518,  1212, -1267,
+   -1267,    84,    84, -1267, -1267,  8119, -1267, -1267,   987,   291,
+   -1267,   987, 10055, -1267, -1267,  8828,  6061,  1020, -1267,  8744,
+   -1267, -1267,   613, -1267,  1023,  1793,  1025,  1950,   136,   990,
+   -1267,    84,    84,   990,   407, -1267,    84,    84,   987, -1267,
+   -1267,    84,    84, -1267,   900,  8944,  1956, 10447,   356,   541,
+    8944, -1267,  4354, -1267,   990, -1267,  7269, -1267,   126,  7354,
+    7354,  1956,  9642,  1003, -1267,   789,  1008,  1010, -1267,  1026,
+    9583,   449, -1267,  1114,  1956,  7354,   291,  2178,   291,   687,
+     707,   900, -1267, -1267,   766,   900, -1267, -1267, -1267,   705,
+   -1267,   900,   198,  9019, -1267,   643,  1041,   647,  1045, -1267,
+     940,   198, -1267, -1267,  8477,   198,  1042,  8860,    81, -1267,
+    1307, -1267,   471,   481,   905, -1267,   905,  1047,  9760, -1267,
+     905, 10447, -1267, -1267,  1056, -1267, -1267, -1267,   291, -1267,
+   10373,   946, -1267,  7354,   694,  7667, -1267, -1267,   613,  1052,
+    1057,  1900,  2267, -1267, -1267, 10515,  9760, -1267, -1267,  1055,
+   -1267, -1267,  1048, -1267,  1055,  1063, 10178,  9760,  1046,  1051,
+     117,  1065,  1062,  1070,  1074, -1267,  1081,  1082,  6061, -1267,
+    9760, -1267,   658,  1520, -1267, -1267, -1267,    84,    84,  9701,
+    9760,  1077, -1267, -1267,   679, -1267,  9760, -1267, -1267,   821,
+   -1267, -1267, -1267, -1267,   525,   525,   415,   415,   844,   844,
+     844,   844,   338,   338,   853,   823,   831,   841,   886,  9760,
+     397,  9019,  1085,  1086,  1087,  1212, -1267, -1267, -1267, -1267,
+   -1267,  9019,   691, -1267,  7269, -1267,  6430,  8353, -1267, -1267,
+   -1267,  1793,  9019,   856,  1089,  1091,  1092,  1093,  1096,  1098,
+    1104, -1267,  3291,  1950, -1267, -1267, -1267, -1267, -1267, -1267,
+   -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
+   -1267,   987, -1267, -1267, -1267,   990, -1267, -1267, -1267, -1267,
+   -1267, -1267, -1267, -1267, -1267, -1267,  1105,  1106, -1267,   225,
+    1077,  9642, -1267, -1267, -1267,  9524,  1108, -1267, -1267, -1267,
+   -1267,   905,  5524,  1197, -1267, -1267, -1267, -1267,  1095,   225,
+   -1267, -1267,   987, -1267, -1267,   987,  1117,   987, -1267, -1267,
+   -1267, -1267, -1267, -1267,  6307, -1267,   198, -1267, -1267,   505,
+     507,  6307,  1549,  9760,  2098, -1267, -1267,  1099,    38,  1099,
+   -1267,   905, -1267,    84, -1267, -1267,  8627,   983, -1267, -1267,
+   -1267,   993,  1120,  1115, -1267, -1267,  1122,  1123, -1267,   694,
+    1698, -1267,   576, -1267,  2267,   990, -1267, -1267,  1126, 10515,
+    7582,  8119,  1129, -1267, -1267,  1125,  1135,  1118, -1267,  9760,
+    1141,   190,  1136, -1267,  1142,   291,  1142, -1267, -1267,  1142,
+   -1267,  1147,  1152,  1154,  1520, -1267, -1267, -1267,  9524, -1267,
+   -1267, -1267,  1163,  9760,   986, -1267,  9760, -1267,   986, -1267,
+   -1267,  9760, -1267,   894,   900, -1267, -1267, -1267, -1267, -1267,
+   -1267, -1267,   946,  8236, -1267, -1267,  6553,  1171, -1267,   898,
+     900, -1267,   920,   936,   900, -1267,   675,  7112, -1267, -1267,
+   -1267,  9019,  9019, -1267,  7742,  7742,  1172,  1167,  1168,  1175,
+   -1267,   670,   111,  1077, -1267,   986, -1267,  9583, -1267,  9760,
+     540, -1267,  5932,  1180,  1181,  9465,  1182,  1185,    -8,    40,
+      86,  9760,  1191,   198,  9760,  9760,  1177,   585,  1169, -1267,
+   -1267, -1267,  1187, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
+   -1267, -1267,   905,  1195,  9760, -1267,  9019,  9019,    84,  1201,
+   -1267,  8711, -1267, -1267,   862, -1267,  2098, -1267, -1267, -1267,
+   -1267,  1307, -1267, -1267,  1198, -1267, -1267, -1267, -1267,  1202,
+    1698, -1267, -1267,  1196, -1267,  1055, -1267, -1267,  2178,  1210,
+   -1267, -1267, -1267,   704,  1217, -1267,   117,  1214,  9760,  1200,
+     117,   117,  1224,   950,   900, -1267, -1267,  1026,  9760,  1230,
+    1163, -1267,   943, -1267, -1267,  1220, -1267,    78, -1267,  1231,
+    1220, -1267,  1234, -1267, -1267,   987,  1236,  6184,  1235,  1239,
+    1241, -1267, -1267,  1238, -1267, -1267,   987, -1267, -1267, -1267,
+   -1267,   987,  9760,  9760,   946,  1243, -1267, -1267, -1267, -1267,
+   -1267, -1267, -1267, -1267, -1267, -1267, -1267,  9760,  9760,  1244,
+    1248,  1220, -1267, -1267,   905, -1267, -1267, -1267,  7070,  7582,
+    9760,  9760,  1318,  9760, -1267,  1233, -1267,  1246, -1267,  1250,
+    9760,  1254,  9760,   938,  1255,    47,    84,  1805, -1267, -1267,
+    5524,  1256,   554, -1267, -1267, -1267, -1267, -1267, -1267, -1267,
+   -1267, -1267,  9281, -1267,  7742,  1260, -1267, -1267,  7582,   555,
+     561, -1267,  1273,  1262,   705,  1283, -1267,   256, -1267, -1267,
+   -1267, -1267,   987,  1282, -1267, -1267,  1288,  1321, -1267, -1267,
+    1321,  1321,   986,  1292,  1699,  1866, -1267,  1295, -1267,  9019,
+   -1267, -1267, -1267, -1267,  1298, -1267,  9019,  9019,  9019, -1267,
+   -1267,  1300, -1267,  1301,  1310,  1311,   725,  7429,  7548, -1267,
+   -1267, -1267, -1267,  1305, -1267,  7817,   709,   755,  1317,   758,
+    5667, -1267, -1267, -1267,   582, -1267,   768,  1319,  1323,   198,
+    1369,   935, -1267, -1267,  9760, -1267,  9465,  9760, -1267, -1267,
+   -1267,  1320,  1326, -1267, -1267, -1267,  1324, -1267, -1267, -1267,
+   -1267, -1267, -1267,  7582,   705,  1330, -1267,  1313,   705,  9019,
+   -1267, -1267, -1267,   986, -1267, -1267, -1267, -1267, -1267, -1267,
+   -1267, -1267, -1267, -1267, -1267, -1267,  1337,  1340, -1267, -1267,
+   -1267, -1267, -1267, -1267, -1267,  1343, -1267,  1342, -1267,  9465,
+     276,  9760,  9465, -1267,  1346,  9760, -1267,   281,  1361,  1363,
+   -1267, -1267,  1355,  1356,  1339, -1267,   901, -1267, -1267, -1267,
+    1956,  2178,  1347, -1267,   401,  9760, -1267,   783, -1267,  1220,
+     986,   986,  1362,  1364,  1365,  1367, -1267, -1267,  7742,  1357,
+   -1267,  1438,  9760,  1352, -1267, -1267,  9375, -1267,   791, -1267,
+    1360,  9465,  1368, -1267, -1267,  1386, -1267,  1389, -1267,  1407,
+    1409, -1267,  1376,  7582, -1267, -1267, -1267,   705,   291,  1403,
+    1382,  1405,  1404,  1220,  1220, -1267, -1267, -1267, -1267, -1267,
+    9465,   240, -1267,   474, -1267, -1267,  6917, -1267, -1267,  1385,
+    9760, -1267,  9760,  6917,   198,  8860,   198,  8860,  1410, -1267,
+    1411, -1267, -1267,  1408, -1267, -1267,   802, -1267, -1267, -1267,
+   -1267,  1422,  1423, -1267,  9760,  9760, -1267, -1267,   979,    59,
+   -1267, -1267,  1390, -1267,   979, -1267, -1267,  2042,   291, -1267,
+   -1267,   198,  8860,   198,  8860,  1427,  1412,   291, -1267, -1267,
+   -1267, -1267,  9375,  1425,   979,  6995,  9760,  9285,  1426,   979,
+    1435,  2042,  2360, -1267, -1267, -1267,  1436, -1267, -1267, -1267,
+   -1267,  8119, -1267, -1267, -1267,  9148, -1267,  9375, -1267, -1267,
+    1416,  9058, -1267, -1267,  9285,   198,  2360,   198,  1441,  1445,
+     814, -1267,  9148, -1267, -1267, -1267,  9058, -1267, -1267, -1267,
+     198,   198, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const yytype_int16 yypgoto[] =
+{
+   -1267,  4051,  2784, -1267,   133, -1267,  1353,   867,  -240, -1267,
+   -1267,   504,  -528,  -489,  -834, -1001, -1267,   -77,  4776,     0,
+   -1267,   793,   489,   531,   722,   534,   999,  1001,  1005,  1007,
+    1002, -1267,   711,  -584,  4023,  -739, -1267, -1267,   606,  -227,
+    -674,  -263, -1267,   335, -1267,   382,  -963, -1267, -1267,   119,
+   -1267,  -732, -1049,   228, -1267, -1267, -1267, -1267,    54, -1266,
+   -1267, -1267, -1267, -1267, -1267, -1267,   302, -1050,    23, -1267,
+    -171, -1267,   482,   277, -1267,   153, -1267,  -355, -1267, -1267,
+   -1267,   538,  -612, -1267, -1267,     9,  -990,   219,  2319, -1267,
+   -1267, -1267,  -124, -1267,   110,    36,  -188,  1213,  3869, -1267,
+   -1267,    12,    61,   970,  1623, -1267,  1495, -1267, -1267,    21,
+    1827, -1267,  2153,  1937, -1267, -1267, -1267,  -641, -1267,   911,
+     914,   521,   695,   -93, -1267, -1267, -1267,   906,   690,  -521,
+   -1267,  -507,  -417,  -420, -1267, -1267,  -914,  -941,  -147,   -54,
+    1019,    19, -1267,  2311,   381,  -366,  -185,  -122,   649,   745,
+   -1267,   964, -1267,  2435,  1823,  -463,   895, -1267, -1267,   693,
+   -1267,  -225, -1267,   103, -1267, -1267, -1267, -1263,   408, -1267,
+   -1267, -1267,  1139, -1267,    42, -1267, -1267,  -832,   -94, -1230,
+    -162,  2364, -1267,  3117, -1267,   908, -1267,  -103,   120,  -184,
+    -183,  -178,     7,   -40,   -39,   -36,  1505,     4,    32,    71,
+      92,  -173,  -172,  -170,  -168,  -306,  -510,  -503,  -496,  -559,
+    -313,  -498, -1267, -1267,  -514,  1064,  1072,  1076,  1925,  4399,
+    -524,  -566,  -556,  -543,  -548, -1267,  -508,  -723,  -722,  -717,
+    -582,  -166,  -229, -1267, -1267,   283,   102,     6, -1267,  3380,
+     108,  -611,  -462
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -529
 static const yytype_int16 yytable[] =
 {
@@ -1326,117 +1815,117 @@
      952,    98,   900,   108,   146,   953,  1178,    33,  -239,   591,
      713,  1161,   918,  1285,   326,   190,   187,   187,    98,   566,
-     154,    98,   177,   340,   162,  1235,   846,   740,   665,   667,
+     154,    98,   177,   340,   162,  1235,   846,   157,   665,   667,
      291,   804,   267,   253,   418,   410,   410,  1180,   805,   790,
-      51,   971,   847,   847,   479,   806,   410,   162,   155,    58,
+      51,  1157,   847,   847,   479,   806,   410,   162,   155,    58,
      117,  1512,   210,   167,   660,  1424,   151,   152,   847,   441,
-     153,  1314,   939,  1317,  1319,   808,   144,   524,   437,   474,
+     153,  1314,   939,  1317,  1319,   808,   144,  1158,   437,   474,
      310,   177,   429,   879,   177,   809,   432,  1061,  1527,   817,
     1050,   596,    51,    58,   999,   819,   330,   156,   810,    99,
-     272,   716,   728,  1152,    71,   272,   267,   267,  1058,    98,
+     272,   716,   728,  1152,    71,   272,   267,   267,   729,    98,
      148,   976,   115,    78,   162,    52,   326,   517,    78,   407,
-    1167,    98,   517,   440,   604,   517,   847,   211,   157,  1000,
+    1167,    98,   517,   440,   604,   517,   847,   211,   730,  1000,
      221,   804,   481,   469,   461,  1184,  1185,   310,   805,   498,
-    1074,   649,   657,   987,   729,   806,   397,   190,   432,  1065,
+    1074,   649,   657,   987,  1099,   806,   397,   190,   432,  1065,
      310,   486,   469,    72,   707,   695,   172,  1152,   434,   886,
-     469,   706,  1382,  1383,   730,   281,   568,  1382,  1383,   664,
+     469,   706,  1382,  1383,  1100,   281,   568,  1382,  1383,   664,
       98,   149,   445,   519,   164,   669,   169,   182,   372,   780,
-    1157,   115,    98,  1150,  1151,   345,   160,   584,   330,   597,
+    1454,   115,    98,  1150,  1151,   345,   160,   584,   330,   597,
      615,   458,   177,   808,   108,  1097,   795,  1181,  1051,   407,
-     170,   972,    65,   809,   620,  1454,  1158,   470,   620,  1224,
-    1099,   977,    98,  1003,   836,   657,   810,   583,   837,  1407,
-     434,   588,   988,   202,   624,   282,   477,  1307,   628,   112,
-    1100,  1158,   174,  1408,  1384,   267,   816,   842,   164,  1393,
-     621,   833,    43,    44,   625,   187,   177,  1308,   696,  1482,
-    1166,   213,   372,   177,   112,  1487,   141,   142,   167,   112,
-     838,   141,   142,   267,   839,   310,   310,    43,    44,   267,
-     752,   620,    43,    44,   254,  1507,  1167,  1152,    78,  -294,
-    1514,   439,   112,  1167,  1138,  1140,  1106,   248,    33,   591,
-     251,    98,   115,   593,   591,    43,    44,    78,   244,   376,
-     852,   326,   326,  1082,  1419,    78,  1085,  -524,   386,   598,
-     267,    58,   838,  1470,   706,   377,  1081,  1118,   267,  1369,
-     620,   177,    51,   757,   387,   372,   712,   869,   680,    99,
-     940,   253,   115,   433,    71,  1167,  1223,   658,   177,   389,
-     604,   118,   177,    78,   310,    52,   115,   998,  1498,   310,
-    1500,   310,   310,   -12,  1215,   390,   695,  1455,   857,   743,
-     824,   264,   596,   345,  1511,   190,   486,   470,   326,   416,
-     486,  1456,   213,   330,   330,  -112,  1413,  1414,  -448,  -112,
-     519,   391,   519,    72,  1522,   519,   470,   326,   519,   333,
+     170,   972,    65,   809,   620,   112,  1158,   470,   620,  1224,
+    1307,   977,    98,  1003,   202,   657,   810,   583,    43,    44,
+     434,   588,   988,  -294,   624,   282,   477,  1470,   628,   112,
+    1308,   376,   174,   248,  1384,   267,   816,   842,   164,  1393,
+     621,   833,    43,    44,   625,   187,   177,   377,   696,  1482,
+    1166,   213,   372,   177,   112,  1487,   141,   142,   167,   876,
+     253,   332,  1498,   267,  1500,   310,   310,    43,    44,   267,
+     752,   620,   555,   556,   254,  1507,  1167,  1152,    78,   251,
+    1514,   439,   112,  1167,  1138,  1140,  1106,  -524,    33,   591,
+     253,    98,   115,   593,   591,    43,    44,    78,   244,   386,
+     264,   326,   326,  1082,  1419,    78,  1085,   557,   558,   598,
+     267,    58,   836,   -12,   706,   387,   837,  1118,   267,  1369,
+     620,   177,    51,   757,   333,   372,   712,   869,   680,    99,
+     940,   334,   115,   433,    71,  1167,  1223,   658,   177,   389,
+     604,   118,   177,    78,   310,    52,   115,   998,  -448,   310,
+     491,   310,   310,   492,  1215,   390,   695,   740,   857,   743,
+     824,  1407,   596,   345,  1511,   190,   486,   470,   326,   416,
+     486,   971,   213,   330,   330,  1408,  1413,  1414,   551,   552,
+     519,   391,   519,    72,  1522,   519,   470,   326,   519,  -449,
      469,  1526,   435,   867,   470,   433,  1000,   392,  1106,   253,
      332,   410,   443,   900,   858,   980,   635,   568,   568,   576,
-     658,   410,   707,  1259,  1260,   310,   915,   897,  1050,  -449,
-     521,  1147,  1148,   859,   108,   620,   345,  1149,   574,   615,
-     704,   393,    65,   164,   575,   597,  1343,   597,   797,  1039,
-     330,   901,    98,   555,   556,   491,   598,   394,   492,   696,
-      39,   326,   175,   176,    42,   620,   277,   902,   998,   330,
-     620,   793,   615,    43,    44,   903,   620,   901,   279,   620,
-     620,   579,   518,   410,   695,   835,  1195,  1196,   557,   558,
-     280,   904,   676,  1062,   695,   620,   548,   267,   575,   371,
-     849,   832,   549,   550,  1428,   695,   588,  1332,  1345,   287,
-     903,  1333,   841,   864,  1010,     2,   207,     4,     5,     6,
-       7,  1392,    43,    44,  1164,  1164,  1063,   115,   440,   112,
-     894,  1298,   334,   330,  1055,     8,     9,    10,    11,    12,
-    1165,  1290,    43,    44,   870,    78,   410,  1299,   512,   371,
-     378,    58,  1300,   620,   920,   615,  1093,   335,   398,   399,
-     706,   712,   712,   680,   400,   803,    33,   598,  1301,   401,
-     402,    78,   403,   834,   404,   707,   336,   696,   593,   873,
-     740,   410,    37,  1016,    38,   684,  1213,   696,   345,   337,
-    1217,   697,   743,   743,    36,   498,  1346,   698,   696,   177,
-    1428,   486,   213,   338,   714,  1428,  1462,   725,  1463,  1356,
-     715,   739,  1172,   726,   177,   375,   213,   740,   951,   952,
-     384,   567,   899,   410,   953,  1428,   673,   177,   388,    47,
-      48,  1409,  1428,   408,   470,   568,  1123,   521,   410,   521,
-     396,   406,   521,   880,   620,   521,   983,    -3,  1421,   740,
-     898,   597,   699,   425,  1068,   882,  1068,   742,  1142,   410,
-     470,   740,  1509,   597,  1460,    47,    48,   591,   965,  1321,
-    1134,  1460,   410,   978,   966,   426,  1323,  1324,  1325,   698,
+     658,   410,   707,  1259,  1260,   310,   915,   897,  1050,   277,
+     521,  1147,  1148,   859,   108,   620,   345,  1149,   393,   615,
+     704,   901,    65,   164,  1455,   597,  1343,   597,   797,  1039,
+     330,   903,    98,   579,   394,   410,   598,   902,  1456,   696,
+      39,   326,   175,   176,    42,   620,   279,   904,   998,   330,
+     620,   793,   615,    43,    44,   901,   620,   903,   280,   620,
+     620,   567,   518,   410,   695,   835,  1195,  1196,   335,    47,
+      48,  1062,   574,  1063,   695,   620,   548,   267,   575,   371,
+     849,   832,   549,   550,  1428,   695,   588,   838,  1345,   287,
+    1164,   839,   841,   864,  1010,     2,   207,     4,     5,     6,
+       7,  1392,    43,    44,  1164,  1298,  1165,   115,   440,   336,
+     894,  1300,   337,   330,  1055,     8,     9,    10,    11,    12,
+    1290,  1299,   838,   676,   338,    78,  1081,  1301,   512,   575,
+     378,    58,   740,   620,   920,   615,  1093,   371,   398,   399,
+     706,   712,   712,   680,   400,   803,    33,   598,  1346,   401,
+     402,    78,   403,   834,   404,   707,   375,   696,   593,   384,
+     697,   388,    37,  1016,    38,   684,   698,   696,   345,   396,
+     714,   725,   743,   743,    36,   498,   715,   726,   696,   177,
+    1428,   486,   213,   408,   739,  1428,  1462,   880,  1463,  1356,
+     740,   882,  1172,   740,   177,   425,   213,   740,   951,   952,
+     426,   742,   899,   410,   953,  1428,   673,   177,   448,    47,
+      48,  1409,  1428,  -372,   470,   568,  -112,   521,   291,   521,
+    -112,   406,   521,   965,   620,   521,   983,    -3,  1421,   966,
+     898,   597,   699,  -401,  1068,   978,  1068,   919,  1142,   596,
+     470,   698,  1509,   597,  1460,    47,    48,   591,  1211,  1321,
+     870,  1460,   410,  1339,   575,   459,  1323,  1324,  1325,   740,
      979,   803,   598,     2,   207,     4,     5,     6,     7,   518,
-    1335,  1137,  -295,   596,   518,   253,   332,   518,   704,     8,
-       9,    10,    11,    12,   695,   695,   940,   213,   448,   177,
-     940,   940,   310,  1211,   229,   112,  -372,    50,   114,   575,
-    1480,  1421,  1111,  1508,    71,  1112,  1339,  1113,    43,    44,
-      33,  -401,   740,    78,   345,   731,  1139,   732,   596,  1368,
-     733,   345,   894,   737,   894,  1162,   797,  1340,   114,   114,
-      37,    50,    38,   740,   459,   919,   115,   596,    36,   695,
-     695,  1342,    50,    47,    48,   460,  1347,   740,    50,   920,
-     920,   803,   740,    72,   712,   482,    50,  1039,  1410,   502,
-     115,   310,    50,   598,  1407,    50,   551,   552,    50,  1086,
-     553,   554,   680,  1266,  1267,   291,  1269,   696,   696,   524,
-    1429,   114,   114,  1274,   743,  1276,   740,   559,   560,  1494,
-     684,   707,   506,   657,   108,   486,  1088,   326,   897,   561,
-    1476,  1532,    65,   511,  1305,    50,  1477,   575,    50,   112,
-    -296,   141,   142,   345,   562,    50,   407,     8,     9,    10,
-      11,    12,    43,    44,  1206,   969,   966,   878,   418,   653,
-     410,   704,   696,   696,   620,   620,   885,  1220,  1106,   410,
-     887,   563,  1064,   564,   898,   339,    50,   112,    33,   832,
-     332,   410,   310,  1355,  1111,  1352,  1353,  1112,    50,  1113,
-      43,    44,   108,   585,  1169,   479,   332,   410,   707,   330,
-    1402,   966,   230,    78,   598,   231,    36,   440,   235,    -3,
-     237,  1382,  1383,    50,    50,  1294,   650,   246,  1228,   764,
-     765,   115,  1230,  1231,  1363,   651,   894,   652,  1363,    50,
-     654,   894,   768,   769,   770,   771,  1381,    50,   508,  1389,
-     920,    58,   655,    72,   766,   767,    50,   656,   267,    50,
-     661,   834,   695,   817,   332,   596,   114,   680,   659,   695,
+    1335,  1332,  -295,   502,   518,  1333,   460,   518,   704,     8,
+       9,    10,    11,    12,   695,   695,   940,   213,   482,   177,
+     940,   940,   310,   112,   229,   141,   142,    50,   114,  1340,
+    1480,  1421,  1342,  1508,    71,   740,    43,    44,   740,   873,
+      33,   410,  1347,    78,   345,   731,   506,   732,   740,  1368,
+     733,   345,   894,   737,   894,  1162,   797,  1410,   114,   114,
+      37,    50,    38,  1407,   852,  1429,   115,   511,    36,   695,
+     695,   740,    50,   418,   653,   410,  1476,   524,    50,   920,
+     920,   803,  1477,    72,   712,  1213,    50,  1039,  1532,  1217,
+     115,   310,    50,   598,   575,    50,   553,   554,    50,  1086,
+     969,   966,   680,  1266,  1267,   561,  1269,   696,   696,   559,
+     560,   114,   114,  1274,   743,  1276,   479,   332,   410,  1494,
+     684,   707,   562,   657,   108,   486,  1088,   326,   897,   817,
+     332,   596,    65,   563,  1305,    50,   332,   410,    50,   112,
+    -296,   141,   142,   345,   564,    50,   407,     8,     9,    10,
+      11,    12,    43,    44,  1206,  1352,  1353,   878,  1277,  1278,
+    1279,   704,   696,   696,   620,   620,   885,  1123,  1106,   410,
+     887,  1134,  1064,   410,   898,   339,    50,   112,    33,   832,
+    1402,   966,   310,  1355,  1111,  1382,  1383,  1112,    50,  1113,
+      43,    44,   108,  1137,  1169,   596,  1230,  1231,   707,   330,
+     764,   765,   230,    78,   598,   231,    36,   440,   235,  1139,
+     237,   596,   659,    50,    50,  1294,   585,   246,  1228,   650,
+     112,   115,    -3,  1220,  1363,   410,   894,  1111,  1363,    50,
+    1112,   894,  1113,    43,    44,   651,  1381,    50,   508,  1389,
+     920,    58,   652,    72,   766,   767,    50,   654,   267,    50,
+     655,   834,   695,   772,   773,   656,   114,   680,   661,   695,
      695,   695,   258,   546,   547,     2,   207,     4,     5,     6,
-       7,   114,   772,   773,  1388,   114,   685,    39,   688,    50,
-     114,    42,   686,  1427,   108,   690,  -243,   345,  1431,   716,
-      43,    44,   470,    50,    50,  1277,  1278,  1279,   546,   727,
-      50,   741,   749,  -297,   -14,   798,   800,    50,  1295,  1087,
-       8,     9,    10,    11,    12,   811,    45,  1453,   658,   -15,
-     855,   861,   695,   899,    47,    48,   854,  1444,   272,   115,
-     881,   883,    37,   546,    38,  -422,   888,   931,   220,   908,
-     933,    33,  -528,   230,   923,   696,   898,   715,   937,   684,
-     310,   898,   696,   696,   696,   938,   944,   945,    50,   946,
-     947,   948,    71,   949,   620,   973,   974,   975,   115,    36,
-     963,    78,   989,    68,   119,    50,    50,  1086,   990,   991,
-     992,  1060,     8,     9,    10,    11,    12,   993,   994,   213,
-     995,  -410,    50,  -409,  1018,  1052,    50,   704,  1054,  1075,
-    1076,    58,  1521,   893,  1088,  1077,   636,    68,  1521,  1078,
-     496,    72,  1084,    33,   740,   696,  1094,   620,   620,  1521,
-    1095,  1096,    50,  1521,   161,   272,  1098,  1405,  1101,   525,
-     310,   108,    50,   526,   527,   528,  1520,   958,  1103,  1104,
-    1105,    36,  1169,  1108,   222,  1132,  1153,  1154,  1155,  1156,
+       7,   114,   685,   686,  1388,   114,   690,    39,   688,    50,
+     114,    42,  -243,  1427,   108,   716,   727,   345,  1431,   741,
+      43,    44,   470,    50,    50,   749,   798,   -14,   546,   800,
+      50,   811,   -15,  -297,   854,   861,   855,    50,  1295,  1087,
+       8,     9,    10,    11,    12,   881,    45,  1453,   658,   883,
+     888,   931,   695,   899,    47,    48,   908,  1444,   272,   115,
+    -422,  -528,    37,   546,    38,   715,   923,   933,   220,   944,
+     937,    33,   945,   230,   946,   696,   898,   938,   947,   684,
+     310,   898,   696,   696,   696,   948,   949,   963,    50,   973,
+     974,   975,    71,   989,   620,   990,   991,   992,   115,    36,
+     993,    78,   994,    68,   119,    50,    50,  1086,   995,  -410,
+    -409,  1060,     8,     9,    10,    11,    12,  1018,  1052,   213,
+    1054,  1058,    50,   893,  1075,  1076,    50,   704,  1077,  1078,
+    1084,    58,  1521,  1094,  1088,   740,   636,    68,  1521,  1095,
+     496,    72,  1096,    33,  1098,   696,  1101,   620,   620,  1521,
+     958,  1103,    50,  1521,   161,   272,  1104,  1405,  1105,   525,
+     310,   108,    50,   526,   527,   528,  1520,   768,   769,   770,
+     771,    36,  1169,  1108,   222,  1132,  1153,  1154,  1155,  1156,
       50,    78,   108,  1170,  1171,  1173,    50,   529,  1174,   530,
       65,   531,   532,   115,  1182,  1188,    -3,   398,   399,  1193,
-     108,  1186,  1086,   400,   704,  1198,  1201,  1203,   401,   402,
+     108,  1186,  1086,   400,   704,  1198,  1203,  1201,   401,   402,
      260,   403,   230,   404,   235,   567,   440,   410,   491,  1207,
     1214,    72,   114,    47,    48,  1212,  1216,    50,  1219,  1088,
@@ -1461,15 +1950,15 @@
     1450,  1461,  1087,   372,  1471,  1473,  1486,  1475,   108,    76,
        8,     9,    10,    11,    12,   108,   470,   326,  1478,  1479,
-    1501,   876,   959,   470,  1506,  1513,    72,    50,  1502,  1515,
+    1501,  1187,   959,   470,  1506,  1513,    72,    50,  1502,  1515,
     1517,   114,  1523,   114,   260,  1530,   163,   114,   589,  1531,
-    1187,    33,  1011,   775,   617,   114,   223,   774,   777,  1110,
-     195,  1481,   776,   218,  1288,  1394,   228,   622,    50,    50,
-     778,   622,  1351,  1533,   407,  1218,  1367,   108,  1464,    36,
-    1192,   889,  1200,    50,  1069,   470,   890,   911,   792,    39,
-    1073,   184,   185,    42,   909,  1017,   463,  1107,   658,   330,
-     860,   477,    43,    44,  1350,   131,   925,   132,   133,   134,
-    1297,   709,  1087,    39,  1083,   184,   185,    42,    43,    44,
-     471,     0,     0,   742,   934,   410,    43,    44,   595,   782,
-     596,    47,    48,   783,   350,    58,    47,    48,   784,   471,
+     774,    33,  1011,   775,   617,   114,   223,   778,   776,  1110,
+     195,   777,  1288,   218,  1481,  1394,   228,   622,    50,    50,
+    1533,   622,  1351,  1218,   407,  1367,  1464,   108,   889,    36,
+    1192,   890,  1200,    50,  1069,   470,   911,  1073,   792,    39,
+    1017,   184,   185,    42,   909,   860,   463,  1107,   658,   330,
+     925,   477,    43,    44,  1350,   131,  1297,   132,   133,   134,
+    1083,   709,  1087,    39,     0,   184,   185,    42,    43,    44,
+     471,   782,     0,   742,   934,   410,    43,    44,   595,   783,
+     596,    47,    48,   784,   350,    58,    47,    48,     0,   471,
      909,     0,    58,   353,   163,     0,     0,   471,     0,     0,
        0,     0,   892,     0,   410,     0,   373,     0,    50,     0,
@@ -2372,4 +2861,10 @@
 };
 
+#define yypact_value_is_default(yystate) \
+  ((yystate) == (-1267))
+
+#define yytable_value_is_error(yytable_value) \
+  YYID (0)
+
 static const yytype_int16 yycheck[] =
 {
@@ -2393,14 +2888,14 @@
      892,    51,   680,    71,    11,   892,   136,    41,   119,   345,
      486,  1015,   703,   136,   148,    65,   186,   187,    68,   133,
-     186,    71,    59,   157,   187,   117,   703,   120,   425,   426,
+     186,    71,    59,   157,   187,   117,   703,   116,   425,   426,
       83,   711,   202,   113,   113,   115,   115,   121,   711,   575,
-     210,   134,   629,   630,   113,   711,   115,   210,   186,     0,
+     210,   100,   629,   630,   113,   711,   115,   210,   186,     0,
        1,  1487,   222,   115,   409,  1455,   266,   266,   645,   222,
-     266,  1232,   115,  1234,  1235,   801,   113,    83,   219,   113,
+     266,  1232,   115,  1234,  1235,   801,   113,   126,   219,   113,
      240,   108,   206,   663,   111,   801,   210,   888,  1514,   113,
      862,   115,   252,    34,   813,   803,   148,   186,   801,   252,
      260,   135,   502,  1204,   252,   265,   266,   267,   114,   149,
      113,   785,   272,   252,   267,   252,   240,   504,   257,   187,
-    1270,   161,   509,   222,   597,   512,   703,    68,   116,   813,
+    1270,   161,   509,   222,   597,   512,   703,    68,   134,   813,
       71,   801,   273,   417,   252,  1034,  1035,   297,   801,   280,
      911,   395,   405,   801,   114,   801,   186,   187,   272,   893,
@@ -2410,100 +2905,100 @@
      100,   341,   222,  1257,  1258,   345,   310,   341,   240,   349,
      350,   248,   219,   919,   252,   939,   585,  1031,  1190,   267,
-     135,   781,   252,   919,   364,   100,   126,   257,   368,  1108,
-     114,   791,   252,   835,   116,   478,   919,   341,   120,   120,
-     272,   345,   802,     3,   365,   113,   266,   114,   369,    74,
-     134,   126,    57,   134,   118,   395,   920,   626,   115,   118,
-     364,   983,    87,    88,   368,   405,   273,   134,   462,  1458,
-    1022,   350,   405,   280,    74,  1464,    76,    77,   310,    74,
-     116,    76,    77,   423,   120,   425,   426,    87,    88,   429,
-     115,   431,    87,    88,    99,  1484,  1426,  1378,   417,     3,
-    1489,   222,    74,  1433,   992,   993,   954,   120,    41,   615,
-       0,   331,   452,   345,   620,    87,    88,   436,   118,   120,
-     115,   425,   426,   925,  1378,   444,   929,     0,   120,   349,
-     470,   252,   116,  1437,   891,   136,   120,   966,   478,  1313,
-     480,   348,   482,   115,   136,   478,   486,   649,   452,   482,
-     730,   113,   492,   210,   482,  1485,  1107,   405,   365,   120,
-     813,   465,   369,   482,   504,   482,   506,   813,  1472,   509,
-    1474,   511,   512,   113,  1098,   136,   663,   120,   640,   519,
-     113,   135,   115,   523,  1487,   405,   490,   417,   492,   194,
-     494,   134,   471,   425,   426,   116,  1370,  1371,   113,   120,
-     504,   120,   506,   482,  1507,   509,   436,   511,   512,   114,
+     135,   781,   252,   919,   364,    74,   126,   257,   368,  1108,
+     114,   791,   252,   835,     3,   478,   919,   341,    87,    88,
+     272,   345,   802,     3,   365,   113,   266,  1437,   369,    74,
+     134,   120,    57,   120,   118,   395,   920,   626,   115,   118,
+     364,   983,    87,    88,   368,   405,   273,   136,   462,  1458,
+    1022,   350,   405,   280,    74,  1464,    76,    77,   310,   659,
+     113,   114,  1472,   423,  1474,   425,   426,    87,    88,   429,
+     115,   431,    94,    95,    99,  1484,  1426,  1378,   417,     0,
+    1489,   222,    74,  1433,   992,   993,   954,     0,    41,   615,
+     113,   331,   452,   345,   620,    87,    88,   436,   118,   120,
+     135,   425,   426,   925,  1378,   444,   929,   129,   130,   349,
+     470,   252,   116,   113,   891,   136,   120,   966,   478,  1313,
+     480,   348,   482,   115,   114,   478,   486,   649,   452,   482,
+     730,   114,   492,   210,   482,  1485,  1107,   405,   365,   120,
+     813,   465,   369,   482,   504,   482,   506,   813,   113,   509,
+     132,   511,   512,   135,  1098,   136,   663,   120,   640,   519,
+     113,   120,   115,   523,  1487,   405,   490,   417,   492,   194,
+     494,   134,   471,   425,   426,   134,  1370,  1371,   123,   124,
+     504,   120,   506,   482,  1507,   509,   436,   511,   512,   113,
      674,  1514,   217,   647,   444,   272,  1080,   136,  1066,   113,
      114,   115,   227,  1071,   115,   794,   117,   567,   568,   113,
      478,   115,   738,  1157,  1158,   575,   700,   680,  1190,   113,
-     297,  1001,  1002,   134,   482,   585,   586,  1004,   114,   589,
+     297,  1001,  1002,   134,   482,   585,   586,  1004,   120,   589,
      480,   120,   482,   310,   120,   595,  1270,   597,   586,   862,
-     492,   120,   482,    94,    95,   132,   486,   136,   135,   663,
+     492,   120,   482,   113,   136,   115,   486,   136,   134,   663,
       74,   575,    76,    77,    78,   615,   113,   136,   924,   511,
      620,   585,   622,    87,    88,   120,   626,   120,   113,   629,
-     630,   113,   297,   115,   781,   616,  1056,  1057,   129,   130,
-     113,   136,   114,   136,   791,   645,   121,   647,   120,   113,
+     630,   113,   297,   115,   781,   616,  1056,  1057,   114,   121,
+     122,   136,   114,   136,   791,   645,   121,   647,   120,   113,
      631,   615,   127,   128,  1386,   802,   620,   116,  1270,    74,
      120,   120,   626,   644,   849,     4,     5,     6,     7,     8,
-       9,  1345,    87,    88,   120,   120,   136,   677,   617,    74,
+       9,  1345,    87,    88,   120,   120,   136,   677,   617,   114,
      680,   120,   114,   575,   869,    10,    11,    12,    13,    14,
-     136,   136,    87,    88,   113,   674,   115,   136,   113,   113,
-     115,   482,   120,   703,   704,   705,   931,   114,   892,   892,
+     136,   136,   116,   114,   114,   674,   120,   136,   113,   120,
+     115,   482,   120,   703,   704,   705,   931,   113,   892,   892,
     1127,   711,   712,   677,   892,   595,    41,   597,   136,   892,
-     892,   700,   892,   615,   892,   891,   114,   781,   620,   113,
-     120,   115,    71,   855,    73,   452,  1096,   791,   738,   114,
-    1100,   114,   742,   743,    69,   726,   136,   120,   802,   616,
-    1482,   715,   691,   114,   114,  1487,  1430,   114,  1432,  1287,
+     892,   700,   892,   615,   892,   891,   113,   781,   620,   119,
+     114,   113,    71,   855,    73,   452,   120,   791,   738,   136,
+     114,   114,   742,   743,    69,   726,   120,   120,   802,   616,
+    1482,   715,   691,    66,   114,  1487,  1430,   114,  1432,  1287,
      120,   114,  1025,   120,   631,   113,   705,   120,  1491,  1491,
-     119,   113,   680,   115,  1491,  1507,   441,   644,   113,   121,
-     122,  1365,  1514,    66,   674,   785,   113,   504,   115,   506,
-     136,   894,   509,   114,   794,   512,   796,   136,  1382,   120,
-     680,   801,   467,   113,   897,   114,   899,   113,   996,   115,
+     113,   113,   680,   115,  1491,  1507,   441,   644,   136,   121,
+     122,  1365,  1514,   118,   674,   785,   116,   504,    83,   506,
+     120,   894,   509,   114,   794,   512,   796,   136,  1382,   120,
+     680,   801,   467,   118,   897,   114,   899,   113,   996,   115,
      700,   120,  1486,   813,  1426,   121,   122,   983,   114,  1239,
-     113,  1433,   115,   114,   120,   113,  1246,  1247,  1248,   120,
+     113,  1433,   115,   114,   120,   136,  1246,  1247,  1248,   120,
      794,   711,   712,     4,     5,     6,     7,     8,     9,   504,
-    1257,   113,     3,   115,   509,   113,   114,   512,   738,    10,
-      11,    12,    13,    14,  1001,  1002,  1096,   796,   136,   726,
-    1100,  1101,   862,   114,    35,    74,   118,     0,     1,   120,
-    1454,  1455,    81,  1485,   862,    84,   114,    86,    87,    88,
-      41,   118,   120,   862,   884,   504,   113,   506,   115,  1309,
+    1257,   116,     3,   113,   509,   120,   136,   512,   738,    10,
+      11,    12,    13,    14,  1001,  1002,  1096,   796,   118,   726,
+    1100,  1101,   862,    74,    35,    76,    77,     0,     1,   114,
+    1454,  1455,   114,  1485,   862,   120,    87,    88,   120,   113,
+      41,   115,   114,   862,   884,   504,   113,   506,   120,  1309,
      509,   891,   892,   512,   894,  1017,   884,   114,    31,    32,
-      71,    34,    73,   120,   136,   113,   906,   115,    69,  1056,
-    1057,   114,    45,   121,   122,   136,   114,   120,    51,   919,
-     920,   801,   120,   862,   924,   118,    59,  1190,   114,   113,
-     930,   931,    65,   813,   120,    68,   123,   124,    71,   930,
-      92,    93,   906,  1170,  1171,    83,  1173,  1001,  1002,    83,
-     114,    84,    85,  1180,   954,  1182,   120,    96,    97,  1467,
-     677,  1127,   113,  1066,   862,   929,   930,   931,  1071,   122,
-     114,   114,   862,   113,  1214,   108,   120,   120,   111,    74,
-       3,    76,    77,   983,   131,   118,   894,    10,    11,    12,
-      13,    14,    87,    88,  1088,   119,   120,   662,   113,   114,
-     115,   891,  1056,  1057,  1004,  1005,   671,   113,  1516,   115,
-     675,   132,   892,    98,   894,   115,   149,    74,    41,   983,
-     114,   115,  1022,  1286,    81,    60,    61,    84,   161,    86,
-      87,    88,   930,   116,  1022,   113,   114,   115,  1204,   931,
-     119,   120,    72,  1022,   924,    75,    69,   986,    78,   116,
-      80,    46,    47,   186,   187,  1202,   114,    87,   115,   551,
-     552,  1061,  1113,  1114,  1304,   114,  1066,   114,  1308,   202,
-     114,  1071,   555,   556,   557,   558,  1339,   210,   285,  1342,
+      71,    34,    73,   120,   115,   114,   906,   113,    69,  1056,
+    1057,   120,    45,   113,   114,   115,   114,    83,    51,   919,
+     920,   801,   120,   862,   924,  1096,    59,  1190,   114,  1100,
+     930,   931,    65,   813,   120,    68,    92,    93,    71,   930,
+     119,   120,   906,  1170,  1171,   122,  1173,  1001,  1002,    96,
+      97,    84,    85,  1180,   954,  1182,   113,   114,   115,  1467,
+     677,  1127,   131,  1066,   862,   929,   930,   931,  1071,   113,
+     114,   115,   862,   132,  1214,   108,   114,   115,   111,    74,
+       3,    76,    77,   983,    98,   118,   894,    10,    11,    12,
+      13,    14,    87,    88,  1088,    60,    61,   662,    60,    61,
+      62,   891,  1056,  1057,  1004,  1005,   671,   113,  1516,   115,
+     675,   113,   892,   115,   894,   115,   149,    74,    41,   983,
+     119,   120,  1022,  1286,    81,    46,    47,    84,   161,    86,
+      87,    88,   930,   113,  1022,   115,  1113,  1114,  1204,   931,
+     551,   552,    72,  1022,   924,    75,    69,   986,    78,   113,
+      80,   115,   113,   186,   187,  1202,   116,    87,   115,   114,
+      74,  1061,   116,   113,  1304,   115,  1066,    81,  1308,   202,
+      84,  1071,    86,    87,    88,   114,  1339,   210,   285,  1342,
     1080,   862,   114,  1022,   553,   554,   219,   114,  1088,   222,
-     116,   983,  1239,   113,   114,   115,   229,  1061,   113,  1246,
+     114,   983,  1239,   559,   560,   114,   229,  1061,   116,  1246,
     1247,  1248,   115,   310,   311,     4,     5,     6,     7,     8,
-       9,   244,   559,   560,  1341,   248,   118,    74,   135,   252,
-     253,    78,   120,  1386,  1022,   118,   118,  1127,  1391,   135,
-      87,    88,  1022,   266,   267,    60,    61,    62,   345,   113,
-     273,   114,   114,     3,   134,   116,   116,   280,  1202,   930,
-      10,    11,    12,    13,    14,   116,   113,  1420,  1066,   134,
-     120,    31,  1309,  1071,   121,   122,   134,  1407,  1168,  1169,
-     114,   114,    71,   380,    73,   114,   118,   113,  1169,   119,
-     114,    41,   119,   213,   119,  1239,  1066,   120,   134,   906,
-    1190,  1071,  1246,  1247,  1248,   136,   114,   120,   331,   114,
+       9,   244,   118,   120,  1341,   248,   118,    74,   135,   252,
+     253,    78,   118,  1386,  1022,   135,   113,  1127,  1391,   114,
+      87,    88,  1022,   266,   267,   114,   116,   134,   345,   116,
+     273,   116,   134,     3,   134,    31,   120,   280,  1202,   930,
+      10,    11,    12,    13,    14,   114,   113,  1420,  1066,   114,
+     118,   113,  1309,  1071,   121,   122,   119,  1407,  1168,  1169,
+     114,   119,    71,   380,    73,   120,   119,   114,  1169,   114,
+     134,    41,   120,   213,   114,  1239,  1066,   136,   114,   906,
+    1190,  1071,  1246,  1247,  1248,   114,   114,   120,   331,   114,
      114,   114,  1190,   114,  1204,   114,   114,   114,  1208,    69,
-     120,  1190,   114,     0,     1,   348,   349,  1208,   114,   114,
-     114,   886,    10,    11,    12,    13,    14,   114,   114,  1168,
-     114,   114,   365,   114,   119,    31,   369,  1127,   135,   114,
-     120,  1022,  1505,   134,  1208,   116,   379,    34,  1511,   116,
-     280,  1190,   114,    41,   120,  1309,   114,  1257,  1258,  1522,
-     114,   134,   395,  1526,    51,  1265,   113,  1361,   120,    85,
-    1270,  1169,   405,    89,    90,    91,  1501,   118,   114,   114,
-     114,    69,  1270,   120,    71,   114,   114,   120,   120,   114,
+     114,  1190,   114,     0,     1,   348,   349,  1208,   114,   114,
+     114,   886,    10,    11,    12,    13,    14,   119,    31,  1168,
+     135,   114,   365,   134,   114,   120,   369,  1127,   116,   116,
+     114,  1022,  1505,   114,  1208,   120,   379,    34,  1511,   114,
+     280,  1190,   134,    41,   113,  1309,   120,  1257,  1258,  1522,
+     118,   114,   395,  1526,    51,  1265,   114,  1361,   114,    85,
+    1270,  1169,   405,    89,    90,    91,  1501,   555,   556,   557,
+     558,    69,  1270,   120,    71,   114,   114,   120,   120,   114,
      423,  1270,  1190,   113,   113,   113,   429,   113,   113,   115,
     1190,   117,   118,  1303,   113,   136,   119,  1491,  1491,   114,
-    1208,   134,  1303,  1491,  1204,   114,   119,   114,  1491,  1491,
+    1208,   134,  1303,  1491,  1204,   114,   114,   119,  1491,  1491,
      107,  1491,   352,  1491,   354,   113,  1265,   115,   132,   119,
      116,  1270,   465,   121,   122,   118,   136,   470,   114,  1303,
@@ -2528,15 +3023,15 @@
      116,   136,  1303,  1516,   114,   114,   136,   119,  1426,    34,
       10,    11,    12,    13,    14,  1433,  1426,  1501,   116,   116,
-     113,   659,   749,  1433,   119,   119,  1485,   680,   136,   114,
+     113,  1037,   749,  1433,   119,   119,  1485,   680,   136,   114,
      114,   684,   136,   686,   341,   114,    51,   690,   345,   114,
-    1037,    41,   851,   562,   351,   698,    71,   561,   564,   963,
-      65,  1455,   563,    68,  1190,  1347,    71,   364,   711,   712,
-     565,   368,  1280,  1526,  1492,  1101,  1308,  1485,  1433,    69,
-    1052,   677,  1071,   726,   899,  1485,   677,   690,   579,    74,
-     907,    76,    77,    78,   893,   855,   253,   958,  1516,  1501,
-     641,  1491,    87,    88,  1279,    74,   715,    76,    77,    78,
-    1208,   482,  1403,    74,   927,    76,    77,    78,    87,    88,
-     417,    -1,    -1,   113,   726,   115,    87,    88,   113,   567,
-     115,   121,   122,   567,   431,  1426,   121,   122,   567,   436,
+     561,    41,   851,   562,   351,   698,    71,   565,   563,   963,
+      65,   564,  1190,    68,  1455,  1347,    71,   364,   711,   712,
+    1526,   368,  1280,  1101,  1492,  1308,  1433,  1485,   677,    69,
+    1052,   677,  1071,   726,   899,  1485,   690,   907,   579,    74,
+     855,    76,    77,    78,   893,   641,   253,   958,  1516,  1501,
+     715,  1491,    87,    88,  1279,    74,  1208,    76,    77,    78,
+     927,   482,  1403,    74,    -1,    76,    77,    78,    87,    88,
+     417,   567,    -1,   113,   726,   115,    87,    88,   113,   567,
+     115,   121,   122,   567,   431,  1426,   121,   122,    -1,   436,
      939,    -1,  1433,   158,   149,    -1,    -1,   444,    -1,    -1,
       -1,    -1,   113,    -1,   115,    -1,   161,    -1,   801,    -1,
@@ -3439,6 +3934,6 @@
 };
 
-  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-     symbol of state STATE-NUM.  */
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
@@ -3530,5 +4025,5 @@
      171,   138,   115,   280,   134,   120,   378,   284,   115,   134,
      288,    31,   216,   217,   278,   266,   143,   315,   143,   317,
-     113,   355,   356,   113,   355,   356,   146,   356,   180,   270,
+     113,   355,   356,   113,   355,   356,   145,   356,   180,   270,
      114,   114,   114,   114,   138,   180,   214,   180,   118,   256,
      257,   138,   113,   134,   156,   258,   260,   324,   325,   337,
@@ -3599,201 +4094,92 @@
 };
 
-  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint16 yyr1[] =
-{
-       0,   137,   138,   139,   140,   140,   140,   140,   140,   141,
-     141,   141,   142,   142,   143,   143,   144,   144,   145,   146,
-     146,   147,   147,   147,   147,   147,   148,   148,   148,   148,
-     148,   148,   148,   148,   148,   148,   148,   148,   149,   149,
-     150,   150,   151,   151,   152,   152,   152,   152,   152,   152,
-     152,   153,   153,   153,   154,   154,   155,   155,   155,   155,
-     155,   155,   155,   155,   155,   155,   155,   155,   155,   155,
-     155,   155,   156,   156,   157,   157,   157,   157,   158,   158,
-     159,   159,   159,   159,   160,   160,   160,   161,   161,   161,
-     162,   162,   162,   162,   162,   163,   163,   163,   164,   164,
-     165,   165,   166,   166,   167,   167,   168,   168,   169,   169,
-     169,   170,   171,   171,   172,   172,   173,   173,   173,   173,
-     173,   173,   173,   173,   173,   173,   173,   173,   174,   174,
-     175,   175,   176,   176,   177,   177,   178,   178,   178,   178,
-     178,   178,   178,   178,   178,   179,   180,   180,   181,   181,
-     182,   182,   182,   182,   183,   183,   184,   185,   185,   185,
-     185,   185,   185,   186,   186,   186,   187,   187,   188,   188,
-     189,   189,   190,   191,   191,   192,   192,   193,   193,   194,
-     194,   194,   194,   195,   195,   196,   196,   197,   197,   197,
-     198,   198,   199,   199,   199,   199,   199,   199,   199,   199,
-     199,   199,   200,   200,   200,   201,   201,   201,   201,   201,
-     202,   202,   202,   202,   203,   204,   204,   204,   204,   204,
-     205,   205,   205,   205,   205,   206,   206,   207,   207,   208,
-     208,   209,   209,   210,   210,   210,   211,   211,   212,   212,
-     213,   213,   214,   214,   215,   215,   216,   216,   217,   217,
-     218,   218,   219,   219,   220,   220,   220,   220,   220,   221,
-     221,   221,   222,   222,   222,   223,   223,   223,   223,   223,
-     224,   224,   225,   225,   226,   226,   226,   227,   227,   227,
-     227,   227,   228,   228,   229,   229,   229,   229,   230,   230,
-     231,   231,   231,   231,   232,   232,   232,   232,   233,   233,
-     234,   234,   235,   235,   236,   236,   236,   236,   236,   237,
-     236,   238,   238,   238,   239,   239,   240,   240,   240,   240,
-     240,   240,   240,   240,   241,   241,   241,   241,   241,   241,
-     241,   241,   241,   241,   241,   241,   241,   241,   241,   242,
-     242,   242,   242,   242,   243,   243,   244,   244,   244,   244,
-     245,   245,   245,   245,   246,   246,   246,   246,   247,   247,
-     247,   248,   248,   248,   248,   249,   249,   249,   250,   250,
-     251,   251,   252,   251,   251,   251,   253,   253,   254,   254,
-     255,   255,   255,   255,   256,   256,   256,   256,   257,   257,
-     258,   258,   258,   258,   258,   259,   259,   260,   261,   262,
-     262,   263,   262,   264,   264,   265,   265,   266,   266,   267,
-     267,   267,   267,   267,   268,   268,   268,   268,   269,   269,
-     270,   270,   271,   271,   272,   272,   272,   272,   273,   273,
-     273,   273,   273,   274,   274,   274,   274,   274,   275,   275,
-     276,   276,   277,   277,   278,   278,   278,   279,   279,   279,
-     280,   280,   280,   281,   281,   281,   282,   282,   282,   282,
-     283,   283,   283,   284,   284,   285,   285,   285,   285,   285,
-     286,   286,   287,   287,   288,   288,   288,   288,   288,   289,
-     289,   289,   289,   290,   290,   290,   291,   292,   292,   294,
-     293,   293,   295,   295,   295,   296,   296,   297,   297,   297,
-     298,   298,   298,   298,   299,   299,   299,   300,   300,   301,
-     301,   302,   303,   302,   304,   304,   305,   305,   306,   306,
-     306,   307,   307,   308,   308,   309,   309,   310,   310,   311,
-     311,   311,   312,   311,   311,   313,   313,   313,   314,   314,
-     314,   314,   314,   314,   314,   314,   314,   315,   315,   315,
-     316,   317,   317,   318,   318,   319,   319,   320,   321,   321,
-     322,   322,   322,   323,   323,   323,   323,   324,   324,   324,
-     324,   325,   325,   326,   326,   326,   327,   327,   327,   327,
-     328,   328,   329,   329,   329,   330,   330,   330,   331,   331,
-     331,   332,   332,   332,   333,   333,   333,   334,   334,   334,
-     335,   335,   335,   336,   336,   336,   337,   337,   337,   337,
-     338,   338,   339,   339,   339,   340,   340,   340,   340,   341,
-     341,   341,   342,   342,   342,   342,   343,   343,   343,   344,
-     344,   344,   344,   345,   345,   345,   346,   346,   346,   346,
-     347,   347,   348,   348,   348,   349,   349,   350,   350,   351,
-     351,   351,   352,   352,   352,   352,   352,   353,   353,   353,
-     353,   354,   354,   354,   355,   355,   355,   356,   356,   356,
-     356,   357,   357,   357,   358,   358,   358,   358,   358,   359,
-     359,   359,   359,   360,   360,   360,   361,   361,   361,   362,
-     362,   362,   362,   362,   362,   363,   363,   363,   364,   364,
-     364,   364,   364,   365,   365,   365,   365,   366,   366,   367,
-     367,   367,   368,   368,   369,   369,   369,   369,   369,   369,
-     370,   370,   370,   370,   370,   370,   370,   370,   370,   370,
-     371,   371,   371,   371,   372,   372,   372,   373,   373,   374,
-     374,   374,   374,   374,   374,   375,   375,   375,   375,   375,
-     375,   376,   377,   377,   378,   378,   379,   379
-};
-
-  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
-{
-       0,     2,     0,     0,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       2,     1,     1,     1,     3,     3,     1,     6,     4,     3,
-       7,     2,     3,     7,     2,     2,     7,     4,     1,     3,
-       0,     1,     1,     3,     1,     2,     6,     3,     7,     3,
-       7,     2,     2,     2,     0,     2,     1,     1,     1,     2,
-       2,     2,     2,     2,     2,     4,     2,     4,     6,     1,
-       4,     4,     1,     1,     1,     1,     1,     1,     1,     4,
-       1,     3,     3,     3,     1,     3,     3,     1,     3,     3,
-       1,     3,     3,     3,     3,     1,     3,     3,     1,     3,
-       1,     3,     1,     3,     1,     3,     1,     3,     1,     5,
-       4,     1,     1,     3,     0,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     6,     7,
-       1,     3,     1,     3,     0,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     6,     4,     2,     7,     1,     3,
-       1,     2,     1,     2,     1,     2,     2,     5,     7,     5,
-       9,     5,     9,     1,     3,     1,     1,     3,     3,     2,
-       1,     2,     2,     0,     1,     2,     3,     0,     1,     2,
-       3,     3,     4,     0,     1,     1,     2,     5,     7,     6,
-       6,     4,     3,     4,     2,     3,     2,     3,     3,     3,
-       3,     5,     3,     3,     4,     1,     5,     6,     5,     6,
-       9,    10,     9,    10,     2,     1,     2,     2,     2,     1,
-       6,     8,    10,    12,    14,     0,     1,     0,     1,     1,
-       3,     4,     7,     0,     1,     3,     1,     3,     1,     1,
-       1,     3,     1,     1,     1,     3,     0,     1,     3,     4,
-       1,     3,     1,     1,     3,     3,     3,     3,     3,     2,
-       3,     6,     3,     3,     4,     1,     2,     2,     3,     5,
-       7,     7,     5,     9,     2,     2,     5,     3,     5,     4,
-       3,     4,     4,     7,     3,     3,     3,     3,     4,     6,
-       1,     1,     1,     1,     1,     1,     1,     1,     0,     1,
-       1,     2,     1,     1,     1,     1,     1,     1,     1,     0,
-       5,     1,     2,     3,     1,     2,     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,     2,     3,     3,     1,     3,     1,     2,     2,     2,
-       4,     4,     4,     4,     1,     2,     2,     3,     1,     2,
-       2,     1,     2,     2,     3,     1,     2,     2,     1,     1,
-       4,     2,     0,     6,     7,     2,     2,     2,     0,     2,
-       2,     3,     2,     3,     1,     2,     3,     2,     2,     4,
-       0,     1,     2,     2,     1,     0,     1,     2,     2,     5,
-       2,     0,     7,     2,     4,     0,     2,     0,     1,     1,
-       1,     5,     5,     5,     1,     5,     5,     9,     1,     5,
-       0,     1,     1,     5,     1,     1,     5,     5,     1,     3,
-       3,     4,     1,     1,     1,     1,     2,     1,     3,     3,
-       1,     2,     1,     3,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     2,     1,     1,     1,     2,
-       0,     2,     2,     1,     4,     0,     1,     2,     3,     4,
-       2,     2,     1,     2,     2,     5,     5,     7,     6,     1,
-       2,     2,     3,     1,     2,     2,     4,     2,     4,     0,
-       4,     2,     1,     1,     1,     0,     2,     5,     5,    13,
-       1,     1,     3,     3,     2,     3,     3,     2,     4,     1,
-       6,     9,     0,    11,     1,     3,     3,     3,     1,     1,
-       5,     2,     5,     0,     1,     1,     3,     0,     1,     1,
-       1,     1,     0,     6,     2,     1,     2,     4,     2,     3,
-       3,     3,     4,     5,     5,     5,     6,     1,     1,     1,
-       3,     0,     5,     0,     1,     1,     2,     6,     1,     3,
-       0,     1,     4,     1,     1,     1,     1,     2,     1,     2,
-       2,     1,     3,     2,     3,     3,     2,     4,     4,     3,
-       8,     3,     2,     1,     2,     6,     8,     3,     2,     3,
-       3,     4,     4,     3,     1,     1,     1,     4,     6,     3,
-       2,     3,     3,     4,     4,     3,     2,     1,     2,     2,
-       1,     3,     2,     3,     3,     2,     4,     4,     3,     6,
-       8,     3,     2,     1,     2,     2,     2,     3,     3,     2,
-       4,     4,     3,     6,     8,     3,     2,     1,     2,     2,
-       1,     1,     2,     3,     3,     2,     4,     6,     8,     1,
-       2,     2,     1,     2,     2,     3,     3,     1,     4,     4,
-       3,     5,     8,     3,     2,     3,     1,     5,     5,     6,
-       6,     1,     2,     2,     1,     2,     2,     3,     3,     1,
-       4,     4,     3,     5,     8,     3,     1,     2,     1,     2,
-       6,     5,     6,     7,     7,     1,     2,     2,     1,     2,
-       2,     3,     3,     1,     4,     4,     3,     8,     3,     1,
-       1,     2,     1,     1,     2,     3,     2,     3,     2,     3,
-       3,     2,     4,     3,     2,     3,     2,     4,     3,     2,
-       6,     6,     6,     7,     1,     2,     1,     1,     1,     2,
-       3,     2,     3,     2,     3,     3,     4,     2,     3,     4,
-       2,     5,     6,     6,     0,     1,     0,     2
-};
-
-
-#define yyerrok         (yyerrstatus = 0)
-#define yyclearin       (yychar = YYEMPTY)
-#define YYEMPTY         (-2)
-#define YYEOF           0
-
-#define YYACCEPT        goto yyacceptlab
-#define YYABORT         goto yyabortlab
-#define YYERROR         goto yyerrorlab
-
+#define yyerrok		(yyerrstatus = 0)
+#define yyclearin	(yychar = YYEMPTY)
+#define YYEMPTY		(-2)
+#define YYEOF		0
+
+#define YYACCEPT	goto yyacceptlab
+#define YYABORT		goto yyabortlab
+#define YYERROR		goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  However,
+   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
+   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+   discussed.  */
+
+#define YYFAIL		goto yyerrlab
+#if defined YYFAIL
+  /* This is here to suppress warnings from the GCC cpp's
+     -Wunused-macros.  Normally we don't worry about that warning, but
+     some users do, and we want to make it easy for users to remove
+     YYFAIL uses, which will produce warnings from Bison 2.5.  */
+#endif
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
-#define YYBACKUP(Token, Value)                                  \
-do                                                              \
-  if (yychar == YYEMPTY)                                        \
-    {                                                           \
-      yychar = (Token);                                         \
-      yylval = (Value);                                         \
-      YYPOPSTACK (yylen);                                       \
-      yystate = *yyssp;                                         \
-      goto yybackup;                                            \
-    }                                                           \
-  else                                                          \
-    {                                                           \
+#define YYBACKUP(Token, Value)					\
+do								\
+  if (yychar == YYEMPTY && yylen == 1)				\
+    {								\
+      yychar = (Token);						\
+      yylval = (Value);						\
+      YYPOPSTACK (1);						\
+      goto yybackup;						\
+    }								\
+  else								\
+    {								\
       yyerror (YY_("syntax error: cannot back up")); \
-      YYERROR;                                                  \
-    }                                                           \
-while (0)
-
-/* Error token number */
-#define YYTERROR        1
-#define YYERRCODE       256
-
-
+      YYERROR;							\
+    }								\
+while (YYID (0))
+
+
+#define YYTERROR	1
+#define YYERRCODE	256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
+    do									\
+      if (YYID (N))                                                    \
+	{								\
+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
+	}								\
+      else								\
+	{								\
+	  (Current).first_line   = (Current).last_line   =		\
+	    YYRHSLOC (Rhs, 0).last_line;				\
+	  (Current).first_column = (Current).last_column =		\
+	    YYRHSLOC (Rhs, 0).last_column;				\
+	}								\
+    while (YYID (0))
+#endif
+
+
+/* This macro is provided for backward compatibility. */
+
+#ifndef YY_LOCATION_PRINT
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
 
 /* Enable debugging if requested.  */
@@ -3805,37 +4191,39 @@
 # endif
 
-# define YYDPRINTF(Args)                        \
-do {                                            \
-  if (yydebug)                                  \
-    YYFPRINTF Args;                             \
-} while (0)
-
-/* This macro is provided for backward compatibility. */
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-#endif
-
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
-do {                                                                      \
-  if (yydebug)                                                            \
-    {                                                                     \
-      YYFPRINTF (stderr, "%s ", Title);                                   \
-      yy_symbol_print (stderr,                                            \
-                  Type, Value); \
-      YYFPRINTF (stderr, "\n");                                           \
-    }                                                                     \
-} while (0)
-
-
-/*----------------------------------------.
-| Print this symbol's value on YYOUTPUT.  |
-`----------------------------------------*/
-
+# define YYDPRINTF(Args)			\
+do {						\
+  if (yydebug)					\
+    YYFPRINTF Args;				\
+} while (YYID (0))
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
+do {									  \
+  if (yydebug)								  \
+    {									  \
+      YYFPRINTF (stderr, "%s ", Title);					  \
+      yy_symbol_print (stderr,						  \
+		  Type, Value); \
+      YYFPRINTF (stderr, "\n");						  \
+    }									  \
+} while (YYID (0))
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static void
 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE const * const yyvaluep;
+#endif
 {
-  FILE *yyo = yyoutput;
-  YYUSE (yyo);
   if (!yyvaluep)
     return;
@@ -3843,6 +4231,12 @@
   if (yytype < YYNTOKENS)
     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+  YYUSE (yyoutput);
 # endif
-  YYUSE (yytype);
+  switch (yytype)
+    {
+      default:
+	break;
+    }
 }
 
@@ -3852,9 +4246,20 @@
 `--------------------------------*/
 
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static void
 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE const * const yyvaluep;
+#endif
 {
-  YYFPRINTF (yyoutput, "%s %s (",
-             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
 
   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
@@ -3867,6 +4272,14 @@
 `------------------------------------------------------------------*/
 
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static void
 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+#else
+static void
+yy_stack_print (yybottom, yytop)
+    yytype_int16 *yybottom;
+    yytype_int16 *yytop;
+#endif
 {
   YYFPRINTF (stderr, "Stack now");
@@ -3879,9 +4292,9 @@
 }
 
-# define YY_STACK_PRINT(Bottom, Top)                            \
-do {                                                            \
-  if (yydebug)                                                  \
-    yy_stack_print ((Bottom), (Top));                           \
-} while (0)
+# define YY_STACK_PRINT(Bottom, Top)				\
+do {								\
+  if (yydebug)							\
+    yy_stack_print ((Bottom), (Top));				\
+} while (YYID (0))
 
 
@@ -3890,29 +4303,36 @@
 `------------------------------------------------*/
 
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static void
-yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+#else
+static void
+yy_reduce_print (yyvsp, yyrule)
+    YYSTYPE *yyvsp;
+    int yyrule;
+#endif
 {
-  unsigned long int yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
+  unsigned long int yylno = yyrline[yyrule];
   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-             yyrule - 1, yylno);
+	     yyrule - 1, yylno);
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr,
-                       yystos[yyssp[yyi + 1 - yynrhs]],
-                       &(yyvsp[(yyi + 1) - (yynrhs)])
-                                              );
+      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+		       &(yyvsp[(yyi + 1) - (yynrhs)])
+		       		       );
       YYFPRINTF (stderr, "\n");
     }
 }
 
-# define YY_REDUCE_PRINT(Rule)          \
-do {                                    \
-  if (yydebug)                          \
-    yy_reduce_print (yyssp, yyvsp, Rule); \
-} while (0)
+# define YY_REDUCE_PRINT(Rule)		\
+do {					\
+  if (yydebug)				\
+    yy_reduce_print (yyvsp, Rule); \
+} while (YYID (0))
 
 /* Nonzero means print parse trace.  It is left uninitialized so that
@@ -3928,5 +4348,5 @@
 
 /* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef YYINITDEPTH
+#ifndef	YYINITDEPTH
 # define YYINITDEPTH 200
 #endif
@@ -3951,6 +4371,13 @@
 #  else
 /* Return the length of YYSTR.  */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static YYSIZE_T
 yystrlen (const char *yystr)
+#else
+static YYSIZE_T
+yystrlen (yystr)
+    const char *yystr;
+#endif
 {
   YYSIZE_T yylen;
@@ -3968,6 +4395,14 @@
 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
    YYDEST.  */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static char *
 yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+yystpcpy (yydest, yysrc)
+    char *yydest;
+    const char *yysrc;
+#endif
 {
   char *yyd = yydest;
@@ -3999,25 +4434,25 @@
 
       for (;;)
-        switch (*++yyp)
-          {
-          case '\'':
-          case ',':
-            goto do_not_strip_quotes;
-
-          case '\\':
-            if (*++yyp != '\\')
-              goto do_not_strip_quotes;
-            /* Fall through.  */
-          default:
-            if (yyres)
-              yyres[yyn] = *yyp;
-            yyn++;
-            break;
-
-          case '"':
-            if (yyres)
-              yyres[yyn] = '\0';
-            return yyn;
-          }
+	switch (*++yyp)
+	  {
+	  case '\'':
+	  case ',':
+	    goto do_not_strip_quotes;
+
+	  case '\\':
+	    if (*++yyp != '\\')
+	      goto do_not_strip_quotes;
+	    /* Fall through.  */
+	  default:
+	    if (yyres)
+	      yyres[yyn] = *yyp;
+	    yyn++;
+	    break;
+
+	  case '"':
+	    if (yyres)
+	      yyres[yyn] = '\0';
+	    return yyn;
+	  }
     do_not_strip_quotes: ;
     }
@@ -4042,9 +4477,10 @@
                 yytype_int16 *yyssp, int yytoken)
 {
-  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
+  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
   YYSIZE_T yysize = yysize0;
+  YYSIZE_T yysize1;
   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
   /* Internationalized format string. */
-  const char *yyformat = YY_NULLPTR;
+  const char *yyformat = 0;
   /* Arguments of yyformat. */
   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
@@ -4054,4 +4490,8 @@
 
   /* There are many possibilities here to consider:
+     - Assume YYFAIL is not used.  It's too flawed to consider.  See
+       <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
+       for details.  YYERROR is fine as it does not invoke this
+       function.
      - If this state is a consistent state with a default action, then
        the only way this function was invoked is if the default action
@@ -4102,11 +4542,9 @@
                   }
                 yyarg[yycount++] = yytname[yyx];
-                {
-                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
-                  if (! (yysize <= yysize1
-                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
-                    return 2;
-                  yysize = yysize1;
-                }
+                yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+                if (! (yysize <= yysize1
+                       && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+                  return 2;
+                yysize = yysize1;
               }
         }
@@ -4128,10 +4566,8 @@
     }
 
-  {
-    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
-    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
-      return 2;
-    yysize = yysize1;
-  }
+  yysize1 = yysize + yystrlen (yyformat);
+  if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+    return 2;
+  yysize = yysize1;
 
   if (*yymsg_alloc < yysize)
@@ -4170,18 +4606,46 @@
 `-----------------------------------------------*/
 
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static void
 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+    const char *yymsg;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
 {
   YYUSE (yyvaluep);
+
   if (!yymsg)
     yymsg = "Deleting";
   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
 
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  YYUSE (yytype);
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
+  switch (yytype)
+    {
+
+      default:
+	break;
+    }
 }
 
 
+/* Prevent warnings from -Wmissing-prototypes.  */
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
 
 
@@ -4191,4 +4655,5 @@
 /* The semantic value of the lookahead symbol.  */
 YYSTYPE yylval;
+
 /* Number of syntax errors so far.  */
 int yynerrs;
@@ -4199,6 +4664,25 @@
 `----------*/
 
+#ifdef YYPARSE_PARAM
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+    void *YYPARSE_PARAM;
+#endif
+#else /* ! YYPARSE_PARAM */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 int
 yyparse (void)
+#else
+int
+yyparse ()
+
+#endif
+#endif
 {
     int yystate;
@@ -4207,8 +4691,8 @@
 
     /* The stacks and their tools:
-       'yyss': related to states.
-       'yyvs': related to semantic values.
-
-       Refer to the stacks through separate pointers, to allow yyoverflow
+       `yyss': related to states.
+       `yyvs': related to semantic values.
+
+       Refer to the stacks thru separate pointers, to allow yyoverflow
        to reallocate them elsewhere.  */
 
@@ -4228,5 +4712,5 @@
   int yyresult;
   /* Lookahead token as an internal (translated) token number.  */
-  int yytoken = 0;
+  int yytoken;
   /* The variables used to return semantic value and location from the
      action routines.  */
@@ -4246,6 +4730,7 @@
   int yylen = 0;
 
-  yyssp = yyss = yyssa;
-  yyvsp = yyvs = yyvsa;
+  yytoken = 0;
+  yyss = yyssa;
+  yyvs = yyvsa;
   yystacksize = YYINITDEPTH;
 
@@ -4256,4 +4741,12 @@
   yynerrs = 0;
   yychar = YYEMPTY; /* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+  yyssp = yyss;
+  yyvsp = yyvs;
+
   goto yysetstate;
 
@@ -4276,21 +4769,21 @@
 #ifdef yyoverflow
       {
-        /* Give user a chance to reallocate the stack.  Use copies of
-           these so that the &'s don't force the real ones into
-           memory.  */
-        YYSTYPE *yyvs1 = yyvs;
-        yytype_int16 *yyss1 = yyss;
-
-        /* Each stack pointer address is followed by the size of the
-           data in use in that stack, in bytes.  This used to be a
-           conditional around just the two extra args, but that might
-           be undefined if yyoverflow is a macro.  */
-        yyoverflow (YY_("memory exhausted"),
-                    &yyss1, yysize * sizeof (*yyssp),
-                    &yyvs1, yysize * sizeof (*yyvsp),
-                    &yystacksize);
-
-        yyss = yyss1;
-        yyvs = yyvs1;
+	/* Give user a chance to reallocate the stack.  Use copies of
+	   these so that the &'s don't force the real ones into
+	   memory.  */
+	YYSTYPE *yyvs1 = yyvs;
+	yytype_int16 *yyss1 = yyss;
+
+	/* Each stack pointer address is followed by the size of the
+	   data in use in that stack, in bytes.  This used to be a
+	   conditional around just the two extra args, but that might
+	   be undefined if yyoverflow is a macro.  */
+	yyoverflow (YY_("memory exhausted"),
+		    &yyss1, yysize * sizeof (*yyssp),
+		    &yyvs1, yysize * sizeof (*yyvsp),
+		    &yystacksize);
+
+	yyss = yyss1;
+	yyvs = yyvs1;
       }
 #else /* no yyoverflow */
@@ -4300,20 +4793,20 @@
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
-        goto yyexhaustedlab;
+	goto yyexhaustedlab;
       yystacksize *= 2;
       if (YYMAXDEPTH < yystacksize)
-        yystacksize = YYMAXDEPTH;
+	yystacksize = YYMAXDEPTH;
 
       {
-        yytype_int16 *yyss1 = yyss;
-        union yyalloc *yyptr =
-          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-        if (! yyptr)
-          goto yyexhaustedlab;
-        YYSTACK_RELOCATE (yyss_alloc, yyss);
-        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+	yytype_int16 *yyss1 = yyss;
+	union yyalloc *yyptr =
+	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+	if (! yyptr)
+	  goto yyexhaustedlab;
+	YYSTACK_RELOCATE (yyss_alloc, yyss);
+	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
 #  undef YYSTACK_RELOCATE
-        if (yyss1 != yyssa)
-          YYSTACK_FREE (yyss1);
+	if (yyss1 != yyssa)
+	  YYSTACK_FREE (yyss1);
       }
 # endif
@@ -4324,8 +4817,8 @@
 
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-                  (unsigned long int) yystacksize));
+		  (unsigned long int) yystacksize));
 
       if (yyss + yystacksize - 1 <= yyssp)
-        YYABORT;
+	YYABORT;
     }
 
@@ -4356,5 +4849,5 @@
     {
       YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = yylex ();
+      yychar = YYLEX;
     }
 
@@ -4396,7 +4889,5 @@
 
   yystate = yyn;
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
   goto yynewstate;
@@ -4421,5 +4912,5 @@
 
   /* If YYLEN is nonzero, implement the default value of the action:
-     '$$ = $1'.
+     `$$ = $1'.
 
      Otherwise, the following line sets YYVAL to garbage.
@@ -4435,281 +4926,325 @@
     {
         case 2:
-#line 305 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 306 "parser.yy"
     { typedefTable.enterScope(); }
-#line 4440 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 3:
-#line 309 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 310 "parser.yy"
     { typedefTable.leaveScope(); }
-#line 4446 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 4:
-#line 316 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[0].tok) ) ); }
-#line 4452 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 317 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
     break;
 
   case 5:
-#line 317 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[0].tok) ) ); }
-#line 4458 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 318 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
     break;
 
   case 6:
-#line 318 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[0].tok) ) ); }
-#line 4464 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 319 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
     break;
 
   case 7:
-#line 319 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[0].tok) ) ); }
-#line 4470 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 320 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
     break;
 
   case 8:
-#line 320 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[0].tok) ) ); }
-#line 4476 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 321 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
     break;
 
   case 18:
-#line 345 "parser.yy" /* yacc.c:1646  */
-    { (yyval.constant) = build_constantStr( *(yyvsp[0].str) ); }
-#line 4482 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 346 "parser.yy"
+    { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].str) ); }
     break;
 
   case 19:
-#line 349 "parser.yy" /* yacc.c:1646  */
-    { (yyval.str) = (yyvsp[0].tok); }
-#line 4488 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 350 "parser.yy"
+    { (yyval.str) = (yyvsp[(1) - (1)].tok); }
     break;
 
   case 20:
-#line 351 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 352 "parser.yy"
     {
-			appendStr( (yyvsp[-1].str), (yyvsp[0].tok) );						// append 2nd juxtaposed string to 1st
-			delete (yyvsp[0].tok);									// allocated by lexer
-			(yyval.str) = (yyvsp[-1].str);									// conversion from tok to str
+			appendStr( (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].tok) );						// append 2nd juxtaposed string to 1st
+			delete (yyvsp[(2) - (2)].tok);									// allocated by lexer
+			(yyval.str) = (yyvsp[(1) - (2)].str);									// conversion from tok to str
 		}
-#line 4498 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 21:
-#line 362 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
-#line 4504 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 363 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
     break;
 
   case 22:
-#line 364 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_constantZeroOne( *(yyvsp[0].tok) ) ); }
-#line 4510 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 365 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_constantZeroOne( *(yyvsp[(1) - (1)].tok) ) ); }
     break;
 
   case 24:
-#line 367 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[-1].en); }
-#line 4516 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 368 "parser.yy"
+    { (yyval.en) = (yyvsp[(2) - (3)].en); }
     break;
 
   case 25:
-#line 369 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[-1].sn) ) ); }
-#line 4522 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 370 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); }
     break;
 
   case 27:
-#line 379 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[-5].en), (yyvsp[-2].en) ) ); }
-#line 4528 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 380 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
     break;
 
   case 28:
-#line 381 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[-3].en), (yyvsp[-1].en) ) ); }
-#line 4534 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 382 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
     break;
 
   case 29:
-#line 383 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-2].en), build_varref( (yyvsp[0].tok) ) ) ); }
-#line 4540 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 384 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
     break;
 
   case 30:
-#line 385 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-6].en), build_tuple( (yyvsp[-2].en) ) ) ); }
-#line 4546 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 386 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
     break;
 
   case 31:
-#line 387 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-1].en), build_field_name_REALFRACTIONconstant( *(yyvsp[0].tok) ) ) ); }
-#line 4552 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 388 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (2)].en), build_field_name_REALFRACTIONconstant( *(yyvsp[(2) - (2)].tok) ) ) ); }
     break;
 
   case 32:
-#line 389 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[-2].en), build_varref( (yyvsp[0].tok) ) ) ); }
-#line 4558 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 390 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
     break;
 
   case 33:
-#line 391 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[-6].en), build_tuple( (yyvsp[-2].en) ) ) ); }
-#line 4564 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 392 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
     break;
 
   case 34:
-#line 393 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[-1].en) ) ); }
-#line 4570 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 394 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
     break;
 
   case 35:
-#line 395 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[-1].en) ) ); }
-#line 4576 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 396 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
     break;
 
   case 36:
-#line 397 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[-5].decl), new InitializerNode( (yyvsp[-2].in), true ) ) ); }
-#line 4582 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 398 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
     break;
 
   case 37:
-#line 399 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 400 "parser.yy"
     {
 			Token fn;
 			fn.str = new std::string( "?{}" );			// location undefined - use location of '{'?
-			(yyval.en) = new ExpressionNode( new ConstructorExpr( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[-3].en) )->set_last( (yyvsp[-1].en) ) ) ) );
+			(yyval.en) = new ExpressionNode( new ConstructorExpr( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_last( (yyvsp[(3) - (4)].en) ) ) ) );
 		}
-#line 4592 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 39:
-#line 409 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( (yyvsp[0].en) )); }
-#line 4598 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 410 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     break;
 
   case 40:
-#line 414 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = 0; }
-#line 4604 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 415 "parser.yy"
+    { (yyval.en) = nullptr; }
     break;
 
   case 43:
-#line 420 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
-#line 4610 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 421 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     break;
 
   case 45:
-#line 426 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[-1].tok) ) ), maybeMoveBuild<Expression>( (yyvsp[0].en) ) ) ); }
-#line 4616 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 427 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[(1) - (2)].tok) ) ), maybeMoveBuild<Expression>( (yyvsp[(2) - (2)].en) ) ) ); }
     break;
 
   case 46:
-#line 428 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[-5].tok) ) ), build_tuple( (yyvsp[-2].en) ) ) ); }
-#line 4622 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 429 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[(1) - (6)].tok) ) ), build_tuple( (yyvsp[(4) - (6)].en) ) ) ); }
     break;
 
   case 47:
-#line 430 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-2].en), maybeMoveBuild<Expression>( (yyvsp[0].en) ) ) ); }
-#line 4628 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 431 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), maybeMoveBuild<Expression>( (yyvsp[(3) - (3)].en) ) ) ); }
     break;
 
   case 48:
-#line 432 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-6].en), build_tuple( (yyvsp[-2].en) ) ) ); }
-#line 4634 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 433 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
     break;
 
   case 49:
-#line 434 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[-2].en), maybeMoveBuild<Expression>( (yyvsp[0].en) ) ) ); }
-#line 4640 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 435 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), maybeMoveBuild<Expression>( (yyvsp[(3) - (3)].en) ) ) ); }
     break;
 
   case 50:
-#line 436 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[-6].en), build_tuple( (yyvsp[-2].en) ) ) ); }
-#line 4646 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 437 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
     break;
 
   case 51:
-#line 441 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_constantInteger( *(yyvsp[-1].tok) ), (yyvsp[0].en) ) ); }
-#line 4652 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 442 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_constantInteger( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
     break;
 
   case 52:
-#line 443 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_field_name_FLOATINGconstant( *(yyvsp[-1].tok) ), (yyvsp[0].en) ) ); }
-#line 4658 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 444 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_field_name_FLOATINGconstant( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
     break;
 
   case 53:
-#line 445 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 446 "parser.yy"
     {
-			if( (*(yyvsp[-1].tok)) == "0" || (*(yyvsp[-1].tok)) == "1" ) {
-				(yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_constantZeroOne( *(yyvsp[-1].tok) ), (yyvsp[0].en) ) );
+			if( (*(yyvsp[(1) - (2)].tok)) == "0" || (*(yyvsp[(1) - (2)].tok)) == "1" ) {
+				(yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_constantZeroOne( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) );
 			} else {
-				(yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_varref( (yyvsp[-1].tok) ), (yyvsp[0].en) ) );
+				(yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_varref( (yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) );
 			}
 		}
-#line 4670 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 54:
-#line 456 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 457 "parser.yy"
     { (yyval.en) = nullptr; }
-#line 4676 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 55:
-#line 458 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 459 "parser.yy"
     {
-			Expression * constant = build_field_name_REALFRACTIONconstant( *(yyvsp[0].tok) );
-			(yyval.en) = (yyvsp[-1].en) != nullptr ? new ExpressionNode( build_fieldSel( (yyvsp[-1].en),  constant ) ) : new ExpressionNode( constant );
+			Expression * constant = build_field_name_REALFRACTIONconstant( *(yyvsp[(2) - (2)].tok) );
+			(yyval.en) = (yyvsp[(1) - (2)].en) != nullptr ? new ExpressionNode( build_fieldSel( (yyvsp[(1) - (2)].en),  constant ) ) : new ExpressionNode( constant );
 		}
-#line 4685 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 57:
-#line 469 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[0].en); }
-#line 4691 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 470 "parser.yy"
+    { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
 
   case 58:
-#line 471 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( (yyvsp[0].constant) ); }
-#line 4697 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 472 "parser.yy"
+    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
     break;
 
   case 59:
-#line 473 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[0].en)->set_extension( true ); }
-#line 4703 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 474 "parser.yy"
+    { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
     break;
 
   case 60:
-#line 478 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 479 "parser.yy"
     {
-			switch ( (yyvsp[-1].op) ) {
+			switch ( (yyvsp[(1) - (2)].op) ) {
 			  case OperKinds::AddressOf:
-				(yyval.en) = new ExpressionNode( build_addressOf( (yyvsp[0].en) ) );
+				(yyval.en) = new ExpressionNode( build_addressOf( (yyvsp[(2) - (2)].en) ) );
 				break;
 			  case OperKinds::PointTo:
-				(yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[-1].op), (yyvsp[0].en) ) );
+				(yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) );
 				break;
 			  default:
@@ -4717,447 +5252,519 @@
 			}
 		}
-#line 4720 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 61:
-#line 491 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[-1].op), (yyvsp[0].en) ) ); }
-#line 4726 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 492 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
     break;
 
   case 62:
-#line 493 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[0].en) ) ); }
-#line 4732 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 494 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
     break;
 
   case 63:
-#line 495 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[0].en) ) ); }
-#line 4738 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 496 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
     break;
 
   case 64:
-#line 497 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[0].en) ) ); }
-#line 4744 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 498 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
     break;
 
   case 65:
-#line 499 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[-1].decl) ) ); }
-#line 4750 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 500 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
     break;
 
   case 66:
-#line 501 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[0].en) ) ); }
-#line 4756 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 502 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
     break;
 
   case 67:
-#line 503 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[-1].decl) ) ); }
-#line 4762 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 504 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
     break;
 
   case 68:
-#line 505 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[-3].decl), build_varref( (yyvsp[-1].tok) ) ) ); }
-#line 4768 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 506 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
     break;
 
   case 69:
-#line 507 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[0].tok) ), nullptr ) ); }
-#line 4774 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 508 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
     break;
 
   case 70:
-#line 509 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[-3].tok) ), (yyvsp[-1].en) ) ); }
-#line 4780 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 510 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
     break;
 
   case 71:
-#line 511 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[-3].tok) ), (yyvsp[-1].decl) ) ); }
-#line 4786 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 512 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
     break;
 
   case 72:
-#line 517 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 518 "parser.yy"
     { (yyval.op) = OperKinds::PointTo; }
-#line 4792 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 73:
-#line 518 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 519 "parser.yy"
     { (yyval.op) = OperKinds::AddressOf; }
-#line 4798 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 74:
-#line 524 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 525 "parser.yy"
     { (yyval.op) = OperKinds::UnPlus; }
-#line 4804 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 75:
-#line 525 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 526 "parser.yy"
     { (yyval.op) = OperKinds::UnMinus; }
-#line 4810 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 76:
-#line 526 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 527 "parser.yy"
     { (yyval.op) = OperKinds::Neg; }
-#line 4816 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 77:
-#line 527 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 528 "parser.yy"
     { (yyval.op) = OperKinds::BitNeg; }
-#line 4822 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 79:
-#line 533 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[-2].decl), (yyvsp[0].en) ) ); }
-#line 4828 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 534 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
     break;
 
   case 81:
-#line 541 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4834 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 542 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 82:
-#line 543 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4840 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 544 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 83:
-#line 545 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4846 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 546 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 85:
-#line 551 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4852 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 552 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 86:
-#line 553 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4858 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 554 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 88:
-#line 559 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4864 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 560 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 89:
-#line 561 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4870 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 562 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 91:
-#line 567 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4876 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 568 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 92:
-#line 569 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4882 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 570 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 93:
-#line 571 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4888 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 572 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 94:
-#line 573 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4894 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 574 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 96:
-#line 579 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4900 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 580 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 97:
-#line 581 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4906 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 582 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 99:
-#line 587 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4912 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 588 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 101:
-#line 593 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4918 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 594 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 103:
-#line 599 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4924 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 600 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 105:
-#line 605 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[-2].en), (yyvsp[0].en), true ) ); }
-#line 4930 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 606 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
     break;
 
   case 107:
-#line 611 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[-2].en), (yyvsp[0].en), false ) ); }
-#line 4936 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 612 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
     break;
 
   case 109:
-#line 617 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-4].en), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4942 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 618 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
     break;
 
   case 110:
-#line 620 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-3].en), (yyvsp[-3].en), (yyvsp[0].en) ) ); }
-#line 4948 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 621 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
     break;
 
   case 113:
-#line 633 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[-1].op), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 4954 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 634 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 114:
-#line 640 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 641 "parser.yy"
     { (yyval.en) = nullptr; }
-#line 4960 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 116:
-#line 645 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 646 "parser.yy"
     { (yyval.op) = OperKinds::Assign; }
-#line 4966 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 117:
-#line 646 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 647 "parser.yy"
     { (yyval.op) = OperKinds::AtAssn; }
-#line 4972 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 118:
-#line 647 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 648 "parser.yy"
     { (yyval.op) = OperKinds::MulAssn; }
-#line 4978 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 119:
-#line 648 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 649 "parser.yy"
     { (yyval.op) = OperKinds::DivAssn; }
-#line 4984 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 120:
-#line 649 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 650 "parser.yy"
     { (yyval.op) = OperKinds::ModAssn; }
-#line 4990 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 121:
-#line 650 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 651 "parser.yy"
     { (yyval.op) = OperKinds::PlusAssn; }
-#line 4996 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 122:
-#line 651 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 652 "parser.yy"
     { (yyval.op) = OperKinds::MinusAssn; }
-#line 5002 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 123:
-#line 652 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 653 "parser.yy"
     { (yyval.op) = OperKinds::LSAssn; }
-#line 5008 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 124:
-#line 653 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 654 "parser.yy"
     { (yyval.op) = OperKinds::RSAssn; }
-#line 5014 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 125:
-#line 654 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 655 "parser.yy"
     { (yyval.op) = OperKinds::AndAssn; }
-#line 5020 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 126:
-#line 655 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 656 "parser.yy"
     { (yyval.op) = OperKinds::ERAssn; }
-#line 5026 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 127:
-#line 656 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 657 "parser.yy"
     { (yyval.op) = OperKinds::OrAssn; }
-#line 5032 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 128:
-#line 667 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[-2].en) ) ) ); }
-#line 5038 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 668 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
     break;
 
   case 129:
-#line 669 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[-4].en)->set_last( (yyvsp[-2].en) ) ) ); }
-#line 5044 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 670 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
     break;
 
   case 131:
-#line 675 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
-#line 5050 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 676 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     break;
 
   case 133:
-#line 681 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 5056 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 682 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 134:
-#line 686 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = 0; }
-#line 5062 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 687 "parser.yy"
+    { (yyval.en) = nullptr; }
     break;
 
   case 138:
-#line 695 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (yyvsp[0].sn); }
-#line 5068 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 696 "parser.yy"
+    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
     break;
 
   case 144:
-#line 702 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 703 "parser.yy"
     {
 			Token fn;
 			fn.str = new string( "^?{}" );				// location undefined
-			(yyval.sn) = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[-4].en) )->set_last( (yyvsp[-2].en) ) ) ) ) );
+			(yyval.sn) = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(2) - (6)].en) )->set_last( (yyvsp[(4) - (6)].en) ) ) ) ) );
 		}
-#line 5078 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 145:
-#line 712 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 713 "parser.yy"
     {
-			(yyval.sn) = (yyvsp[0].sn)->add_label( (yyvsp[-3].tok) );
+			(yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
 		}
-#line 5086 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 146:
-#line 719 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 720 "parser.yy"
     { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
-#line 5092 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 147:
-#line 726 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[-2].sn) ) ); }
-#line 5098 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 727 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
     break;
 
   case 149:
-#line 732 "parser.yy" /* yacc.c:1646  */
-    { if ( (yyvsp[-2].sn) != 0 ) { (yyvsp[-2].sn)->set_last( (yyvsp[0].sn) ); (yyval.sn) = (yyvsp[-2].sn); } }
-#line 5104 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 733 "parser.yy"
+    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
     break;
 
   case 150:
-#line 737 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( (yyvsp[0].decl) ); }
-#line 5110 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 738 "parser.yy"
+    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     break;
 
   case 151:
-#line 739 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 740 "parser.yy"
     {	// mark all fields in list
-			for ( DeclarationNode *iter = (yyvsp[0].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
+			for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
 				iter->set_extension( true );
-			(yyval.sn) = new StatementNode( (yyvsp[0].decl) );
+			(yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) );
 		}
-#line 5120 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 152:
-#line 745 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( (yyvsp[0].decl) ); }
-#line 5126 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 746 "parser.yy"
+    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     break;
 
   case 155:
-#line 752 "parser.yy" /* yacc.c:1646  */
-    { if ( (yyvsp[-1].sn) != 0 ) { (yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ); (yyval.sn) = (yyvsp[-1].sn); } }
-#line 5132 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 753 "parser.yy"
+    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
     break;
 
   case 156:
-#line 757 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[-1].en) ) ); }
-#line 5138 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 758 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
     break;
 
   case 157:
-#line 763 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_if( (yyvsp[-2].en), (yyvsp[0].sn), nullptr ) ); }
-#line 5144 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 764 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
     break;
 
   case 158:
-#line 765 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_if( (yyvsp[-4].en), (yyvsp[-2].sn), (yyvsp[0].sn) ) ); }
-#line 5150 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 766 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
     break;
 
   case 159:
-#line 767 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
-#line 5156 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 768 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     break;
 
   case 160:
-#line 769 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 770 "parser.yy"
     {
-			StatementNode *sw = new StatementNode( build_switch( (yyvsp[-6].en), (yyvsp[-1].sn) ) );
+			StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
 			// The semantics of the declaration list is changed to include associated initialization, which is performed
 			// *before* the transfer to the appropriate case clause by hoisting the declarations into a compound
@@ -5165,2962 +5772,3427 @@
 			// therefore, are removed from the grammar even though C allows it. The change also applies to choose
 			// statement.
-			(yyval.sn) = (yyvsp[-2].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[-2].decl) ))->set_last( sw )) ) ) : sw;
+			(yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
 		}
-#line 5170 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 161:
-#line 779 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
-#line 5176 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 780 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     break;
 
   case 162:
-#line 781 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 782 "parser.yy"
     {
-			StatementNode *sw = new StatementNode( build_switch( (yyvsp[-6].en), (yyvsp[-1].sn) ) );
-			(yyval.sn) = (yyvsp[-2].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[-2].decl) ))->set_last( sw )) ) ) : sw;
+			StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
+			(yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
 		}
-#line 5185 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 163:
-#line 791 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[0].en); }
-#line 5191 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 792 "parser.yy"
+    { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
 
   case 164:
-#line 793 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 5197 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 794 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     break;
 
   case 166:
-#line 798 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_case( (yyvsp[0].en) ) ); }
-#line 5203 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 799 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
     break;
 
   case 167:
-#line 800 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)((yyvsp[-2].sn)->set_last( new StatementNode( build_case( (yyvsp[0].en) ) ) ) ); }
-#line 5209 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 801 "parser.yy"
+    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
     break;
 
   case 168:
-#line 804 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (yyvsp[-1].sn); }
-#line 5215 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 805 "parser.yy"
+    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
     break;
 
   case 169:
-#line 805 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 806 "parser.yy"
     { (yyval.sn) = new StatementNode( build_default() ); }
-#line 5221 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 171:
-#line 811 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)( (yyvsp[-1].sn)->set_last( (yyvsp[0].sn) )); }
-#line 5227 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 812 "parser.yy"
+    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
     break;
 
   case 172:
-#line 815 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ); }
-#line 5233 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 816 "parser.yy"
+    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
     break;
 
   case 173:
-#line 820 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = 0; }
-#line 5239 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 821 "parser.yy"
+    { (yyval.sn) = nullptr; }
     break;
 
   case 175:
-#line 826 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ); }
-#line 5245 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 827 "parser.yy"
+    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
     break;
 
   case 176:
-#line 828 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)( (yyvsp[-2].sn)->set_last( (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ) ) ); }
-#line 5251 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 829 "parser.yy"
+    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); }
     break;
 
   case 177:
-#line 833 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = 0; }
-#line 5257 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 834 "parser.yy"
+    { (yyval.sn) = nullptr; }
     break;
 
   case 179:
-#line 839 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( (yyvsp[0].sn) ); }
-#line 5263 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 840 "parser.yy"
+    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
     break;
 
   case 180:
-#line 841 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (yyvsp[-2].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ) ) ) ); }
-#line 5269 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 842 "parser.yy"
+    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); }
     break;
 
   case 181:
-#line 843 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)( (yyvsp[-2].sn)->set_last( (yyvsp[-1].sn)->append_last_case( (yyvsp[0].sn) ))); }
-#line 5275 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 844 "parser.yy"
+    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
     break;
 
   case 182:
-#line 845 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)( (yyvsp[-3].sn)->set_last( (yyvsp[-2].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ) ) ) ) ) ); }
-#line 5281 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 846 "parser.yy"
+    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(3) - (4)].sn)->set_last( (yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
     break;
 
   case 183:
-#line 850 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 851 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
-#line 5287 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 185:
-#line 856 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = 0; }
-#line 5293 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 857 "parser.yy"
+    { (yyval.sn) = nullptr; }
     break;
 
   case 186:
-#line 858 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = 0; }
-#line 5299 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 859 "parser.yy"
+    { (yyval.sn) = nullptr; }
     break;
 
   case 187:
-#line 863 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_while( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
-#line 5305 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 864 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
     break;
 
   case 188:
-#line 865 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_while( (yyvsp[-2].en), (yyvsp[-5].sn), true ) ); }
-#line 5311 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 866 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn), true ) ); }
     break;
 
   case 189:
-#line 867 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_for( (yyvsp[-2].fctl), (yyvsp[0].sn) ) ); }
-#line 5317 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 868 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
     break;
 
   case 190:
-#line 872 "parser.yy" /* yacc.c:1646  */
-    { (yyval.fctl) = new ForCtl( (yyvsp[-5].en), (yyvsp[-2].en), (yyvsp[0].en) ); }
-#line 5323 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 873 "parser.yy"
+    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
     break;
 
   case 191:
-#line 874 "parser.yy" /* yacc.c:1646  */
-    { (yyval.fctl) = new ForCtl( (yyvsp[-3].decl), (yyvsp[-2].en), (yyvsp[0].en) ); }
-#line 5329 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 875 "parser.yy"
+    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
     break;
 
   case 192:
-#line 879 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[-1].tok), BranchStmt::Goto ) ); }
-#line 5335 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 880 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
     break;
 
   case 193:
-#line 883 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[-1].en) ) ); }
-#line 5341 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 884 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
     break;
 
   case 194:
-#line 886 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 887 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
-#line 5347 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 195:
-#line 890 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[-1].tok), BranchStmt::Continue ) ); }
-#line 5353 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 891 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); }
     break;
 
   case 196:
-#line 893 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 894 "parser.yy"
     { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
-#line 5359 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 197:
-#line 897 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[-1].tok), BranchStmt::Break ) ); }
-#line 5365 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 898 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); }
     break;
 
   case 198:
-#line 899 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_return( (yyvsp[-1].en) ) ); }
-#line 5371 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 900 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
     break;
 
   case 199:
-#line 901 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-1].en) ) ); }
-#line 5377 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 902 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     break;
 
   case 200:
-#line 903 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-1].en) ) ); }
-#line 5383 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 904 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     break;
 
   case 201:
-#line 905 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-3].en) ) ); }
-#line 5389 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 906 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
     break;
 
   case 202:
-#line 910 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-1].sn), (yyvsp[0].sn), 0 ) ); }
-#line 5395 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 911 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
     break;
 
   case 203:
-#line 912 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-1].sn), 0, (yyvsp[0].sn) ) ); }
-#line 5401 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 913 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
     break;
 
   case 204:
-#line 914 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-2].sn), (yyvsp[-1].sn), (yyvsp[0].sn) ) ); }
-#line 5407 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 915 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
     break;
 
   case 206:
-#line 921 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ); }
-#line 5413 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 922 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
     break;
 
   case 207:
-#line 923 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)(yyvsp[-5].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ) ); }
-#line 5419 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 924 "parser.yy"
+    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
     break;
 
   case 208:
-#line 925 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ); }
-#line 5425 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 926 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
     break;
 
   case 209:
-#line 927 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)(yyvsp[-5].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ) ); }
-#line 5431 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 928 "parser.yy"
+    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
     break;
 
   case 210:
-#line 932 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ); }
-#line 5437 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 933 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
     break;
 
   case 211:
-#line 934 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)(yyvsp[-9].sn)->set_last( new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ) ); }
-#line 5443 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 935 "parser.yy"
+    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
     break;
 
   case 212:
-#line 936 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ); }
-#line 5449 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 937 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
     break;
 
   case 213:
-#line 938 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = (StatementNode *)(yyvsp[-9].sn)->set_last( new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ) ); }
-#line 5455 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 939 "parser.yy"
+    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
     break;
 
   case 214:
-#line 943 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 944 "parser.yy"
     {
-			(yyval.sn) = new StatementNode( build_finally( (yyvsp[0].sn) ) );
+			(yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) );
 		}
-#line 5463 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 216:
-#line 956 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 957 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) );
+			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) );
 		}
-#line 5472 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 217:
-#line 961 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
-#line 5478 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 962 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 218:
-#line 963 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 964 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[-1].decl)->addName( (yyvsp[0].tok) );
+			(yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) );
 		}
-#line 5487 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 220:
-#line 972 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-4].flag), (yyvsp[-2].constant), 0 ) ); }
-#line 5493 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 973 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); }
     break;
 
   case 221:
-#line 974 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-6].flag), (yyvsp[-4].constant), (yyvsp[-2].en) ) ); }
-#line 5499 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 975 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); }
     break;
 
   case 222:
-#line 976 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-8].flag), (yyvsp[-6].constant), (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
-#line 5505 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 977 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); }
     break;
 
   case 223:
-#line 978 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-10].flag), (yyvsp[-8].constant), (yyvsp[-6].en), (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
-#line 5511 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 979 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ) ); }
     break;
 
   case 224:
-#line 980 "parser.yy" /* yacc.c:1646  */
-    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-12].flag), (yyvsp[-9].constant), 0, (yyvsp[-6].en), (yyvsp[-4].en), (yyvsp[-2].label) ) ); }
-#line 5517 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 981 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ) ); }
     break;
 
   case 225:
-#line 985 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 986 "parser.yy"
     { (yyval.flag) = false; }
-#line 5523 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 226:
-#line 987 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 988 "parser.yy"
     { (yyval.flag) = true; }
-#line 5529 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 227:
-#line 992 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = 0; }
-#line 5535 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 993 "parser.yy"
+    { (yyval.en) = nullptr; }
     break;
 
   case 230:
-#line 999 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
-#line 5541 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1000 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
     break;
 
   case 231:
-#line 1004 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[-3].constant), (yyvsp[-1].en) ) ); }
-#line 5547 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1005 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
     break;
 
   case 232:
-#line 1006 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[-5].en), (yyvsp[-3].constant), (yyvsp[-1].en) ) ); }
-#line 5553 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1007 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
     break;
 
   case 233:
-#line 1011 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = 0; }
-#line 5559 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1012 "parser.yy"
+    { (yyval.en) = nullptr; }
     break;
 
   case 234:
-#line 1013 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( (yyvsp[0].constant) ); }
-#line 5565 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1014 "parser.yy"
+    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
     break;
 
   case 235:
-#line 1015 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( new ExpressionNode( (yyvsp[0].constant) ) ); }
-#line 5571 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1016 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
     break;
 
   case 236:
-#line 1020 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1021 "parser.yy"
     {
-			(yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[0].tok) );
-			delete (yyvsp[0].tok);									// allocated by lexer
+			(yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) );
+			delete (yyvsp[(1) - (1)].tok);									// allocated by lexer
 		}
-#line 5580 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 237:
-#line 1025 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1026 "parser.yy"
     {
-			(yyval.label) = (yyvsp[-2].label); (yyvsp[-2].label)->labels.push_back( *(yyvsp[0].tok) );
-			delete (yyvsp[0].tok);									// allocated by lexer
+			(yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) );
+			delete (yyvsp[(3) - (3)].tok);									// allocated by lexer
 		}
-#line 5589 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 238:
-#line 1035 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = 0; }
-#line 5595 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1036 "parser.yy"
+    { (yyval.decl) = nullptr; }
     break;
 
   case 241:
-#line 1042 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
-#line 5601 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1043 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 242:
-#line 1047 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = 0; }
-#line 5607 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1048 "parser.yy"
+    { (yyval.decl) = nullptr; }
     break;
 
   case 245:
-#line 1054 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
-#line 5613 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1055 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 250:
-#line 1068 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1069 "parser.yy"
     {}
-#line 5619 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 251:
-#line 1069 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1070 "parser.yy"
     {}
-#line 5625 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 259:
-#line 1098 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1099 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[-1].decl)->addInitializer( (yyvsp[0].in) );
+			(yyval.decl) = (yyvsp[(1) - (2)].decl)->addInitializer( (yyvsp[(2) - (2)].in) );
 		}
-#line 5634 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 260:
-#line 1105 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1106 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[-2].decl) )->addInitializer( (yyvsp[0].in) );;
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].in) );;
 		}
-#line 5643 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 261:
-#line 1110 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1111 "parser.yy"
     {
-			typedefTable.addToEnclosingScope( *(yyvsp[-1].tok), TypedefTable::ID );
-			(yyval.decl) = (yyvsp[-5].decl)->appendList( (yyvsp[-5].decl)->cloneType( (yyvsp[-1].tok) )->addInitializer( (yyvsp[0].in) ) );
+			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneType( (yyvsp[(5) - (6)].tok) )->addInitializer( (yyvsp[(6) - (6)].in) ) );
 		}
-#line 5652 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 262:
-#line 1120 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1121 "parser.yy"
     {
-			typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
-			(yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) );
+			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
+			(yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) )->addAsmName( (yyvsp[(3) - (3)].constant) );
 		}
-#line 5661 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 263:
-#line 1125 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1126 "parser.yy"
     {
-			typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
-			(yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) );
+			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
+			(yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) )->addAsmName( (yyvsp[(3) - (3)].constant) );
 		}
-#line 5670 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 264:
-#line 1130 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1131 "parser.yy"
     {
-			typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
-			(yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-3].decl) )->addName( (yyvsp[-1].tok) );
+			typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
+			(yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addName( (yyvsp[(3) - (4)].tok) )->addAsmName( (yyvsp[(4) - (4)].constant) );
 		}
-#line 5679 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 265:
-#line 1138 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1139 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[0].decl);
+			(yyval.decl) = (yyvsp[(1) - (1)].decl);
 		}
-#line 5688 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 266:
-#line 1143 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1144 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) );
+			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );
 		}
-#line 5697 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 267:
-#line 1148 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1149 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) );
+			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );
 		}
-#line 5706 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 268:
-#line 1153 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1154 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[-1].decl) );
+			(yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(2) - (3)].decl) );
 		}
-#line 5715 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 269:
-#line 1158 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1159 "parser.yy"
     {
-			typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::ID );
-			(yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
+			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
 		}
-#line 5724 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 270:
-#line 1189 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1190 "parser.yy"
     {
-			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), (yyvsp[-6].decl), (yyvsp[-2].decl), 0, true );
+			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
 		}
-#line 5732 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 271:
-#line 1193 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1194 "parser.yy"
     {
-			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), (yyvsp[-6].decl), (yyvsp[-2].decl), 0, true );
+			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
 		}
-#line 5740 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 272:
-#line 1200 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-2].decl) ); }
-#line 5746 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1201 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     break;
 
   case 273:
-#line 1204 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-6].decl)->appendList( (yyvsp[-2].decl) ) ); }
-#line 5752 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1205 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
     break;
 
   case 274:
-#line 1209 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1210 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[0].decl)->addTypedef();
+			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
 		}
-#line 5761 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 275:
-#line 1214 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1215 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[0].decl)->addTypedef();
+			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
 		}
-#line 5770 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 276:
-#line 1219 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1220 "parser.yy"
     {
-			typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD );
-			(yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
+			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
+			(yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
 		}
-#line 5779 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 277:
-#line 1230 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1231 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) )->addTypedef();
+			(yyval.decl) = (yyvsp[(3) - (3)].decl)->addType( (yyvsp[(2) - (3)].decl) )->addTypedef();
 		}
-#line 5788 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 278:
-#line 1235 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1236 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneBaseType( (yyvsp[0].decl) )->addTypedef() );
+			(yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneBaseType( (yyvsp[(5) - (5)].decl) )->addTypedef() );
 		}
-#line 5797 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 279:
-#line 1240 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1241 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[-3].decl) )->addTypedef();
+			(yyval.decl) = (yyvsp[(4) - (4)].decl)->addType( (yyvsp[(3) - (4)].decl) )->addQualifiers( (yyvsp[(1) - (4)].decl) )->addTypedef();
 		}
-#line 5806 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 280:
-#line 1245 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1246 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-2].decl) )->addTypedef();
+			(yyval.decl) = (yyvsp[(3) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addTypedef();
 		}
-#line 5815 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 281:
-#line 1250 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1251 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-3].decl) )->addTypedef()->addType( (yyvsp[-3].decl) );
+			(yyval.decl) = (yyvsp[(4) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addTypedef()->addType( (yyvsp[(1) - (4)].decl) );
 		}
-#line 5824 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 282:
-#line 1259 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1260 "parser.yy"
     {
-			typedefTable.addToEnclosingScope( *(yyvsp[-2].tok), TypedefTable::TD );
+			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
 			(yyval.decl) = DeclarationNode::newName( 0 ); // XXX
 		}
-#line 5833 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 283:
-#line 1264 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1265 "parser.yy"
     {
-			typedefTable.addToEnclosingScope( *(yyvsp[-2].tok), TypedefTable::TD );
+			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
 			(yyval.decl) = DeclarationNode::newName( 0 ); // XXX
 		}
-#line 5842 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 288:
-#line 1281 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1282 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = ( (yyvsp[-2].decl)->addType( (yyvsp[-3].decl) ))->addInitializer( (yyvsp[0].in) );
+			(yyval.decl) = ( (yyvsp[(2) - (4)].decl)->addType( (yyvsp[(1) - (4)].decl) ))->addAsmName( (yyvsp[(3) - (4)].constant) )->addInitializer( (yyvsp[(4) - (4)].in) );
 		}
-#line 5851 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 289:
-#line 1286 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1287 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[-5].decl)->appendList( (yyvsp[-5].decl)->cloneBaseType( (yyvsp[-2].decl)->addInitializer( (yyvsp[0].in) ) ) );
+			(yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneBaseType( (yyvsp[(4) - (6)].decl)->addAsmName( (yyvsp[(5) - (6)].constant) )->addInitializer( (yyvsp[(6) - (6)].in) ) ) );
 		}
-#line 5860 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 298:
-#line 1308 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = 0; }
-#line 5866 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1309 "parser.yy"
+    { (yyval.decl) = nullptr; }
     break;
 
   case 301:
-#line 1320 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 5872 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1321 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 304:
-#line 1331 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1332 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
-#line 5878 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 305:
-#line 1333 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1334 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
-#line 5884 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 306:
-#line 1335 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1336 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
-#line 5890 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 307:
-#line 1337 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1338 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
-#line 5896 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 308:
-#line 1339 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1340 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
-#line 5902 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 309:
-#line 1341 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1342 "parser.yy"
     {
 			typedefTable.enterScope();
 		}
-#line 5910 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 310:
-#line 1345 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1346 "parser.yy"
     {
 			typedefTable.leaveScope();
-			(yyval.decl) = DeclarationNode::newForall( (yyvsp[-1].decl) );
+			(yyval.decl) = DeclarationNode::newForall( (yyvsp[(4) - (5)].decl) );
 		}
-#line 5919 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 312:
-#line 1354 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 5925 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1355 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 313:
-#line 1356 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
-#line 5931 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1357 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 315:
-#line 1367 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 5937 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1368 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 316:
-#line 1372 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1373 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
-#line 5943 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 317:
-#line 1374 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1375 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
-#line 5949 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 318:
-#line 1376 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1377 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
-#line 5955 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 319:
-#line 1378 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1379 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
-#line 5961 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 320:
-#line 1381 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1382 "parser.yy"
     { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
-#line 5967 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 321:
-#line 1383 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1384 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
-#line 5973 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 322:
-#line 1386 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1387 "parser.yy"
     { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
-#line 5979 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 323:
-#line 1388 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1389 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
-#line 5985 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 324:
-#line 1393 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1394 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
-#line 5991 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 325:
-#line 1395 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1396 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
-#line 5997 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 326:
-#line 1397 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1398 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
-#line 6003 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 327:
-#line 1399 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1400 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
-#line 6009 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 328:
-#line 1401 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1402 "parser.yy"
     { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Long ); }
-#line 6015 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 329:
-#line 1403 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1404 "parser.yy"
     { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Short ); }
-#line 6021 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 330:
-#line 1405 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1406 "parser.yy"
     { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Signed ); }
-#line 6027 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 331:
-#line 1407 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1408 "parser.yy"
     { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); }
-#line 6033 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 332:
-#line 1409 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1410 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
-#line 6039 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 333:
-#line 1411 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1412 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
-#line 6045 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 334:
-#line 1413 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1414 "parser.yy"
     { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Complex ); }
-#line 6051 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 335:
-#line 1415 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1416 "parser.yy"
     { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
-#line 6057 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 336:
-#line 1417 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1418 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
-#line 6063 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 337:
-#line 1419 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1420 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Zero ); }
-#line 6069 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 338:
-#line 1421 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1422 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::One ); }
-#line 6075 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 340:
-#line 1428 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6081 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1429 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 341:
-#line 1430 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6087 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1431 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 342:
-#line 1432 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
-#line 6093 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1433 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 343:
-#line 1434 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) )->addType( (yyvsp[-2].decl) ); }
-#line 6099 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1435 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
     break;
 
   case 345:
-#line 1440 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[0].decl) ); }
-#line 6105 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1441 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 347:
-#line 1447 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6111 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1448 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 348:
-#line 1449 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6117 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1450 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 349:
-#line 1451 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[0].decl) ); }
-#line 6123 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1452 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 350:
-#line 1456 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 6129 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1457 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
     break;
 
   case 351:
-#line 1458 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[-1].en) ); }
-#line 6135 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1459 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
     break;
 
   case 352:
-#line 1460 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[-3].tok), (yyvsp[-1].decl) ); }
-#line 6141 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1461 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
     break;
 
   case 353:
-#line 1462 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[-3].tok), (yyvsp[-1].en) ); }
-#line 6147 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1463 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     break;
 
   case 355:
-#line 1468 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6153 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1469 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 356:
-#line 1470 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6159 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1471 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 357:
-#line 1472 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
-#line 6165 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1473 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 359:
-#line 1478 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6171 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1479 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 360:
-#line 1480 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6177 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1481 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 362:
-#line 1486 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6183 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1487 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 363:
-#line 1488 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6189 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1489 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 364:
-#line 1490 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
-#line 6195 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1491 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 365:
-#line 1495 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[0].tok) ); }
-#line 6201 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1496 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
     break;
 
   case 366:
-#line 1497 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[0].tok) )->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6207 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1498 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 367:
-#line 1499 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6213 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1500 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 370:
-#line 1509 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-3].aggKey), nullptr, nullptr, (yyvsp[-1].decl), true ); }
-#line 6219 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1510 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), nullptr, nullptr, (yyvsp[(3) - (4)].decl), true ); }
     break;
 
   case 371:
-#line 1511 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1512 "parser.yy"
     {
-			typedefTable.makeTypedef( *(yyvsp[0].tok) );
-			(yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-1].aggKey), (yyvsp[0].tok), nullptr, nullptr, false );
+			typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
+			(yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), nullptr, nullptr, false );
 		}
-#line 6228 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 372:
-#line 1516 "parser.yy" /* yacc.c:1646  */
-    { typedefTable.makeTypedef( *(yyvsp[0].tok) ); }
-#line 6234 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1517 "parser.yy"
+    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     break;
 
   case 373:
-#line 1518 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-5].aggKey), (yyvsp[-4].tok), nullptr, (yyvsp[-1].decl), true ); }
-#line 6240 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1519 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), nullptr, (yyvsp[(5) - (6)].decl), true ); }
     break;
 
   case 374:
-#line 1520 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-6].aggKey), nullptr, (yyvsp[-4].en), (yyvsp[-1].decl), false ); }
-#line 6246 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1521 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), nullptr, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
     break;
 
   case 375:
-#line 1522 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl); }
-#line 6252 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1523 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     break;
 
   case 376:
-#line 1527 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1528 "parser.yy"
     { (yyval.aggKey) = DeclarationNode::Struct; }
-#line 6258 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 377:
-#line 1529 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1530 "parser.yy"
     { (yyval.aggKey) = DeclarationNode::Union; }
-#line 6264 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 378:
-#line 1534 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = 0; }
-#line 6270 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1535 "parser.yy"
+    { (yyval.decl) = nullptr; }
     break;
 
   case 379:
-#line 1536 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl) != 0 ? (yyvsp[-1].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
-#line 6276 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1537 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     break;
 
   case 381:
-#line 1542 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->set_extension( true ); }
-#line 6282 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1543 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
     break;
 
   case 383:
-#line 1545 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1546 "parser.yy"
     {	// mark all fields in list
-			for ( DeclarationNode *iter = (yyvsp[-1].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
+			for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
 				iter->set_extension( true );
-			(yyval.decl) = (yyvsp[-1].decl);
+			(yyval.decl) = (yyvsp[(2) - (3)].decl);
 		}
-#line 6292 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 385:
-#line 1555 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addName( (yyvsp[0].tok) ); }
-#line 6298 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1556 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     break;
 
   case 386:
-#line 1557 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[-2].decl)->cloneType( (yyvsp[0].tok) ) ); }
-#line 6304 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1558 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     break;
 
   case 387:
-#line 1559 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->appendList( (yyvsp[-1].decl)->cloneType( 0 ) ); }
-#line 6310 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1560 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
     break;
 
   case 388:
-#line 1564 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
-#line 6316 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1565 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 389:
-#line 1566 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-3].decl)->appendList( (yyvsp[-3].decl)->cloneBaseType( (yyvsp[0].decl) ) ); }
-#line 6322 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1567 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
     break;
 
   case 390:
-#line 1571 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1572 "parser.yy"
     { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
-#line 6328 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 391:
-#line 1573 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[0].en) ); }
-#line 6334 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1574 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
     break;
 
   case 392:
-#line 1576 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addBitfield( (yyvsp[0].en) ); }
-#line 6340 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1577 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     break;
 
   case 393:
-#line 1579 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addBitfield( (yyvsp[0].en) ); }
-#line 6346 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1580 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     break;
 
   case 395:
-#line 1585 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = 0; }
-#line 6352 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1586 "parser.yy"
+    { (yyval.en) = nullptr; }
     break;
 
   case 396:
-#line 1587 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[0].en); }
-#line 6358 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1588 "parser.yy"
+    { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
 
   case 397:
-#line 1592 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[0].en); }
-#line 6364 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1593 "parser.yy"
+    { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
 
   case 399:
-#line 1601 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newEnum( nullptr, (yyvsp[-2].decl) ); }
-#line 6370 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1602 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newEnum( nullptr, (yyvsp[(3) - (5)].decl) ); }
     break;
 
   case 400:
-#line 1603 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1604 "parser.yy"
     {
-			typedefTable.makeTypedef( *(yyvsp[0].tok) );
-			(yyval.decl) = DeclarationNode::newEnum( (yyvsp[0].tok), 0 );
+			typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
+			(yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 );
 		}
-#line 6379 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 401:
-#line 1608 "parser.yy" /* yacc.c:1646  */
-    { typedefTable.makeTypedef( *(yyvsp[0].tok) ); }
-#line 6385 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1609 "parser.yy"
+    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     break;
 
   case 402:
-#line 1610 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[-5].tok), (yyvsp[-2].decl) ); }
-#line 6391 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1611 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
     break;
 
   case 403:
-#line 1615 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[-1].tok), (yyvsp[0].en) ); }
-#line 6397 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1616 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     break;
 
   case 404:
-#line 1617 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-3].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[-1].tok), (yyvsp[0].en) ) ); }
-#line 6403 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1618 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
     break;
 
   case 405:
-#line 1622 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = 0; }
-#line 6409 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1623 "parser.yy"
+    { (yyval.en) = nullptr; }
     break;
 
   case 406:
-#line 1624 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[0].en); }
-#line 6415 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1625 "parser.yy"
+    { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
 
   case 407:
-#line 1631 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = 0; }
-#line 6421 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1632 "parser.yy"
+    { (yyval.decl) = nullptr; }
     break;
 
   case 411:
-#line 1639 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
-#line 6427 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1640 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
 
   case 412:
-#line 1641 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
-#line 6433 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1642 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
 
   case 413:
-#line 1643 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
-#line 6439 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1644 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
 
   case 415:
-#line 1651 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
-#line 6445 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1652 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
 
   case 416:
-#line 1653 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
-#line 6451 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1654 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
 
   case 417:
-#line 1655 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-8].decl)->appendList( (yyvsp[-4].decl) )->appendList( (yyvsp[0].decl) ); }
-#line 6457 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1656 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
     break;
 
   case 419:
-#line 1661 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
-#line 6463 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1662 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
 
   case 420:
-#line 1666 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = 0; }
-#line 6469 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1667 "parser.yy"
+    { (yyval.decl) = nullptr; }
     break;
 
   case 423:
-#line 1673 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
-#line 6475 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1674 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
 
   case 426:
-#line 1680 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
-#line 6481 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1681 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
 
   case 427:
-#line 1682 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
-#line 6487 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1683 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
 
   case 429:
-#line 1691 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) ); }
-#line 6493 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1692 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     break;
 
   case 430:
-#line 1694 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) ); }
-#line 6499 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1695 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     break;
 
   case 431:
-#line 1696 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) )->addQualifiers( (yyvsp[-3].decl) ); }
-#line 6505 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1697 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
     break;
 
   case 436:
-#line 1706 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6511 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1707 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 438:
-#line 1712 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1713 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[-2].decl) )->addInitializer( new InitializerNode( (yyvsp[0].en) ) );
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
 		}
-#line 6520 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 439:
-#line 1717 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1718 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[-2].decl) )->addInitializer( new InitializerNode( (yyvsp[0].en) ) );
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
 		}
-#line 6529 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 441:
-#line 1726 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
-#line 6535 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1727 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 442:
-#line 1735 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) ); }
-#line 6541 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1736 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
     break;
 
   case 443:
-#line 1737 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->appendList( DeclarationNode::newName( (yyvsp[0].tok) ) ); }
-#line 6547 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1738 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
     break;
 
   case 455:
-#line 1762 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
-#line 6553 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1763 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 459:
-#line 1770 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
-#line 6559 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1771 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 460:
-#line 1775 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = 0; }
-#line 6565 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1776 "parser.yy"
+    { (yyval.in) = nullptr; }
     break;
 
   case 461:
-#line 1777 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = (yyvsp[0].in); }
-#line 6571 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1778 "parser.yy"
+    { (yyval.in) = (yyvsp[(2) - (2)].in); }
     break;
 
   case 462:
-#line 1779 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = (yyvsp[0].in)->set_maybeConstructed( false ); }
-#line 6577 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1780 "parser.yy"
+    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
     break;
 
   case 463:
-#line 1783 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = new InitializerNode( (yyvsp[0].en) ); }
-#line 6583 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1784 "parser.yy"
+    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     break;
 
   case 464:
-#line 1784 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = new InitializerNode( (yyvsp[-2].in), true ); }
-#line 6589 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1785 "parser.yy"
+    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     break;
 
   case 465:
-#line 1789 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = 0; }
-#line 6595 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1790 "parser.yy"
+    { (yyval.in) = nullptr; }
     break;
 
   case 467:
-#line 1791 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = (yyvsp[0].in)->set_designators( (yyvsp[-1].en) ); }
-#line 6601 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1792 "parser.yy"
+    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
     break;
 
   case 468:
-#line 1792 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = (InitializerNode *)( (yyvsp[-2].in)->set_last( (yyvsp[0].in) ) ); }
-#line 6607 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1793 "parser.yy"
+    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
     break;
 
   case 469:
-#line 1794 "parser.yy" /* yacc.c:1646  */
-    { (yyval.in) = (InitializerNode *)( (yyvsp[-3].in)->set_last( (yyvsp[0].in)->set_designators( (yyvsp[-1].en) ) ) ); }
-#line 6613 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1795 "parser.yy"
+    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
     break;
 
   case 471:
-#line 1810 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[-1].tok) ) ); }
-#line 6619 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1811 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
     break;
 
   case 473:
-#line 1816 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)( (yyvsp[-1].en)->set_last( (yyvsp[0].en) ) ); }
-#line 6625 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1817 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
     break;
 
   case 474:
-#line 1822 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
-#line 6631 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1823 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
     break;
 
   case 475:
-#line 1825 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[-2].en); }
-#line 6637 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1826 "parser.yy"
+    { (yyval.en) = (yyvsp[(3) - (5)].en); }
     break;
 
   case 476:
-#line 1827 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[-2].en); }
-#line 6643 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1828 "parser.yy"
+    { (yyval.en) = (yyvsp[(3) - (5)].en); }
     break;
 
   case 477:
-#line 1829 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
-#line 6649 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1830 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
     break;
 
   case 478:
-#line 1831 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[-2].en); }
-#line 6655 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1832 "parser.yy"
+    { (yyval.en) = (yyvsp[(4) - (6)].en); }
     break;
 
   case 480:
-#line 1855 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6661 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1856 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 481:
-#line 1857 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6667 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1858 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 482:
-#line 1859 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
-#line 6673 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1860 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 484:
-#line 1865 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 6679 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1866 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 485:
-#line 1867 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 6685 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1868 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 486:
-#line 1872 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[-3].tok), (yyvsp[-1].en) ); }
-#line 6691 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1873 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     break;
 
   case 488:
-#line 1878 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-3].decl)->appendList( (yyvsp[-1].decl) ); }
-#line 6697 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1879 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
     break;
 
   case 489:
-#line 1883 "parser.yy" /* yacc.c:1646  */
-    { typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD ); }
-#line 6703 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1884 "parser.yy"
+    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
     break;
 
   case 490:
-#line 1885 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[-3].tclass), (yyvsp[-2].tok) )->addAssertions( (yyvsp[0].decl) ); }
-#line 6709 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1886 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 492:
-#line 1891 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1892 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Otype; }
-#line 6715 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 493:
-#line 1893 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1894 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Ftype; }
-#line 6721 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 494:
-#line 1895 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1896 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Dtype; }
-#line 6727 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 495:
-#line 1900 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = 0; }
-#line 6733 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1901 "parser.yy"
+    { (yyval.decl) = nullptr; }
     break;
 
   case 496:
-#line 1902 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl) != 0 ? (yyvsp[-1].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
-#line 6739 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1903 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     break;
 
   case 497:
-#line 1907 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1908 "parser.yy"
     {
-			typedefTable.openTrait( *(yyvsp[-3].tok) );
-			(yyval.decl) = DeclarationNode::newTraitUse( (yyvsp[-3].tok), (yyvsp[-1].en) );
+			typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
+			(yyval.decl) = DeclarationNode::newTraitUse( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) );
 		}
-#line 6748 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 498:
-#line 1912 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 6754 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1913 "parser.yy"
+    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     break;
 
   case 499:
-#line 1914 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = 0; }
-#line 6760 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1915 "parser.yy"
+    { (yyval.decl) = nullptr; }
     break;
 
   case 500:
-#line 1919 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[0].decl) ) ); }
-#line 6766 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1920 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
     break;
 
   case 502:
-#line 1922 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[0].decl) ) ) ) ); }
-#line 6772 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1923 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
     break;
 
   case 503:
-#line 1924 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( (yyvsp[0].en) )); }
-#line 6778 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1925 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
     break;
 
   case 504:
-#line 1929 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl); }
-#line 6784 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1930 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     break;
 
   case 505:
-#line 1931 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-2].decl) ); }
-#line 6790 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1932 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
     break;
 
   case 506:
-#line 1933 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl)->copyStorageClasses( (yyvsp[-2].decl) ) ); }
-#line 6796 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1934 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
     break;
 
   case 507:
-#line 1938 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addAssertions( (yyvsp[0].decl) ); }
-#line 6802 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1939 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 508:
-#line 1940 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-3].decl)->addAssertions( (yyvsp[-2].decl) )->addType( (yyvsp[0].decl) ); }
-#line 6808 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1941 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 509:
-#line 1945 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1946 "parser.yy"
     {
-			typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD );
-			(yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[0].tok), 0 );
+			typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
+			(yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[(1) - (1)].tok), 0 );
 		}
-#line 6817 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 510:
-#line 1950 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1951 "parser.yy"
     {
-			typedefTable.addToEnclosingScope( *(yyvsp[-5].tok), TypedefTable::TG );
-			(yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[-5].tok), (yyvsp[-2].decl) );
+			typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
+			(yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[(1) - (6)].tok), (yyvsp[(4) - (6)].decl) );
 		}
-#line 6826 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 511:
-#line 1958 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1959 "parser.yy"
     {
-			typedefTable.addToEnclosingScope( *(yyvsp[-7].tok), TypedefTable::ID );
-			(yyval.decl) = DeclarationNode::newTrait( (yyvsp[-7].tok), (yyvsp[-4].decl), 0 );
+			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
+			(yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (9)].tok), (yyvsp[(5) - (9)].decl), 0 );
 		}
-#line 6835 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 512:
-#line 1963 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1964 "parser.yy"
     {
-			typedefTable.enterTrait( *(yyvsp[-6].tok) );
+			typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
 			typedefTable.enterScope();
 		}
-#line 6844 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 513:
-#line 1968 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1969 "parser.yy"
     {
 			typedefTable.leaveTrait();
-			typedefTable.addToEnclosingScope( *(yyvsp[-9].tok), TypedefTable::ID );
-			(yyval.decl) = DeclarationNode::newTrait( (yyvsp[-9].tok), (yyvsp[-6].decl), (yyvsp[-1].decl) );
+			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (11)].tok), TypedefTable::ID );
+			(yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (11)].tok), (yyvsp[(5) - (11)].decl), (yyvsp[(10) - (11)].decl) );
 		}
-#line 6854 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 515:
-#line 1978 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
-#line 6860 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1979 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 518:
-#line 1988 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1989 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[0].decl);
+			(yyval.decl) = (yyvsp[(1) - (1)].decl);
 		}
-#line 6869 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 519:
-#line 1993 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1994 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[0].decl);
+			(yyval.decl) = (yyvsp[(1) - (1)].decl);
 		}
-#line 6878 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 520:
-#line 1998 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 1999 "parser.yy"
     {
-			typedefTable.addToEnclosingScope2( *(yyvsp[0].tok), TypedefTable::ID );
-			(yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
+			typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
 		}
-#line 6887 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 521:
-#line 2006 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2007 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) );
+			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) );
 		}
-#line 6896 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 522:
-#line 2011 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2012 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneBaseType( (yyvsp[0].decl) ) );
+			(yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneBaseType( (yyvsp[(5) - (5)].decl) ) );
 		}
-#line 6905 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 523:
-#line 2021 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2022 "parser.yy"
     {}
-#line 6911 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 524:
-#line 2023 "parser.yy" /* yacc.c:1646  */
-    { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl);	}
-#line 6917 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2024 "parser.yy"
+    { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);	}
     break;
 
   case 526:
-#line 2029 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl) != nullptr ? (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
-#line 6923 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2030 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl) != nullptr ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
     break;
 
   case 527:
-#line 2034 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = 0; }
-#line 6929 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2035 "parser.yy"
+    { (yyval.decl) = nullptr; }
     break;
 
   case 531:
-#line 2042 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2043 "parser.yy"
     {}
-#line 6935 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 532:
-#line 2044 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2045 "parser.yy"
     {
 			linkageStack.push( linkage );				// handle nested extern "C"/"Cforall"
-			linkage = LinkageSpec::linkageCheck( (yyvsp[0].tok) );
+			linkage = LinkageSpec::linkageCheck( (yyvsp[(2) - (2)].tok) );
 		}
-#line 6944 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 533:
-#line 2049 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2050 "parser.yy"
     {
 			linkage = linkageStack.top();
 			linkageStack.pop();
-			(yyval.decl) = (yyvsp[-1].decl);
+			(yyval.decl) = (yyvsp[(5) - (6)].decl);
 		}
-#line 6954 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 534:
-#line 2055 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2056 "parser.yy"
     {	// mark all fields in list
-			for ( DeclarationNode *iter = (yyvsp[0].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
+			for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
 				iter->set_extension( true );
-			(yyval.decl) = (yyvsp[0].decl);
+			(yyval.decl) = (yyvsp[(2) - (2)].decl);
 		}
-#line 6964 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 536:
-#line 2070 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2071 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
 			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) );
+			(yyval.decl) = (yyvsp[(1) - (2)].decl)->addFunctionBody( (yyvsp[(2) - (2)].sn) );
 		}
-#line 6974 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 537:
-#line 2076 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2077 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
 			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) );
+			(yyval.decl) = (yyvsp[(1) - (4)].decl)->addOldDeclList( (yyvsp[(3) - (4)].decl) )->addFunctionBody( (yyvsp[(4) - (4)].sn) );
 		}
-#line 6984 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 538:
-#line 2085 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2086 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
 			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) );
+			(yyval.decl) = (yyvsp[(1) - (2)].decl)->addFunctionBody( (yyvsp[(2) - (2)].sn) );
 		}
-#line 6994 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 539:
-#line 2091 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2092 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
 			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addType( (yyvsp[-2].decl) );
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addType( (yyvsp[(1) - (3)].decl) );
 		}
-#line 7004 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 540:
-#line 2097 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2098 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
 			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) );
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
 		}
-#line 7014 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 541:
-#line 2103 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2104 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
 			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) );
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
 		}
-#line 7024 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 542:
-#line 2109 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2110 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
 			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[-3].decl) );
+			(yyval.decl) = (yyvsp[(3) - (4)].decl)->addFunctionBody( (yyvsp[(4) - (4)].sn) )->addQualifiers( (yyvsp[(2) - (4)].decl) )->addQualifiers( (yyvsp[(1) - (4)].decl) );
 		}
-#line 7034 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 543:
-#line 2117 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2118 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
 			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addType( (yyvsp[-4].decl) );
+			(yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addType( (yyvsp[(1) - (5)].decl) );
 		}
-#line 7044 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 544:
-#line 2123 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2124 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
 			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) );
+			(yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addQualifiers( (yyvsp[(1) - (5)].decl) );
 		}
-#line 7054 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 545:
-#line 2131 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2132 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
 			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) );
+			(yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addQualifiers( (yyvsp[(1) - (5)].decl) );
 		}
-#line 7064 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 546:
-#line 2137 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2138 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
 			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) )->addQualifiers( (yyvsp[-5].decl) );
+			(yyval.decl) = (yyvsp[(3) - (6)].decl)->addOldDeclList( (yyvsp[(5) - (6)].decl) )->addFunctionBody( (yyvsp[(6) - (6)].sn) )->addQualifiers( (yyvsp[(2) - (6)].decl) )->addQualifiers( (yyvsp[(1) - (6)].decl) );
 		}
-#line 7074 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 550:
-#line 2152 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
-#line 7080 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2153 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+    break;
+
+  case 551:
+
+/* Line 1806 of yacc.c  */
+#line 2158 "parser.yy"
+    { (yyval.constant) = nullptr; }
     break;
 
   case 552:
-#line 2157 "parser.yy" /* yacc.c:1646  */
-    { delete (yyvsp[-2].str); }
-#line 7086 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2160 "parser.yy"
+    { (yyval.constant) = (yyvsp[(3) - (5)].constant); }
     break;
 
   case 553:
-#line 2162 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = 0; }
-#line 7092 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2165 "parser.yy"
+    { (yyval.decl) = nullptr; }
     break;
 
   case 556:
-#line 2169 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 7098 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2172 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 557:
-#line 2175 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = 0; }
-#line 7104 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2178 "parser.yy"
+    { (yyval.decl) = nullptr; }
     break;
 
   case 562:
-#line 2186 "parser.yy" /* yacc.c:1646  */
-    { delete (yyvsp[-1].en); }
-#line 7110 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2189 "parser.yy"
+    { delete (yyvsp[(3) - (4)].en); }
     break;
 
   case 563:
-#line 2190 "parser.yy" /* yacc.c:1646  */
-    { delete (yyvsp[0].tok); }
-#line 7116 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2193 "parser.yy"
+    { delete (yyvsp[(1) - (1)].tok); }
     break;
 
   case 564:
-#line 2191 "parser.yy" /* yacc.c:1646  */
-    { delete (yyvsp[0].decl); }
-#line 7122 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2194 "parser.yy"
+    { delete (yyvsp[(1) - (1)].decl); }
     break;
 
   case 565:
-#line 2192 "parser.yy" /* yacc.c:1646  */
-    { delete (yyvsp[0].decl); }
-#line 7128 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2195 "parser.yy"
+    { delete (yyvsp[(1) - (1)].decl); }
     break;
 
   case 566:
-#line 2193 "parser.yy" /* yacc.c:1646  */
-    { delete (yyvsp[0].decl); }
-#line 7134 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2196 "parser.yy"
+    { delete (yyvsp[(1) - (1)].decl); }
     break;
 
   case 567:
-#line 2228 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7140 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2231 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 569:
-#line 2231 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7146 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2234 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 570:
-#line 2233 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7152 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2236 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 571:
-#line 2238 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2241 "parser.yy"
     {
-			typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
-			(yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
+			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
+			(yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
 		}
-#line 7161 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 572:
-#line 2243 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7167 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2246 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 573:
-#line 2248 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7173 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2251 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 574:
-#line 2250 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7179 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2253 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
   case 575:
-#line 2252 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7185 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2255 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 576:
-#line 2257 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7191 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2260 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 577:
-#line 2259 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7197 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2262 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 578:
-#line 2261 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7203 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2264 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 579:
-#line 2263 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7209 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2266 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 580:
-#line 2268 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7215 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2271 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
   case 581:
-#line 2270 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7221 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2273 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 582:
-#line 2279 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7227 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2282 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 584:
-#line 2282 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7233 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2285 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 585:
-#line 2287 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7239 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2290 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
 
   case 586:
-#line 2289 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7245 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2292 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
   case 587:
-#line 2291 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7251 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2294 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 588:
-#line 2296 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7257 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2299 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 589:
-#line 2298 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7263 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2301 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
   case 590:
-#line 2300 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7269 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2303 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 591:
-#line 2305 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7275 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2308 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 592:
-#line 2307 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7281 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2310 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 593:
-#line 2309 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7287 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2312 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 597:
-#line 2324 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-3].decl)->addIdList( (yyvsp[-1].decl) ); }
-#line 7293 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2327 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     break;
 
   case 598:
-#line 2326 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-4].decl)->addIdList( (yyvsp[-1].decl) ); }
-#line 7299 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2329 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
     break;
 
   case 599:
-#line 2328 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7305 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2331 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 600:
-#line 2333 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7311 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2336 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 601:
-#line 2335 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7317 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2338 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
   case 602:
-#line 2337 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7323 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2340 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 603:
-#line 2342 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7329 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2345 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 604:
-#line 2344 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7335 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2347 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 605:
-#line 2346 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7341 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2349 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 606:
-#line 2361 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7347 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2364 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 608:
-#line 2364 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7353 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2367 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 609:
-#line 2366 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7359 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2369 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 611:
-#line 2372 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7365 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2375 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 612:
-#line 2377 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7371 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2380 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 613:
-#line 2379 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7377 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2382 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
   case 614:
-#line 2381 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7383 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2384 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 615:
-#line 2386 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7389 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2389 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 616:
-#line 2388 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7395 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2391 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 617:
-#line 2390 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7401 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2393 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 618:
-#line 2392 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7407 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2395 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 619:
-#line 2397 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7413 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2400 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
 
   case 620:
-#line 2399 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7419 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2402 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
   case 621:
-#line 2401 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7425 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2404 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 622:
-#line 2411 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7431 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2414 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 624:
-#line 2414 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7437 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2417 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 625:
-#line 2416 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7443 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2419 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 626:
-#line 2421 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7449 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2424 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 627:
-#line 2423 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7455 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2426 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
   case 628:
-#line 2425 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7461 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2428 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 629:
-#line 2430 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7467 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2433 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 630:
-#line 2432 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7473 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2435 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 631:
-#line 2434 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7479 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2437 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 632:
-#line 2436 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7485 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2439 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 633:
-#line 2441 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7491 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2444 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
 
   case 634:
-#line 2443 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7497 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2446 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
   case 635:
-#line 2445 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7503 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2448 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 636:
-#line 2476 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7509 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2479 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 638:
-#line 2479 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7515 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2482 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 639:
-#line 2481 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7521 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2484 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 640:
-#line 2486 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2489 "parser.yy"
     {
-			typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
-			(yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
+			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
+			(yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
 		}
-#line 7530 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 641:
-#line 2491 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2494 "parser.yy"
     {
-			typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
-			(yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
+			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
+			(yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
 		}
-#line 7539 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 642:
-#line 2499 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7545 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2502 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 643:
-#line 2501 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7551 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2504 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
   case 644:
-#line 2503 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7557 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2506 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 645:
-#line 2508 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7563 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2511 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 646:
-#line 2510 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7569 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2513 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 647:
-#line 2515 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7575 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2518 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
 
   case 648:
-#line 2517 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7581 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2520 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
   case 650:
-#line 2532 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7587 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2535 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 651:
-#line 2534 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7593 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2537 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 652:
-#line 2539 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2542 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
-#line 7599 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 653:
-#line 2541 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
-#line 7605 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2544 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 654:
-#line 2543 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7611 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2546 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 655:
-#line 2545 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7617 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2548 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
   case 656:
-#line 2547 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7623 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2550 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 658:
-#line 2553 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7629 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2556 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 659:
-#line 2555 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7635 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2558 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 660:
-#line 2557 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7641 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2560 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 661:
-#line 2562 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[-2].decl), nullptr ); }
-#line 7647 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2565 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
     break;
 
   case 662:
-#line 2564 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7653 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2567 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
   case 663:
-#line 2566 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7659 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2569 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 664:
-#line 2572 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2575 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
-#line 7665 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 665:
-#line 2574 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[0].decl) ); }
-#line 7671 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2577 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 667:
-#line 2580 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), 0, false ); }
-#line 7677 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2583 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     break;
 
   case 668:
-#line 2582 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2585 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
-#line 7683 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 669:
-#line 2584 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-5].decl)->addArray( DeclarationNode::newArray( (yyvsp[-2].en), 0, false ) ); }
-#line 7689 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2587 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
     break;
 
   case 670:
-#line 2586 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-5].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
-#line 7695 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2589 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     break;
 
   case 672:
-#line 2601 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7701 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2604 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 673:
-#line 2603 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7707 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2606 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 674:
-#line 2608 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2611 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
-#line 7713 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 675:
-#line 2610 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
-#line 7719 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2613 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 676:
-#line 2612 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7725 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2615 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 677:
-#line 2614 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7731 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2617 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
   case 678:
-#line 2616 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7737 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2619 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 680:
-#line 2622 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7743 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2625 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 681:
-#line 2624 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7749 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2627 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 682:
-#line 2626 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7755 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2629 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 683:
-#line 2631 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[-2].decl), nullptr ); }
-#line 7761 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2634 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
     break;
 
   case 684:
-#line 2633 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7767 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2636 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
   case 685:
-#line 2635 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7773 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2638 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 687:
-#line 2642 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7779 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2645 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 689:
-#line 2653 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2656 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
-#line 7785 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 690:
-#line 2656 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[-3].decl) ); }
-#line 7791 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2659 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     break;
 
   case 691:
-#line 2658 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[-2].decl), false ); }
-#line 7797 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2661 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     break;
 
   case 692:
-#line 2661 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), false ); }
-#line 7803 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2664 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     break;
 
   case 693:
-#line 2663 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), true ); }
-#line 7809 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2666 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     break;
 
   case 694:
-#line 2665 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-4].decl), true ); }
-#line 7815 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2668 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     break;
 
   case 696:
-#line 2679 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7821 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2682 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 697:
-#line 2681 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
-#line 7827 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2684 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 698:
-#line 2686 "parser.yy" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2689 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
-#line 7833 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 699:
-#line 2688 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
-#line 7839 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2691 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
 
   case 700:
-#line 2690 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7845 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2693 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 701:
-#line 2692 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
-#line 7851 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2695 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
 
   case 702:
-#line 2694 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7857 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2697 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 704:
-#line 2700 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7863 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2703 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 705:
-#line 2702 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
-#line 7869 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2705 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
 
   case 706:
-#line 2704 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7875 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2707 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 707:
-#line 2709 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
-#line 7881 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2712 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
 
   case 708:
-#line 2711 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[-1].decl); }
-#line 7887 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2714 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
 
   case 711:
-#line 2721 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 7893 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2724 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 714:
-#line 2731 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7899 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2734 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 715:
-#line 2733 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
-#line 7905 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2736 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
 
   case 716:
-#line 2735 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7911 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2738 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 717:
-#line 2737 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
-#line 7917 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2740 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
 
   case 718:
-#line 2739 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 7923 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2742 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 719:
-#line 2741 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
-#line 7929 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2744 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
 
   case 720:
-#line 2748 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-#line 7935 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2751 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
 
   case 721:
-#line 2750 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
-#line 7941 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2753 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 722:
-#line 2752 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-#line 7947 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2755 "parser.yy"
+    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
 
   case 723:
-#line 2754 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( (yyvsp[-2].decl) ); }
-#line 7953 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2757 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     break;
 
   case 724:
-#line 2756 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
-#line 7959 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2759 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 725:
-#line 2759 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-#line 7965 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2762 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
 
   case 726:
-#line 2761 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
-#line 7971 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2764 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 727:
-#line 2763 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
-#line 7977 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2766 "parser.yy"
+    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
 
   case 728:
-#line 2765 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( (yyvsp[-2].decl) ); }
-#line 7983 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2768 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     break;
 
   case 729:
-#line 2767 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
-#line 7989 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2770 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 730:
-#line 2772 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[-3].decl) ); }
-#line 7995 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2775 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     break;
 
   case 731:
-#line 2774 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), false ); }
-#line 8001 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2777 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     break;
 
   case 732:
-#line 2779 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), true ); }
-#line 8007 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2782 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     break;
 
   case 733:
-#line 2781 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl)->addQualifiers( (yyvsp[-4].decl) ), true ); }
-#line 8013 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2784 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     break;
 
   case 735:
-#line 2808 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
-#line 8019 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2811 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 739:
-#line 2819 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 8025 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2822 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 740:
-#line 2821 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
-#line 8031 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2824 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
 
   case 741:
-#line 2823 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 8037 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2826 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 742:
-#line 2825 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
-#line 8043 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2828 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
 
   case 743:
-#line 2827 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
-#line 8049 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2830 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
 
   case 744:
-#line 2829 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
-#line 8055 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2832 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
 
   case 745:
-#line 2836 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
-#line 8061 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2839 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     break;
 
   case 746:
-#line 2838 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
-#line 8067 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2841 "parser.yy"
+    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     break;
 
   case 747:
-#line 2840 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
-#line 8073 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2843 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 748:
-#line 2842 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
-#line 8079 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2845 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     break;
 
   case 749:
-#line 2844 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
-#line 8085 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2847 "parser.yy"
+    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     break;
 
   case 750:
-#line 2846 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
-#line 8091 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2849 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
 
   case 751:
-#line 2851 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-2].decl) ); }
-#line 8097 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2854 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     break;
 
   case 752:
-#line 2858 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[-5].decl), (yyvsp[-2].decl), nullptr ); }
-#line 8103 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2861 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
     break;
 
   case 753:
-#line 2860 "parser.yy" /* yacc.c:1646  */
-    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[-5].decl), (yyvsp[-2].decl), nullptr ); }
-#line 8109 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2863 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
     break;
 
   case 756:
-#line 2884 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = 0; }
-#line 8115 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2887 "parser.yy"
+    { (yyval.en) = nullptr; }
     break;
 
   case 757:
-#line 2886 "parser.yy" /* yacc.c:1646  */
-    { (yyval.en) = (yyvsp[0].en); }
-#line 8121 "Parser/parser.cc" /* yacc.c:1646  */
-    break;
-
-
-#line 8125 "Parser/parser.cc" /* yacc.c:1646  */
+
+/* Line 1806 of yacc.c  */
+#line 2889 "parser.yy"
+    { (yyval.en) = (yyvsp[(2) - (2)].en); }
+    break;
+
+
+
+/* Line 1806 of yacc.c  */
+#line 9197 "Parser/parser.cc"
       default: break;
     }
@@ -8144,5 +9216,5 @@
   *++yyvsp = yyval;
 
-  /* Now 'shift' the result of the reduction.  Determine what state
+  /* Now `shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
@@ -8159,7 +9231,7 @@
 
 
-/*--------------------------------------.
-| yyerrlab -- here on detecting error.  |
-`--------------------------------------*/
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
 yyerrlab:
   /* Make sure we have latest lookahead translation.  See comments at
@@ -8212,18 +9284,18 @@
     {
       /* If just tried and failed to reuse lookahead token after an
-         error, discard it.  */
+	 error, discard it.  */
 
       if (yychar <= YYEOF)
-        {
-          /* Return failure if at end of input.  */
-          if (yychar == YYEOF)
-            YYABORT;
-        }
+	{
+	  /* Return failure if at end of input.  */
+	  if (yychar == YYEOF)
+	    YYABORT;
+	}
       else
-        {
-          yydestruct ("Error: discarding",
-                      yytoken, &yylval);
-          yychar = YYEMPTY;
-        }
+	{
+	  yydestruct ("Error: discarding",
+		      yytoken, &yylval);
+	  yychar = YYEMPTY;
+	}
     }
 
@@ -8244,5 +9316,5 @@
      goto yyerrorlab;
 
-  /* Do not reclaim the symbols of the rule whose action triggered
+  /* Do not reclaim the symbols of the rule which action triggered
      this YYERROR.  */
   YYPOPSTACK (yylen);
@@ -8257,5 +9329,5 @@
 `-------------------------------------------------------------*/
 yyerrlab1:
-  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
+  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
 
   for (;;)
@@ -8263,21 +9335,21 @@
       yyn = yypact[yystate];
       if (!yypact_value_is_default (yyn))
-        {
-          yyn += YYTERROR;
-          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-            {
-              yyn = yytable[yyn];
-              if (0 < yyn)
-                break;
-            }
-        }
+	{
+	  yyn += YYTERROR;
+	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+	    {
+	      yyn = yytable[yyn];
+	      if (0 < yyn)
+		break;
+	    }
+	}
 
       /* Pop the current state because it cannot handle the error token.  */
       if (yyssp == yyss)
-        YYABORT;
+	YYABORT;
 
 
       yydestruct ("Error: popping",
-                  yystos[yystate], yyvsp);
+		  yystos[yystate], yyvsp);
       YYPOPSTACK (1);
       yystate = *yyssp;
@@ -8285,7 +9357,5 @@
     }
 
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
 
@@ -8311,5 +9381,5 @@
   goto yyreturn;
 
-#if !defined yyoverflow || YYERROR_VERBOSE
+#if !defined(yyoverflow) || YYERROR_VERBOSE
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
@@ -8330,5 +9400,5 @@
                   yytoken, &yylval);
     }
-  /* Do not reclaim the symbols of the rule whose action triggered
+  /* Do not reclaim the symbols of the rule which action triggered
      this YYABORT or YYACCEPT.  */
   YYPOPSTACK (yylen);
@@ -8337,5 +9407,5 @@
     {
       yydestruct ("Cleanup: popping",
-                  yystos[*yyssp], yyvsp);
+		  yystos[*yyssp], yyvsp);
       YYPOPSTACK (1);
     }
@@ -8348,7 +9418,12 @@
     YYSTACK_FREE (yymsg);
 #endif
-  return yyresult;
+  /* Make sure YYID is used.  */
+  return YYID (yyresult);
 }
-#line 2889 "parser.yy" /* yacc.c:1906  */
+
+
+
+/* Line 2067 of yacc.c  */
+#line 2892 "parser.yy"
 
 // ----end of grammar----
@@ -8369,2 +9444,3 @@
 // compile-command: "make install" //
 // End: //
+
Index: src/Parser/parser.h
===================================================================
--- src/Parser/parser.h	(revision 2ee54263027122487a901500411985c80c241f9e)
+++ src/Parser/parser.h	(revision 6a1bdfdbaf1e60268cb7d469339ab09f961202ac)
@@ -1,18 +1,18 @@
-/* A Bison parser, made by GNU Bison 3.0.2.  */
+/* A Bison parser, made by GNU Bison 2.5.  */
 
 /* Bison interface for Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
-
+   
+      Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+   
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
-
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
@@ -27,134 +27,126 @@
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-
+   
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
-#ifndef YY_YY_PARSER_PARSER_H_INCLUDED
-# define YY_YY_PARSER_PARSER_H_INCLUDED
-/* Debug traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 1
-#endif
-#if YYDEBUG
-extern int yydebug;
-#endif
-
-/* Token type.  */
+
+/* Tokens.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-  enum yytokentype
-  {
-    TYPEDEF = 258,
-    AUTO = 259,
-    EXTERN = 260,
-    REGISTER = 261,
-    STATIC = 262,
-    INLINE = 263,
-    FORTRAN = 264,
-    CONST = 265,
-    VOLATILE = 266,
-    RESTRICT = 267,
-    FORALL = 268,
-    LVALUE = 269,
-    VOID = 270,
-    CHAR = 271,
-    SHORT = 272,
-    INT = 273,
-    LONG = 274,
-    FLOAT = 275,
-    DOUBLE = 276,
-    SIGNED = 277,
-    UNSIGNED = 278,
-    ZERO_T = 279,
-    ONE_T = 280,
-    VALIST = 281,
-    BOOL = 282,
-    COMPLEX = 283,
-    IMAGINARY = 284,
-    TYPEOF = 285,
-    LABEL = 286,
-    ENUM = 287,
-    STRUCT = 288,
-    UNION = 289,
-    OTYPE = 290,
-    FTYPE = 291,
-    DTYPE = 292,
-    TRAIT = 293,
-    SIZEOF = 294,
-    OFFSETOF = 295,
-    ATTRIBUTE = 296,
-    EXTENSION = 297,
-    IF = 298,
-    ELSE = 299,
-    SWITCH = 300,
-    CASE = 301,
-    DEFAULT = 302,
-    DO = 303,
-    WHILE = 304,
-    FOR = 305,
-    BREAK = 306,
-    CONTINUE = 307,
-    GOTO = 308,
-    RETURN = 309,
-    CHOOSE = 310,
-    DISABLE = 311,
-    ENABLE = 312,
-    FALLTHRU = 313,
-    TRY = 314,
-    CATCH = 315,
-    CATCHRESUME = 316,
-    FINALLY = 317,
-    THROW = 318,
-    THROWRESUME = 319,
-    AT = 320,
-    ASM = 321,
-    ALIGNAS = 322,
-    ALIGNOF = 323,
-    ATOMIC = 324,
-    GENERIC = 325,
-    NORETURN = 326,
-    STATICASSERT = 327,
-    THREADLOCAL = 328,
-    IDENTIFIER = 329,
-    QUOTED_IDENTIFIER = 330,
-    TYPEDEFname = 331,
-    TYPEGENname = 332,
-    ATTR_IDENTIFIER = 333,
-    ATTR_TYPEDEFname = 334,
-    ATTR_TYPEGENname = 335,
-    INTEGERconstant = 336,
-    CHARACTERconstant = 337,
-    STRINGliteral = 338,
-    REALDECIMALconstant = 339,
-    REALFRACTIONconstant = 340,
-    FLOATINGconstant = 341,
-    ZERO = 342,
-    ONE = 343,
-    ARROW = 344,
-    ICR = 345,
-    DECR = 346,
-    LS = 347,
-    RS = 348,
-    LE = 349,
-    GE = 350,
-    EQ = 351,
-    NE = 352,
-    ANDAND = 353,
-    OROR = 354,
-    ELLIPSIS = 355,
-    MULTassign = 356,
-    DIVassign = 357,
-    MODassign = 358,
-    PLUSassign = 359,
-    MINUSassign = 360,
-    LSassign = 361,
-    RSassign = 362,
-    ANDassign = 363,
-    ERassign = 364,
-    ORassign = 365,
-    ATassign = 366,
-    THEN = 367
-  };
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     TYPEDEF = 258,
+     AUTO = 259,
+     EXTERN = 260,
+     REGISTER = 261,
+     STATIC = 262,
+     INLINE = 263,
+     FORTRAN = 264,
+     CONST = 265,
+     VOLATILE = 266,
+     RESTRICT = 267,
+     FORALL = 268,
+     LVALUE = 269,
+     VOID = 270,
+     CHAR = 271,
+     SHORT = 272,
+     INT = 273,
+     LONG = 274,
+     FLOAT = 275,
+     DOUBLE = 276,
+     SIGNED = 277,
+     UNSIGNED = 278,
+     ZERO_T = 279,
+     ONE_T = 280,
+     VALIST = 281,
+     BOOL = 282,
+     COMPLEX = 283,
+     IMAGINARY = 284,
+     TYPEOF = 285,
+     LABEL = 286,
+     ENUM = 287,
+     STRUCT = 288,
+     UNION = 289,
+     OTYPE = 290,
+     FTYPE = 291,
+     DTYPE = 292,
+     TRAIT = 293,
+     SIZEOF = 294,
+     OFFSETOF = 295,
+     ATTRIBUTE = 296,
+     EXTENSION = 297,
+     IF = 298,
+     ELSE = 299,
+     SWITCH = 300,
+     CASE = 301,
+     DEFAULT = 302,
+     DO = 303,
+     WHILE = 304,
+     FOR = 305,
+     BREAK = 306,
+     CONTINUE = 307,
+     GOTO = 308,
+     RETURN = 309,
+     CHOOSE = 310,
+     DISABLE = 311,
+     ENABLE = 312,
+     FALLTHRU = 313,
+     TRY = 314,
+     CATCH = 315,
+     CATCHRESUME = 316,
+     FINALLY = 317,
+     THROW = 318,
+     THROWRESUME = 319,
+     AT = 320,
+     ASM = 321,
+     ALIGNAS = 322,
+     ALIGNOF = 323,
+     ATOMIC = 324,
+     GENERIC = 325,
+     NORETURN = 326,
+     STATICASSERT = 327,
+     THREADLOCAL = 328,
+     IDENTIFIER = 329,
+     QUOTED_IDENTIFIER = 330,
+     TYPEDEFname = 331,
+     TYPEGENname = 332,
+     ATTR_IDENTIFIER = 333,
+     ATTR_TYPEDEFname = 334,
+     ATTR_TYPEGENname = 335,
+     INTEGERconstant = 336,
+     CHARACTERconstant = 337,
+     STRINGliteral = 338,
+     REALDECIMALconstant = 339,
+     REALFRACTIONconstant = 340,
+     FLOATINGconstant = 341,
+     ZERO = 342,
+     ONE = 343,
+     ARROW = 344,
+     ICR = 345,
+     DECR = 346,
+     LS = 347,
+     RS = 348,
+     LE = 349,
+     GE = 350,
+     EQ = 351,
+     NE = 352,
+     ANDAND = 353,
+     OROR = 354,
+     ELLIPSIS = 355,
+     MULTassign = 356,
+     DIVassign = 357,
+     MODassign = 358,
+     PLUSassign = 359,
+     MINUSassign = 360,
+     LSassign = 361,
+     RSassign = 362,
+     ANDassign = 363,
+     ERassign = 364,
+     ORassign = 365,
+     ATassign = 366,
+     THEN = 367
+   };
 #endif
 /* Tokens.  */
@@ -270,10 +262,13 @@
 #define THEN 367
 
-/* Value type.  */
+
+
+
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE YYSTYPE;
-union YYSTYPE
+typedef union YYSTYPE
 {
-#line 120 "parser.yy" /* yacc.c:1909  */
+
+/* Line 2068 of yacc.c  */
+#line 120 "parser.yy"
 
 	Token tok;
@@ -292,14 +287,15 @@
 	bool flag;
 
-#line 295 "Parser/parser.h" /* yacc.c:1909  */
-};
+
+
+/* Line 2068 of yacc.c  */
+#line 293 "Parser/parser.h"
+} YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
-
 extern YYSTYPE yylval;
 
-int yyparse (void);
-
-#endif /* !YY_YY_PARSER_PARSER_H_INCLUDED  */
+
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 2ee54263027122487a901500411985c80c241f9e)
+++ src/Parser/parser.yy	(revision 6a1bdfdbaf1e60268cb7d469339ab09f961202ac)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Nov 29 11:35:52 2016
-// Update Count     : 2069
+// Last Modified On : Tue Dec 13 14:14:52 2016
+// Update Count     : 2081
 //
 
@@ -153,4 +153,5 @@
 %type<fctl> for_control_expression
 %type<en> subrange
+%type<constant> asm_name_opt
 %type<en> asm_operands_opt asm_operands_list asm_operand
 %type<label> label_list
@@ -412,5 +413,5 @@
 argument_expression:
 	// empty
-		{ $$ = 0; }										// use default argument
+		{ $$ = nullptr; }								// use default argument
 	| assignment_expression
 	;
@@ -684,5 +685,5 @@
 comma_expression_opt:
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| comma_expression
 	;
@@ -818,5 +819,5 @@
 switch_clause_list_opt:									// CFA
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| switch_clause_list
 	;
@@ -831,5 +832,5 @@
 choose_clause_list_opt:									// CFA
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| choose_clause_list
 	;
@@ -854,7 +855,7 @@
 fall_through:											// CFA
 	FALLTHRU
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| FALLTHRU ';'
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	;
 
@@ -990,5 +991,5 @@
 asm_operands_opt:										// GCC
 	// empty
-		{ $$ = 0; }										// use default argument
+		{ $$ = nullptr; }								// use default argument
 	| asm_operands_list
 	;
@@ -1009,5 +1010,5 @@
 asm_clobbers_list_opt:									// GCC
 	// empty
-		{ $$ = 0; }										// use default argument
+		{ $$ = nullptr; }								// use default argument
 	| string_literal
 		{ $$ = new ExpressionNode( $1 ); }
@@ -1033,5 +1034,5 @@
 declaration_list_opt:									// used at beginning of switch statement
 	pop
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| declaration_list
 	;
@@ -1045,5 +1046,5 @@
 old_declaration_list_opt:								// used to declare parameter types in K&R style functions
 	pop
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| old_declaration_list
 	;
@@ -1120,15 +1121,15 @@
 		{
 			typedefTable.setNextIdentifier( *$2 );
-			$$ = $1->addName( $2 );
+			$$ = $1->addName( $2 )->addAsmName( $3 );
 		}
 	| new_abstract_tuple identifier_or_type_name asm_name_opt
 		{
 			typedefTable.setNextIdentifier( *$2 );
-			$$ = $1->addName( $2 );
+			$$ = $1->addName( $2 )->addAsmName( $3 );
 		}
 	| type_qualifier_list new_abstract_tuple identifier_or_type_name asm_name_opt
 		{
 			typedefTable.setNextIdentifier( *$3 );
-			$$ = $2->addQualifiers( $1 )->addName( $3 );
+			$$ = $2->addQualifiers( $1 )->addName( $3 )->addAsmName( $4 );
 		}
 	;
@@ -1281,10 +1282,10 @@
 		{
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			$$ = ( $2->addType( $1 ))->addInitializer( $4 );
+			$$ = ( $2->addType( $1 ))->addAsmName( $3 )->addInitializer( $4 );
 		}
 	| declaring_list ',' attribute_list_opt declarator asm_name_opt initializer_opt
 		{
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			$$ = $1->appendList( $1->cloneBaseType( $4->addInitializer( $6 ) ) );
+			$$ = $1->appendList( $1->cloneBaseType( $4->addAsmName( $5 )->addInitializer( $6 ) ) );
 		}
 	;
@@ -1306,5 +1307,5 @@
 type_qualifier_list_opt:								// GCC, used in asm_statement
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| type_qualifier_list
 	;
@@ -1532,5 +1533,5 @@
 field_declaration_list:
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| field_declaration_list field_declaration
 		{ $$ = $1 != 0 ? $1->appendList( $2 ) : $2; }
@@ -1583,5 +1584,5 @@
 bit_subrange_size_opt:
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| bit_subrange_size
 		{ $$ = $1; }
@@ -1620,5 +1621,5 @@
 enumerator_value_opt:
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| '=' constant_expression
 		{ $$ = $2; }
@@ -1629,5 +1630,5 @@
 new_parameter_type_list_opt:							// CFA
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| new_parameter_type_list
 	;
@@ -1664,5 +1665,5 @@
 parameter_type_list_opt:
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| parameter_type_list
 	;
@@ -1773,5 +1774,5 @@
 initializer_opt:
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| '=' initializer
 		{ $$ = $2; }
@@ -1787,5 +1788,5 @@
 initializer_list:
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| initializer
 	| designation initializer					{ $$ = $2->set_designators( $1 ); }
@@ -1898,5 +1899,5 @@
 assertion_list_opt:										// CFA
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| assertion_list_opt assertion
 		{ $$ = $1 != 0 ? $1->appendList( $2 ) : $2; }
@@ -1912,5 +1913,5 @@
 		{ $$ = $4; }
 	| '|' '(' push type_parameter_list pop ')' '{' push trait_declaration_list '}' '(' type_name_list ')'
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	;
 
@@ -2032,5 +2033,5 @@
 external_definition_list_opt:
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| external_definition_list
 	;
@@ -2155,10 +2156,12 @@
 asm_name_opt:											// GCC
 	// empty
-	| ASM '(' string_literal_list ')' attribute_list_opt { delete $3; }	// FIX ME: unimplemented
+		{ $$ = nullptr; }
+	| ASM '(' string_literal ')' attribute_list_opt
+		{ $$ = $3; }
 	;
 
 attribute_list_opt:										// GCC
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| attribute_list
 	;
@@ -2173,5 +2176,5 @@
 	ATTRIBUTE '(' '(' attribute_parameter_list ')' ')'
 	//		{ $$ = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	;
 
@@ -2882,5 +2885,5 @@
 assignment_opt:
 	// empty
-		{ $$ = 0; }
+		{ $$ = nullptr; }
 	| '=' assignment_expression
 		{ $$ = $2; }
